Skip to content

Commit

Permalink
WIP update theme
Browse files Browse the repository at this point in the history
  • Loading branch information
SuperTails committed Oct 21, 2024
1 parent e886b2a commit 5460e7e
Show file tree
Hide file tree
Showing 75 changed files with 458 additions and 11,564 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
public/
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
[submodule "themes/ataraxia"]
path = themes/ataraxia
url = https://github.com/gersonbdev/ataraxia-zola.git
[submodule "themes/anatole-zola"]
path = themes/anatole-zola
url = [email protected]:longfangsong/anatole-zola.git
20 changes: 11 additions & 9 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
base_url = "https://SuperTails.github.io"

default_language = "en"
theme = "ataraxia"
theme = "anatole-zola"

# Whether to automatically compile all Sass files in the sass directory
compile_sass = true
Expand Down Expand Up @@ -61,11 +61,10 @@ smart_punctuation = false
[extra.social]
author_link = "https://SuperTails.github.io"
#twitter = "@user"
links = [
{ name = "Email", url = "mailto:[email protected]", icon = "bi-envelope-fill" },
{ name = "GitHub", url = "https://github.com/SuperTails", icon = "bi-github" },
{ name = "LinkedIn", url = "https://www.linkedin.com/in/carson-swoveland-b45116231/", icon = "bi-linkedin" },
]
github = "SuperTails"
linkedin = "carson-swoveland-b45116231"
#{ name = "Email", url = "mailto:[email protected]", icon = "bi-envelope-fill" },
#]

[extra.seo]
google_analytics = "G-X7Q1QJMZ5G"
Expand All @@ -84,14 +83,17 @@ smart_punctuation = false
[languages.en]
title = "Carson Swoveland"
description = "Computer Engineer, Software Developer, Tinkerer"
generate_feed = true
feed_filename = "atom.xml"
generate_feeds = true
feed_filenames = ["atom.xml"]
taxonomies = [
{ name = "tags", feed = true, paginate_by = 5 },
{ name = "categories", feed = true, paginate_by = 5 }
]

[languages.en.translations]
home = "Home"
about = "About"
archive = "Archive"
date_format = "%Y-%m-%d"
post = "Post"
category = "Category"
tag = "Tag"
Expand Down
File renamed without changes
19 changes: 8 additions & 11 deletions content/projects/112craft.md → content/112craft/index.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,20 @@
+++
date = "2020-08-14T00:00:00-05:00"
weight = 20
template = "page.html"
weight = 3
title = "112Craft"
description = "A feature-rich Minecraft clone written in Python"
slug = "112craft"
draft = false

[taxonomies]
categories = ["projects"]
tags = ["zola"]

[extra]
time = "Spring 2021"
page_identifier = "projects-112craft"
time = "Spring 2021"
page_identifier = "projects-112craft"
summary = "A feature-rich Minecraft clone written in Python"

[extra.image]
path = "projects/112craft.jpg"
alt = "112craft"
visible_in_main = true
path = "112craft/112craft.jpg"
alt = "112craft"
visible_in_main = true

+++

Expand Down
4 changes: 2 additions & 2 deletions content/_index.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
+++
title = "Home"
description = "Home site description."
#sort_by = "date"
sort_by = "weight"
template = "index.html"
page_template = "page.html"
paginate_by = 10
+++

<!--
Expand Down
7 changes: 3 additions & 4 deletions content/about/index.md → content/about/_index.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
+++
title = "About Me"
template = "about.html"
description = "lorem ipsum about sit amet"
template = "page.html"
slug = "about"
draft = false

#[taxonomies]
Expand All @@ -15,9 +14,9 @@ draft = false

<!-- more -->

Hi! I'm Carson, and I make stuff.
Hi! I'm Carson (or Salix), and I make stuff.

