first commit

This commit is contained in:
crazychaoz 2025-11-09 16:24:01 +01:00
commit d7ff8b0d09
5 changed files with 1159 additions and 0 deletions

759
public_html/index.html Normal file
View file

@ -0,0 +1,759 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>kempinger.at</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: linear-gradient(135deg, #0a0a0a 0%, #1a1a2e 100%);
color: #ffffff;
line-height: 1.6;
overflow-x: hidden;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
/* Header */
header {
position: fixed;
top: 0;
width: 100%;
background: rgba(10, 10, 10, 0.95);
backdrop-filter: blur(10px);
z-index: 1000;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
nav {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 0;
}
.logo {
font-size: 1.5rem;
font-weight: 700;
color: #00d4ff;
text-decoration: none;
}
.nav-links {
display: flex;
list-style: none;
gap: 2rem;
}
.nav-links a {
color: #ffffff;
text-decoration: none;
transition: color 0.3s ease;
font-weight: 500;
}
.nav-links a:hover {
color: #00d4ff;
}
/* Hero Section */
.hero {
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
position: relative;
overflow: hidden;
}
.hero::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 120px;
background: linear-gradient(to bottom, transparent 60%, #111119 100%);
pointer-events: none;
}
.hero::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background:
radial-gradient(circle at 20% 80%, rgba(0, 212, 255, 0.3) 0%, transparent 50%),
radial-gradient(circle at 80% 20%, rgba(255, 0, 150, 0.3) 0%, transparent 50%);
animation: pulse 4s ease-in-out infinite alternate;
}
@keyframes pulse {
0% {
opacity: 0.5;
}
100% {
opacity: 1;
}
}
.hero-content {
position: relative;
z-index: 1;
}
.hero h1 {
font-size: clamp(3rem, 8vw, 6rem);
font-weight: 800;
margin-bottom: 1rem;
background: linear-gradient(45deg, #00d4ff, #ff0096);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hero p {
font-size: clamp(1.2rem, 3vw, 1.5rem);
margin-bottom: 2rem;
opacity: 0.9;
}
.cta-button {
padding: 1rem 2rem;
background: none;
color: white;
text-decoration: none;
border-radius: 50px;
font-weight: 600;
font-size: 1.2rem;
display: flex;
flex-direction: column;
align-items: center;
gap: 0.2rem;
position: relative;
overflow: hidden;
}
.cta-button::before {
content: '';
position: absolute;
inset: 0;
border-radius: 50px;
z-index: 0;
background: linear-gradient(45deg, #00d4ff, #ff0096);
backdrop-filter: blur(10px);
opacity: 0.1;
pointer-events: none;
}
.cta-button>* {
position: relative;
z-index: 1;
}
/* Section Styling */
section {
padding: 5rem 0;
position: relative;
}
.section-title {
font-size: 2.5rem;
font-weight: 700;
text-align: center;
margin-bottom: 3rem;
color: #00d4ff;
}
/* Unified Boxed Section Design */
.boxed-section {
margin: 2rem auto;
max-width: 1200px;
}
.boxed-content {
background: rgba(255, 255, 255, 0.02);
border-radius: 20px;
padding: 3rem;
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
margin: 0 auto;
max-width: 1000px;
}
@media (max-width: 768px) {
.boxed-content {
padding: 2rem;
}
}
/* Publications Section */
.publications {
background: rgba(255, 255, 255, 0.02);
border-radius: 20px;
padding: 3rem;
margin: 2rem 0;
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
}
.pub-categories {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
margin-bottom: 2rem;
}
.pub-category {
background: rgba(0, 212, 255, 0.1);
border-radius: 15px;
padding: 2rem;
border: 1px solid rgba(0, 212, 255, 0.3);
transition: transform 0.3s ease;
}
.pub-category:hover {
transform: translateY(-5px);
}
.pub-category h3 {
color: #00d4ff;
margin-bottom: 1rem;
font-size: 1.3rem;
}
.pub-item {
background: rgba(255, 255, 255, 0.05);
border-radius: 10px;
padding: 1.5rem;
margin-bottom: 1rem;
border-left: 4px solid #00d4ff;
}
.pub-item h4 {
color: #ffffff;
margin-bottom: 0.5rem;
}
.pub-item p {
color: #cccccc;
font-size: 0.9rem;
margin-bottom: 0.5rem;
}
.pub-link {
color: #00d4ff;
text-decoration: none;
font-weight: 500;
}
.pub-link:hover {
text-decoration: underline;
}
/* Research Projects */
.projects-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 2rem;
}
.project-card {
background: rgba(255, 255, 255, 0.05);
border-radius: 15px;
padding: 2rem;
border: 1px solid rgba(255, 255, 255, 0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
position: relative;
overflow: hidden;
}
.project-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(45deg, #00d4ff, #ff0096);
}
.project-card:hover {
transform: translateY(-5px);
box-shadow: 0 15px 40px rgba(0, 212, 255, 0.2);
}
.project-card h3 {
color: #00d4ff;
margin-bottom: 1rem;
}
.project-status {
display: inline-block;
background: #00d4ff;
color: #000;
padding: 0.3rem 0.8rem;
border-radius: 20px;
font-size: 0.8rem;
font-weight: 600;
margin-bottom: 1rem;
}
/* Lab Notes Section */
.lab-notes {
background: rgba(255, 255, 255, 0.02);
border-radius: 20px;
padding: 3rem;
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
}
.note-intro {
text-align: center;
margin-bottom: 3rem;
color: #cccccc;
font-size: 1.1rem;
}
.notes-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 2rem;
}
.note-card {
background: rgba(255, 255, 255, 0.05);
border-radius: 15px;
padding: 2rem;
border: 1px solid rgba(255, 255, 255, 0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
position: relative;
overflow: hidden;
}
.note-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(45deg, #ff0096, #00d4ff);
}
.note-card:hover {
transform: translateY(-5px);
box-shadow: 0 15px 40px rgba(255, 0, 150, 0.2);
}
.note-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1rem;
}
.note-date {
color: #888;
font-size: 0.9rem;
font-family: 'Courier New', monospace;
}
.note-tag {
background: rgba(255, 0, 150, 0.2);
color: #ff0096;
padding: 0.3rem 0.8rem;
border-radius: 20px;
font-size: 0.8rem;
font-weight: 600;
border: 1px solid rgba(255, 0, 150, 0.3);
}
.note-card h3 {
color: #ffffff;
margin-bottom: 1rem;
font-size: 1.3rem;
}
.note-card p {
color: #cccccc;
line-height: 1.6;
margin-bottom: 1.5rem;
}
.note-link {
color: #ff0096;
text-decoration: none;
font-weight: 500;
transition: color 0.3s ease;
}
.note-link:hover {
color: #ffffff;
text-decoration: underline;
}
.equipment-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
}
.equipment-item {
background: rgba(255, 255, 255, 0.05);
border-radius: 15px;
padding: 2rem;
text-align: center;
border: 1px solid rgba(255, 255, 255, 0.1);
transition: transform 0.3s ease;
}
.equipment-item:hover {
transform: scale(1.05);
z-index: 1;
}
.equipment-icon {
font-size: 3rem;
margin-bottom: 1rem;
}
/* Contact Section */
.contact {
background: rgba(0, 212, 255, 0.1);
border-radius: 20px;
padding: 3rem;
text-align: center;
border: 1px solid rgba(0, 212, 255, 0.3);
}
.contact-links {
display: flex;
justify-content: center;
gap: 2rem;
margin-top: 2rem;
flex-wrap: wrap;
}
.contact-link {
display: flex;
align-items: center;
gap: 0.5rem;
color: #00d4ff;
text-decoration: none;
font-weight: 500;
transition: color 0.3s ease;
}
.contact-link:hover {
color: #ffffff;
}
/* Footer */
footer {
text-align: center;
padding: 2rem 0;
border-top: 1px solid rgba(255, 255, 255, 0.1);
margin-top: 3rem;
}
/* Mobile Responsiveness */
@media (max-width: 768px) {
.nav-links {
display: none;
}
.hero h1 {
font-size: 3rem;
}
.section-title {
font-size: 2rem;
}
.publications {
padding: 2rem;
}
.contact-links {
flex-direction: column;
align-items: center;
}
}
/* Scroll animations */
.fade-in {
opacity: 0;
transform: translateY(30px);
transition: opacity 0.6s ease, transform 0.6s ease;
}
.fade-in.visible {
opacity: 1;
transform: translateY(0);
}
@keyframes bounce {
0%,
100% {
transform: translateY(0);
}
50% {
transform: translateY(12px);
}
}
.bounce-arrow {
animation: bounce 1.5s infinite;
display: inline-block;
font-size: 2.5rem;
color: white;
}
</style>
</head>
<body>
<header>
<nav class="container">
<a href="#" class="logo">kempinger.at</a>
<ul class="nav-links">
<li><a href="#home">Home</a></li>
<li><a href="#publications">Publications</a></li>
<li><a href="#research">Research</a></li>
<li><a href="#notes">Lab Notes</a></li>
<li><a href="#lab">Laboratory</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</nav>
</header>
<main>
<section id="home" class="hero">
<div class="hero-content">
<a href="#publications" class="cta-button">
<h1>Stefan Kempinger</h1>
<p>Personal R&D Laboratory</p>
<span>Scroll down to explore</span>
<span class="bounce-arrow">&#8595;</span>
</a>
</div>
</section>
<section id="publications" class="container boxed-section">
<div style="height: 3rem;"></div>
<h2 class="section-title fade-in">Publications & Communications</h2>
<div class="boxed-content fade-in">
<div class="pub-categories">
<div class="pub-category">
<h3>📚 Peer-Reviewed Research</h3>
<div class="pub-item">
<h4>AVBTestKeyInTheWild: Bypassing Android Verified Boot Using
A Firmware Supply Chain Vulnerability on Locked Devices</h4>
<p>EWSN 2025</p>
<a href="#" class="pub-link">View Paper (coming soon)→</a>
</div>
</div>
</div>
</div>
</section>
<section id="research" class="container boxed-section">
<h2 class="section-title fade-in">Active Projects</h2>
<div class="boxed-content fade-in projects-grid">
<div class="project-card">
<div class="project-status">Active</div>
<h3>tflite-rs</h3>
<p>TensorFlow Lite Rust bindings for machine learning inference. Forked and actively maintained for
improved Rust ecosystem integration.</p>
<a href="https://github.com/CrazyChaoz/tflite-rs" class="pub-link">View on GitHub →</a>
</div>
<div class="project-card">
<div class="project-status">Published</div>
<h3>Arti-Facts</h3>
<p>Rust-based command-line tool and web server for secure, private file sharing over Tor onion
services. Features modern HTML interface and instant ZIP downloads.</p>
<a href="https://github.com/CrazyChaoz/Arti-Facts" class="pub-link">View on GitHub →</a>
</div>
<div class="project-card">
<div class="project-status">Published</div>
<h3>AutoSharingStateData</h3>
<p>Rust library for automatic state data sharing between application components. Simplifies state
management in distributed systems.</p>
<a href="https://github.com/CrazyChaoz/AutoSharingStateData" class="pub-link">View on GitHub →</a>
</div>
<div class="project-card">
<div class="project-status">Published</div>
<h3>Minimal Android UWB App</h3>
<p>Minimal working implementation of UltraWideBand (UWB) technology for Android. Demonstrates basic
UWB localization capabilities with 17 stars.</p>
<a href="https://github.com/CrazyChaoz/Minimal-Android-UWB-App" class="pub-link">View on GitHub
</a>
</div>
<div class="project-card">
<div class="project-status">Published</div>
<h3>gradle-dot-nix</h3>
<p>Nix flake that generates full Maven repositories for Gradle apps from verification metadata.
Enables reproducible builds in the Nix ecosystem.</p>
<a href="https://github.com/CrazyChaoz/gradle-dot-nix" class="pub-link">View on GitHub →</a>
</div>
<div class="project-card">
<div class="project-status">Published</div>
<h3>Coco/R TypeScript Port</h3>
<p>TypeScript port of the Coco/R compiler generator. Enables parser generation for
TypeScript/JavaScript projects with modern tooling.</p>
<a href="https://github.com/CrazyChaoz/coco-r-js" class="pub-link">View on GitHub →</a>
</div>
</div>
</section>
<section id="notes" class="container boxed-section">
<div style="height: 3rem;"></div>
<h2 class="section-title fade-in">Lab Notes & Observations</h2>
<div class="boxed-content fade-in lab-notes">
<div class="note-intro">
<p>Ongoing research observations, hypothesis testing, and experimental findings from daily
laboratory work.</p>
</div>
<div class="notes-grid">
<!-- <article class="note-card">
<div class="note-header">
<span class="note-date">2024-07-08</span>
<span class="note-tag">Systems</span>
</div>
<h3>The Myth of Perfect Code Architecture</h3>
<p>After years of chasing the "perfect" system design, I've concluded that adaptability trumps perfection. The best architectures are those that can evolve...</p>
<a href="#" class="note-link">Read full observation →</a>
</article>-->
</div>
</div>
</section>
<section id="lab" class="container boxed-section">
<div style="height: 3rem;"></div>
<h2 class="section-title fade-in">Laboratory Equipment</h2>
<div class="boxed-content fade-in equipment-grid">
<div class="equipment-item">
<div class="equipment-icon">🖥️</div>
<h3>Primary Research Station</h3>
<p>Thinkpad P14s G5</p>
<a href="page/hardware.html" class="note-link">Read about how and why →</a>
</div>
<div class="equipment-item">
<div class="equipment-icon">💻</div>
<h3>OS Setup</h3>
<p>NixOS (server), Arch Linux (laptop)</p>
<a href="page/os.html" class="note-link">Read about my OS journey →</a>
</div>
<div class="equipment-item">
<div class="equipment-icon">📝</div>
<h3>IDE of Choice</h3>
<p>Zed ❤️</p>
<a href="page/ide.html" class="note-link">Read my full thoughts →</a>
</div>
<div class="equipment-item">
<div class="equipment-icon"></div>
<h3>Essential Laboratory Equipment</h3>
<p>High-precision coffee brewing apparatus - critical for maintaining research productivity</p>
<a href="https://www.delonghi.com/de-at/p/magnifica-s-ecam22.110.b-magnifica-s-kaffeevollautomat/ECAM22.110.B.html?pid=0132213067"
class="note-link">
De'Longhi Magnifica S</a>
</div>
</div>
</section>
<div style="height: 3rem;"></div>
<section id="contact" class="container boxed-section">
<div class="boxed-content contact fade-in">
<h2 class="section-title">Collaboration Opportunities</h2>
<p>Available for research collaboration, consultation, and emergency debugging sessions.</p>
<div class="contact-links">
<a href="mailto:coming_soon" class="contact-link">
📧 Email
</a>
<a href="https://github.com/crazychaoz" class="contact-link">
🐙 GitHub
</a>
<a href="https://linkedin.com/in/stefan-kempinger" class="contact-link">
💼 LinkedIn
</a>
<!-- <a href="https://scholar.google.com/citations?user=yourid" class="contact-link">
🎓 Google Scholar
</a> -->
</div>
</div>
</section>
</main>
<footer class="container">
<p>&copy; 2025 Stefan Kempinger. All research conducted with proper scientific methodology.</p>
</footer>
<script>
// Smooth scrolling for navigation links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
document.querySelector(this.getAttribute('href')).scrollIntoView({
behavior: 'smooth'
});
});
});
// Fade in animation on scroll
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
}
});
}, observerOptions);
document.querySelectorAll('.fade-in').forEach(el => {
observer.observe(el);
});
// Header background on scroll
window.addEventListener('scroll', () => {
const header = document.querySelector('header');
if (window.scrollY > 100) {
header.style.background = 'rgba(10, 10, 10, 0.98)';
} else {
header.style.background = 'rgba(10, 10, 10, 0.95)';
}
});
</script>
</body>
</html>

