Finish migrating things
@ -31,7 +31,7 @@
|
||||
<ul>
|
||||
<li>
|
||||
<a href="mailto:evan@ewpratten.com">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" style="height: 1em; width: 1em;">
|
||||
<path
|
||||
d="M 3 8 L 3 26 L 29 26 L 29 8 Z M 7.3125 10 L 24.6875 10 L 16 15.78125 Z M 5 10.875 L 15.4375 17.84375 L 16 18.1875 L 16.5625 17.84375 L 27 10.875 L 27 24 L 5 24 Z" />
|
||||
</svg>
|
||||
@ -40,7 +40,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://linkedin.com/in/ewpratten">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" style="height: 1em; width: 1em;">
|
||||
<path
|
||||
d="M 7.5 5 C 6.132813 5 5 6.132813 5 7.5 L 5 24.5 C 5 25.867188 6.132813 27 7.5 27 L 24.5 27 C 25.867188 27 27 25.867188 27 24.5 L 27 7.5 C 27 6.132813 25.867188 5 24.5 5 Z M 7.5 7 L 24.5 7 C 24.785156 7 25 7.214844 25 7.5 L 25 24.5 C 25 24.785156 24.785156 25 24.5 25 L 7.5 25 C 7.214844 25 7 24.785156 7 24.5 L 7 7.5 C 7 7.214844 7.214844 7 7.5 7 Z M 10.4375 8.71875 C 9.488281 8.71875 8.71875 9.488281 8.71875 10.4375 C 8.71875 11.386719 9.488281 12.15625 10.4375 12.15625 C 11.386719 12.15625 12.15625 11.386719 12.15625 10.4375 C 12.15625 9.488281 11.386719 8.71875 10.4375 8.71875 Z M 19.46875 13.28125 C 18.035156 13.28125 17.082031 14.066406 16.6875 14.8125 L 16.625 14.8125 L 16.625 13.5 L 13.8125 13.5 L 13.8125 23 L 16.75 23 L 16.75 18.3125 C 16.75 17.074219 16.996094 15.875 18.53125 15.875 C 20.042969 15.875 20.0625 17.273438 20.0625 18.375 L 20.0625 23 L 23 23 L 23 17.78125 C 23 15.226563 22.457031 13.28125 19.46875 13.28125 Z M 9 13.5 L 9 23 L 11.96875 23 L 11.96875 13.5 Z" />
|
||||
</svg>
|
||||
|
@ -9,6 +9,6 @@
|
||||
/maps/minecraft/* /games/minecraft/maps/:splat
|
||||
|
||||
# Nobody can standardize on an RSS url
|
||||
/rss /rss.xml
|
||||
/feed /rss.xml
|
||||
/feed.xml /rss.xml
|
||||
/rss /rss.xml 301
|
||||
/feed /rss.xml 301
|
||||
/feed.xml /rss.xml 301
|
||||
|
@ -57,8 +57,6 @@ body {
|
||||
svg {
|
||||
display: inline-block;
|
||||
margin-right: 1px;
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
filter: invert(9%) sepia(97%) saturate(6581%) hue-rotate(247deg)
|
||||
brightness(94%) contrast(144%);
|
||||
}
|
||||
|
Before Width: | Height: | Size: 2.6 MiB After Width: | Height: | Size: 2.6 MiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 3.8 MiB After Width: | Height: | Size: 3.8 MiB |
Before Width: | Height: | Size: 623 KiB After Width: | Height: | Size: 623 KiB |
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 237 KiB |
Before Width: | Height: | Size: 4.9 MiB After Width: | Height: | Size: 4.9 MiB |
Before Width: | Height: | Size: 5.4 MiB After Width: | Height: | Size: 5.4 MiB |
Before Width: | Height: | Size: 264 KiB After Width: | Height: | Size: 264 KiB |
Before Width: | Height: | Size: 5.8 MiB After Width: | Height: | Size: 5.8 MiB |
@ -1,4 +1,5 @@
|
||||
---
|
||||
layout: default
|
||||
title: Amateur Radio
|
||||
---
|
||||
|
@ -1,4 +1,5 @@
|
||||
---
|
||||
layout: default
|
||||
title: Morse Keys
|
||||
---
|
||||
|
||||
@ -14,26 +15,26 @@ Key features are:
|
||||
- A volume adjustment knob
|
||||
- A buzzer to make a sound when the key is pressed
|
||||
|
||||

|
||||

|
||||
|
||||
I later ended up modifying it to use two paperclips and wrote some software to turn it into an iambic keyer.
|
||||
|
||||
Another variation of this existed for portable use. I also wrote out a little morse code cheat sheet on the back incase I got stuck on something while practicing.
|
||||
|
||||

|
||||

|
||||
|
||||
## Paperclip straight key
|
||||
|
||||
Inspired by my practice key, I've occasionally used paperclips as straight keys into my HF radio.
|
||||
|
||||

|
||||

|
||||
|
||||
## PCIe key
|
||||
|
||||
Back when my only HF radio was a [Pixie QRP kit](/radio/pixie), I built a simple straight key out of a PCIe slot cover.
|
||||
|
||||

|
||||

|
||||
|
||||
A little while later, I redesigned this key to use some scrap wood as its base. I still occasionally this key, but I find the metal-on-metal clacking sound it makes to be a little annoying.
|
||||
|
||||

|
||||

|
@ -1,4 +1,5 @@
|
||||
---
|
||||
layout: default
|
||||
title: Meme Appreciation Month
|
||||
description: Come chat with young hams, and join the meme madness!
|
||||
aliases:
|
@ -1,13 +1,14 @@
|
||||
---
|
||||
layout: default
|
||||
title: Pixie
|
||||
---
|
||||
|
||||
My first HF radio was a Pixie QRP kit that I assembled myself back in 2019.
|
||||
|
||||

|
||||

|
||||
|
||||
I later purchased a tin of Altoids mints which got turned into a case for the radio.
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
@ -1,10 +1,11 @@
|
||||
---
|
||||
layout: default
|
||||
title: Darth Raider
|
||||
---
|
||||
|
||||
**Darth Raider** was a 4-foot-tall 120lb robot that myself and a group of friends designed, built, and programmed at [*Raider Robotics*](https://raiderrobotics.org/?utm_source=ewpratten.com) back in 2020. I personally lead software development for the project, and also played a key part in guiding the physical design of the robot.
|
||||
|
||||
<img src="/images/projects/darthraider.png" alt="Darth Raider" style="max-width:400px;">
|
||||
<img src="/assets/robotics/5024/darthraider.png" alt="Darth Raider" style="max-width:400px;">
|
||||
|
||||
**Darth Raider** carried a 15-4-0 WLT record, and was ranked #1 at the *FIRST Robotics Humber College ONT District Event*. This success ranked Raider Robotics as the 8th best robotics team in all of Canada for the 2020 competition season.
|
||||
|
@ -1,9 +1,8 @@
|
||||
---
|
||||
layout: default
|
||||
title: My work at Raider Robotics
|
||||
---
|
||||
|
||||
|
||||
|
||||
I was a member of [Raider Robotics](https://raiderrobotics.org) (a competitive robotics team) from 2017 through 2021.
|
||||
|
||||
During my time on the team, I was the lead software developer. This role involved devising and giving lessons on embedded programming to other students, creating high-level system designs, coordinating a team of other developers, and writing code (*lots* of code).
|
||||
@ -26,7 +25,7 @@ By obtaining real-time position deltas in robot-space, I was able to build path
|
||||
|
||||
<div style="max-width:200px;margin:auto;">
|
||||
<video controls style="width:100%">
|
||||
<source src="/videos/robotics/5024/vision_v1.mp4" type="video/mp4">
|
||||
<source src="/assets/robotics/5024/vision_v1.mp4" type="video/mp4">
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
</div>
|
||||
@ -35,7 +34,7 @@ By obtaining real-time position deltas in robot-space, I was able to build path
|
||||
|
||||
<div style="max-width:200px;margin:auto;">
|
||||
<video controls style="width:100%">
|
||||
<source src="/videos/robotics/5024/vision_v2.mp4" type="video/mp4">
|
||||
<source src="/assets/robotics/5024/vision_v2.mp4" type="video/mp4">
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
</div>
|
||||
@ -44,7 +43,7 @@ By obtaining real-time position deltas in robot-space, I was able to build path
|
||||
|
||||
<div style="max-width:500px;margin:auto;">
|
||||
<video controls style="width:100%">
|
||||
<source src="/videos/robotics/5024/vision_v3.mp4" type="video/mp4">
|
||||
<source src="/assets/robotics/5024/vision_v3.mp4" type="video/mp4">
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
</div>
|
Before Width: | Height: | Size: 282 KiB |
Before Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 275 KiB |
Before Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 160 KiB |
Before Width: | Height: | Size: 888 KiB |
Before Width: | Height: | Size: 159 KiB |
Before Width: | Height: | Size: 211 KiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 261 KiB |
Before Width: | Height: | Size: 952 KiB |
Before Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 893 KiB |
Before Width: | Height: | Size: 958 KiB |
Before Width: | Height: | Size: 842 KiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 640 KiB |
Before Width: | Height: | Size: 968 KiB |
Before Width: | Height: | Size: 359 KiB |
Before Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 104 KiB |
@ -1,83 +0,0 @@
|
||||
// Configure the maps (center on Toronto)
|
||||
var analog_rpt_map = L.map('analog-repeater-map').setView([43.6532, -79.3832], 8);
|
||||
|
||||
// Add OSM base map
|
||||
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||||
maxZoom: 18
|
||||
}).addTo(analog_rpt_map);
|
||||
|
||||
// Process repeater tables
|
||||
var analog_repeaters = Array.from(document.querySelectorAll("#analog-repeaters tbody tr")).map(function (row) {
|
||||
console.log(row);
|
||||
return {
|
||||
callsign: row.cells[0].innerText,
|
||||
downlink: row.cells[1].innerText,
|
||||
uplink: row.cells[2].innerText,
|
||||
pl_tone: row.cells[3].innerText,
|
||||
grid: row.cells[4].innerText,
|
||||
latitude: row.cells[4].querySelector("span").attributes["lat"].value,
|
||||
longitude: row.cells[4].querySelector("span").attributes["lon"].value,
|
||||
reach: row.cells[5].innerText.split(" ")[0],
|
||||
linked_repeaters: row.cells[6].innerText.split(", ")
|
||||
};
|
||||
});
|
||||
|
||||
// Add repeater markers
|
||||
analog_repeaters.forEach(function (repeater) {
|
||||
console.log(repeater);
|
||||
var marker = L.marker([repeater.latitude, repeater.longitude]).addTo(analog_rpt_map);
|
||||
marker.bindPopup(`<b>${repeater.callsign}</b>`);
|
||||
// marker.setIcon(L.divIcon({
|
||||
// className: 'repeater-marker',
|
||||
// iconSize: [16, 16]
|
||||
// }));
|
||||
});
|
||||
|
||||
// Draw the coverage areas
|
||||
analog_repeaters.forEach(function (repeater) {
|
||||
if (repeater.reach != "") {
|
||||
var coverage = L.circle([repeater.latitude, repeater.longitude], {
|
||||
color: 'gray',
|
||||
opacity: 0.25,
|
||||
fillColor: 'gray',
|
||||
fillOpacity: 0.05,
|
||||
radius: repeater.reach * 1000
|
||||
}).addTo(analog_rpt_map);
|
||||
coverage.bindPopup(`${repeater.callsign} coverage`);
|
||||
}
|
||||
});
|
||||
|
||||
// Draw the repeater links
|
||||
analog_repeaters.forEach(function (repeater) {
|
||||
repeater.linked_repeaters.forEach(function (linked_repeater) {
|
||||
// Find that repeater
|
||||
var linked_repeater_obj = analog_repeaters.find(function (obj) {
|
||||
return obj.callsign === linked_repeater;
|
||||
});
|
||||
|
||||
if (linked_repeater_obj) {
|
||||
var link = L.polyline([
|
||||
[repeater.latitude, repeater.longitude],
|
||||
[linked_repeater_obj.latitude, linked_repeater_obj.longitude]
|
||||
], {
|
||||
color: 'gray',
|
||||
weight: 2,
|
||||
opacity: 0.75
|
||||
}).addTo(analog_rpt_map);
|
||||
link.bindPopup(`${repeater.callsign} to ${linked_repeater_obj.callsign}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Add a custom CSS style for the markers
|
||||
// document.head.insertAdjacentHTML('beforeend', `
|
||||
// <style>
|
||||
// .repeater-marker {
|
||||
// background-image: url("/dist/icons8/antenna.png");
|
||||
// background-size: cover;
|
||||
// background-position: center;
|
||||
// border: 1px solid grey;
|
||||
// border-radius: 50%;
|
||||
// }
|
||||
// </style>`
|
||||
// );
|