Skip to content

Commit

Permalink
begin projects redesign
Browse files Browse the repository at this point in the history
  • Loading branch information
Reed Nelson committed Aug 20, 2023
1 parent a3b2cd3 commit 123e6dd
Show file tree
Hide file tree
Showing 22 changed files with 141 additions and 216 deletions.
1 change: 1 addition & 0 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ export default defineConfig({
"@/shortcodes/Youtube",
"@/shortcodes/Tabs",
"@/shortcodes/Tab",
"@/shortcodes/ProjectHeader",
],
}),
mdx(),
Expand Down
24 changes: 0 additions & 24 deletions src/content/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,32 +38,8 @@ const drinkCollection = defineCollection({
}),
});

// Project collection schema
const projectCollection = defineCollection({
schema: z.object({
title: z.string(),
meta_title: z.string().optional(),
description: z.string().optional(),
technologies: z.array(z.string()).default(["others"]),
order: z.number().default(0),
social: z
.array(
z
.object({
name: z.string().optional(),
icon: z.string().optional(),
link: z.string().optional(),
})
.optional(),
)
.optional(),
draft: z.boolean().optional(),
}),
});

// Export collections
export const collections = {
blog: blogCollection,
drink: drinkCollection,
projects: projectCollection,
};
10 changes: 1 addition & 9 deletions src/content/homepage/-index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,5 @@
# Banner
banner:
title: Reed Nelson
content: Words

# Features
features:
- title: Another Section
content: words
bulletpoints:
- a
- b
content: This website is under construction.
---
5 changes: 0 additions & 5 deletions src/content/projects/-index.md

This file was deleted.

73 changes: 73 additions & 0 deletions src/content/projects/-index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
title: Projects
meta_title: Projects
description: Reed Nelson's projects.
---

<ProjectHeader
title="MiNAA: Microbiome Network Alignment Algorithm"
tech=" | C | C++ | R"
github="https://github.com/solislemuslab/minaa"
/>

