This commit is contained in:
commit
e892c2f8a3
78 changed files with 6070 additions and 0 deletions
16
src/about_me.jot
Normal file
16
src/about_me.jot
Normal file
|
@ -0,0 +1,16 @@
|
|||
# About me
|
||||
|
||||
*Hi!* My name is Isaac Mills. I'm a software engineer and computer scientist who loves harnessing the power of technology to solve problems!
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
- I love learning about computers. Everything from how they work, to new languages, to new ways to use them (I even learned a bit of WGSL and WGPU to make the shader in the background\*)
|
||||
- I love looking for problems to solve, and working with people to solve them
|
||||
- As a Boy Scout at heart, I love camping, hiking, backpacking, and just the outdoors generally
|
||||
- I'm a loyal friend who will be there for you through thick and thin
|
||||
- I know how to both write code for computers, as well as whip them into shape when they start having problems. I am the IT guy in my family
|
||||
|
||||
\*Special thanks to _meico_ from Shadertoy for the GLSL version of your Spectrum Ring shader
|
1026
src/app.rs
Normal file
1026
src/app.rs
Normal file
File diff suppressed because it is too large
Load diff
3
src/font.wgsl
Normal file
3
src/font.wgsl
Normal file
|
@ -0,0 +1,3 @@
|
|||
@fragment
|
||||
fn fs_main(@location(1) : vec4<f32>) -> @location(0) vec4<f32> {
|
||||
}
|
7
src/gimp.jot
Normal file
7
src/gimp.jot
Normal file
|
@ -0,0 +1,7 @@
|
|||
# GIMP Experience
|
||||
|
||||
GIMP is a lot like Photoshop, but open source and free. Much like Photoshop, I don't think anyone can say they're _"100% fluent"_ in it, but I can say that I _am_ pretty experienced in it.
|
||||
|
||||
- This is a funny image I manipulated of a Pillsburry cookie jar that I thought looked like a pufferfish
|
||||
|
||||

|
24
src/inkscape.jot
Normal file
24
src/inkscape.jot
Normal file
|
@ -0,0 +1,24 @@
|
|||
# Inkscape Experience
|
||||
|
||||
For those who don't know, *Inkscape* is very similar to Adobe Illustrator, but open source and free. I am fluent, and have made numerous things in this program
|
||||
|
||||
- This project was for my Senior US Government class. It's a mock political advertisement for the fictional Political Action Comittee _Care_.
|
||||
|
||||

|
||||
|
||||
- This project was for my Senior Web Development class, and the assignment was to make a logo for a fictional company using what knowledge of Adobe Illustrator (Inkscape) we had
|
||||
|
||||

|
||||
|
||||
- This project was also for my Senior US Government class. It's a flag representing the mock country where the Angry Birds franchise takes place
|
||||
|
||||

