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
2 changes: 1 addition & 1 deletion astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export default defineConfig({
}),
sitemap()
],
site: "https://cuddlybunion341.github.io",
site: "https://cb341.github.io",
image: {
service: sharpImageService(),
},
Expand Down
4 changes: 2 additions & 2 deletions src/components/Footer.astro
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ const currentYear = new Date().getFullYear();
<footer role="contentinfo">
<center>
<hr />
<p><small>© {currentYear} CuddlyBunion341. Licensed under <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="noopener noreferrer">CC BY 4.0</a>.</small></p>
<p><small>© {currentYear} cb341. Licensed under <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="noopener noreferrer">CC BY 4.0</a>.</small></p>

<a
href="https://github.com/CuddlyBunion341"
href="https://github.com/cb341"
target="_blank"
rel="noopener noreferrer"
aria-label="GitHub profile (opens in new tab)">GitHub</a
Expand Down
4 changes: 2 additions & 2 deletions src/components/SectionContact.astro
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

<nav class="flex flex-wrap gap-4 mt-4" aria-label="Contact methods">
<a
href="https://github.com/CuddlyBunion341"
href="https://github.com/cb341"
class="flex items-center px-4 py-2 bg-gray-200 text-gray-800 dark:bg-gray-600 dark:text-white rounded hover:bg-gray-300 dark:hover:bg-gray-500 transition-colors"
target="_blank"
rel="noopener noreferrer"
Expand Down Expand Up @@ -57,7 +57,7 @@
</a>

<a
href="https://www.codewars.com/users/CuddlyBunion341"
href="https://www.codewars.com/users/cb341"
class="flex items-center px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700 transition-colors"
target="_blank"
rel="noopener noreferrer"
Expand Down
2 changes: 1 addition & 1 deletion src/components/SectionGitHubContributions.astro
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@

const { data } = await getContributions(
import.meta.env.PUBLIC_GITHUB_TOKEN,
"CuddlyBunion341",
"cb341",
);
console.log("data", data);

Expand Down
4 changes: 2 additions & 2 deletions src/components/SectionIntro.astro
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<section>
<div>
<h2>Hi, I am CuddlyBunion341</h2>
<h2>Hi, I am cb341</h2>