Microbes in the soil interact in complex ways, and these microbiomes can be represented by large, sparse graphs. Currently this kind of data is available, but tools for interpreting it are very limited. The project is to develop an algorithm to efficiently and accurately align microbial networks based on topological and biological input data. This is an ongoing research project with Dr. Claudia Solís-Lemus. For more details, see our software note on [arXiv](https://arxiv.org/abs/2212.05880).

<ProjectHeader
title="AAG Key Exchange Implementation"
tech=" | Python | SageMath"
github="https://github.com/reednel/aag"
/>

The [Anshel-Anshel-Goldfeld](https://en.wikipedia.org/wiki/Non-commutative_cryptography#Anshel-Anshel-Goldfeld_protocol) key exchange is a cryptographic protocol based on conjugation in non-abelian groups. Unlike the most popular protocols which are based in number theory and vulnerable to [Shor's algorithm](https://en.wikipedia.org/wiki/Shor%27s_algorithm), this algebraic method has no known quantum vulnerability.

This progect provides the first generic implementation of AAG, using the SageMath computer algebra system. This enables the direct and convenient comparison between different platform groups, which is something largely lacking in existing literature. For a more detailed explanation of AAG and this program's capabilities, see [this paper](https://github.com/reednel/aag/blob/paper/main.pdf).

<ProjectHeader
title="De Bruijn Tools"
tech=" | Java"
github="https://github.com/reednel/debruijn"
/>

A [de Bruijn Sequence](https://en.wikipedia.org/wiki/De_Bruijn_sequence) is a cyclic sequence of characters from an alphabet A of length k, which contains all permutations of n characters, exactly once each. Uses for such sequences range from card tricks to gene sequencing. See [this blog post](/debruijn) to learn more.

The De Bruijn Tools are a set of algorithms developed for Ben Cartford, an undergraduate researcher at the University of Minnesota. Most notably and most novel among these was an algorithm to generate every de Bruijn sequence for a given alphabet and window. This process involves generating a graph corresponding to the given alphabet and window, traversing the graph's eulerian paths, and parsing out the unique ones. Space and time efficiency are imperative here, as there are 2<sup>120</sup>, or about 1.3E<sup>36</sup> unique sequences for merely the length 8 window on the binary alphabet.

<ProjectHeader
title="LatinxInStat & ForensicStat Databases"
tech=" | Javascript + React | MySQL | OAuth"
github="https://github.com/solislemuslab/latinx-stat-database"
/>

The [LatinxInStat Database](https://latinxinstat.wid.wisc.edu/) is a web app designed to connect Latinx academics in Statistics and Data Science with parties seeking their expertise. This project was taken on under the direction of Dr. Claudia Solís-Lemus, with the support of the Wisconsin Institute for Discovery and the American Statistical Association.

Similar in spirit, the ForensicStat Database provides a list of statisticians and data scientists that are interested in aiding forensic scientists or attorneys in the understanding of statistical concepts in forensic science, or serving as experts in trials.

<ProjectHeader
title="E<sup>2</sup> Flasher"
tech="C# + WPF"
/>

An E<sup>2</sup> (EEPROM) is a kind of non-volatile read-only memory, which in this case houses the firmware for a particular Emerson product. The goal was to make it possible for this product to receive firmware updates even after final assembly, saving many units from obsolescence. The project was a windows desktop application which connected and translated data between the user and EEPROM over a UART channel using a proprietary protocol.

<ProjectHeader
title="Kanban Manager"
tech="C# + WinForms | SQL"
/>

A kanban in this context referred to a set of shelves whose inventory is tracked. Prior to this, an Emerson manufacturing facility used pen and pad to track inventory. The project was to develop a fullstack Windows desktop app to digitalize this system with Winforms, C#, and SQL. This solution was integrated into the proprietary MES, and leveraged existing network and database infrastructure, making the transition from analog easy.

<ProjectHeader
title="It's Your Move"
tech=" | Javascript + React "
github="https://github.com/IYM-2021/raam-webapp"
/>

It's Your Move was an ambitious athletics project from the team that worked on [The Perfect Race](http://raam.davehaase.com/) project for Dave Haase's [Race Across America](https://www.raceacrossamerica.org) in 2019. The long term goal of this endeavor was to motivate ley folk to build and stick to fitness habits, and to satiate the desires of hardcore athletes concerned with data like glucose level, core temperature, and more. This effort integrated software and hardware from athletic, medical, IoT and AI areas into a unified platform. My contribution to this platfrom lied primarily in the front-end development of the web app.

<ProjectHeader
title="Conway's Game of Life"
tech=" | Java + JavaFX"
github="https://github.com/reednel/Seagull-1"
/>

[Conway's Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) is a cellular automaton designed by the late [John Conway](https://en.wikipedia.org/wiki/John_Horton_Conway#). It's a "0-player game" played out on a discretely mutating matrix of square, binary cells. The state of the each cell in the grid from one 'generation' (grid state) to the next is determined by the states of its 'neighbors' (immediately adjacent cells). For example, if a cell is 'alive' in the curent generation, and has more than 3 living neighbors, it will be dead in the next generation, as if by overpopulation.
11 changes: 0 additions & 11 deletions src/content/projects/aag.md

This file was deleted.

11 changes: 0 additions & 11 deletions src/content/projects/cgol.md

This file was deleted.

13 changes: 0 additions & 13 deletions src/content/projects/debruijn.md

This file was deleted.

11 changes: 0 additions & 11 deletions src/content/projects/e2.md

This file was deleted.

11 changes: 0 additions & 11 deletions src/content/projects/iym.md

This file was deleted.

11 changes: 0 additions & 11 deletions src/content/projects/kanban.md

This file was deleted.

13 changes: 0 additions & 13 deletions src/content/projects/lisfsd.md

This file was deleted.

11 changes: 0 additions & 11 deletions src/content/projects/minaa.md

This file was deleted.

2 changes: 1 addition & 1 deletion src/layouts/BlogSingle.astro
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ const { title, description, author, categories, image, date, tags } = post.data;
</div>
<div class="row items-start justify-between">
<div class="mb-10 flex items-center lg:col-5 lg:mb-0">
<h5 class="mr-3">Tags :</h5>
<h5 class="mr-3">Tags:</h5>
<ul>
{
tags.map((tag: string) => (
Expand Down
23 changes: 0 additions & 23 deletions src/layouts/components/DrinkCard.astro
Original file line number Diff line number Diff line change
Expand Up @@ -32,26 +32,3 @@ const { title, image } = data.data;
</div>
</a>
</div>


<!-- <div class="bg-body dark:bg-darkmode-body">
<a href={`/${drink_folder}/${data.slug}`}>
<div>
{
image && (
<Image
class="mb-2 w-full rounded"
src={image}
alt={title}
width={1280}
height={720}
format="webp"
/>
)
}
<h4 class="mb-3">
{title}
</h4>
</div>
</a>
</div> -->
12 changes: 5 additions & 7 deletions src/layouts/components/ProjectCard.astro
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
---
import { plainify } from "@/lib/utils/textConverter";
import Social from "./Social.astro";
const { data } = Astro.props;
const { Content } = await data.render();
const { title, social } = data.data;
---

<div
class="rounded bg-theme-light p-8 dark:bg-darkmode-theme-light"
>
<div class="rounded bg-theme-light p-8 dark:bg-darkmode-theme-light">
<h4 class="mb-3">
{title}
</h4>
<p class="mb-4">
{plainify(data.body)}
</p>
<div class="base mb-4">
<Content />
</div>
<Social source={social} className="social-icons" />
</div>
30 changes: 30 additions & 0 deletions src/layouts/shortcodes/ProjectHeader.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import React from "react";
import { FaGithub } from "react-icons/fa/index.js";

const ProjectHeader = ({
title,
tech,
github,
}: {
title: string;
content?: string;
github?: string;
}) => {
return (
<div>
<div className="mt-8">
<h1 className="text-3xl font-bold">{title}</h1>
</div>
<div className="">
{github ?
<a href={github} target="blank">
<FaGithub className={"mr-1 -mt-1 inline-block"} />
</a>: ""
}
{tech}
</div>
</div>
);
};

export default ProjectHeader;
2 changes: 1 addition & 1 deletion src/pages/drink/page/[slug].astro
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export async function getStaticPaths() {
<div class="row">
{
currentPosts.map((post) => (
<div class="mb-14 md:col-6">
<div class="mb-8 md:col-6">
<DrinkCard data={post} />
</div>
))
Expand Down
27 changes: 1 addition & 26 deletions src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import Base from "@/layouts/Base.astro";
import { markdownify } from "@/lib/utils/textConverter";
import type { Button, Feature } from "@/types";
import { getEntryBySlug } from "astro:content";
import { FaCheck } from "react-icons/fa/index.js";
interface Homepage {
banner: {
Expand All @@ -16,7 +15,7 @@ interface Homepage {
}
const homepage = await getEntryBySlug("homepage", "-index");
const { banner, features }: Homepage = homepage.data;
const { banner }: Homepage = homepage.data;
---

<Base>
Expand All @@ -32,28 +31,4 @@ const { banner, features }: Homepage = homepage.data;
</div>
</section>
<!-- /Banner -->

<!-- Features -->
{
features.map((feature, index: number) => (
<section class={`section-sm ${index % 2 === 0 && "bg-gradient"} rounded-lg`}>
<div class="container">
<div class="row items-center justify-between">
<div class={`md:col-7 lg:col-6 ${index % 2 !== 0 && "md:order-1"}`}>
<h2 set:html={markdownify(feature.title)} class="mb-4" />
<p set:html={markdownify(feature.content)} class="mb-8 text-lg" />
<ul>
{feature.bulletpoints.map((bullet: string) => (
<li class="relative mb-4 pl-6">
<FaCheck className={"absolute left-0 top-1.5"} />
<span set:html={markdownify(bullet)} />
</li>
))}
</ul>
</div>
</div>
</div>
</section>
))
}
</Base>
Loading

0 comments on commit 123e6dd

Please sign in to comment.