View file

@ -0,0 +1,85 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Primary Research Station - kempinger.at</title>
<link rel="stylesheet" href="../style.css">
<style>
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: linear-gradient(135deg, #0a0a0a 0%, #1a1a2e 100%);
color: #ffffff;
line-height: 1.6;
margin: 0;
min-height: 100vh;
}
.container {
max-width: 800px;
margin: 0 auto;
padding: 4rem 20px 2rem 20px;
}
.boxed-content {
background: rgba(255, 255, 255, 0.02);
border-radius: 20px;
padding: 3rem;
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
margin: 0 auto;
max-width: 700px;
}
h1 {
font-size: 2.5rem;
font-weight: 700;
color: #00d4ff;
text-align: center;
margin-bottom: 2rem;
}
.back-link {
display: inline-block;
margin-bottom: 2rem;
color: #00d4ff;
text-decoration: none;
font-weight: 500;
}
.back-link:hover {
text-decoration: underline;
}
.construction-message {
text-align: center;
margin-top: 2rem;
}
.construction-message img {
width: 80px;
opacity: 0.7;
}
</style>
</head>
<body>
<div class="container">
<a href="../index.html#lab" class="back-link">← Back to Laboratory</a>
<div class="boxed-content">
<h1>Primary Research Station</h1>
<!-- Blog content goes here -->
<div class="construction-message">
<img style="width: 100%;"
src="https://cdn.pixabay.com/photo/2017/08/11/08/22/under-construction-2629947_960_720.jpg"
alt="Under Construction">
<p><strong>Hardware page is under construction.</strong></p>
<p>Because, obviously, hardware is never finished.</p>
</div>
<!-- ...existing code... -->
</div>
</div>
</body>
</html>

