Skip to content

Commit

Permalink
chore: update to bulma 1.0, cleanup content
Browse files Browse the repository at this point in the history
  • Loading branch information
marcus8448 committed Jun 24, 2024
1 parent 515db17 commit a59b351
Show file tree
Hide file tree
Showing 23 changed files with 393 additions and 109 deletions.
8 changes: 6 additions & 2 deletions .github/workflows/hugo.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,21 @@ jobs:
--minify \
--baseURL "${{ steps.pages.outputs.base_url }}/"
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
uses: actions/upload-pages-artifact@v3
with:
path: ./public

deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
permissions:
actions: read
pages: write
id-token: write
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
uses: actions/deploy-pages@v4
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# marcus8448.github.io

My personal website/portfolio.
Built with Hugo and hosted on GitHub Pages.
95 changes: 73 additions & 22 deletions assets/main.scss
Original file line number Diff line number Diff line change
@@ -1,38 +1,89 @@
@charset "utf-8";

$navbar-breakpoint: 480px;
$footer-padding: 2rem 1.5rem 4rem;
//$info: darken(hsl(207, 61%, 53%), 10%);

@import 'bulma/sass/base/_all';
@import "bulma/sass/utilities/_all";

@import 'bulma/sass/elements/box';
@import 'bulma/sass/elements/container';
@import 'bulma/sass/elements/content';
@import 'bulma/sass/elements/icon';
@import 'bulma/sass/elements/image';
@import 'bulma/sass/elements/title';
@import 'bulma/sass/components/media';
@import 'bulma/sass/components/navbar';
@import 'bulma/sass/grid/columns';
@import 'bulma/sass/helpers/_all';
@import 'bulma/sass/layout/footer';
@import 'bulma/sass/layout/hero';