|
||||
|
||||
- This project was for my mother, who is an educator who teaches people how to make books from upcycled materials you can find in your own home. These are a few of the colorways for an Instagram ad campaign I helped her make.
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
|
||||
|
25
src/java.jot
Normal file
25
src/java.jot
Normal file
|
@ -0,0 +1,25 @@
|
|||
# Java Experience
|
||||
|
||||
I've taken *AP Computer Science A*, as well as my school's post-AP course: *CS Data Structures*. Both courses are in Java.
|
||||
|
||||
- This is a painting of Saul Goodman using the [code.org](https://code.org) Neighborhood Painter. It's done using only it's named colors, and was made by generating Java code from an image file. [You can run it here](https://studio.code.org/projects/javalab/fsGVkmFdUWUeePTV6rYXnb21BD3bAjq6oVTMtKd13lE).
|
||||
|
||||

|
||||
|
||||
- This is an auditory project done with [code.org](https://code.org)'s Java Theater. By using Rust code to parse MIDI files and generate an intermediate format which is parsed by Java, this project contains a library of 27 tracks from various video games which are played using the Theater's comically bad synthesizer. [You can run it here](https://studio.code.org/projects/javalab/SCaGR1_Et1sgc7sxNEvRSf-4RKplGVwIjd7O7WOeKmg)
|
||||
|
||||

|
||||
|
||||
- This was my most complicated [code.org](https://code.org) project. It's an entire 30 second short film about my personal narrative composed using only the synthesizer, and the shape drawing functions of the Theater. This was composed using a wide variety of tools
|
||||
|
||||
- The frames were composed in [Inkscape](#inkscape).
|
||||
- The MIDI file was based on the Bad Piggies theme song, and was edited using [MIDIEditor](http://www.midieditor.org/). Within the MIDI file, custom events were used to interleave the frames of the animation with the MIDI notes.
|
||||
- The MIDI file was put into a big converter which converted the MIDI, as well as all the SVG frames, into a lot of Java code, which in turn generated the movie using the code.org Theater.
|
||||
|
||||
[You can view the full movie here](https://studio.code.org/projects/javalab/kvhEgxPPEVMkjFFfNZz_n5L6ADRjLOSM2GMNJjGEcUc)
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
1
src/kdenlive.jot
Normal file
1
src/kdenlive.jot
Normal file
|
@ -0,0 +1 @@
|
|||
# Kdenlive Experience
|
4
src/lib.rs
Normal file
4
src/lib.rs
Normal file
|
@ -0,0 +1,4 @@
|
|||
#![warn(clippy::all, rust_2018_idioms)]
|
||||
|
||||
mod app;
|
||||
pub use app::Portfolio;
|
27
src/linux.jot
Normal file
27
src/linux.jot
Normal file
|
@ -0,0 +1,27 @@
|
|||
# GNU/Linux Experience
|
||||
|
||||
I've been daily driving Linux since the beginning of 2020, and have been hosting a home server running Linux since 2023.
|
||||
|
||||
- On my server at home, I am currently hosting
|
||||
|
||||
- [WireGuard](https://www.wireguard.com/)
|
||||
- [Nextcloud](https://nextcloud.com/)
|
||||
- [code-server](https://coder.com/docs/code-server/latest/install)
|
||||
- [Forgejo](https://forgejo.org/)
|
||||
- [Woodpecker CI](https://woodpecker-ci.org/)
|
||||
- [Vaultwarden](https://github.com/dani-garcia/vaultwarden)
|
||||
- [scrutiny](https://github.com/AnalogJ/scrutiny)
|
||||
|
||||
My daily driver right now, and the distro my server is running on, is the S6 variant of [Artix Linux](https://artixlinux.org/).
|
||||
|
||||

|
||||
|
||||
I've not only daily driven Linux, but I've also tailor made programs for it; using technologies such as Wayland, DBus, Wireplumber, and more.
|
||||
|
||||
- An image of my current Linux desktop. The status bar was written entirely by me in Rust ([dotfiles](https://github.com/StratusFearMe21/dotfiles))
|
||||
|
||||

|
||||
|
||||
- Linux silliness (also uses my [dotfiles](https://github.com/StratusFearMe21/dotfiles))
|
||||
|
||||

|
49
src/main.rs
Normal file
49
src/main.rs
Normal file
|
@ -0,0 +1,49 @@
|
|||
#![warn(clippy::all, rust_2018_idioms)]
|
||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release
|
||||
|
||||
use eframe::egui;
|
||||
|
||||
// When compiling natively:
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
fn main() -> eframe::Result<()> {
|
||||
env_logger::init(); // Log to stderr (if you run with `RUST_LOG=debug`).
|
||||
|
||||
let native_options = eframe::NativeOptions {
|
||||
viewport: egui::ViewportBuilder::default()
|
||||
.with_inner_size([400.0, 300.0])
|
||||
.with_min_inner_size([300.0, 220.0])
|
||||
.with_icon(
|
||||
// NOTE: Adding an icon is optional
|
||||
eframe::icon_data::from_png_bytes(&include_bytes!("../assets/icon-256.png")[..])
|
||||
.unwrap(),
|
||||
),
|
||||
..Default::default()
|
||||
};
|
||||
eframe::run_native(
|
||||
"Isaac Mills's Portfolio",
|
||||
native_options,
|
||||
Box::new(|cc| Box::new(portfolio::Portfolio::new(cc))),
|
||||
)
|
||||
}
|
||||
|
||||
// When compiling to web using trunk:
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
fn main() {
|
||||
// Redirect `log` message to `console.log` and friends:
|
||||
eframe::WebLogger::init(log::LevelFilter::Debug).ok();
|
||||
|
||||
let web_options = eframe::WebOptions {
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
wasm_bindgen_futures::spawn_local(async {
|
||||
eframe::WebRunner::new()
|
||||
.start(
|
||||
"the_canvas_id", // hardcode it
|
||||
web_options,
|
||||
Box::new(|cc| Box::new(portfolio::Portfolio::new(cc))),
|
||||
)
|
||||
.await
|
||||
.expect("failed to start eframe");
|
||||
});
|
||||
}
|
3
src/postgresql.jot
Normal file
3
src/postgresql.jot
Normal file
|
@ -0,0 +1,3 @@
|
|||
# PostgreSQL Experience
|
||||
|
||||
If data needs basing, my database of choice is PostgreSQL. I've made a couple Discord bots that use PostgreSQL, and every service on my server that uses a DB, I have it hooked up to PostgreSQL. See my [GNU/Linux Experience page](#linux)
|
3
src/python.jot
Normal file
3
src/python.jot
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Python Experience
|
||||
|
||||

|
13
src/reaper.jot
Normal file
13
src/reaper.jot
Normal file
|
@ -0,0 +1,13 @@
|
|||
# REAPER Experience
|
||||
|
||||
*REAPER* is a lot like Audacity, but paid and _waaaay_ better.
|
||||
|
||||
- This is a short piece of upbeat music I made in REAPER. [You can listen to it here](https://nations.lol/s/pbAN8y6rRw8T6nr)
|
||||
|
||||

|
||||
|
||||
- In a Discord chat, a student from my college sent the chat [this piece of music he made](https://www.bandlab.com/track/fefa6cac-62a4-ee11-8926-000d3a428257?revId=fdfa6cac-62a4-ee11-8926-000d3a428257). Someone in chat said they thought it sounded like a Sonic theme, so I remixed his music with [For True Story by Circuit Freq RMX](https://www.youtube.com/watch?v=fgweT5OdLQY&pp=ygUgZm9yIHRydWUgc3Rvcnkgc29uaWMgZ2VuZXJhdGlvbnM%3D). A song from Sonic Generations. [You can listen to the remix here](https://cdn.discordapp.com/attachments/1110262902482542781/1193022053964582943/Get_down_wit_da_true_story_sonic_hedgehog.webm?ex=66077c5e&is=65f5075e&hm=e873c49de116e38e7f048615c6adafd8719913da7640107d15b4b537c4ca031e&)
|
||||
|
||||

|
||||
|
||||
- I've also edited a podcast using REAPER. However, the podcast was for an assignment my friends were doing, and they would rather the recording not be floating around on the interwebs.
|
14
src/rust.jot
Normal file
14
src/rust.jot
Normal file
|
@ -0,0 +1,14 @@
|
|||
# Rust Experience
|
||||
|
||||
My language of choice is Rust. Everything I write on my own time, and everything I write if I can, I write it in Rust. Even this portfolio is written in Rust!
|
||||
|
||||
This portfolio uses these Rust crates:
|
||||
|
||||
- `jotdown`
|
||||
- `databake`
|
||||
- `eframe`
|
||||
- `glyphon`
|
||||
- `cosmic-text`
|
||||
- `keyframe`
|
||||
- `glam`
|
||||
- `wgpu`
|
10
src/scratch.jot
Normal file
10
src/scratch.jot
Normal file
|
@ -0,0 +1,10 @@
|
|||
# Scratch Experience
|
||||
|
||||
Every software developer worth their salt can say they're proficient in Scratch, but very few can say that they've made an award winning Scratch project. In 3rd grade, [my Scratch project](https://scratch.mit.edu/projects/144210368/) won 3rd place in the The Discovery's 2017 Scratch Code Challenge, hosted by the [Terry Lee Wells Discovery Museum](https://nvdm.org) in Reno, Nevada. To my memory, the competition was separated by grade level, and had ~1,000 international participants.
|
||||
|
||||

|
||||

|
||||
|
||||
- And yes, I do have the medal and the Windows 10 Pro license to prove it
|
||||
|
||||

|
68
src/shader.wgsl
Normal file
68
src/shader.wgsl
Normal file
|
@ -0,0 +1,68 @@
|
|||
struct Uniforms {
|
||||
iResolution: vec2<f32>,
|
||||
time: f32,
|
||||
iMouse: vec2<f32>,
|
||||
size: f32,
|
||||
offset: vec2<f32>,
|
||||
beamwidth: f32,
|
||||
paddingtwo: f32
|
||||
};
|
||||
|
||||
@group(0) @binding(0)
|
||||
var<uniform> uni: Uniforms;
|
||||
|
||||
@vertex
|
||||
fn vs_main(@builtin(vertex_index) vertex_index: u32) -> @builtin(position) vec4<f32> {
|
||||
var x = f32(i32((vertex_index << u32(1)) & u32(2)));
|
||||
var y = f32(i32(vertex_index & u32(2)));
|
||||
var uv = vec2<f32>(x, y);
|
||||
var out = 2.0 * uv - vec2<f32>(1.0, 1.0);
|
||||
return vec4<f32>(out.x, out.y, 0.0, 1.0);
|
||||
}
|
||||
|
||||
fn modulo(a: f32, b: f32) -> f32 {
|
||||
return ((a % b) + b) % b;
|
||||
}
|
||||
|
||||
@fragment
|
||||
fn fs_main(@builtin(position) fragCoord: vec4<f32>) -> @location(0) vec4<f32> {
|
||||
let iMouse = uni.iMouse + uni.offset;
|
||||
let frag_coord = fragCoord + uni.offset.xyxy;
|
||||
var p: vec2<f32>;
|
||||
var m: vec2<f32>;
|
||||
if (uni.iResolution.x < uni.iResolution.y) {
|
||||
m = (2. * iMouse - uni.iResolution) / uni.iResolution.x;
|
||||
p = (2. * frag_coord.xy - uni.iResolution) / uni.iResolution.x;
|
||||
} else {
|
||||
m = (2. * iMouse - uni.iResolution) / uni.iResolution.y;
|
||||
p = (2. * frag_coord.xy - uni.iResolution) / uni.iResolution.y;
|
||||
}
|
||||
let tau: f32 = 3.1415927 * 2.;
|
||||
let a: f32 = atan2(p.x, p.y);
|
||||
let mousexy: f32 = atan2(m.x, m.y);
|
||||
var r: f32 = length(p) * uni.size;
|
||||
var l: f32 = length(m) * uni.size;
|
||||
var mouse: vec2<f32> = vec2<f32>(mousexy / tau, l);
|
||||
var uv: vec2<f32> = vec2<f32>(a / tau, r);
|
||||
var xCol: f32 = uv.x * 3.;
|
||||
xCol = modulo((xCol), (3.));
|
||||
var horColour: vec3<f32> = vec3<f32>(0.25, 0.25, 0.25);
|
||||
if (xCol < 1.) {
|
||||
horColour.r = horColour.r + (1. - xCol);
|
||||
horColour.g = horColour.g + (xCol);
|
||||
} else { if (xCol < 2.) {
|
||||
xCol = xCol - (1.);
|
||||
horColour.g = horColour.g + (1. - xCol);
|
||||
horColour.b = horColour.b + (xCol);
|
||||
} else {
|
||||
xCol = xCol - (2.);
|
||||
horColour.b = horColour.b + (1. - xCol);
|
||||
horColour.r = horColour.r + (xCol);
|
||||
}
|
||||
}
|
||||
uv = 2. * uv - 1.;
|
||||
mouse = 2. * mouse - 1.;
|
||||
let beamWidth: f32 = (0.7 + 0.5 * sin((uv.x + (mouse.x - 0.2)) * 2. * tau * 0.15 * clamp(5., 0., 10.))) * abs(uni.beamwidth / (30. * uv.y));
|
||||
let horBeam: vec3<f32> = vec3<f32>(beamWidth);
|
||||
return vec4<f32>(horBeam * horColour, 1.);
|
||||
}
|
1
src/tree_sitter.jot
Normal file
1
src/tree_sitter.jot
Normal file
|
@ -0,0 +1 @@
|
|||
# Tree-sitter Experience
|
Loading…
Add table
Add a link
Reference in a new issue