Compare commits

..

No commits in common. "update/responsive-styling" and "master" have entirely different histories.

24 changed files with 112 additions and 14753 deletions

View File

@ -1,17 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Portfolio.Domain.Features.Portfolio
{
public class WorkExperience
{
public string Title { get; set; }
public string Company { get; set; }
public int StartYear { get; set; }
public int EndYear { get; set; }
public string Details { get; set; }
}
}

View File

@ -1,7 +1,6 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Identity.Client;
using Portfolio.Application.Services.Articles;
using Portfolio.Application.Services.NWSWeatherService;
using Portfolio.Application.Services.PokemonService;

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html lang="en" class="">
<html lang="en">
<head>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<base href="/" />
<link rel="stylesheet" href="bootstrap/bootstrap-pulse.css" /> <!-- app.css -->
<link rel="stylesheet" href="bootstrap/bootstrap-brite.css" /> <!-- app.css -->
<link rel="stylesheet" href="Portfolio.WebUI.Server.styles.css" />
<link rel="icon" type="image/png" href="favicon.png" />
<HeadOutlet />
</head>
</head>
<body class="bg-primary-subtle">
<body class="bg-primary-subtle">
<Routes />
<script src="_framework/blazor.web.js"></script>
<script src="js/site.js"></script>
</body>
</body>
</html>

View File

@ -78,7 +78,7 @@
<div class="row align-items-center mb-2 ms-1">
<div class="col-6 text-end pe-2">
<label class="form-label mb-0 text-nowrap">
<label class="form-label mb-0">
@TempRanges[i].Min&deg; @TempRanges[i].Max&deg;
</label>
</div>

View File

@ -15,7 +15,7 @@
<div class="text-center position-relative">
<input class="form-control position-absolute top-0 start-0 border-0 w-25" placeholder="Search Pokémon..." @bind="SearchTerm" @oninput="HandleSearch" />
<h2 class="text-white text-decoration-underline">Available Pokémon</h2>
<h2 class="text-info text-decoration-underline">Available Pokémon</h2>
<div class="m-1 badge bg-info position-absolute top-0 end-0 border-0"><p class="statText">@(pokemons.Count()) Pokémon</p></div>
</div>
</div>

View File

@ -1,9 +1,9 @@
@inherits LayoutComponentBase
<div class="page">
<main class="">
<div class="page bg-primary-subtle h-100">
<main class="h-100 w-100">
<NavMenu3 />
<article class="container ">
<article class="container m-auto">
<div class="">
@Body
</div>

View File

@ -1,33 +1,33 @@
<div class="navbar navbar-expand bg-primary border-0">
<div class="d-flex align-items-center mb-3 mb-md-0 me-md-auto link-light text-decoration-none px-3">
<div class="d-flex align-items-center mb-3 mb-md-0 me-md-auto link-light text-decoration-none px-2">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#FFFFFF" class="bi bi-arrow-through-heart" viewBox="0 0 16 16" style="cursor: pointer;">
<path fill-rule="evenodd" d="M2.854 15.854A.5.5 0 0 1 2 15.5V14H.5a.5.5 0 0 1-.354-.854l1.5-1.5A.5.5 0 0 1 2 11.5h1.793l.53-.53c-.771-.802-1.328-1.58-1.704-2.32-.798-1.575-.775-2.996-.213-4.092C3.426 2.565 6.18 1.809 8 3.233c1.25-.98 2.944-.928 4.212-.152L13.292 2 12.147.854A.5.5 0 0 1 12.5 0h3a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.854.354L14 2.707l-1.006 1.006c.236.248.44.531.6.845.562 1.096.585 2.517-.213 4.092-.793 1.563-2.395 3.288-5.105 5.08L8 13.912l-.276-.182a22 22 0 0 1-2.685-2.062l-.539.54V14a.5.5 0 0 1-.146.354zm2.893-4.894A20.4 20.4 0 0 0 8 12.71c2.456-1.666 3.827-3.207 4.489-4.512.679-1.34.607-2.42.215-3.185-.817-1.595-3.087-2.054-4.346-.761L8 4.62l-.358-.368c-1.259-1.293-3.53-.834-4.346.761-.392.766-.464 1.845.215 3.185.323.636.815 1.33 1.519 2.065l1.866-1.867a.5.5 0 1 1 .708.708z" />
</svg>
<span class="fs-4 mx-2 text-white">Kira Jiroux</span>
<span class="fs-4 mx-1 text-white">Kira Jiroux</span>
</div>
<ul class="navbar-nav">
<li class="nav-item">
<NavLink class="nav-link d-flex align-items-center" href="" Match="NavLinkMatch.All">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFFFFF" class="bi bi-house-heart-fill" viewBox="0 0 16 16">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-house-heart-fill mb-1" viewBox="0 0 16 16">
<path d="M7.293 1.5a1 1 0 0 1 1.414 0L11 3.793V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v3.293l2.354 2.353a.5.5 0 0 1-.708.707L8 2.207 1.354 8.853a.5.5 0 1 1-.708-.707z" />
<path d="m14 9.293-6-6-6 6V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5zm-6-.811c1.664-1.673 5.825 1.254 0 5.018-5.825-3.764-1.664-6.691 0-5.018" />
</svg> <span class="mx-2 mt-0 text-white">Home</span>
</svg> <span class="mx-2 mt-0">Home</span>
</NavLink>
</li>
<li>
<NavLink class="nav-link d-flex align-items-center" href="temperature-blanket">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFFFFF" class="bi bi-border-outer" viewBox="0 0 16 16">
<NavLink class="nav-link" href="temperature-blanket">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-border-outer" viewBox="0 0 16 16">
<path d="M7.5 1.906v.938h1v-.938zm0 1.875v.938h1V3.78h-1zm0 1.875v.938h1v-.938zM1.906 8.5h.938v-1h-.938zm1.875 0h.938v-1H3.78v1zm1.875 0h.938v-1h-.938zm2.813 0v-.031H8.5V7.53h-.031V7.5H7.53v.031H7.5v.938h.031V8.5zm.937 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zm1.875 0h.938v-1h-.938zM7.5 9.406v.938h1v-.938zm0 1.875v.938h1v-.938zm0 1.875v.938h1v-.938z" />
<path d="M0 0v16h16V0zm1 1h14v14H1z" />
</svg><span class="mx-2 mt-0 text-white">Crochet</span>
</svg><span class="mx-2 mt-0">Crochet</span>
</NavLink>
</li>
<li>
<NavLink class="nav-link d-flex align-items-center" href="pokemonsleep">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFFFFF" class="bi bi-p-circle-fill" viewBox="0 0 16 16">
<NavLink class="nav-link" href="pokemonsleep">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-p-circle-fill" viewBox="0 0 16 16">
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.5 4.002V12h1.283V9.164h1.668C10.033 9.164 11 8.08 11 6.586c0-1.482-.955-2.584-2.538-2.584zm2.77 4.072c.893 0 1.419-.545 1.419-1.488s-.526-1.482-1.42-1.482H6.778v2.97z" />
</svg> <span class="mx-2 mt-0 text-white">Pokémon Sleep</span>
</svg> <span class="mx-2 mt-0">Pokémon Sleep</span>
</NavLink>
</li>

