Added media for embryo pick and plate, including pcbs, made tweaks to pcb astro component for title and description, new H4 component, enabled zebrafish pnp and mars rover software team pages
4
Makefile
@@ -84,7 +84,9 @@ convert_video_times:
|
||||
-init_hw_device vaapi=va:/dev/dri/renderD128 \
|
||||
-filter_hw_device va \
|
||||
-i $(input) \
|
||||
-vf 'format=nv12,hwupload,scale_vaapi=-2:720,trim=start=$(start):end=$(end)' \
|
||||
-ss $(start) \
|
||||
-to $(end) \
|
||||
-vf 'format=nv12,hwupload,scale_vaapi=-2:720' \
|
||||
-c:v h264_vaapi \
|
||||
-rc_mode CQP \
|
||||
-qp 28 \
|
||||
|
||||
@@ -4,6 +4,7 @@ ASSEM
|
||||
astrojs
|
||||
Atmel
|
||||
barebones
|
||||
beaglebone
|
||||
Bitwarden
|
||||
Candian
|
||||
caperren
|
||||
@@ -47,6 +48,7 @@ offroad
|
||||
Onshape
|
||||
OSSM
|
||||
OSURC
|
||||
panelized
|
||||
Passthroughs
|
||||
pcbs
|
||||
Perren
|
||||
@@ -71,6 +73,7 @@ Steller
|
||||
Tanguay
|
||||
Teamcenter
|
||||
timelapse
|
||||
touchoff
|
||||
triaging
|
||||
trivago
|
||||
Truong
|
||||
|
||||
|
After Width: | Height: | Size: 1013 KiB |
|
After Width: | Height: | Size: 6.8 MiB |
|
After Width: | Height: | Size: 9.2 MiB |
|
After Width: | Height: | Size: 8.8 MiB |
|
Before Width: | Height: | Size: 8.5 MiB After Width: | Height: | Size: 8.5 MiB |
|
After Width: | Height: | Size: 6.3 MiB |
|
After Width: | Height: | Size: 1017 KiB |
|
After Width: | Height: | Size: 878 KiB |
|
After Width: | Height: | Size: 7.1 MiB |
|
After Width: | Height: | Size: 605 KiB |
|
After Width: | Height: | Size: 826 KiB |
|
After Width: | Height: | Size: 7.1 MiB |
|
After Width: | Height: | Size: 6.1 MiB |
|
After Width: | Height: | Size: 6.9 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 8.3 MiB |
|
After Width: | Height: | Size: 7.5 MiB |
|
After Width: | Height: | Size: 7.2 MiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 4.6 MiB |
|
After Width: | Height: | Size: 4.6 MiB |
|
After Width: | Height: | Size: 4.4 MiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 167 KiB |
|
After Width: | Height: | Size: 438 KiB |
|
After Width: | Height: | Size: 224 KiB |
|
After Width: | Height: | Size: 437 KiB |
|
After Width: | Height: | Size: 2.0 MiB |
5
src/components/H4.astro
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
<h4 class="md:text-md text-xs sm:text-sm"><slot /></h4>
|
||||
@@ -2,6 +2,9 @@
|
||||
import Carousel from "@components/Media/CustomCarousel/CustomCarousel.astro";
|
||||
import Ul from "@components/Ul.astro";
|
||||
|
||||
import H3 from "@components/H3.astro";
|
||||
import H4 from "@components/H4.astro";
|
||||
import PageGroup from "@components/PageGroup.astro";
|
||||
import type {
|
||||
printedCircuitBoard,
|
||||
printedCircuitBoardRevision,
|
||||
@@ -19,7 +22,11 @@ const semanticPcbRevisionSort = (
|
||||
-((a.major - b.major) * 100 + (a.minor - b.minor) * 10 + (a.patch - b.patch));
|
||||
---
|
||||
|
||||
<div class="grid grid-cols-1 gap-4 md:grid-cols-2">
|
||||
<PageGroup>
|
||||
<Fragment slot="header"
|
||||
><H3>{pcb.name}</H3><H4>{pcb.description}</H4></Fragment
|
||||
>
|
||||
<div class="mt-1 grid grid-cols-1 gap-4 md:grid-cols-2">
|
||||
{
|
||||
pcb.revisions?.sort(semanticPcbRevisionSort).map((revision) => (
|
||||
<div class="border-caperren-green block space-y-2 rounded-lg border bg-black py-2">
|
||||
@@ -40,12 +47,12 @@ const semanticPcbRevisionSort = (
|
||||
/>
|
||||
</div>
|
||||
{revision.notes && revision.notes.length > 0 && (
|
||||
<Ul
|
||||
class="border-caperren-green border-t p-4 text-sm"
|
||||
lineItems={revision.notes}
|
||||
/>
|
||||
<div class="border-caperren-green border-t p-4 text-sm">
|
||||
<Ul lineItems={revision.notes} />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
))
|
||||
}
|
||||
</div>
|
||||
</PageGroup>
|
||||
|
||||
@@ -50,7 +50,6 @@ export const siteLayout: navLink[] = [
|
||||
placeholderEntry: true,
|
||||
},
|
||||
{
|
||||
enabled: false,
|
||||
navText: "Zebrafish Embryo Pick and Plate",
|
||||
isSubItem: true,
|
||||
path: "zebrafish-embryo-pick-and-plate",
|
||||
@@ -81,12 +80,10 @@ export const siteLayout: navLink[] = [
|
||||
],
|
||||
},
|
||||
{
|
||||
enabled: false,
|
||||
navText: "OSU Robotics Club",
|
||||
path: "osu-robotics-club",
|
||||
children: [
|
||||
{
|
||||
enabled: false,
|
||||
navText: "Mars Rover Software Team Lead",
|
||||
path: "mars-rover-software-team-lead",
|
||||
},
|
||||
|
||||
@@ -19,7 +19,7 @@ import half_assembled_main_top_surround_bottom from "@assets/experience/osu-sinn
|
||||
export const dechorionatorPcb: printedCircuitBoard = {
|
||||
name: "Dechorionator",
|
||||
description:
|
||||
"Control board which provides motion and water flow control, along with user control and monitoring.",
|
||||
"Control board which provides motion and water flow control, along with user control and monitoring",
|
||||
|
||||
revisions: [
|
||||
{
|
||||
@@ -3,11 +3,13 @@ import ExperienceLayout from "@layouts/ExperienceLayout.astro";
|
||||
|
||||
import H2 from "@components/H2.astro";
|
||||
import H3 from "@components/H3.astro";
|
||||
import InlineLink from "@components/InlineLink.astro";
|
||||
import Li from "@components/Li.astro";
|
||||
import CustomCarousel from "@components/Media/CustomCarousel/CustomCarousel.astro";
|
||||
import PageGroup from "@components/PageGroup.astro";
|
||||
import Paragraph from "@components/Paragraph.astro";
|
||||
import Paragraphs from "@components/Paragraphs.astro";
|
||||
import PopoverWordDefinition from "@components/PopoverWordDefinition.astro";
|
||||
import PrintedCircuitBoard from "@components/PrintedCircuitBoard.astro";
|
||||
import SkillMatrix from "@components/SkillMatrix/SkillMatrix.astro";
|
||||
import Timeline from "@components/Timeline/Timeline.astro";
|
||||
@@ -18,7 +20,7 @@ import { timelineFromPrintedCircuitBoard } from "@interfaces/printed-circuit-boa
|
||||
import type { categorySkills } from "@interfaces/skill-matrix.ts";
|
||||
import type { timelineEntry } from "@interfaces/timeline.ts";
|
||||
|
||||
import { dechorionatorPcb } from "./dechorionator.ts";
|
||||
import { dechorionatorPcb } from "./dechorionator-pcbs.ts";
|
||||
import {
|
||||
subTitles,
|
||||
workingTimeline,
|
||||
@@ -42,8 +44,7 @@ import top_holder_closeup from "@assets/experience/osu-sinnhuber-aquatic-researc
|
||||
import top_lid_open from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/dechorionator/top-lid-open.jpg";
|
||||
import top_showerhead from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/dechorionator/top-showerhead.jpg";
|
||||
import travel_setup from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/dechorionator/travel-setup.jpg";
|
||||
import InlineLink from "@components/InlineLink.astro";
|
||||
import PopoverWordDefinition from "@components/PopoverWordDefinition.astro";
|
||||
import { DateTime } from "luxon";
|
||||
|
||||
const headerCarouselGroup: carouselGroup = {
|
||||
animation: "slide",
|
||||
@@ -73,6 +74,16 @@ const headerCarouselGroup: carouselGroup = {
|
||||
const timeline: timelineEntry[] = [
|
||||
...workingTimeline,
|
||||
...timelineFromPrintedCircuitBoard(dechorionatorPcb),
|
||||
{
|
||||
event: "Project Started",
|
||||
eventDetail: "Initial Requirements Given",
|
||||
date: DateTime.fromISO("2014-05-01"),
|
||||
},
|
||||
{
|
||||
event: "Project Finished",
|
||||
eventDetail: "Delivered Units to Lab",
|
||||
date: DateTime.fromISO("2016-09-01"),
|
||||
},
|
||||
];
|
||||
|
||||
const categorizedSkills: categorySkills[] = [
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
import { DateTime } from "luxon";
|
||||
|
||||
import type { printedCircuitBoard } from "@interfaces/printed-circuit-board.ts";
|
||||
|
||||
import control_bottom_1_0_0 from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/pcbs/control/1-0-0/bottom.jpg";
|
||||
import control_top_1_0_0 from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/pcbs/control/1-0-0/top.jpg";
|
||||
import control_assembly_bottom_2_0_0 from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/pcbs/control/2-0-0/assembly-bottom.jpg";
|
||||
import control_assembly_top_beaglebone_2_0_0 from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/pcbs/control/2-0-0/assembly-top-beaglebone.jpg";
|
||||
import control_assembly_top_2_0_0 from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/pcbs/control/2-0-0/assembly-top.jpg";
|
||||
import control_bottom_2_0_0 from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/pcbs/control/2-0-0/bottom.png";
|
||||
import control_top_2_0_0 from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/pcbs/control/2-0-0/top.png";
|
||||
import lights_assembly_bottom_1_0_0 from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/pcbs/lights/1-0-0/assembly-bottom.jpg";
|
||||
import lights_assembly_top_1_0_0 from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/pcbs/lights/1-0-0/assembly-top.jpg";
|
||||
import lights_assembly_bottom_2_0_0 from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/pcbs/lights/2-0-0/assembly-bottom.jpg";
|
||||
import lights_assembly_top_2_0_0 from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/pcbs/lights/2-0-0/assembly-top.jpg";
|
||||
import lights_top_panelized_2_0_0 from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/pcbs/lights/2-0-0/top-panelized.png";
|
||||
|
||||
export const pnpLights: printedCircuitBoard = {
|
||||
name: "Lighting Board",
|
||||
description:
|
||||
"Compact, bright, 24V lighting to provide high-contrast video for the pick and plate",
|
||||
|
||||
revisions: [
|
||||
{
|
||||
major: 2,
|
||||
minor: 0,
|
||||
patch: 0,
|
||||
date: DateTime.fromISO("2014-09-23"),
|
||||
images: [
|
||||
lights_top_panelized_2_0_0,
|
||||
lights_assembly_top_2_0_0,
|
||||
lights_assembly_bottom_2_0_0,
|
||||
],
|
||||
notes: [
|
||||
{
|
||||
item: "First panelized PCB design, with built-in test features",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
major: 1,
|
||||
minor: 0,
|
||||
patch: 0,
|
||||
date: DateTime.fromISO("2014-04-07"),
|
||||
images: [lights_assembly_top_1_0_0, lights_assembly_bottom_1_0_0],
|
||||
notes: [
|
||||
{
|
||||
item: "Worked, but couldn't remove heat efficiently long-term",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
export const pnpControl: printedCircuitBoard = {
|
||||
name: "Driver Board",
|
||||
description:
|
||||
"Motion controller, and single-board-computer interface, for the embryo pick and plate machine",
|
||||
|
||||
revisions: [
|
||||
{
|
||||
major: 2,
|
||||
minor: 0,
|
||||
patch: 0,
|
||||
date: DateTime.fromISO("2014-07-11"),
|
||||
images: [
|
||||
control_top_2_0_0,
|
||||
control_bottom_2_0_0,
|
||||
control_assembly_top_2_0_0,
|
||||
control_assembly_bottom_2_0_0,
|
||||
control_assembly_top_beaglebone_2_0_0,
|
||||
],
|
||||
notes: [
|
||||
{
|
||||
item: "Functional, but ultimately scrapped due to motion control complexity",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
major: 1,
|
||||
minor: 0,
|
||||
patch: 0,
|
||||
date: DateTime.fromISO("2013-12-02"),
|
||||
images: [control_top_1_0_0, control_bottom_1_0_0],
|
||||
notes: [
|
||||
{
|
||||
item: "First printed circuit board I ever designed, which was REALLY bad",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -1,5 +1,177 @@
|
||||
---
|
||||
import ExperienceLayout from "@layouts/ExperienceLayout.astro";
|
||||
|
||||
import H2 from "@components/H2.astro";
|
||||
import H3 from "@components/H3.astro";
|
||||
import Li from "@components/Li.astro";
|
||||
import CustomCarousel from "@components/Media/CustomCarousel/CustomCarousel.astro";
|
||||
import Video from "@components/Media/Video.astro";
|
||||
import PageGroup from "@components/PageGroup.astro";
|
||||
import Paragraph from "@components/Paragraph.astro";
|
||||
import Paragraphs from "@components/Paragraphs.astro";
|
||||
import PrintedCircuitBoard from "@components/PrintedCircuitBoard.astro";
|
||||
import SkillMatrix from "@components/SkillMatrix/SkillMatrix.astro";
|
||||
import Timeline from "@components/Timeline/Timeline.astro";
|
||||
import Ul from "@components/Ul.astro";
|
||||
|
||||
import type { carouselGroup } from "@interfaces/image-carousel.ts";
|
||||
import { timelineFromPrintedCircuitBoard } from "@interfaces/printed-circuit-board.ts";
|
||||
import type { categorySkills } from "@interfaces/skill-matrix.ts";
|
||||
import type { timelineEntry } from "@interfaces/timeline.ts";
|
||||
|
||||
import {
|
||||
subTitles,
|
||||
workingTimeline,
|
||||
} from "./osu-sinnhuber-aquatic-research-laboratory.ts";
|
||||
|
||||
import {
|
||||
pnpControl,
|
||||
pnpLights,
|
||||
} from "./zebrafish-embryo-pick-and-plate-pcbs.ts";
|
||||
|
||||
import installation_and_tuning from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/installation-and-tuning.jpg";
|
||||
import interface_tuning_and_detection from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/interface-tuning-and-detection.png";
|
||||
import off_controls_lid_overview from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/off-controls-lid-overview.jpg";
|
||||
import off_controls_syringe_overview from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/off-controls-syringe-overview.jpg";
|
||||
import off_controls_top_overview from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/off-controls-top-overview.jpg";
|
||||
import off_front_working_area_overview from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/off-front-working-area-overview.jpg";
|
||||
import off_front from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/off-front.jpg";
|
||||
import off_left from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/off-left.jpg";
|
||||
import off_lighting from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/off-lighting.jpg";
|
||||
import off_rear from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/off-rear.jpg";
|
||||
import off_right from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/off-right.jpg";
|
||||
import off_touchoff from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/off-touchoff.jpg";
|
||||
import on_dishes_lighting_reflection from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/on-dishes-lighting-reflection.jpg";
|
||||
import on_front_dishes_beakers from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/on-front-dishes-beakers.jpg";
|
||||
import on_front_overview from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/on-front-overview.jpg";
|
||||
import on_front from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/on-front.jpg";
|
||||
import on_screen from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/on-screen.jpg";
|
||||
import on_touchoff_block_isometric from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/on-touchoff-block-isometric.jpg";
|
||||
|
||||
import pick_and_placing from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/pick-and-placing.mp4";
|
||||
import precision_homing from "@assets/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate/precision-homing.mp4";
|
||||
import { DateTime } from "luxon";
|
||||
|
||||
const headerCarouselGroup: carouselGroup = {
|
||||
animation: "slide",
|
||||
images: [
|
||||
installation_and_tuning,
|
||||
on_front_overview,
|
||||
interface_tuning_and_detection,
|
||||
on_front,
|
||||
on_front_dishes_beakers,
|
||||
on_screen,
|
||||
off_touchoff,
|
||||
on_touchoff_block_isometric,
|
||||
off_controls_top_overview,
|
||||
off_controls_syringe_overview,
|
||||
off_controls_lid_overview,
|
||||
off_front,
|
||||
off_front_working_area_overview,
|
||||
off_left,
|
||||
off_rear,
|
||||
off_right,
|
||||
off_lighting,
|
||||
on_dishes_lighting_reflection,
|
||||
],
|
||||
};
|
||||
|
||||
const timeline: timelineEntry[] = [
|
||||
...workingTimeline,
|
||||
...timelineFromPrintedCircuitBoard(pnpLights),
|
||||
...timelineFromPrintedCircuitBoard(pnpControl),
|
||||
{
|
||||
event: "Project Started",
|
||||
eventDetail: "Initial Requirements Given",
|
||||
date: DateTime.fromISO("2013-12-01"),
|
||||
},
|
||||
{
|
||||
event: "Project Finished",
|
||||
eventDetail: "Delivered Units to Lab",
|
||||
date: DateTime.fromISO("2016-09-01"),
|
||||
},
|
||||
];
|
||||
|
||||
const categorizedSkills: categorySkills[] = [
|
||||
{
|
||||
category: "Electrical",
|
||||
skills: [
|
||||
{
|
||||
item: "Schematic & PCB Design",
|
||||
subItems: [
|
||||
{ item: "Mentor Graphics PADS" },
|
||||
{ item: "Altium Designer" },
|
||||
],
|
||||
},
|
||||
{
|
||||
item: "PCB Assembly & Rework",
|
||||
subItems: [
|
||||
{ item: "Handheld Soldering" },
|
||||
{ item: "Handheld Hot-Air Reflow" },
|
||||
{ item: "Oven Reflow" },
|
||||
],
|
||||
},
|
||||
{
|
||||
item: "Electrical Diagnostics",
|
||||
subItems: [{ item: "Multimeters" }, { item: "Oscilloscopes" }],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
category: "Software & Environments",
|
||||
skills: [
|
||||
{ item: "Git" },
|
||||
{
|
||||
item: "Programming",
|
||||
subItems: [{ item: "Low-Level Embedded C/C++ (Atmel Studio)" }],
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
const videos: string[] = [pick_and_placing, precision_homing];
|
||||
---
|
||||
|
||||
<ExperienceLayout title="SARL - Zebrafish Embryo Pick and Plate" />
|
||||
<ExperienceLayout title="Zebrafish Embryo Pick and Plate" subTitles={subTitles}>
|
||||
<CustomCarousel carouselGroup={headerCarouselGroup} />
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H2>Summary</H2></Fragment>
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H3>Timeline</H3></Fragment>
|
||||
<Timeline timeline={timeline} />
|
||||
</PageGroup>
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H3>Key Takeaways</H3></Fragment>
|
||||
<Ul>
|
||||
<Li>Placeholder</Li>
|
||||
</Ul>
|
||||
</PageGroup>
|
||||
<SkillMatrix categorizedSkills={categorizedSkills} />
|
||||
</PageGroup>
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H2>Details</H2></Fragment>
|
||||
<Paragraphs>
|
||||
<Paragraph> Placeholder </Paragraph>
|
||||
</Paragraphs>
|
||||
</PageGroup>
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H2>Videos</H2></Fragment>
|
||||
<div class="grid grid-cols-1 gap-4 md:grid-cols-2">
|
||||
{
|
||||
videos.map((video) => (
|
||||
<Video
|
||||
videoPath={video}
|
||||
autoPlay={true}
|
||||
loop={true}
|
||||
playsInline={true}
|
||||
/>
|
||||
))
|
||||
}
|
||||
</div>
|
||||
</PageGroup>
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H2>Printed Circuit Boards</H2></Fragment>
|
||||
<PrintedCircuitBoard pcb={pnpLights} />
|
||||
<PrintedCircuitBoard pcb={pnpControl} />
|
||||
</PageGroup>
|
||||
</ExperienceLayout>
|
||||
|
||||
@@ -53,9 +53,9 @@ const headerCarouselGroup: carouselGroup = {
|
||||
href="/experience/osu-ceoas-ocean-mixing-group/robotic-oceanographic-surface-sampler"
|
||||
>robotic oceanographic surface sampler</InlineLink
|
||||
>
|
||||
and an <InlineLink
|
||||
and a <InlineLink
|
||||
href="/experience/osu-sinnhuber-aquatic-research-laboratory/zebrafish-embryo-pick-and-plate"
|
||||
>embryo pick-and-plate machine</InlineLink
|
||||
>zebrafish embryo pick-and-plate machine</InlineLink
|
||||
>. One my my proudest moments was when our club's mars rover took first
|
||||
place at the Candian International Rover Challenge in 2018, for which I
|
||||
was the <InlineLink
|
||||
|
||||