I'm currently a third-year Electrical and Computer Engineering student at Carnegie Mellon.
I'm currently an Electrical and Computer Engineering Master's student at Carnegie Mellon.
When I'm not in classes, I like to tinker with hardware and software projects, and occasionally play games.
You can find more detail on some of the things I've made on the [Projects Page](@/projects/_index.md).

Expand Down
4 changes: 4 additions & 0 deletions content/archive/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
+++
title = "archive"
template = "archive.html"
+++
Binary file added content/breadboard_computer/class.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/breadboard_computer/class2.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/breadboard_computer/debugger_3d.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
63 changes: 63 additions & 0 deletions content/breadboard_computer/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
+++
date = "2022-08-13T00:00:00-05:00"
template = "page.html"
weight = 2
title = "BYOBC"
slug = "breadboard-computer"
draft = false

[extra]
time = "Ongoing"
page_identifier = "projects-breadboard-computer"
summary = "Teaching a course on homebrew computer design."

[extra.image]
path = "projects/breadboard-computer/breadboard_computer.jpg"
alt = "breadboard_computer"
visible_in_main = true
+++

<iframe width="560" height="315" src="https://www.youtube.com/embed/36lvWIOPbbE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

### Overview

"Build Your Own Breadboard Computer" (BYOBC) is a course that I teach as part of CMU's Student College.
I am currently in my third semester teaching it.

In the course, students build a complete computer with RAM, ROM, a serial port, and a screen.
There is no expectation of prior electronics experience.

<img src="class.jpeg" alt="Photo of the class" height=300>
<img src="class2.jpeg" alt="Photo of a computer" height=300>

The course features
guest lectures from the CEO of Western Design Center <a href="https://en.wikipedia.org/wiki/Bill_Mensch">Bill Mensch</a>,
connections to modern computer design,
an entirely free-choice final project,
and the ability to keep the whole computer afterwards.

As part of developing the course I created a debugger board,
an ATMega4809-based PCB that simulates the entire 6502 processor,
while also providing EEPROM programming,
a serial connection, and a rudimentary logic analyzer affectionately called "The Probe."
It connects to a laptop over a USB-C cable to provide a GDB-like interface to students' computers.

<img src="debugger_3d.png" alt="3D rendering of the debugger">


### History

I've built about 3 of these computers before myself,
which is part of the reason why I decided to teach the class.
My most interesting attempt used a 6502 and about two dozen 74-series logic chips
to recreate the 2A03 processor used in the Nintendo Entertainment System.
By attaching a Raspberry Pi to the board, I could make it play Super Mario Bros, as shown below.

<div class="col-auto">
<img src="SuperMarioBrosComputer1.jpg" alt="Breadboard NES" height=300>
<img src="SuperMarioBrosComputer2.jpg" alt="Super Mario Bros demo" height=300>
</div>

I'd like to revisit the breadboard NES project at some point,
now that I have a better idea of what's causing some of the timing problems.
Maybe I'll design it out beforehand and make a proper PCB for it.
File renamed without changes
21 changes: 8 additions & 13 deletions content/projects/couchbot/index.md → content/couchbot/index.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,22 @@
+++
date = "2022-08-13T00:00:00-05:00"
weight = 60
template = "page.html"
weight = 10
title = "Couchbot"
description = "lorem ipsum dolor sit amet"
slug = "couchbot"
draft = false

[taxonomies]
categories = ["projects"]
tags = ["team"]

[extra]
time = "Ongoing"
page_identifier = "projects-couchbot"
time = "Ongoing"
page_identifier = "projects-couchbot"
summary = "A motorized couch that is the future of transportation."

[extra.image]
path = "projects/couchbot/warp_speed.jpg"
alt = "couchbot"
visible_in_main = true
path = "couchbot/warp_speed.jpg"
alt = "couchbot"
visible_in_main = true
+++

A motorized couch that is the future of transportation.

<!-- more -->

