Compare commits

..

43 Commits

Author SHA1 Message Date
jjanella 98fd81bd01 scroll overflow
Build / build (push) Failing after 11m4s
2026-06-10 10:44:03 -04:00
jjanella 1b54a93d03 Line height update
Build / build (push) Successful in 7s
2026-06-10 10:41:50 -04:00
jjanella c61fec03da fixed missing link in tree
Build / build (push) Failing after 14m32s
2026-06-10 10:20:35 -04:00
jjanella d8c664b9e0 fix mobile line height and wrapping
Build / build (push) Failing after 11m27s
2026-06-10 10:18:40 -04:00
jjanella bce09e45c2 fix mobile tree view
Build / build (push) Failing after 13m40s
2026-06-10 10:01:27 -04:00
Jeremy Janella 9c38c61f56 updated treet spacing
Build / build (push) Failing after 13m22s
2026-06-10 09:01:31 -04:00
jjanella 007fe255c3 Update static/home.typ
Build / build (push) Failing after 10m55s
2026-05-27 16:14:14 -04:00
jjanella ee555c07bf Treet monospace bold
Build / build (push) Failing after 10m50s
2026-05-26 11:14:18 -04:00
Jeremy Janella f947049144 increased directness of profile
Build / build (push) Canceled after 48s
2026-05-26 04:54:31 -04:00
Jeremy Janella 21ea975ccc cleaned typst
Build / build (push) Failing after 13m11s
2026-05-24 16:31:51 -04:00
Jeremy Janella 2a84fafca6 ci remove typst devshell dep
Build / build (push) Successful in 4s
2026-05-24 12:31:48 -04:00
Jeremy Janella 852b625878 ci restart logs
Build / build (push) Canceled after 4m8s
2026-05-24 12:27:45 -04:00
Jeremy Janella a33430a4a8 ci sha256 fix
Build / build (push) Canceled after 8m4s
2026-05-24 12:19:46 -04:00
Jeremy Janella 91b6b46d4f ci fenix flake
Build / build (push) Canceled after 1m10s
2026-05-24 12:18:45 -04:00
Jeremy Janella 526cf942c8 ci push output
Build / build (push) Failing after 3s
2026-05-24 12:10:40 -04:00
Jeremy Janella 35b1f42a31 ci auto repo create
Build / build (push) Canceled after 1m17s
2026-05-24 12:09:21 -04:00
Jeremy Janella d498fceaa9 ci typst in env
Build / build (push) Canceled after 4m30s
2026-05-24 11:55:21 -04:00
Jeremy Janella 6dda0a2b62 ci env
Build / build (push) Canceled after 1m12s
2026-05-24 11:48:29 -04:00
Jeremy Janella 8cff5de85e ci env
Build / build (push) Canceled after 1m37s
2026-05-24 11:46:55 -04:00
Jeremy Janella 3e602844f8 ci env
Build / build (push) Canceled after 6m52s
2026-05-24 11:37:55 -04:00
Jeremy Janella c6c3f90f89 ci nix env
Build / build (push) Canceled after 4m26s
2026-05-24 11:33:08 -04:00
Jeremy Janella b0750c3c79 ci git conf
Build / build (push) Failing after 1s
2026-05-24 11:15:01 -04:00
Jeremy Janella 9b3ed7e034 ci setup
Build / build (push) Canceled after 1m10s
2026-05-24 11:13:47 -04:00
Jeremy Janella 84057a4434 ci debug
Build / build (push) Canceled after 45s
2026-05-24 11:10:27 -04:00
Jeremy Janella d48352ced2 ci debug
Build / build (push) Canceled after 14s
2026-05-24 11:02:56 -04:00
Jeremy Janella 800bd38adb ci switch to bare metal
Build / build (push) Canceled after 54s
2026-05-24 11:00:24 -04:00
Jeremy Janella 9734614396 ci test
Build / build (push) Canceled after 4m24s
2026-05-24 10:48:14 -04:00
Jeremy Janella 20c71c46ab ci test
Build / build (push) Failing after 14m42s
2026-05-24 10:10:23 -04:00
Jeremy Janella f1cbe1faf4 ci env
Build / build (push) Failing after 13m49s
2026-05-22 19:18:55 -04:00
Jeremy Janella 368f4d9ea6 flake update typst
Build / build (push) Failing after 11m3s
2026-05-22 18:49:01 -04:00
Jeremy Janella 3472a9ca77 ci fix
Build / build (push) Failing after 13m22s
2026-05-22 18:36:37 -04:00
Jeremy Janella 9363bff72c ci fix
Build / build (push) Failing after 14m54s
2026-05-22 18:27:47 -04:00
Jeremy Janella 6556cfd313 updated flake
Build / build (push) Canceled after 12m16s
2026-05-22 18:21:47 -04:00
Jeremy Janella 92696c31bc ci test
Build / build (push) Failing after 11m57s
2026-05-22 17:43:08 -04:00
Jeremy Janella 1125ef2d9e ci test
Build / build (push) Failing after 14m41s
2026-05-22 17:40:24 -04:00
Jeremy Janella e8dd33484a ci test
Build / build (push) Canceled after 10m18s
2026-05-22 17:22:59 -04:00
Jeremy Janella 06d77cc51b ci test
Build / build (push) Canceled after 1m11s
2026-05-22 17:22:49 -04:00
Jeremy Janella 8a5ddceef5 ci test
Build / build (push) Canceled after 3m34s
2026-05-22 17:16:03 -04:00
Jeremy Janella ce3a225c47 ci test
Build / build (push) Canceled after 4m0s
2026-05-22 17:08:05 -04:00
Jeremy Janella f8ffb0475c ci test
Build / build (push) Failing after 10m16s
2026-05-22 17:01:26 -04:00
Jeremy Janella 6dc840a3f7 ci test
Build / build (push) Failing after 0s
2026-05-22 15:18:36 -04:00
Jeremy Janella 70239a83cd ci test
Build / build (push) Failing after 0s
2026-05-22 15:16:34 -04:00
Jeremy Janella bdce9ba496 ci test
Build / build (push) Failing after 0s
2026-05-22 15:13:24 -04:00
7 changed files with 240 additions and 70 deletions
+16 -5
View File
@@ -8,25 +8,36 @@ on:
defaults:
run:
shell: /bin/busybox sh -e {0}
shell: /bin/sh -e {0}
env:
PATH: /run/current-system/sw/bin:/run/wrappers/bin:/usr/bin:/bin
jobs:
build:
runs-on: homelab-predator
runs-on: homelab
steps:
- name: Configure git
run: git config --global --add safe.directory /servers/site
- name: Create repo
run: |
[ ! -d /servers/site ] && git clone https://git.jeremyjanella.com/jjanella/site.git /servers/site || true
- name: Pull
working-directory: /servers/site
run: git pull origin main
- name: Build
working-directory: /servers/site
run: cargo build --release
run: |
nix develop --command cargo build --release 2>&1
- name: Restart site
working-directory: /servers/site
run: |
pkill site || true
export RUNNER_TRACKING_ID=self-managed
nohup ./target/release/site > server.log 2>&1 &
setsid ./target/release/site > server.log 2>&1 &
sleep 1
pgrep site && echo "Site is running!"
Generated
+100
View File
@@ -0,0 +1,100 @@
{
"nodes": {
"fenix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1779612045,
"narHash": "sha256-+7lfNVnmXJDkiRYHd5NoNwYoyUcc0LcXPaIJqjO7VWM=",
"owner": "nix-community",
"repo": "fenix",
"rev": "d7be747f0a65af378de515fc3cee131bf99a008f",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1779508470,
"narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "29916453413845e54a65b8a1cf996842300cd299",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"fenix": "fenix",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1779569060,
"narHash": "sha256-NSnk5D+3KEfRdbgPijs33N2RAKSG6A74SwfnynLcouo=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "987ea33645ab1c709b1df6823038abcb2fe8973e",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}
+42
View File
@@ -0,0 +1,42 @@
{
description = "Rust development environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
fenix = {
url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, flake-utils, fenix }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
toolchain = fenix.packages.${system}.fromToolchainFile {
file = ./rust-toolchain.toml;
sha256 = "sha256-gh/xTkxKHL4eiRXzWv8KP7vfjSk61Iq48x47BEDFgfk=";
};
in
{
devShells.default = pkgs.mkShell rec {
nativeBuildInputs = [ pkgs.pkg-config ];
buildInputs = with pkgs; [
toolchain
clang
llvmPackages.bintools
typst
];
LIBCLANG_PATH = pkgs.lib.makeLibraryPath [ pkgs.llvmPackages_latest.libclang.lib ];
RUSTFLAGS = (builtins.map (a: ''-L ${a}/lib'') []);
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath (buildInputs ++ nativeBuildInputs);
BINDGEN_EXTRA_CLANG_ARGS =
(builtins.map (a: ''-I"${a}/include"'') [ pkgs.glibc.dev ])
++ [
''-I"${pkgs.llvmPackages_latest.libclang.lib}/lib/clang/${pkgs.llvmPackages_latest.libclang.version}/include"''
''-I"${pkgs.glib.dev}/include/glib-2.0"''
''-I${pkgs.glib.out}/lib/glib-2.0/include/''
];
};
}
);
}
-48
View File
@@ -1,48 +0,0 @@
{ pkgs ? import <nixpkgs> {} }:
let
overrides = (builtins.fromTOML (builtins.readFile ./rust-toolchain.toml));
libPath = with pkgs; lib.makeLibraryPath [
# load external libraries that you need in your rust project here
];
in
pkgs.mkShell rec {
nativeBuildInputs = [ pkgs.pkg-config ];
buildInputs = with pkgs; [
clang
# Replace llvmPackages with llvmPackages_X, where X is the latest LLVM version (at the time of writing, 16)
llvmPackages.bintools
rustup
typst
];
RUSTC_VERSION = overrides.toolchain.channel;
# https://github.com/rust-lang/rust-bindgen#environment-variables
LIBCLANG_PATH = pkgs.lib.makeLibraryPath [ pkgs.llvmPackages_latest.libclang.lib ];
shellHook = ''
export PATH=$PATH:''${CARGO_HOME:-~/.cargo}/bin
export PATH=$PATH:''${RUSTUP_HOME:-~/.rustup}/toolchains/$RUSTC_VERSION-x86_64-unknown-linux-gnu/bin/
'';
# Add precompiled library to rustc search path
RUSTFLAGS = (builtins.map (a: ''-L ${a}/lib'') [
# add libraries here (e.g. pkgs.libvmi)
]);
LD_LIBRARY_PATH = libPath;
# Add glibc, clang, glib, and other headers to bindgen search path
BINDGEN_EXTRA_CLANG_ARGS =
# Includes normal include path
(builtins.map (a: ''-I"${a}/include"'') [
# add dev libraries here (e.g. pkgs.libvmi.dev)
pkgs.glibc.dev
])
# Includes with special directory paths
++ [
''-I"${pkgs.llvmPackages_latest.libclang.lib}/lib/clang/${pkgs.llvmPackages_latest.libclang.version}/include"''
''-I"${pkgs.glib.dev}/include/glib-2.0"''
''-I${pkgs.glib.out}/lib/glib-2.0/include/''
];
}
+3 -2
View File
@@ -3,8 +3,6 @@ use axum::{
};
use tower_http::services::ServeDir;
use askama::Template;
// use typst::model;
// use typst_html;
use std::{collections::HashMap, fs, io::{Error, Write}, process::{Command, Stdio}};
use regex::Regex;
@@ -117,6 +115,9 @@ async fn get_post(
#[tokio::main]
async fn main() {
// unsafe {
// std::env::set_var("TYPST_FEATURES", "html");
// }
let home_html = Html(
HomeTemplate {
+74 -15
View File
@@ -1,21 +1,80 @@
#import "@preview/treet:1.0.0": *
#show list: set text(font: "DejaVu Sans Mono", weight: "bold")
= About me
University of Toronto student in Computer Science interested in research and development. Fascinated by finding, understanding, and developing solutions to technical problems. Fields of interest include cybersecurity, robotics, software engineering, automation, data science, machine learning, and ethics. A constant learner always looking to build technical skills, and share what I learn.
Computer Science student at the University of Toronto with experience in cybersecurity, firmware, low-level development and software engineering. Interested in deep technical work, solutions architecting. A continuous learner interested in owning problems, researching and implementing solutions.
// === What can I do
I enjoy competing in capture the flag competitions (cybersecurity and the backyard game), working with robotics, automating tasks and thinking through problems.
I've competed in a few hackathons which are cool, but I prefer spending large time frames incrementally understand solutions to much larger problems, and attempting solutions to those.
I think automation is one of the most powerful abilities we have. As a species we are on the brink of mass automation, which can either liberate our lives into a post-scarcity utopia, or give a small percentage of us more control over the rest than anyone ever has had.
An odd and maybe abstract thing I enjoy is design philosophy. Some examples are creating software to building moral structures through logic to methods of learning new skills.
NixOS has to be my favourite distribution of Linux. My attraction to its design philosophy is that if something works, it will always work anywhere, and can still be worked on long after everything around it has moved on. Its hard to put into words but this feels like debian level stability with arch-like freedom to explore software.
When I'm not nerding out on math, software, ethics, and optimal ways of learning things, I manage to get outdoors. I like mountain biking through trails, snowboarding, hiking through scenic areas, swimming, and basketball. The next thing I'll be getting into is likely SCUBA diving.
I wrote this myself. While AI communicates ideas better than I do, I want to ensure that my and only my thoughts are written. That is true for anything on this site.
=== Interests & Skills
#html.elem("div", attrs: (class: "tree"))[
#tree-list(
indent: "│ ",
empty-indent: " "
)[
- Research & Development: I'll never get bored learning, truly understanding, and engineering something new
- Computer Science: I love the chance to use and actively seek ways to use concepts within computer science
- Linux
- Nix & NixOS: I could give a Ted Talk on how awesome this is for dev ops
- Perfectly reproducible, time independent environments
- Given infinite time lets rewrite the world's infrastructure
- IoT / microcomputers & microcontrollers
- Hosting servers
- Docker
- OCI images with Nix
- Programming
- Rust: Given infinite time lets rewrite the world's codebases
- C/C++
- Python
- Bash
- Assembly
- Functional
- Object Oriented
- Design patterns
- SQL
- GDScript
- Cyber security
- Reverse engineering assembly
- Binary patching
- Anticheat
- CTF's
- CompTIA PenTest+ certified
- AI exploitation
- Tricking image classifiers
- Prompt injection techniques
- Extracting sensitive data with statistics
- Side channel attacks
- Van Eck Phreaking / TEMPEST
- RF Sensing
- SPECTRE
- OSINT
- Machine learning
- UTAT Satellite Firmware Development
- Automation: Why do something once when it can be automated in triple the time?
- Robotics
- Programming and computing paths & trajectories etc
- AI - how much can this actually do, when orchestrated into a full platform?
- Langchain
- Random conjectures & problems
- Collatz Conjecture
- Travelling salesman
- Graph Reconstruction
- Math
- Stats
- Philosophy
- Ethics
- Consulting
- Nix
- Cybersecurity
- Software engineering
- Game development: Problem solving & engineering outlet
- Developing a game with plans to release
- Touching grass
- Mountain biking - especially technical trails
- Hiking
- Snowboarding
- Swimming (Used to lifeguard & teach lessons!)
]
]
+5
View File
@@ -184,3 +184,8 @@ body {
background-image: linear-gradient(330deg, #222, #040404);
}
.tree {
font-family: "JetBrains Mono", "Fira Code", "Cascadia Code", "Source Code Pro", monospace;
line-height: 1.05;
overflow-x: scroll;
}