🚧 Site Under Construction
Hello,
I'm Casper
Exploring software design, AI research, electronics engineering, physics, and critical perspectives on culture and society. Writing about building things from scratch and diving deep into complex topics.
Explore Content
Discover topics and content types I write about
Physics & Science
Deep dives into quantum mechanics, mathematical physics, and scientific concepts with LaTeX equations.
Software Design
Architecture patterns, code examples, UML diagrams, system design concepts, and software development insights with interactive visualizations.
AI Research
Exploring artificial intelligence, machine learning, neural networks, and cutting-edge AI research.
Music & Production
Writing, playing, and producing music across various genres and instruments.
Electronics Engineering
Circuit design, embedded systems, hardware projects, and electronics engineering concepts.
Culture & Society
Critical analysis of contemporary issues, cultural trends, and societal challenges facing our world today.
Recent Posts
Latest thoughts and stories
The Schrödinger Equation
The time-dependent Schrödinger equation describes how quantum systems evolve over time:
Where is the wave function, is the Hamiltonian operator, and is the reduced Planck constant.
Code Snippets Support
The blog now supports syntax-highlighted code blocks. Here's an example:
1function greet(name: string): string {
2 return `Hello, ${name}!`;
3}
4
5const message = greet("World");
6console.log(message); // Output: Hello, World!Code blocks support syntax highlighting for many languages and integrate seamlessly with the dark theme design.
Project Structure
File tree diagrams show folder and file layout. Use ```tree or ```filetree in markdown:
Use indentation (tabs or spaces) for hierarchy. Add name[tag] for optional labels on items.
Domain, Integration & Project (Git Submodules)
Project references Integration as a submodule at a version tag; Integration references Domain as a submodule at a version tag. All three repos have version tags along their history. Merge commits represent the parent updating which tag it pins: e.g. Integration merging Domain when Domain is at v0.2.0 means Integration now points its Domain submodule at v0.2.0.
Project pins Integration at v0.1.0, then later at v0.2.0 and v1.0.0; Integration pins Domain at v0.1.0, v0.2.0, then v1.0.0. Merge commit ids use proj@int-* / int@dom-* to indicate which submodule ref was updated.
Domain, Integration & Project (PlantUML)
PlantUML has no git-graph syntax, so the same three repositories and submodule pins are shown as a component diagram: Project references Integration as a submodule at version tags; Integration references Domain as a submodule at version tags. Arrows are labeled with the pinned versions; each component lists its own release tags.
Use ```plantuml in markdown to render PlantUML. The diagram conveys structure and which versions the parent pins; it does not show commit history or a timeline like the Mermaid gitGraph above.
Automated Deployment Pipeline
This site is automatically deployed using GitLab CI/CD. Every push to the master branch triggers a build and deployment process that ensures the latest code is always live.
1deploy:
2 stage: deploy
3 script:
4 - npm ci
5 - npm run build
6 - pm2 restart app
7 only:
8 - masterThe pipeline builds the application, verifies the build succeeded, and restarts the production server automatically. This ensures zero-downtime deployments and consistent updates.