View File

@ -4,7 +4,9 @@
@rendermode InteractiveServer
<PageTitle>Crochet Tools</PageTitle>
<head>
<link rel="stylesheet" href="bootstrap/bootstrap-cosmo.css" /> <!-- app.css -->
</head>
<h3 class="text-xl font-bold mb-4">Crochet</h3>
<div class="">

View File

@ -1,987 +1,14 @@
@page "/"
@inject IHttpClientFactory ClientFactory
@attribute [StreamRendering]
@rendermode InteractiveServer
<PageTitle>Home</PageTitle>
<!-- View 1: Desktop View -->
<div class="container d-none d-lg-none d-xl-block mt-5 pt-3 pb-5 ps-5 pe-5 ">
<h1 class="fst-italic fw-light fs-1 font-monospace">Hello, World!</h1>
<!-- <PokemonBackground />-->
<h1 class="test">Hello, world!</h1>
<p>Ensuring that git is connected properly.</p>
<!-- Start of Grid -->
<div class="row mb-3">
<div class="col-auto ">
<img class="card-img rounded-3" style="width: 18em;" src="https://i.pinimg.com/736x/54/63/ed/5463ed9471053712a76c0dd0b301a7ea.jpg" />
</div>
<div class="col ">
<!-- About Me-->
<div class="row card rounded fs-5 mb-3 p-2 ps-3 pe-3 border-0">
I am a full-stack web developer with additional
experience in Data Analysis and Visualization, as well as
Simulation/VR development, and AI/ML programming.
I am a friendly team worker with strong analytical, math
and problem-solving skills that adapts well to an
Agile/SCRUM environment and development lifecycle.
</div>
<div class="row">
<!-- School Experience -->
<div class="col ">
<div class="card rounded p-2 ps-3 pe-3 border border-1 border-primary">
<p class="fs-6 fw-lighter card-subtitle p-0">September 2018 March 2022</p>
<p class="fs-5 card-title m-0">B.S. in Computer Science</p>
<p class="fs-6 fw-lighter card-subtitle">Oregon State University</p>
<p class="fs-6 fw-lighter card-subtitle">Graduated Cum Laude</p>
<p class="fs-6 fw-lighter card-subtitle">Deans List: Fall 2020, Fall 2021</p>
<p class="fs-6 fw-lighter card-subtitle">Final GPA: 3.33</p>
<!-- Courses -->
<label class="text-decoration-underline fw-semibold">Courses</label>
<div class="overflow-auto" style="height: auto; max-height: 12rem">
<ul class="list-group list-group-flush">
@if (courses == null)
{
<div>Loading...</div>
}
else
{
<ul class="list-group list-group-flush">
@foreach (var course in courses)
{
<li class="list-group-item">@course</li>
}
</ul>
}
</ul>
</div>
Welcome to your new app.
</div>
@* <div class="ps-3 pe-3">
<ul class="list-group list-group-flush">
<li class="">Organized</li>
<li class="">Responsible</li>
<li class="">Meticulous</li>
<li class="">Analytical</li>
<li class="">Self-motivating</li>
</ul>
</div> *@
</div>
<!--Skills \ Languages-->
<div class="col ">
<div class="bg-white rounded p-2 border border-1 border-primary" >
<div class="card-header">
<label class="text-decoration-underline fw-semibold">Skills \ Languages</label>
</div>
<div class="overflow-auto" style="max-height: 20rem">
@if (skills == null)
{
<div>Loading...</div>
}
else
{
<ul class="list-group list-group-flush">
@foreach (var skill in skills)
{
<li class="list-group-item">@skill</li>
}
</ul>
}
</div>
</div>
</div>
<!-- Tools -->
<div class="col ">
<div class="bg-white rounded p-2 border border-1 border-primary">
<div class="card-header">
<label class="text-decoration-underline fw-semibold">Tools</label>
</div>
<div class="overflow-auto" style="max-height: 20rem">
@if (tools == null)
{
<div>Loading...</div>
}
else
{
<ul class="list-group list-group-flush">
@foreach (var tool in tools)
{
<li class="list-group-item">@tool</li>
}
</ul>
}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row ">
<div class="col card border-0 rounded rounded-4 pt-3 pb-3">
<!-- Button Bay-->
<div class="row mt-2">
<div class="d-grid gap-2 d-md-flex justify-content-around">
<button class="btn rounded-4 w-25 @(isExperience ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleExperience()">Experience</button>
<button class="btn rounded-4 w-25 @(isProjects ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleProjects()">Projects</button>
</div>
</div>
<div class="row">
<div class="col">
@if (isExperience)
{
<div class="row justify-content-md-center fst-italic fs-1 mb-2">
Experience
</div>
@if (experiences == null)
{
<div>Loading...</div>
}
else
{
@foreach (var experience in experiences)
{
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-6 fw-lighter card-subtitle p-0"> @experience.StartYear @experience.EndYear</p>
<p class="fs-5 card-title m-0">@experience.Title - @experience.Company</p>
<p class="fs-6 fw-lighter card-text">@experience.Details</p>
</div>
</div>
}
}
}
else if (isProjects)
{
<div class="row justify-content-md-center fst-italic fs-1 mb-2">Projects</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">Temperature Blanket Visualizer</p>
<p class="fs-6 fw-lighter card-text">Useful tool to help visualize and refine blanket planning for crochet temperature blankets.
</p>
<p class="fs-6 fw-lighter card-text">A personal project, but a fun one.
</p>
<a class="mt-2" href="https://localhost:7189/pokemonsleep">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-file-code" viewBox="0 0 16 16">
<path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
<path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">PokemonSleep Toolset</p>
<p class="fs-6 fw-lighter card-text">A webpage constructed for the purposes of assisting players in the mobile game, Pokemon Sleep. Featuring a Pokemon Rater that derives ratings utilizing <a href="https://docs.google.com/spreadsheets/d/14nzQ--k4XhpFHI0qhgNRQlpWswh6WAxBCfq_QvIVZyI/edit?gid=339317073#gid=339317073">this</a> publically available spreadsheet constructed by other fans of the game.
</p>
<p class="fs-6 fw-lighter card-text">A personal project, but a fun one.
</p>
<a class="mt-2" href="https://localhost:7189/pokemonsleep">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-file-code" viewBox="0 0 16 16">
<path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
<path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">AI-Driven D&D 5E Character Generator with React, Next.js, and OpenAI GPT-3 Engine</p>
<p class="fs-6 fw-lighter card-text">Creates a credible D&D 5E character sheet, including backstory, based on user input. Ex."I would like to play a magical elf." Or "I want to smash things with a big hammer." Would result in the AI choosing the best character to play with given the limitations and rules of the game (class, race, etc). The user would still be able to customize their character afterwards, and be prompted if they happen to “break” the rules of character generation; i.e. too many skill points assigned.
</p>
<p class="fs-6 fw-lighter card-text">Lead development in core functionality, including front and back-end development. Developed all JavaScript components and pages including the deterministic logic depending on decisions made by the AI, and the styling using the emotion library.
</p>
<a class="" href="https://web.engr.oregonstate.edu/~hessro/teaching/hof/cs494#w22">CS 494 Hall of Fame recipient.</a>
<a class="mt-2" href="https://github.com/tylertitsworth/ai-character-generator">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">iOS Gesture Alphabet with Swift and CoreML</p>
<p class="fs-6 fw-lighter card-text">iOS keyboard extension that translates movements made by the users phone to corresponding letters. The model used has been trained with Apples CoreML to follow the users movements as though they were writing them in the air, through the detection of the devices sensors, primarily through roll/pitch/yaw. Developed as a means of accessibility for users who may not be able to use a traditional phone keyboard effectively.
</p>
<p class="fs-6 fw-lighter card-text">SCRUM team lead and lead developer during each phase of project lifecycle. Collected, cleaned, trained and tested model with data personally collected and collected by other users. Developed core functionality, including keyboard extension interface and translation of motion to letter.
</p>
<a class="mt-2" href="https://github.com/kjiroux/iOS-Gesture-Alphabet">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">Android Mobile App with Backend PokeAPI and Java</p>
<p class="fs-6 fw-lighter card-text">Using the PokeAPI, created the app “UltimateDex”, which acts as a complete Pokedex from the series Pokemon. Accesses all possible Pokemon, allows the user to search, filter their searches, and save entries to their personal repository for easy retrieval. Each entry when selected comes with its own page which displays all relevant information regarding the entry, including the image associated with the Pokemon, and styled similarly to that of the series.
</p>
<a class="mt-2" href="https://github.com/osu-cs492-w20/final-project-tamagucci/">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">NodeJS WebApp with MYSQL Database and Handlebars</p>
<p class="fs-6 fw-lighter card-text">Fantasy task-assignment system. Utilizes MYSQL to organize and contain guilds, “quests” posted to the forum/board, and guild members whose accounts are associated with the webapp. Handlebars template to display contents, NodeJS to serve.
</p>
<a class="mt-2" href="https://github.com/yanyan2019/cs340_project/">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
}
</div>
</div>
</div>
</div>
<div class="w-75 h-100 bg-white">
</div>
<!-- View 2: Smaller Desktop View -->
<div class="container d-none d-md-none d-xl-none d-lg-block mt-4 pt-3 pb-4 ">
<h1 class="fst-italic fw-light fs-1 font-monospace">Hello, World!</h1>
<div class="row mb-3">
<div class="col-auto ">
<img class="card-img rounded-3" style="width: 16.9em;" src="https://i.pinimg.com/736x/54/63/ed/5463ed9471053712a76c0dd0b301a7ea.jpg" />
</div>
<div class="col ">
<!-- About Me-->
<div class="row card rounded fs-6 mb-3 p-2 ps-3 pe-3 border-0">
I am a full-stack web developer with additional
experience in Data Analysis and Visualization, as well as
Simulation/VR development, and AI/ML programming.
I am a friendly team worker with strong analytical, math
and problem-solving skills that adapts well to an
Agile/SCRUM environment and development lifecycle.
</div>
<div class="row mt-3">
<!-- School Experience -->
<div class="col me-1">
<div class="row bg-white rounded p-2 ps-3 pe-3 border border-1 border-primary">
<p class="fs-6 fw-lighter card-subtitle p-0">September 2018 March 2022</p>
<p class="fs-5 card-title m-0 p-0">B.S. in Computer Science</p>
<p class="fs-6 fw-lighter card-subtitle p-0">Oregon State University</p>
<p class="fs-6 fw-lighter card-subtitle p-0">Graduated Cum Laude</p>
<p class="fs-6 fw-lighter card-subtitle p-0">Deans List: Fall 2020, Fall 2021</p>
<p class="fs-6 fw-lighter card-subtitle p-0">Final GPA: 3.33</p>
<!-- Courses -->
<label class="text-decoration-underline p-0">Courses</label>
<div class="overflow-auto p-0" style="max-height: 10rem">
<ul class="list-group list-group-flush">
@if (courses == null)
{
<div>Loading...</div>
}
else
{
<ul class="list-group list-group-flush">
@foreach (var course in courses)
{
<li class="list-group-item">@course</li>
}
</ul>
}
</ul>
</div>
</div>
</div>
<div class="col ms-1">
<!--Skills \ Languages-->
<div class="row bg-white rounded p-2 border border-1 border-primary mb-2">
<div class="card-header">
<label class="text-decoration-underline">Skills \ Languages</label>
</div>
<div class="overflow-auto p-0" style="max-height: 8rem">
@if (skills == null)
{
<div>Loading...</div>
}
else
{
<ul class="list-group list-group-flush">
@foreach (var skill in skills)
{
<li class="list-group-item">@skill</li>
}
</ul>
}
</div>
</div>
<!-- Tools -->
<div class="row bg-white rounded p-2 border border-1 border-primary">
<div class="card-header">
<label class="text-decoration-underline">Tools</label>
</div>
<div class="overflow-auto p-0" style="max-height: 8rem">
@if (tools == null)
{
<div>Loading...</div>
}
else
{
<ul class="list-group list-group-flush">
@foreach (var tool in tools)
{
<li class="list-group-item">@tool</li>
}
</ul>
}
</div>
</div>
</div>
</div>
</div>
<!-- Experience / Projects -->
<div>
<div class="row mt-3">
<div class="col card border-0 rounded rounded-4 pt-3 pb-3">
<!-- Button Bay-->
<div class="row mt-2">
<div class="d-grid gap-2 d-md-flex justify-content-around">
<button class="btn rounded-4 w-25 @(isExperience ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleExperience()">Experience</button>
<button class="btn rounded-4 w-25 @(isProjects ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleProjects()">Projects</button>
</div>
</div>
<div class="row">
<div class="col">
@if (isExperience)
{
<div class="row justify-content-md-center fst-italic fs-1 mb-2">
Experience
</div>
@if (experiences == null)
{
<div>Loading...</div>
}
else
{
@foreach (var experience in experiences)
{
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-6 fw-lighter card-subtitle p-0"> @experience.StartYear @experience.EndYear</p>
<p class="fs-5 card-title m-0">@experience.Title - @experience.Company</p>
<p class="fs-6 fw-lighter card-text">@experience.Details</p>
</div>
</div>
}
}
}
else if (isProjects)
{
<div class="row justify-content-md-center fst-italic fs-1 mb-2">Projects</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">Temperature Blanket Visualizer</p>
<p class="fs-6 fw-lighter card-text">Useful tool to help visualize and refine blanket planning for crochet temperature blankets.
</p>
<p class="fs-6 fw-lighter card-text">A personal project, but a fun one.
</p>
<a class="mt-2" href="https://localhost:7189/pokemonsleep">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-file-code" viewBox="0 0 16 16">
<path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
<path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">PokemonSleep Toolset</p>
<p class="fs-6 fw-lighter card-text">A webpage constructed for the purposes of assisting players in the mobile game, Pokemon Sleep. Featuring a Pokemon Rater that derives ratings utilizing <a href="https://docs.google.com/spreadsheets/d/14nzQ--k4XhpFHI0qhgNRQlpWswh6WAxBCfq_QvIVZyI/edit?gid=339317073#gid=339317073">this</a> publically available spreadsheet constructed by other fans of the game.
</p>
<p class="fs-6 fw-lighter card-text">A personal project, but a fun one.
</p>
<a class="mt-2" href="https://localhost:7189/pokemonsleep">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-file-code" viewBox="0 0 16 16">
<path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
<path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">AI-Driven D&D 5E Character Generator with React, Next.js, and OpenAI GPT-3 Engine</p>
<p class="fs-6 fw-lighter card-text">Creates a credible D&D 5E character sheet, including backstory, based on user input. Ex."I would like to play a magical elf." Or "I want to smash things with a big hammer." Would result in the AI choosing the best character to play with given the limitations and rules of the game (class, race, etc). The user would still be able to customize their character afterwards, and be prompted if they happen to “break” the rules of character generation; i.e. too many skill points assigned.
</p>
<p class="fs-6 fw-lighter card-text">Lead development in core functionality, including front and back-end development. Developed all JavaScript components and pages including the deterministic logic depending on decisions made by the AI, and the styling using the emotion library.
</p>
<a class="" href="https://web.engr.oregonstate.edu/~hessro/teaching/hof/cs494#w22">CS 494 Hall of Fame recipient.</a>
<a class="mt-2" href="https://github.com/tylertitsworth/ai-character-generator">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">iOS Gesture Alphabet with Swift and CoreML</p>
<p class="fs-6 fw-lighter card-text">iOS keyboard extension that translates movements made by the users phone to corresponding letters. The model used has been trained with Apples CoreML to follow the users movements as though they were writing them in the air, through the detection of the devices sensors, primarily through roll/pitch/yaw. Developed as a means of accessibility for users who may not be able to use a traditional phone keyboard effectively.
</p>
<p class="fs-6 fw-lighter card-text">SCRUM team lead and lead developer during each phase of project lifecycle. Collected, cleaned, trained and tested model with data personally collected and collected by other users. Developed core functionality, including keyboard extension interface and translation of motion to letter.
</p>
<a class="mt-2" href="https://github.com/kjiroux/iOS-Gesture-Alphabet">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">Android Mobile App with Backend PokeAPI and Java</p>
<p class="fs-6 fw-lighter card-text">Using the PokeAPI, created the app “UltimateDex”, which acts as a complete Pokedex from the series Pokemon. Accesses all possible Pokemon, allows the user to search, filter their searches, and save entries to their personal repository for easy retrieval. Each entry when selected comes with its own page which displays all relevant information regarding the entry, including the image associated with the Pokemon, and styled similarly to that of the series.
</p>
<a class="mt-2" href="https://github.com/osu-cs492-w20/final-project-tamagucci/">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">NodeJS WebApp with MYSQL Database and Handlebars</p>
<p class="fs-6 fw-lighter card-text">Fantasy task-assignment system. Utilizes MYSQL to organize and contain guilds, “quests” posted to the forum/board, and guild members whose accounts are associated with the webapp. Handlebars template to display contents, NodeJS to serve.
</p>
<a class="mt-2" href="https://github.com/yanyan2019/cs340_project/">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- View 3: Tablet View -->
<div class="container d-none d-md-block d-lg-none mt-4 pt-3 pb-4 ">
<h1 class="fst-italic fw-light fs-1 font-monospace">Hello, World!</h1>
<div class="row">
<div class="card rounded p-3 border-0">
<div class="clearfix">
<img src="https://i.pinimg.com/736x/54/63/ed/5463ed9471053712a76c0dd0b301a7ea.jpg"
class="mobile-profile float-start me-3 mb-2"
style="width: 10em;
height: 10em;
object-fit: cover;
border-radius: 0.5rem;" />
<p class="fs-6 mb-0">
I am a full-stack web developer with additional experience in Data Analysis and Visualization,
as well as Simulation/ VR development, and AI/ ML programming. I am a friendly team worker with
strong analytical, math and problem-solving skills that adapts well to an Agile/SCRUM environment
and development lifecycle.
</p>
</div>
</div>
</div>
<div class="row mt-3">
<!-- School Experience -->
<div class="col me-1">
<div class="row bg-white rounded p-2 ps-3 pe-3 border border-1 border-primary">
<p class="fs-6 fw-lighter card-subtitle p-0">September 2018 March 2022</p>
<p class="fs-5 card-title m-0 p-0">B.S. in Computer Science</p>
<p class="fs-6 fw-lighter card-subtitle p-0">Oregon State University</p>
<p class="fs-6 fw-lighter card-subtitle p-0">Graduated Cum Laude</p>
<p class="fs-6 fw-lighter card-subtitle p-0">Deans List: Fall 2020, Fall 2021</p>
<p class="fs-6 fw-lighter card-subtitle p-0">Final GPA: 3.33</p>
<!-- Courses -->
<label class="text-decoration-underline p-0">Courses</label>
<div class="overflow-auto p-0" style="max-height: 9.8rem">
<ul class="list-group list-group-flush">
@if (courses == null)
{
<div>Loading...</div>
}
else
{
<ul class="list-group list-group-flush">
@foreach (var course in courses)
{
<li class="list-group-item">@course</li>
}
</ul>
}
</ul>
</div>
</div
</div>
<div class="col ms-1">
<!--Skills \ Languages-->
<div class="row bg-white rounded p-2 border border-1 border-primary mb-2">
<div class="card-header">
<label class="text-decoration-underline">Skills \ Languages</label>
</div>
<div class="overflow-auto p-0" style="max-height: 8rem">
@if (skills == null)
{
<div>Loading...</div>
}
else
{
<ul class="list-group list-group-flush">
@foreach (var skill in skills)
{
<li class="list-group-item">@skill</li>
}
</ul>
}
</div>
</div>
<!-- Tools -->
<div class="row bg-white rounded p-2 border border-1 border-primary">
<div class="card-header">
<label class="text-decoration-underline">Tools</label>
</div>
<div class="overflow-auto p-0" style="max-height: 8rem">
@if (tools == null)
{
<div>Loading...</div>
}
else
{
<ul class="list-group list-group-flush">
@foreach (var tool in tools)
{
<li class="list-group-item">@tool</li>
}
</ul>
}
</div>
</div>
</div>
</div>
<div>
<div class="row mt-3">
<div class="col card border-0 rounded rounded-4 pt-3 pb-3">
<!-- Button Bay-->
<div class="row mt-2">
<div class="d-grid gap-2 d-md-flex justify-content-around">
<button class="btn rounded-4 w-25 @(isExperience ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleExperience()">Experience</button>
<button class="btn rounded-4 w-25 @(isProjects ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleProjects()">Projects</button>
</div>
</div>
<div class="row">
<div class="col">
@if (isExperience)
{
<div class="row justify-content-md-center fst-italic fs-1 mb-2">
Experience
</div>
@if (experiences == null)
{
<div>Loading...</div>
}
else
{
@foreach (var experience in experiences)
{
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-6 fw-lighter card-subtitle p-0"> @experience.StartYear @experience.EndYear</p>
<p class="fs-5 card-title m-0">@experience.Title - @experience.Company</p>
<p class="fs-6 fw-lighter card-text">@experience.Details</p>
</div>
</div>
}
}
}
else if (isProjects)
{
<div class="row justify-content-md-center fst-italic fs-1 mb-2">Projects</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">Temperature Blanket Visualizer</p>
<p class="fs-6 fw-lighter card-text">Useful tool to help visualize and refine blanket planning for crochet temperature blankets.
</p>
<p class="fs-6 fw-lighter card-text">A personal project, but a fun one.
</p>
<a class="mt-2" href="https://localhost:7189/pokemonsleep">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-file-code" viewBox="0 0 16 16">
<path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
<path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">PokemonSleep Toolset</p>
<p class="fs-6 fw-lighter card-text">A webpage constructed for the purposes of assisting players in the mobile game, Pokemon Sleep. Featuring a Pokemon Rater that derives ratings utilizing <a href="https://docs.google.com/spreadsheets/d/14nzQ--k4XhpFHI0qhgNRQlpWswh6WAxBCfq_QvIVZyI/edit?gid=339317073#gid=339317073">this</a> publically available spreadsheet constructed by other fans of the game.
</p>
<p class="fs-6 fw-lighter card-text">A personal project, but a fun one.
</p>
<a class="mt-2" href="https://localhost:7189/pokemonsleep">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-file-code" viewBox="0 0 16 16">
<path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
<path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">AI-Driven D&D 5E Character Generator with React, Next.js, and OpenAI GPT-3 Engine</p>
<p class="fs-6 fw-lighter card-text">Creates a credible D&D 5E character sheet, including backstory, based on user input. Ex."I would like to play a magical elf." Or "I want to smash things with a big hammer." Would result in the AI choosing the best character to play with given the limitations and rules of the game (class, race, etc). The user would still be able to customize their character afterwards, and be prompted if they happen to “break” the rules of character generation; i.e. too many skill points assigned.
</p>
<p class="fs-6 fw-lighter card-text">Lead development in core functionality, including front and back-end development. Developed all JavaScript components and pages including the deterministic logic depending on decisions made by the AI, and the styling using the emotion library.
</p>
<a class="" href="https://web.engr.oregonstate.edu/~hessro/teaching/hof/cs494#w22">CS 494 Hall of Fame recipient.</a>
<a class="mt-2" href="https://github.com/tylertitsworth/ai-character-generator">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">iOS Gesture Alphabet with Swift and CoreML</p>
<p class="fs-6 fw-lighter card-text">iOS keyboard extension that translates movements made by the users phone to corresponding letters. The model used has been trained with Apples CoreML to follow the users movements as though they were writing them in the air, through the detection of the devices sensors, primarily through roll/pitch/yaw. Developed as a means of accessibility for users who may not be able to use a traditional phone keyboard effectively.
</p>
<p class="fs-6 fw-lighter card-text">SCRUM team lead and lead developer during each phase of project lifecycle. Collected, cleaned, trained and tested model with data personally collected and collected by other users. Developed core functionality, including keyboard extension interface and translation of motion to letter.
</p>
<a class="mt-2" href="https://github.com/kjiroux/iOS-Gesture-Alphabet">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">Android Mobile App with Backend PokeAPI and Java</p>
<p class="fs-6 fw-lighter card-text">Using the PokeAPI, created the app “UltimateDex”, which acts as a complete Pokedex from the series Pokemon. Accesses all possible Pokemon, allows the user to search, filter their searches, and save entries to their personal repository for easy retrieval. Each entry when selected comes with its own page which displays all relevant information regarding the entry, including the image associated with the Pokemon, and styled similarly to that of the series.
</p>
<a class="mt-2" href="https://github.com/osu-cs492-w20/final-project-tamagucci/">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
<div class="row justify-content-md-center mb-3">
<div class="card w-75 p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">NodeJS WebApp with MYSQL Database and Handlebars</p>
<p class="fs-6 fw-lighter card-text">Fantasy task-assignment system. Utilizes MYSQL to organize and contain guilds, “quests” posted to the forum/board, and guild members whose accounts are associated with the webapp. Handlebars template to display contents, NodeJS to serve.
</p>
<a class="mt-2" href="https://github.com/yanyan2019/cs340_project/">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
}
</div>
</div>
</div>
</div>
</div>
</div>
<!-- View 4: Mobile View -->
<div class="container card rounded border-0 d-block d-md-none mx-auto mt-4 mb-3 shadow-sm ">
<h1 class="fst-italic fw-light fs-1 font-monospace pt-2">Hello, World!</h1>
<div class="row">
<div class="card border-0">
<div class="clearfix">
<img src="https://i.pinimg.com/736x/54/63/ed/5463ed9471053712a76c0dd0b301a7ea.jpg"
class="mobile-profile float-start me-3 mb-2" />
<p class="fs-6 mb-0">
I am a full-stack web developer with additional experience in Data Analysis and Visualization,
as well as Simulation/ VR development, and AI/ ML programming. I am a friendly team worker with
strong analytical, math and problem-solving skills that adapts well to an Agile/SCRUM environment
and development lifecycle.
</p>
</div>
</div>
</div>
@* <div class="row mb-3 bg-info rounded rounded-5 pt-1 pb-1">
<p class="fw-lighter fs-6 text-nowrap p-0 m-auto text-center text-white">
Organized • Responsible • Meticulous • Analytical • Self-motivating
</p>
</div> *@
<hr class="text-primary" />
<!-- Education -->
<div class="row mb-3 ms-2 me-2 ">
<div class="card p-2 ps-3 pe-3 border border-1 border-primary">
<p class="fs-6 fw-lighter card-subtitle m-0">September 2018 March 2022</p>
<p class="fs-4 card-title m-0">B.S. in Computer Science</p>
<p class="fs-6 fw-lighter card-subtitle">Oregon State University</p>
<p class="fs-6 fw-lighter card-subtitle">Graduated Cum Laude</p>
<p class="fs-6 fw-lighter card-subtitle">Deans List: Fall 2020, Fall 2021</p>
<p class="fs-6 fw-lighter card-subtitle">Final GPA: 3.33</p>
</div>
</div>
<!-- Skills \ Languages -->
<div class="row mb-3 ms-2 me-2">
<div class="bg-primary-subtle rounded p-2 border-0">
<div class="card-header text-bg-primary text-light fs-3">
Skills \ Languages
</div>
<div class="overflow-auto" style="max-height: 15rem">
@if (skills == null)
{
<div>Loading...</div>
}
else
{
<ul class="list-group list-group-flush">
@foreach (var skill in skills)
{
<li class="list-group-item">@skill</li>
}
</ul>
}
</div>
</div>
</div>
<!-- Technology -->
<div class="row mb-3 ms-2 me-2">
<div class="bg-primary-subtle rounded p-2 border-0">
<div class="card-header text-bg-primary text-light fs-3">
Technology
</div>
<div class="overflow-auto" style="max-height: 15rem">
@if (tools == null)
{
<div>Loading...</div>
}
else
{
<ul class="list-group list-group-flush">
@foreach (var tool in tools)
{
<li class="list-group-item">@tool</li>
}
</ul>
}
</div>
</div>
</div>
<!-- Experience \ Projects -->
<div class="row mb-3 ms-2 me-2">
<div class="col card border-0 rounded rounded-4 pt-3 ">
<!-- Button Bay-->
<div class="row mt-2">
<div class="d-flex justify-content-evenly">
<button class="btn rounded-4 flex-fill @(isExperience ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleExperience()">Experience</button>
<button class="btn rounded-4 flex-fill @(isProjects ? "btn-primary" : "btn-outline-primary")" type="button" @onclick="() => ToggleProjects()">Projects</button>
</div>
</div>
@if (isExperience)
{
<div class="row justify-content-center fst-italic fs-1 mt-2">
Experience
</div>
@if (experiences == null)
{
<div>Loading...</div>
}
else
{
<div class="overflow-auto" style="max-height: 16rem">
<ul class="list-group list-group-flush">
@foreach (var experience in experiences)
{
<div class=" justify-content-md-center">
<div class="card p-3 ps-4 pe-4 rounded">
<p class="fs-6 fw-lighter card-subtitle p-0"> @experience.StartYear @experience.EndYear</p>
<p class="fs-5 card-title m-0">@experience.Title - @experience.Company</p>
<p class="fs-6 fw-lighter card-text">@experience.Details</p>
</div>
</div>
}
</ul>
</div>
}
}
else if (isProjects)
{
<div class="row justify-content-center fst-italic fs-1 mt-2">Projects</div>
<div class="overflow-auto" style="max-height: 16rem">
<ul class="list-group list-group-flush">
<div class="justify-content-md-center">
<div class="card p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">Temperature Blanket Visualizer</p>
<p class="fs-6 fw-lighter card-text">Useful tool to help visualize and refine blanket planning for crochet temperature blankets.
</p>
<p class="fs-6 fw-lighter card-text">A personal project, but a fun one.
</p>
<a class="mt-2" href="https://localhost:7189/pokemonsleep">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-file-code" viewBox="0 0 16 16">
<path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
<path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
</svg>
</a>
</div>
</div>
<div class="justify-content-md-center">
<div class="card p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">PokemonSleep Toolset</p>
<p class="fs-6 fw-lighter card-text">A webpage constructed for the purposes of assisting players in the mobile game, Pokemon Sleep. Featuring a Pokemon Rater that derives ratings utilizing <a href="https://docs.google.com/spreadsheets/d/14nzQ--k4XhpFHI0qhgNRQlpWswh6WAxBCfq_QvIVZyI/edit?gid=339317073#gid=339317073">this</a> publically available spreadsheet constructed by other fans of the game.
</p>
<p class="fs-6 fw-lighter card-text">A personal project, but a fun one.
</p>
<a class="mt-2" href="https://localhost:7189/pokemonsleep">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-file-code" viewBox="0 0 16 16">
<path d="M6.646 5.646a.5.5 0 1 1 .708.708L5.707 8l1.647 1.646a.5.5 0 0 1-.708.708l-2-2a.5.5 0 0 1 0-.708zm2.708 0a.5.5 0 1 0-.708.708L10.293 8 8.646 9.646a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708z"/>
<path d="M2 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2zm10-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1"/>
</svg>
</a>
</div>
</div>
<div class="justify-content-md-center">
<div class="card p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">AI-Driven D&D 5E Character Generator with React, Next.js, and OpenAI GPT-3 Engine</p>
<p class="fs-6 fw-lighter card-text">Creates a credible D&D 5E character sheet, including backstory, based on user input. Ex."I would like to play a magical elf." Or "I want to smash things with a big hammer." Would result in the AI choosing the best character to play with given the limitations and rules of the game (class, race, etc). The user would still be able to customize their character afterwards, and be prompted if they happen to “break” the rules of character generation; i.e. too many skill points assigned.
</p>
<p class="fs-6 fw-lighter card-text">Lead development in core functionality, including front and back-end development. Developed all JavaScript components and pages including the deterministic logic depending on decisions made by the AI, and the styling using the emotion library.
</p>
<a class="" href="https://web.engr.oregonstate.edu/~hessro/teaching/hof/cs494#w22">CS 494 Hall of Fame recipient.</a>
<a class="mt-2" href="https://github.com/tylertitsworth/ai-character-generator">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
<div class="justify-content-md-center">
<div class="card p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">iOS Gesture Alphabet with Swift and CoreML</p>
<p class="fs-6 fw-lighter card-text">iOS keyboard extension that translates movements made by the users phone to corresponding letters. The model used has been trained with Apples CoreML to follow the users movements as though they were writing them in the air, through the detection of the devices sensors, primarily through roll/pitch/yaw. Developed as a means of accessibility for users who may not be able to use a traditional phone keyboard effectively.
</p>
<p class="fs-6 fw-lighter card-text">SCRUM team lead and lead developer during each phase of project lifecycle. Collected, cleaned, trained and tested model with data personally collected and collected by other users. Developed core functionality, including keyboard extension interface and translation of motion to letter.
</p>
<a class="mt-2" href="https://github.com/kjiroux/iOS-Gesture-Alphabet">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
<div class="justify-content-md-center">
<div class="card p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">Android Mobile App with Backend PokeAPI and Java</p>
<p class="fs-6 fw-lighter card-text">Using the PokeAPI, created the app “UltimateDex”, which acts as a complete Pokedex from the series Pokemon. Accesses all possible Pokemon, allows the user to search, filter their searches, and save entries to their personal repository for easy retrieval. Each entry when selected comes with its own page which displays all relevant information regarding the entry, including the image associated with the Pokemon, and styled similarly to that of the series.
</p>
<a class="mt-2" href="https://github.com/osu-cs492-w20/final-project-tamagucci/">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
<div class="justify-content-md-center">
<div class="card p-3 ps-4 pe-4 rounded">
<p class="fs-5 card-title m-0">NodeJS WebApp with MYSQL Database and Handlebars</p>
<p class="fs-6 fw-lighter card-text">Fantasy task-assignment system. Utilizes MYSQL to organize and contain guilds, “quests” posted to the forum/board, and guild members whose accounts are associated with the webapp. Handlebars template to display contents, NodeJS to serve.
</p>
<a class="mt-2" href="https://github.com/yanyan2019/cs340_project/">
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</div>
</div>
</ul>
</div>
}
</div>
</div>
</div>

View File

@ -1,44 +0,0 @@
using Portfolio.Domain.Features.Portfolio;
namespace Portfolio.WebUI.Server.Components.Pages
{
partial class Home
{
private List<string> skills;
private List<string> tools;
private List<string> courses;
private List<WorkExperience> experiences;
private bool isExperience = true;
private bool isProjects = false;
protected override async Task OnInitializedAsync()
{
var http = ClientFactory.CreateClient("LocalClient");
skills = await http.GetFromJsonAsync<List<string>>("data/skills.json");
tools = await http.GetFromJsonAsync<List<string>>("data/tools.json");
courses = await http.GetFromJsonAsync<List<string>>("data/courses.json");
experiences = await http.GetFromJsonAsync<List<WorkExperience>>("data/workexperiences.json");
}
private void ToggleExperience()
{
if (!isExperience)
{
isExperience = true;
isProjects = false;
StateHasChanged();
}
}
private void ToggleProjects()
{
if (!isProjects)
{
isProjects = true;
isExperience = false;
StateHasChanged();
}
}
}
}

View File

@ -1,6 +0,0 @@
.mobile-profile {
width: 10em;
height: 10em;
object-fit: cover;
border-radius: 0.5rem;
}

View File

@ -8,7 +8,9 @@
<PageTitle>Edit Pokémon</PageTitle>
<PokemonHeader />
<head>
<link rel="stylesheet" href="bootstrap/bootstrap-lumen.css" /> <!-- app.css -->
</head>
@if (pokemon == null)
{

View File

@ -8,7 +8,9 @@
@attribute [StreamRendering]
@rendermode InteractiveServer
<head>
<link rel="stylesheet" href="bootstrap/bootstrap-lumen.css" /> <!-- app.css -->
</head>
<PageTitle>Rate Pokémon</PageTitle>

View File

@ -9,6 +9,9 @@
<PageTitle>Pokémon Sleep</PageTitle>
<head>
<link rel="stylesheet" href="bootstrap/bootstrap-lumen.css" /> <!-- app.css -->
</head>
<div class="w-100">
<!-- <PokemonBackground PokemonImages="pokemonImageUrls" ShinyPokemonImages="pokemonShinyImageUrls" /> -->

View File

@ -6,17 +6,24 @@
<PageTitle>Pokémon Sleep</PageTitle>
<head>
<link rel="stylesheet" href="bootstrap/bootstrap-lumen.css" /> <!-- app.css -->
</head>
<!-- <PokemonBackground PokemonImages="pokemonImageUrls" ShinyPokemonImages="pokemonShinyImageUrls" /> -->
<PokemonHeader />
<!-- Card -->
<div class="container card shadow-sm border-0 p-3 pb-4 mt-4 m-auto w-75 mb-5 bg-white">
<div class="">
<div class="row w-100">
<!-- <PokemonBackground PokemonImages="pokemonImageUrls" ShinyPokemonImages="pokemonShinyImageUrls" /> -->
<div class="row"><PokemonHeader /></div>
<!-- Card -->
<div class="row card shadow-sm border-0 p-3 pb-4 mt-4 m-auto w-75 mb-5 bg-white">
<!-- Top Row-->
<div class="row d-flex flex-row">
<!-- Image side -->
<div class="col-5 border-0 ">
<div class="col w-50 border-0 ">
<div>
</div>
<img class="shadow-sm w-100 m-auto img-fluid" src="images/Pokemon_Sleep_ID.jpg" />
</div>
<!-- Text side -->
@ -32,7 +39,6 @@
</div>
</div>
<!-- Second Row -->
<div class="row mt-3">
<p class="fw-bold fst-italic fs-3">Okay, but why a whole section dedicated to Pokémon Sleep?</p>
@ -40,28 +46,31 @@
Well, as it is in any Pokémon game, Natures (and in this case Subskills) matter, amongst other things. This was designed as a helpful tool in assessing new Pokémon acquired from Sleep Research.
</p>
</div>
<!-- Button Row-->
<div class="d-flex justify-content-evenly mt-4 ">
<button class="btn btn-info rounded-4 d-flex justify-content-center" style="width:12rem;">
<NavLink class="nav-link d-flex align-items-center" href="/pokemon">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-table" viewBox="0 0 16 16">
<div class="row btn-group d-flex flex-row justify-content-around mt-4">
<div class="w-auto">
<button class="btn btn-info">
<NavLink href="/pokemon">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-table mb-1" viewBox="0 0 16 16">
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm15 2h-4v3h4zm0 4h-4v3h4zm0 4h-4v3h3a1 1 0 0 0 1-1zm-5 3v-3H6v3zm-5 0v-3H1v2a1 1 0 0 0 1 1zm-4-4h4V8H1zm0-4h4V4H1zm5-3v3h4V4zm4 4H6v3h4z" />
</svg>
<span class="ps-1 text-white">Available Pokémon</span>
<span class="ps-1">Available Pokémon</span>
</NavLink>
</button>
<button class="btn btn-success rounded-4 d-flex justify-content-center" style="width:12rem;">
<NavLink class="nav-link d-flex align-items-center" href="/rate-pokemon">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#FFF" class="bi bi-award-fill" viewBox="0 0 16 16">
</div>
<div class="w-auto">
<button class="btn btn-success link">
<NavLink href="/rate-pokemon">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-award-fill mb-1" viewBox="0 0 16 16">
<path d="m8 0 1.669.864 1.858.282.842 1.68 1.337 1.32L13.4 6l.306 1.854-1.337 1.32-.842 1.68-1.858.282L8 12l-1.669-.864-1.858-.282-.842-1.68-1.337-1.32L2.6 6l-.306-1.854 1.337-1.32.842-1.68L6.331.864z" />
<path d="M4 11.794V16l4-1 4 1v-4.206l-2.018.306L8 13.126 6.018 12.1z" />
</svg>
<span class="ps-1 text-white">Rate Pokémon</span>
<span class="ps-1">Rate Pokémon</span>
</NavLink>
</button>
</div>
</div>
</div>
</div>
</div>

View File

@ -8,7 +8,9 @@
<PokemonHeader />
<head>
<link rel="stylesheet" href="bootstrap/bootstrap-lumen.css" /> <!-- app.css -->
</head>
@if (_pokemon == null)
{

View File

@ -12,7 +12,6 @@
@using Portfolio.WebUI.Server.Components.Component.Pokemon_Components
@using Portfolio.WebUI.Server.Components.Component.Crochet_Components
@using Portfolio.Domain.Features.Articles
@using Portfolio.Domain.Features.Portfolio;
@using Portfolio.Domain.Features.Pokemon
@using Portfolio.Domain.Features.Pokemon_Natures
@using Portfolio.Domain.Features.Pokemon_Subskills

View File

@ -8,11 +8,6 @@ var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
builder.Services.AddHttpClient("LocalClient", client =>
{
client.BaseAddress = new Uri("https://localhost:7189/"); // or whatever your port is
});
builder.Services.AddApplication();
builder.Services.AddInfrastructure(builder.Configuration);

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +0,0 @@
[
"Adv. Web Development",
"Operating Systems",
"Game Development",
"Parallel Programming",
"VR / AR Development",
"Artificial Intelligence",
"Machine Learning",
"Computer Graphics",
"Data Visualization",
"Database Management",
"Analysis of Algorithms"
]

View File

@ -1,7 +0,0 @@
[
{
"title": "AI-Driven D&D 5E Character Generator with React, Next.js, and OpenAI GPT-3 Engine",
"description": "Creates a credible D&D 5E character sheet, including backstory, based on user input. Ex.I would like to play a magical elf. Or I want to smash things with a big hammer. Would result in the AI choosing the best character to play with given the limitations and rules of the game (class, race, etc). The user would still be able to customize their character afterwards, and be prompted if they happen to “break” the rules of character generation; i.e. too many skill points assigned.",
"responsibilities": "Lead development in core functionality, including front and back-end development. Developed all JavaScript components and pages including the deterministic logic depending on decisions made by the AI, and the styling using the emotion library."
},
]

View File

@ -1,17 +0,0 @@
[
"C# / C++ / C",
"ASP.NET / .NET Core",
"Blazor WASM",
"React",
"Java",
"JavaScript",
"HTML / CSS",
"SQL / MYSQL / MSSQL",
"JSON / XML",
"Python",
"Swift",
"TypeScript",
"MATLAB",
"R",
"LaTeX"
]

View File

@ -1,17 +0,0 @@
[
"MS Visual Studio 2022",
"Git / GitHub / GitLab",
"RESTful API",
"Docker",
"Terraform",
"Jira",
"Linux / UNIX",
"SQL / MYSQL / MSSQL",
"Unreal Engine",
"Unity",
"Blendr",
"Windows, Android & iOS",
"Gephi",
"Excel / Microsoft Office Suite",
"Figma"
]

View File

@ -1,24 +0,0 @@
[
{
"title": "Junior Web Developer",
"company": "Universal Flight Concepts",
"startYear": 2022,
"endYear": 2024,
"details": "Part of a development team that worked on a full rewrite of a 'Secure Area' used by Admin, Students, Instructors and University coordinators to schedule flight and ground instruction, and took the application from ASP.Net 4.0/SQL Server 2016 to a stand-alone C# .Net Core 8, with Blazor WASM (Web Assembly) Microservices API, Identity Server integration, SQL Server 2019, Code-First Entity Framework & DB Migrations, Auto-Scaling Cloud Application"
},
{
"title": "Web Development & Cybersecurity Teaching Assistant",
"company": "Oregon State University",
"startYear": 2019,
"endYear": 2020,
"details": "Interacted with and mentored students with relation to their area of study; created solutions to development projects before being assigned to students to ensure guidance and engrain best coding practices; held personal office hours to assist students mwith needs. HTML/CSS, C++, JavaScript, JSON, Node.js, RESTFUL API, MYSQL; public/private keys, key exchange, modern encryption methods, cyberattacks, TOR."
},
{
"title": "Junior Web Developer",
"company": "DzyneFX",
"startYear": 2018,
"endYear": 2018,
"details": "Developed front-end UI and code for websites, as well as back-end code, data access layers, web services and RESTful APIs. Worked with symmetric and asymmetric data schemas. Request, register and configure SSL and TLS certificates. C#, PHP, MSSQL and MYSQL."
}
]