145
public_html/page/ide.html Normal file
View file

@ -0,0 +1,145 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>IDE of Choice - kempinger.at</title>
<link rel="stylesheet" href="../style.css">
<style>
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: linear-gradient(135deg, #0a0a0a 0%, #1a1a2e 100%);
color: #ffffff;
line-height: 1.6;
margin: 0;
min-height: 100vh;
}
.container {
max-width: 800px;
margin: 0 auto;
padding: 4rem 20px 2rem 20px;
}
.boxed-content {
background: rgba(255, 255, 255, 0.02);
border-radius: 20px;
padding: 3rem;
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
margin: 0 auto;
max-width: 700px;
}
h1 {
font-size: 2.5rem;
font-weight: 700;
color: #00d4ff;
text-align: center;
margin-bottom: 2rem;
}
.back-link {
display: inline-block;
margin-bottom: 2rem;
color: #00d4ff;
text-decoration: none;
font-weight: 500;
}
.back-link:hover {
text-decoration: underline;
}
hr {
margin: 3rem 0;
border: none;
border-top: 1px solid #222;
}
h2 {
color: #00d4ff;
text-align: center;
margin-bottom: 1.5rem;
}
ul {
font-size: 1.1rem;
line-height: 2;
max-width: 500px;
margin: 0 auto;
padding: 0;
list-style: none;
}
li {
position: relative;
padding-left: 1.5rem;
}
li:before {
content: '✓';
position: absolute;
left: 0;
color: #00d4ff;
}
a {
color: #00d4ff;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<div class="container">
<a href="../index.html#lab" class="back-link">← Back to Laboratory</a>
<div class="boxed-content">
<h1>IDE of Choice</h1>
<p>
After years of hopping between IDEs, I've finally settled into VSCode—and honestly, it feels like coming
home.<br><br>
I started out with Eclipse back in school, writing Java and wondering if programming would ever feel
smooth. Then came IntelliJ, and suddenly, everything clicked: smart code completion, refactoring,
version control, even writing my master thesis in LaTeX—all in one place. JetBrains' lineup was
impressive, but switching between IntelliJ for Java, PyCharm for Python, WebStorm for web, RustRover for
Rust, CLion for C, and DataGrip for databases got exhausting.<br><br>
I always wanted an IDE that felt as flexible as Emacs, but with modern features and polish. IntelliJ
came close, but the constant context switching wore me down. I tried NetBeans (too clunky), BlueJ (fun,
but just for learning), and Atom (great as a text editor, but not a full IDE).<br><br>
Now, in 2025, VSCode has become my daily driver. It's come a long way since I last used it. With Rust
and Python as my main languages, I realized RustRover and VSCode both rely on Cargo and rust-analyzer—so
why not use the lighter, more customizable option? The extension ecosystem is massive, and with LLM
integration, VSCode actually outpaces IntelliJ in AI-assisted coding.<br><br>
I still feel a bit wary of VSCode's corporate vibe, but with the right extensions and tweaks, it (kind of) feels
like my own tool. It's fast, flexible, and supports everything I need without forcing me to switch apps
for every language. For a Gen Z developer who grew up on Eclipse and dreamed of something better, VSCode
finally delivers the all-in-one experience I always wanted.
<br><br>
Update:
Just a bit after posting this, I tried out Zed.
VSCode, but fast, responive, not corpo and written in Rust.
Not everything is supported as of now (October '25), such as the entirety ofmy Latex workflow, but a lot of relevant things already work, so i made the switch.
</p>
<!--hr>
<h2>My Setup</h2>
<ul>
<li><strong>Editor:</strong> VSCode Microsoft build, since the OSS builds have stuff deactivated</li>
<li><strong>Theme:</strong> Atom One Dark (with custom tweaks)</li>
<li><strong>Non Language Server Extensions:</strong>Copilot, GitLens, Remote SSH, Prettier,
Error Lens, indent-rainbow, and more</li>
<li><strong>Terminal:</strong> Integrated VSCode terminal (fish)</li>
<li><strong>OS:</strong> Arch Linux (see <a href="os.html">details</a>)</li>
<li><strong>Hardware:</strong> Thinkpad P14s G5 (see <a href="hardware.html">details</a>)</li>
</ul-->
</div>
</div>
</body>
</html>

96
public_html/page/os.html Normal file
View file

@ -0,0 +1,96 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Primary Research Station - kempinger.at</title>
<link rel="stylesheet" href="../style.css">
<style>
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: linear-gradient(135deg, #0a0a0a 0%, #1a1a2e 100%);
color: #ffffff;
line-height: 1.6;
margin: 0;
min-height: 100vh;
}
.container {
max-width: 800px;
margin: 0 auto;
padding: 4rem 20px 2rem 20px;
}
.boxed-content {
background: rgba(255, 255, 255, 0.02);
border-radius: 20px;
padding: 3rem;
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
margin: 0 auto;
max-width: 700px;
}
h1 {
font-size: 2.5rem;
font-weight: 700;
color: #00d4ff;
text-align: center;
margin-bottom: 2rem;
}
.back-link {
display: inline-block;
margin-bottom: 2rem;
color: #00d4ff;
text-decoration: none;
font-weight: 500;
}
.back-link:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<div class="container">
<a href="../index.html#lab" class="back-link">← Back to Laboratory</a>
<div class="boxed-content">
<h1>OS Setup</h1>
<p>
My journey with operating systems started in the glow of a CRT monitor, running Windows XP on a chunky
desktop that took up half my childhood desk. Back then, the OS was just a background character—something
you tolerated so you could play games or tinker with Paint.<br><br>
As hardware evolved, so did my setup: Windows 7, then 10, each on increasingly sleeker desktops
and eventually my first laptop. Windows was familiar, reliable, and—at least for a while—felt like the
only real option. But as I got deeper into programming, I started to feel the limits. I wanted more
control, more transparency, and less bloat.<br><br>
High school was my first real foray into Linux. I fumbled my way through Ubuntu installs, breaking
things, fixing them, and learning more in the process than any textbook could teach. The world of
distros opened up: I tried Kubuntu, Mint, Fedora, and then the pentesting distro <a
href="https://linux.backbox.org">Backbox</a> for a year.
Each one taught me something new about how computers work under the hood.<br><br>
For a few years, Pop!_OS became my daily driver. It was Ubuntu-based, but with a polish and hardware
support that just worked—especially on my 13" HP Laptop screen. I loved the COSMIC desktop environment
for its workflow and usable design, and especially for its auto-tiling feature, which I still haven't
found as polished anywhere else—it's unmatched for my mouse-driven workflow. But eventually, the itch
for something even more customizable led
me to Arch Linux. I only switched to Arch this year: bleeding edge, rolling release, and a wiki thats
both a lifeline and a rite of passage. I now run Arch (btw), still with COSMIC as my DE, but with every
package and config under my control.<br><br>
Now, this very webserver is running NixOS as an experiment. NixOS is a whole new paradigm: the OS, its
configuration, and the data are all strictly separated. I define my system in a single config file, and
can reproduce it anywhere, anytime. Its made me rethink how I manage not just my servers, but my
personal machines too. Keeping the OS, its config, and my data separate means I can upgrade, migrate, or
even break things without fear—everything is reproducible, and nothing is lost.<br><br>
Looking back, every step—from Windows on a CRT to declarative NixOS—has taught me something about
control, flexibility, and the value of understanding whats happening beneath the surface. The journey
isnt over, but for now, Im happy to be running a system thats truly my own.
</p>
</div>
</div>
</body>
</html>

74
public_html/robots.txt Normal file
View file

@ -0,0 +1,74 @@
# Allow major search engines
User-agent: Googlebot
Allow: /
User-agent: Bingbot
Allow: /
User-agent: Slurp
Allow: /
User-agent: DuckDuckBot
Allow: /
User-agent: Baiduspider
Allow: /
User-agent: YandexBot
Allow: /
# Block AI crawlers and scrapers
User-agent: GPTBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: anthropic-ai
Disallow: /
User-agent: Claude-Web
Disallow: /
User-agent: ChatGPT-User
Disallow: /
User-agent: OpenAI-SearchBot
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: YouBot
Disallow: /
User-agent: Meta-ExternalAgent
Disallow: /
User-agent: FacebookBot
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: ImagesiftBot
Disallow: /
User-agent: Omgilibot
Disallow: /
User-agent: Diffbot
Disallow: /
User-agent: VelenPublicWebCrawler
Disallow: /
# Default rule for unknown bots
User-agent: *
Disallow: /