<img src="couchbot2.jpg" height=300>
Expand Down
File renamed without changes
Binary file added content/landhopper/gearbox.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
65 changes: 65 additions & 0 deletions content/landhopper/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
+++
date = "2024-08-13T00:00:00-05:00"
template = "page.html"
weight = 1
title = "Landhopper"
slug = "landhopper"
draft = false

[extra]
time = "Spring 2024"
page_identifier = "projects-robobuggy"
summary = "A self-charging, award-winning, GPS-enabled dumbwatch."

[extra.image]
path = "projects/landhopper/on_wrist.png"
alt = "landhopper"
visible_in_main = true
+++

<iframe width="560" height="315" src="https://www.youtube.com/embed/pJQOzT7xFPs?si=kvnir8nJUfzGXw-r" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

### Overview

Landhopper was my ECE capstone project that I created
with the help of Gary Bailey and Twain Byrnes.

It features:
- Solar-based self-charging capability
- Infinite battery life (when outdoors)
- 10m precision GPS tracking
- Offline map storage
- Path recording
- "Doom"

And for our efforts we placed first in the end-of-semester project competition.

### Design

I was responsible for the schematic-level PCB design and evaluating energy harvesting methods,
as well as writing a large portion of the firmware.

Our initial attempts at energy harvesting were mechanical, based on the swinging of the user's wrist.
I designed and 3D printed a 7:1 rotary gearbox that seemed promising.

<img src="gearbox.png" height=300>

However, we soon realized that solar power would be smaller, lighter, and more powerful.
Thus, we switched to a solar panel.

From there, I designed most of the system schematic.
The energy harvesting circuit uses
<a href="https://www.analog.com/en/products/adp5090.html">Analog Devices ADP5090</a>
to do MPPT.
The main microcontroller is an STM32L4,
connected to a variety of peripherals to do battery level sensing, input handling, display, etc.

<img src="schematic.png" height=300>

Our Rust firmware leverages async/await to communicate with the Max M10S GPS unit
while also loading map images from an SD card, saving location history to a file,
and playing a little raycasted Doom-mockup that I put in at the last minute. :)

<video controls>
<source src="notdoom.mp4" type="video/mp4">
</video>
Binary file added content/landhopper/notdoom.mp4
Binary file not shown.
Binary file added content/landhopper/on_wrist.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/landhopper/schematic.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
53 changes: 0 additions & 53 deletions content/projects/breadboard_computer/index.md

This file was deleted.

Binary file added content/riscvcraft/gdb.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
41 changes: 41 additions & 0 deletions content/riscvcraft/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
+++
date = "2024-08-01T00:00:00-05:00"
template = "page.html"
weight = 5
title = "RISC-VCraft"
slug = "riscvcraft"
draft = false

[extra]
time = "Ongoing"
summary = "Booting an OS where an OS should not be booted."

[extra.image]
path = "projects/robobuggy/rolls.jpg"
alt = "robobuggy"
visible_in_main = true
+++

If you've read the Wasmcraft post you know that Minecraft is Turing complete.

That's all well and good, but Minecraft is so 2012.
The future is in <i>RISC-V</i>.

Anyways, here's xv6's shell prompt:

<img src="prompt.png">

RISC-Vcraft is an rv32sima emulator that runs entirely in Minecraft commands.
That means it can run real, actual operating systems (if you wait long enough).
The shell prompt above is a user space program, on a time-shared multitasking OS,
that has a root filesystem loaded from a real (virtual) disk,
that has all the coreutils you'd expect for a minimal teaching unixlike (echo, cat, ls, etc.).

The only caveat is that it takes 11 minutes to boot,
which I think is an acceptable cost if your only compute platform is Minecraft.

Also, debugging the emulator got kind of hard sometimes,
so to help myself out I wrote a custom gdb server so that I can use `gdb-multiarch`
to connect to and debug my datapack running in the game.

<img src="gdb.png">
Binary file added content/riscvcraft/prompt.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 5460e7e

Please sign in to comment.