<p>
I am a
<a
href="https://github.com/CuddlyBunion341"
href="https://github.com/cb341"
target="_blank"
rel="noopener noreferrer"
>
Expand Down
2 changes: 1 addition & 1 deletion src/components/SectionQA.astro
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import QA from "./QA.astro";
/>
<QA
question="Why CB341?"
answer="CuddlyBunion341 is the name that was generated on my XBOX 360 back in the day. I liked it and stuck with it."
answer="cb341 is derived from CuddlyBunion341, a name that was generated on my XBOX 360 back in the day. I liked it and stuck with it."
/>
<QA
question="Why no Instagram or Facebook?"
Expand Down
2 changes: 1 addition & 1 deletion src/content/blog/bevy-multiplayer.md
Original file line number Diff line number Diff line change
Expand Up @@ -285,4 +285,4 @@ pub fn handle_lobby_sync_event_system(

The multiplayer demo project demonstrates the intricate planning and attention to detail needed to synchronize player attributes between the client and server. This showcases the complexity of creating a seamless multiplayer experience at a lower level.

For more detailed code, visit the MIT-Licensed [GitHub repository](https://github.com/CuddlyBunion341/bevy-multiplayer).
For more detailed code, visit the MIT-Licensed [GitHub repository](https://github.com/cb341/bevy-multiplayer).
6 changes: 3 additions & 3 deletions src/content/blog/exploring-rust.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ tags: ["rust", "gamedev"]

At Renuo, we love Ruby. It's simple, elegant, and powerful. But let's be honest, Ruby isn't the fastest language out there.

Over the last couple of months, I've been exploring low-level programming, hoping to bridge the gap between the high-level world of Ruby and the lower-level world of systems programming. To do this, I started working on my first Rust project: a blazingly fast voxel "game" called [rsmc](https://github.com/CuddlyBunion341/rsmc). It features a terrain generator, meshing, a scalable client-server architecture, and custom serialized messages for high-speed communication. This project has been my playground for learning Rust, and in this post, I'll share some of the lessons I've learned along the way.
Over the last couple of months, I've been exploring low-level programming, hoping to bridge the gap between the high-level world of Ruby and the lower-level world of systems programming. To do this, I started working on my first Rust project: a blazingly fast voxel "game" called [rsmc](https://github.com/cb341/rsmc). It features a terrain generator, meshing, a scalable client-server architecture, and custom serialized messages for high-speed communication. This project has been my playground for learning Rust, and in this post, I'll share some of the lessons I've learned along the way.

![Early stage of development in RSMC. Renet visualiser for simultanous client/server connections.](../../assets/blog/rsmc-early-development.webp)

Expand Down Expand Up @@ -35,7 +35,7 @@ Some of my favorite takeaways:
- **Systems:** Keep them small and focused on one task. This way they are easier to test and extend.
- **Plugins:** Encapsulate resources, systems, and components into distinguishable modules.
- **Events:** Use events to the fullest extent to decouple systems and keep code modular.
- **States:** Run systems only when they are relevant (e.g., Menu, Playing). This helps with UI and logic separation. In particular this PR: [#32](https://github.com/CuddlyBunion341/rsmc/pull/32)
- **States:** Run systems only when they are relevant (e.g., Menu, Playing). This helps with UI and logic separation. In particular this PR: [#32](https://github.com/cb341/rsmc/pull/32)

Bevy makes structuring a game engine intuitive, and its Rust-first approach ensures safety and performance while keeping things flexible. If you're interested in learning more about the ECS approach to game development, I wrote a blog article about planning an ECS: [Multiplayer in Rust Using Renet and Bevy](https://dev.to/renuo/multiplayer-in-rust-using-renet-and-bevy-17p6).

Expand Down Expand Up @@ -101,7 +101,7 @@ Instead of inheriting from a base class, `HeightParams` contains a `NoiseFunctio

Rust's macros are like Ruby's metaprogramming but more structured and powerful. They help eliminate boilerplate while maintaining type safety.

Here's a macro I used to [define blocks](https://github.com/CuddlyBunion341/rsmc/blob/main/src/client/terrain/util/blocks.rs) in my project:
Here's a macro I used to [define blocks](https://github.com/cb341/rsmc/blob/main/src/client/terrain/util/blocks.rs) in my project:

```rust
macro_rules! add_block {
Expand Down
2 changes: 1 addition & 1 deletion src/content/blog/hotwire-outside-rails.md
Original file line number Diff line number Diff line change
Expand Up @@ -234,4 +234,4 @@ You can find the complete chatting application with additional features such as:
- Random username generation
- Real-time user list

The GitHub Repository for this project can be found here: [https://github.com/CuddlyBunion341/bunjs-turbo-demo](https://github.com/CuddlyBunion341/bunjs-turbo-demo "https://github.com/CuddlyBunion341/bunjs-turbo-demo")
The GitHub Repository for this project can be found here: [https://github.com/cb341/bunjs-turbo-demo](https://github.com/cb341/bunjs-turbo-demo "https://github.com/cb341/bunjs-turbo-demo")
2 changes: 1 addition & 1 deletion src/content/blog/tmux.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,4 +105,4 @@ While tmux isn't as usable/powerful out of the box as the integrated tmux in Ite
- Screen recorder: [CleanShotX](https://cleanshot.com/)
- Keystroke recorder: [KeyCastr](https://github.com/keycastr/keycastr)
- Terminal Emulator: [Alacritty](https://github.com/alacritty/alacritty)
- Other configuration: [My Dotfiles](https://github.com/CuddlyBunion341/dotfiles)
- Other configuration: [My Dotfiles](https://github.com/cb341/dotfiles)
8 changes: 4 additions & 4 deletions src/content/projects/tsmc2.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ heroImage: "/src/assets/projects/ts-mc.webp"

This is probably the project I spent most of my free time on. There have been many iterations:

1. [Minecraft Clone](https://github.com/CuddlyBunion341/minecraft-clone): Simple infinite terrain, hacky, chaotic code written in JavaScript
2. [TS-MC](https://github.com/CuddlyBunion341/ts-mc): A rewrite of Minecraft Clone in TypeScript, better code structure, functional hotbar, water, sand physics, hacky collisions
3. [TSMC2](https://github.com/CuddlyBunion341/tsmc2): A more sophisticated codebase in TypeScript, multithreading with Webworkers, custom shaders with GLSL, better defined workflow with Pull Requests, attempt at integrating rust with WASM to improve terrain generation performance.
4. [RSMC](https://github.com/CuddlyBunion341/rsmc): A Minecraft clone written entirely in Rust, in a very early stage with focus on Multiplayer and performance.
1. [Minecraft Clone](https://github.com/cb341/minecraft-clone): Simple infinite terrain, hacky, chaotic code written in JavaScript
2. [TS-MC](https://github.com/cb341/ts-mc): A rewrite of Minecraft Clone in TypeScript, better code structure, functional hotbar, water, sand physics, hacky collisions
3. [TSMC2](https://github.com/cb341/tsmc2): A more sophisticated codebase in TypeScript, multithreading with Webworkers, custom shaders with GLSL, better defined workflow with Pull Requests, attempt at integrating rust with WASM to improve terrain generation performance.
4. [RSMC](https://github.com/cb341/rsmc): A Minecraft clone written entirely in Rust, in a very early stage with focus on Multiplayer and performance.

Make sure to check out [the blog post](/blog/exploring-rust) for more details about the rust project.
Also feel free to checkout the pull requests for mind-maps, documentation and demo showcases.
4 changes: 2 additions & 2 deletions src/data/projects.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[
{
"name": "cuddlybunion341.github.io",
"slug": "cuddlybunion341-github-io",
"name": "cb341.github.io",
"slug": "cb341-github-io",
"description": "Personal portfolio/blog built with Astro.",
"tags": ["astro", "blog", "portfolio"]
},
Expand Down
2 changes: 1 addition & 1 deletion src/data/script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ name: \"${name}\"
description: \"${description}\"
tags: [${tags}]
heroImage: \"/src/assets/projects/${slug}.webp\"
github: \"https://github.com/CuddlyBunion341/${slug}\"
github: \"https://github.com/cb341/${slug}\"
---
There is no description for this project yet.
"
Expand Down
12 changes: 6 additions & 6 deletions src/layouts/BaseLayout.astro
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import NavLink from "../components/NavLink.astro";
const defaultTitle = "Dani Bengl - Full-Stack Developer";
const defaultDescription =
"Full-stack software developer specializing in Ruby on Rails, web applications, and modern development practices. Portfolio, blog, and projects.";
const siteUrl = "https://cuddlybunion341.github.io";
const siteUrl = "https://cb341.github.io";
const currentUrl = new URL(Astro.url.pathname, siteUrl).href;
const pageTitle = title ? `${title} | ${defaultTitle}` : defaultTitle;
const pageDescription = description || defaultDescription;
Expand All @@ -32,9 +32,9 @@ const structuredData = {
name: "Dani Bengl",
url: siteUrl,
sameAs: [
"https://github.com/CuddlyBunion341",
"https://github.com/cb341",
"https://www.linkedin.com/in/daniel-bengl",
"https://www.codewars.com/users/CuddlyBunion341",
"https://www.codewars.com/users/cb341",
],
},
...(type === "article" &&
Expand Down Expand Up @@ -75,7 +75,7 @@ const structuredData = {
<meta property="twitter:title" content={pageTitle} />
<meta property="twitter:description" content={pageDescription} />
<meta property="twitter:image" content={pageImage} />
<meta property="twitter:creator" content="@cuddlybunion341" />
<meta property="twitter:creator" content="@cb341" />

<meta name="robots" content="index, follow" />
<meta name="theme-color" content="#ffffff" />
Expand Down Expand Up @@ -191,11 +191,11 @@ const structuredData = {
</nav>
<nav class="social-nav" role="navigation" aria-label="Social media links">
<center>
<NavLink href="https://www.codewars.com/users/CuddlyBunion341" external target="_blank" rel="noopener noreferrer" aria-label="Codewars profile (opens in new tab)">Codewars</NavLink>
<NavLink href="https://www.codewars.com/users/cb341" external target="_blank" rel="noopener noreferrer" aria-label="Codewars profile (opens in new tab)">Codewars</NavLink>
|
<NavLink href="https://www.linkedin.com/in/daniel-bengl" external target="_blank" rel="noopener noreferrer" aria-label="LinkedIn profile (opens in new tab)">LinkedIn</NavLink>
|
<NavLink href="https://github.com/CuddlyBunion341" external target="_blank" rel="noopener noreferrer" aria-label="GitHub profile (opens in new tab)">GitHub</NavLink>
<NavLink href="https://github.com/cb341" external target="_blank" rel="noopener noreferrer" aria-label="GitHub profile (opens in new tab)">GitHub</NavLink>
</center>
</nav>
</header>
Expand Down
2 changes: 1 addition & 1 deletion src/pages/about.astro
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import BaseLayout from "../layouts/BaseLayout.astro";
<p>
<small>
<a
href="https://en.pronouns.page/@CuddlyBunion341"
href="https://en.pronouns.page/@cb341"
target="_blank"
rel="noopener noreferrer"
aria-label="Learn about pronouns (opens in new tab)">(they/them)</a
Expand Down
2 changes: 1 addition & 1 deletion src/pages/blog/[...slug].astro
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ const { Content } = await entry.render();
<a href="#top">Top</a>
|
<a
href={`https://github.com/CuddlyBunion341/cuddlybunion341.github.io/blob/main/src/content/blog/${entry.slug}.md`}
href={`https://github.com/cb341/cb341.github.io/blob/main/src/content/blog/${entry.slug}.md`}
>
View on GitHub
</a>
Expand Down
2 changes: 1 addition & 1 deletion src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const projects = await getCollection("projects");
<h1>Hello, I'm Dani!</h1>
<small>
<a
href="https://en.pronouns.page/@CuddlyBunion341"
href="https://en.pronouns.page/@cb341"
target="_blank"
rel="noopener noreferrer"
aria-label="Learn about pronouns (opens in new tab)">(they/them)</a
Expand Down
2 changes: 1 addition & 1 deletion src/pages/projects/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const projects = await getCollection("projects");
<br />
<em>
<a
href="https://github.com/CuddlyBunion341"
href="https://github.com/cb341"
target="_blank"
rel="noopener noreferrer"
>
Expand Down
6 changes: 3 additions & 3 deletions src/pages/rss.xml.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export async function GET(context) {
allowedTags: sanitizeHtml.defaults.allowedTags.concat(['img'])
}),
categories: post.data.tags || [],
author: "CuddlyBunion341",
author: "cb341",
guid: post.slug,
...(post.data.heroImage && {
enclosure: {
Expand All @@ -36,11 +36,11 @@ export async function GET(context) {
);

return rss({
title: "CuddlyBunion341 Blog",
title: "cb341 Blog",
description: "Personal blog and portfolio",
site: context.site,
language: "en",
copyright: `Copyright (c) ${new Date().getFullYear()} CuddlyBunion341. Licensed under MIT.`,
copyright: `Copyright (c) ${new Date().getFullYear()} cb341. Licensed under MIT.`,
lastBuildDate: new Date(),
ttl: 60,
customData: `<generator>Astro v4</generator>`,
Expand Down
10 changes: 5 additions & 5 deletions src/pages/uses.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,16 @@ Hello there! I often get asked about the tools and resources I use for my work.

## Editors

- **[Neovim](https://neovim.io/)**: This is my primary editor. You can find the configuration in my [dotfiles](https://github.com/CuddlyBunion341/dotfiles/tree/main/.config/nvim).
- **[Neovim](https://neovim.io/)**: This is my primary editor. You can find the configuration in my [dotfiles](https://github.com/cb341/dotfiles/tree/main/.config/nvim).
- **[VSCode](https://code.visualstudio.com/)**: This is my editor when neovim breaks.

## Terminal

- **[Ghostty](https://ghostty.org/)**: This is my terminal on macOS.
- **[Alacritty](https://github.com/alacritty/alacritty)**: This is my primary terminal on Linux. You can find the configuration in my [dotfiles](https://github.com/CuddlyBunion341/dotfiles/blob/main/.config/alacritty/alacritty.toml).
- **[LazyGit](https://github.com/jesseduffield/lazygit)**: This is my git client. You can find the configuration in my [dotfiles](https://github.com/CuddlyBunion341/dotfiles/blob/main/lazygit/config.yml)
- **[Zsh](https://ohmyz.sh/)**: This is my shell. You can find the configuration in my [dotfiles](https://github.com/CuddlyBunion341/dotfiles/.zshrc)
- **[Tmux](https://github.com/tmux/tmux/wiki)**: This is my terminal multiplexer. You can find the configuration in my [dotfiles](https://github.com/CuddlyBunion341/dotfiles/blob/main/.tmux.conf)
- **[Alacritty](https://github.com/alacritty/alacritty)**: This is my primary terminal on Linux. You can find the configuration in my [dotfiles](https://github.com/cb341/dotfiles/blob/main/.config/alacritty/alacritty.toml).
- **[LazyGit](https://github.com/jesseduffield/lazygit)**: This is my git client. You can find the configuration in my [dotfiles](https://github.com/cb341/dotfiles/blob/main/lazygit/config.yml)
- **[Zsh](https://ohmyz.sh/)**: This is my shell. You can find the configuration in my [dotfiles](https://github.com/cb341/dotfiles/.zshrc)
- **[Tmux](https://github.com/tmux/tmux/wiki)**: This is my terminal multiplexer. You can find the configuration in my [dotfiles](https://github.com/cb341/dotfiles/blob/main/.tmux.conf)
- **[GitHub CLI](https://cli.github.com/)**: Used on a daily basis to initialize repositories, create PRs

## Gear
Expand Down