@media (max-width: $tablet) {
@use "bulma/sass/base";
@use "bulma/sass/utilities/initial-variables" as iv;
@use "bulma/sass/utilities/derived-variables" with (
$custom-colors: (
"light-yellow": (
hsl(42, 100%, 90%),
iv.$black,
),
"light-blue": (
hsl(219, 61%, 90%),
iv.$black,
),
"nav-blue": (
hsl(219, 61%, 53%),
iv.$white,
),
)
);

@use "bulma/sass/themes";

@use "bulma/sass/helpers";
@use "bulma/sass/utilities";

@use "bulma/sass/components/dropdown";
@use "bulma/sass/components/panel";
@use "bulma/sass/components/navbar" with (
$navbar-breakpoint: 480px,
//$navbar-background-color: hsl(180,100%,97%)
);

@use "bulma/sass/elements/box";
@use "bulma/sass/elements/content";
@use "bulma/sass/elements/title";
@use "bulma/sass/elements/image";

@use "bulma/sass/layout/container";
@use "bulma/sass/layout/hero";
@use "bulma/sass/layout/media";
@use "bulma/sass/layout/footer" with (
$footer-padding: 2rem 1.5rem 4rem
);

@use "bulma/sass/grid/columns";

@media (max-width: iv.$tablet) {
.only-mobile {
display: inherit;
}
.not-mobile {
display: none !important;
}
}
@media (min-width: $tablet) {

@media (min-width: iv.$tablet) {
.only-mobile {
display: none !important;
}
.not-mobile {
display: inherit;
}
}

@media (prefers-color-scheme: dark) {
.invert-dark {
filter: invert(1)
}
}

// based on: https://stackoverflow.com/a/52375669
@function str-split($string) {
@return str-slice($string, 1, str-index($string, " ") - 1);
};

$hero-med-height: str-split("#{hero.$hero-body-padding-medium}");

@media (max-width: iv.$tablet) {
.content-med-hero-size {
min-height: calc(100vh - #{navbar.$navbar-height} - #{$hero-med-height} - 10rem);
}
}

@media (min-width: iv.$tablet) {
.content-med-hero-size {
min-height: calc(100vh - #{navbar.$navbar-height} - #{$hero-med-height} - 23rem);
}
}
16 changes: 3 additions & 13 deletions content/_index.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,8 @@
---
title: "Home"
heroTitle: "Hi, my name is Marcus."
heroSubtitle: "I'm a programmer from Canada with experience in Java, C/C++, and Rust."
---
### Hi, my name is Marcus.

I'm a programmer from Canada with experience in Java, C++, and Rust.

[//]: # (I'm particularly interested in build tooling (buildscripts) and compilers.)

You probably know me from [Galacticraft](/projects/galacticraft) (or, maybe you know me IRL).
You probably know me from [Galacticraft](/projects/galacticraft).

----

I've been programming for many years now,
mainly in Java where I have written multiple JavaFX applications and modifications for Minecraft.

I have also written command line applications and a web service backend using Rust,
and have worked with embedded C++.
6 changes: 1 addition & 5 deletions content/blog/_index.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
---
title: "Blog"
description: Coming soon™
heroType: is-link
heroType: is-background-light-blue-soft
date: 2023-09-22T13:51:23-07:00
---

I'll write something here, someday.

# Posts
7 changes: 7 additions & 0 deletions content/blog/test-post-2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
title: "Test Post 2"
description: "Hello world!"
date: 2024-06-01T00:00:00-07:00
---

Hello world
2 changes: 1 addition & 1 deletion content/blog/test-post.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: "Test Post"
description: "Some sort of blog entry"
description: "Hello world!"
date: 2023-09-22T13:51:23-07:00
---

Expand Down
2 changes: 1 addition & 1 deletion content/projects/_index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Projects"
description: Things that I've created over the years
heroType: is-link
heroType: is-background-light-blue-soft
---
40 changes: 31 additions & 9 deletions content/projects/chat.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,38 +5,60 @@ icon: /image/chat.png
Description: |
An encrypted, ephemeral instant messaging app.
repository: https://github.com/marcus8448/Chat
heroType: is-light
heroType: has-background-light-soft
languages:
- java
- gradle
---

# About

This was a fun project that I made in approximately 2 weeks to gain more experience using JavaFX.
This was a project that I made in approximately 2 weeks to gain more experience using JavaFX.
This time I avoided FXML and defined the GUI in pure Java.
It uses a multi-project Gradle build to enable code sharing between the client and server applications,
while keeping them as separate binaries.

I found it interesting to compare the strengths and weaknesses of different cryptographic ciphers for this project.
Originally, everything was based on RSA keys,
until I realized the max block size was too small (and thereby moved to use AES session keys).
until I realized the max block size could not support large messages (and thereby moved to use AES session keys).

# Features

* Channel support
* Notification support
* Support for both text and image messages
* Messages are encrypted over the network
* After an initial handshake with RSA keys, a session AES key is generated and sent by the server
* System tray notification support
* Support for sending both text and images
* Messages are encrypted over the network (however, they are not end-to-end encrypted)
* The server saves no user information
* User accounts are based on RSA keys
* Server just acts as a router
* Messages are not stored
* Only those watching a channel will see messages that are sent
* Upon closing the client, all history is forgotten
* User account data stored on the client is encrypted with a password
* Uses PBKDF2
* User account data stored on the client is encrypted with a password using PBKDF2

# Security

### Initial Handshake

Upon connecting to a server, the client and server exchange public RSA keys.
If the server's RSA key has changed,
or the client has never connected to the server before,
the client will ask the user if they trust the server's key.

The server then sends a session AES key, encrypted with the client's public key.
This key is used to encrypt all future messages sent between the client and server.

### Message Signatures

All messages are signed with the sender's RSA private key.
Keys can be marked as 'trusted' in the client, and given nicknames.
If a message is signed by a key that is not trusted, the client will display a warning.

### Client-side Security

The client stores user account data in a file encrypted with a PBKDF2 key derived from the user's password.
This prevents the user's account data from being used if the file is stolen.
However, this also means that if the user forgets their password, they will lose all their account data.

### Disclaimer

Expand Down
6 changes: 3 additions & 3 deletions content/projects/galacticraft.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ languages:
# About

I started to contribute to Galacticraft (4) through issue/bug reports in 2017 and pull requests in 2018.
In 2019 I was invited to work on Galacticraft 5 (called Galacticraft: Rewoven at the time) and have worked on it since then.
In 2019, I was invited to work on Galacticraft 5 (called Galacticraft: Rewoven at the time) and have worked on it since then.

As a member of the international team creating Galacticraft 5, I have:

* Implemented a graph based wire network (power distribution) system
* Implemented a graph-based wire network (power distribution) system
* Created an extensible framework for making machines (see [MachineLib](/projects/MachineLib))
* Ported numerous pieces of content
* Ported many pieces of content
* Noise and world generation code
* Blocks, items, tools
* Entities
Expand Down
4 changes: 2 additions & 2 deletions content/projects/gamemodeoverhaul.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ Description: |
repository: https://github.com/marcus8448/MinecraftMods
modrinth: gamemodeoverhaul
curseforge: gamemodeoverhaul
heroType: is-light
heroType: has-background-light-soft
languages:
- java
- gradle
---

# About

This was my first real mod for Minecraft, made in February 2019.
This was my first proper Minecraft modification, originally released in February 2019.
Created in about two weeks, the original goal of this mod was just restore the removed integer `/gamemode` arguments,
but its scope steadily expanded to other commands and aliases.

Expand Down
4 changes: 2 additions & 2 deletions content/projects/machinelib.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ icon: /image/machinelib.png
Description: |
A library for Minecraft mods that simplifies the implementation of complex blocks that process resources.
repository: https://github.com/TeamGalacticraft/MachineLib
heroType: is-light
heroType: has-background-light-soft
languages:
- java
- gradle
Expand All @@ -26,7 +26,7 @@ I decided to try and make my own implementation using the newly standardized
* Builder-style resource storage (inventory) creation
* Slot resource filtering
* Define slot locations in one place
* Simply define acceptable external block interactions and player interactions by setting a slot's type
* Define acceptable external block interactions and player interactions by setting a slot's type
* Comes with a base `BlockEntity` implementation
* Supports player-configurable resource I/O interactions with adjacent blocks
* Minecraft redstone (de)activation
Expand Down
15 changes: 9 additions & 6 deletions content/projects/robotics/v5_cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@
title: "v5_cli"
date: 2022-12-12T22:17:00-08:00
icon: /image/v5_cli.png
heroType: is-light
Description: |
A re-implementation of [pros-cli](https://github.com/purduesigbots/pros-cli) in Rust, adding true wireless (bluetooth) upload support.
heroType: has-background-light-soft
Description: A re-implementation of [pros-cli](https://github.com/purduesigbots/pros-cli) in Rust, adding bluetooth upload support.
repository: https://github.com/marcus8448/v5_cli
languages:
- rust
Expand All @@ -18,11 +17,10 @@ I chose to (re)write it in Rust mainly to gain experience with the language,
but also because I was already familiar with one of its CLI frameworks, [clap](https://clap.rs/).

Once I had made an app with about the same features as the original,
I left the project alone for a while...
Until I discovered that [direct bluetooth connection](https://gist.github.com/wireboy5/e41444a135d7643c92fc3b83aa69058b)
I left the project alone until I discovered that [direct bluetooth connection](https://gist.github.com/wireboy5/e41444a135d7643c92fc3b83aa69058b)
to the VEX V5 brain was possible.
This led me to try and enable wireless code upload over bluetooth LE.
Utilizing bluetooth was more difficult than I originally anticipated as bluetooth APIs tend to be asynchronous
Using bluetooth was more difficult than I originally anticipated as bluetooth APIs tend to be asynchronous
and bluetooth connections are significantly less reliable than wired ones.
This required me to rearchitect the project to use asynchronous Rust,
and account for packet loss and/or corruption in-transit.
Expand All @@ -31,9 +29,14 @@ and account for packet loss and/or corruption in-transit.
# Features

* Connect to V5 robot via usb or wirelessly via bluetooth
* Significantly better throughput compared to VEXnet controller connections.
* Upload binaries
* Supports PROS style hot/cold linking
* Manage robot filesystem
* Installed programs, metadata
* Update robot name, team number
* Connect to running program's standard input/output for debugging
* List connected V5 devices
* Keep robot connection alive with a daemon
* Automatically reconnects if connection is lost
* Allows for interaction with standard i/o and the system i/o simultaneously
Loading

0 comments on commit a59b351

Please sign in to comment.