Fix all aliases
This commit is contained in:
parent
2df76a0e09
commit
3736c13a85
.gitignore
content
.obsidian
blog
2017-11-24-weatherballoon-lost.md2018-06-27-BecomeRanter.md2019-02-20-hatchfield.md2019-06-12-Styiling-GitHub.md2019-06-16-Graphing-w2a.md2019-06-21-Robot-Experiences.md2019-06-23-googlectf.md2019-06-24-LanguageHunt2.md2019-06-26-BashSmash.md2019-06-27-PWNlink.md2019-06-27-Python.md2019-07-01-devDNS.md2019-07-06-ScrapingFRCGithub.md2019-07-13-Lookback-GMAD.md2019-07-15-MindMap.md2019-08-10-Why-I-Carry-NFC.md2019-08-11-Setting-up-JA.md2019-08-24-Shift2.md2019-08-27-GitHub-cleanup.md2019-09-04-wrong-python.md2019-09-11-Buildingimgfrombin.md2019-10-05-BillWurtz.md2019-11-18-Realtime-robot-code.md2019-12-11-Cron.md2020-01-20-BrainFuckInBash.md2020-02-21-darth-raider.md2020-04-20-LudumDare46.md2020-05-19-Running-RoboRIO-Native.md2020-06-05-32u4-upload.md2020-08-03-Joystick-to-Voltage.md2020-08-13-Drivetrain-navigation.md2020-08-23-Notetaking-with-LaTeX.md2020-09-03-Bazel-and-AVR.md2020-09-10-CodeSpaces-For-FRC.md2020-09-17-Ultralight-writeup.md2020-09-24-Gopro-Webcam.md2020-10-01-Reading-a-Bitmap.md2020-10-15-Mounting-Google-Drives.md2020-10-24-CorePack-Development.md2020-11-21-Minecraft-IRC.md2020-11-6-Vortex-Core.md2020-12-19-Vanilla-plus-mods.md2020-12-31-Year-wrapup.md2020-12-4-GalliumOS.md2021-01-16-Printer-Tunneling.md2021-02-25-KBFS-Maven.md2021-03-14-QMK-Vortex-Core.md2021-04-20-Direwolf-APRS.md2021-07-06-Windows-SSH.md2021-09-28-frc-tech-reference.md2021-11-14-amprnet-bgp.md2021-12-03-quaternions.md2022-01-06-unfinished-projects.md2022-01-19-monocular-blender.md2022-02-14-personal-pbx.md2022-02-26-ferris-sweep.md2022-03-15-Java-cheatsheet.md2022-04-06-udm-fan.md2022-04-11-angle-problem.md2022-05-10-album-space-time.md2022-05-18-commit-sync.md2022-05-21-nanovna.md2022-06-08-bell-ipv6.md2022-06-13-fedora-36-vp.md2022-06-23-steam-controller-switch.md2022-06-26-rickrolling-the-internet.md2022-07-02-robotics-journey.md2022-08-17-as398057.md2022-09-09-new-domain.md2022-10-02-personal-ases.md2022-10-17-ampr-vultr-bgp.md2022-10-18-wireguard-bgp.md2022-10-30-bird-udmpro.md2022-11-04-country-filtering.md2022-11-10-mega-playlists.md2022-12-07-gamels.md2023-01-17-webfinger-redir.md2023-02-07-ipv6-canvas.md2023-02-15-wireguard-options.md2023-03-21-amprnet-bgp-announce.md2023-03-21-hackernews-block-ai.md2023-03-23-aprs-usage.md2023-04-27-client-ping.md2023-05-01-mouse-button-swap.md2023-06-15-rainbow-keyboard.md2023-06-16-nat64.md2023-07-05-simple-dnf-repo.md2023-07-07-ampr-vpn.md2023-07-10-baofeng-sound-card.md2023-10-20-obsidian-blogging.md
2
.gitignore
vendored
2
.gitignore
vendored
@ -16,7 +16,7 @@ Cargo.lock
|
||||
.dev.vars
|
||||
|
||||
# Obsidian
|
||||
.obsidian/themes
|
||||
/content/.obsidian/themes
|
||||
.obsidian/appearance.json
|
||||
.obsidian/workspace.json
|
||||
|
||||
|
34
content/.obsidian/workspace.json
vendored
34
content/.obsidian/workspace.json
vendored
@ -40,9 +40,29 @@
|
||||
"source": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "55b0a9f99b36a7a9",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "blog/2020-08-03-Joystick-to-Voltage.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "593c8a945e0bc198",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "empty",
|
||||
"state": {}
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 2
|
||||
"currentTab": 4
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
@ -108,7 +128,6 @@
|
||||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "blog/2019-08-11-Setting-up-JA.md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
@ -125,7 +144,6 @@
|
||||
"state": {
|
||||
"type": "outgoing-link",
|
||||
"state": {
|
||||
"file": "blog/2019-08-11-Setting-up-JA.md",
|
||||
"linksCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
}
|
||||
@ -147,9 +165,7 @@
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "blog/2019-08-11-Setting-up-JA.md"
|
||||
}
|
||||
"state": {}
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -179,8 +195,10 @@
|
||||
"command-palette:Open command palette": false
|
||||
}
|
||||
},
|
||||
"active": "22ff53eb1a88a69b",
|
||||
"active": "593c8a945e0bc198",
|
||||
"lastOpenFiles": [
|
||||
"blog/2020-08-03-Joystick-to-Voltage.md",
|
||||
"blog/2019-08-11-Setting-up-JA.md",
|
||||
"blog/2018-06-27-BecomeRanter.md",
|
||||
"blog/2017-11-24-weatherballoon-lost.md",
|
||||
"blog/2019-06-12-Styiling-GitHub.md",
|
||||
@ -191,9 +209,7 @@
|
||||
"blog/frc-languages.md",
|
||||
"blog/2020-09-24-Gopro-Webcam.md",
|
||||
"blog/2023-10-20-obsidian-blogging.md",
|
||||
"blog/2019-08-11-Setting-up-JA.md",
|
||||
"blog/2020-08-13-Drivetrain-navigation.md",
|
||||
"blog/2020-08-03-Joystick-to-Voltage.md",
|
||||
"blog/2019-06-23-googlectf.md",
|
||||
"blog/2022-07-02-robotics-journey.md",
|
||||
"blog/2020/08/23/notetaking-with-latex.md",
|
||||
|
@ -1,11 +1,14 @@
|
||||
---
|
||||
title: "We lost a weather balloon in another country"
|
||||
description: "..and made the news because of it"
|
||||
title: We lost a weather balloon in another country
|
||||
description: ..and made the news because of it
|
||||
date: 2017-11-24
|
||||
tags: news
|
||||
draft: false
|
||||
extra:
|
||||
excerpt: Beal science project succeeds - maybe too much - as weather balloon floats into U.S.
|
||||
excerpt: Beal science project succeeds - maybe too much - as weather balloon floats
|
||||
into U.S.
|
||||
aliases:
|
||||
- /blog/weatherballoon-lost
|
||||
---
|
||||
|
||||
A news article was written about a project I was involved in. It's even headed by a photo I took!
|
||||
@ -31,4 +34,3 @@ Once found on the American side of the border, a corresponding article was writt
|
||||
## The balloon on the other side
|
||||
|
||||

|
||||
|
||||
|
@ -1,17 +1,18 @@
|
||||
---
|
||||
layout: page
|
||||
title: Using a python script to create devRant posts based on the style and content of another user
|
||||
title: Using a python script to create devRant posts based on the style and content
|
||||
of another user
|
||||
description: if/else ++
|
||||
date: 2018-06-27
|
||||
tags:
|
||||
- project
|
||||
- python
|
||||
- walkthrough
|
||||
- project
|
||||
- python
|
||||
- walkthrough
|
||||
aliases:
|
||||
- /blog/2018/06/27/becomeranter
|
||||
- /blog/2018/06/27/becomeranter
|
||||
- /blog/becomeranter
|
||||
---
|
||||
|
||||
|
||||
Ok... The title is slightly wrong. There are actually 2 scripts.. Sorry about that.
|
||||
|
||||
This is a guide on installing and using the [BecomeRanter](https://github.com/Ewpratten/BecomeRanter) script.
|
||||
@ -67,4 +68,4 @@ To start training, run:
|
||||
python3 createhfd5frominput.py
|
||||
```
|
||||
|
||||
A new hdf5 file will be generated in the same folder as the script
|
||||
A new hdf5 file will be generated in the same folder as the script
|
||||
|
@ -1,14 +1,16 @@
|
||||
---
|
||||
title: "Robot reveal: HATCHField"
|
||||
title: 'Robot reveal: HATCHField'
|
||||
description: What I have been working on for the past few months
|
||||
date: 2019-02-20
|
||||
tags:
|
||||
- video
|
||||
- frc
|
||||
- video
|
||||
- frc
|
||||
draft: false
|
||||
extra:
|
||||
excerpt: HATCHField is a competitive robot built by Raider Robotics.
|
||||
icon: las la-play
|
||||
aliases:
|
||||
- /blog/hatchfield
|
||||
---
|
||||
|
||||
My roles in this project included:
|
||||
@ -19,4 +21,4 @@ My roles in this project included:
|
||||
|
||||
## Reveal teaser
|
||||
|
||||
<iframe width="100%" height="500" src="https://www.youtube.com/embed/jOMny7rGcmc" title="Robot Reveal 2019" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
<iframe width="100%" height="500" src="https://www.youtube.com/embed/jOMny7rGcmc" title="Robot Reveal 2019" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
@ -3,10 +3,11 @@ layout: page
|
||||
title: GitHub's CSS is boring. So I refreshed the design
|
||||
date: 2019-06-12
|
||||
tags:
|
||||
- project
|
||||
- github
|
||||
- project
|
||||
- github
|
||||
aliases:
|
||||
- /blog/2019/06/12/styiling-github
|
||||
- /blog/2019/06/12/styiling-github
|
||||
- /blog/styiling-github
|
||||
---
|
||||
|
||||
I have been using GitHub since 2017, and have been getting tired of GitHub's theme. I didn't need a huge change, just a small refresh. So, to solve this, I whipped out [Stylus](https://addons.mozilla.org/en-CA/firefox/addon/styl-us/) and made a nice little CSS file for it.
|
||||
@ -48,4 +49,4 @@ Here is the CSS. Feel free to play with it.
|
||||
```
|
||||
|
||||
## Use it yourself
|
||||
I put this theme on userstyles.org. You can download and install it by going to [my userstyles page](https://userstyles.org/styles/172679/ewpratten-s-githubtheme).
|
||||
I put this theme on userstyles.org. You can download and install it by going to [my userstyles page](https://userstyles.org/styles/172679/ewpratten-s-githubtheme).
|
||||
|
@ -4,10 +4,11 @@ title: Graphing the relation between wheels and awards for FRC
|
||||
description: AKA. Why programmer + reddit + matplotlib is a bad idea.
|
||||
date: 2019-06-16
|
||||
tags:
|
||||
- frc
|
||||
- data-analysis
|
||||
- frc
|
||||
- data-analysis
|
||||
aliases:
|
||||
- /blog/2019/06/16/graphing-w2a
|
||||
- /blog/2019/06/16/graphing-w2a
|
||||
- /blog/graphing-w2a
|
||||
---
|
||||
|
||||
I was scrolling through reddit the other day, and came across [this great post](https://www.reddit.com/r/FRC/comments/byzv5q/i_know_what_im_doing/) by u/[MasterQuacks](https://www.reddit.com/user/MasterQuacks/).
|
||||
@ -63,4 +64,4 @@ with plt.xkcd():
|
||||
## The result
|
||||
Here is the resulting image. From left, to right: 5024, 254, 1114, 5406, 2056
|
||||
|
||||

|
||||

|
||||
|
@ -4,9 +4,10 @@ title: What I have learned from 2 years of FRC programming
|
||||
description: Robots are pretty cool
|
||||
date: 2019-06-21
|
||||
tags:
|
||||
- frc
|
||||
- frc
|
||||
aliases:
|
||||
- /blog/2019/06/21/robot-experiences
|
||||
- /blog/2019/06/21/robot-experiences
|
||||
- /blog/robot-experiences
|
||||
---
|
||||
|
||||
Over the past two years (2018 / 2019), I have been a member of my school's [FRC](https://www.firstinspires.org/robotics/frc) team, [Raider Robotics](https://frc5024.github.io). Specifically, a programmer.
|
||||
@ -51,4 +52,4 @@ I have been re-selected to be the sole lead of the 5024 programming team for 202
|
||||
- Provide writeups of lessons
|
||||
- Have mentors do "guest presentations"
|
||||
- Dedicate a day to robot driving lessons
|
||||
- Use a custom library with wrappers and tools built by me to provide easy interfaces for new programmers
|
||||
- Use a custom library with wrappers and tools built by me to provide easy interfaces for new programmers
|
||||
|
@ -4,9 +4,10 @@ title: I gave Google's CTF a short try and learned a thing or two
|
||||
description: But exams got in the way and took all the fun
|
||||
date: 2019-06-23
|
||||
tags:
|
||||
- ctf
|
||||
- ctf
|
||||
aliases:
|
||||
- /blog/2019/06/23/googlectf
|
||||
- /blog/2019/06/23/googlectf
|
||||
- /blog/googlectf
|
||||
---
|
||||
|
||||
Honestly, I completely forgot that this was the weekend of Google's online [CTF Qualifications](https://g.co/ctf) for 2019 and was late, unprepared, busy, and did not have a team to work with.
|
||||
@ -18,4 +19,4 @@ Google hosts a (yearly?) event where hackers from around the world team up and a
|
||||
Many questions I worked on involved extracting a key from a binary. I employed two vastly different tools for this job. First, a standard linux tool, `strings`. When passed a filename, it will extract and print all human-readable strings it can find to the terminal. The flag is usually in this dump. If not, I use the second tool. [Ghidra](https://www.nsa.gov/resources/everyone/ghidra/), an open-source reverse engineering tool designed by the NSA. I used this tool a fair amount during my quick attempt at GCTF.
|
||||
|
||||
## Will I do this again?
|
||||
Yes! The CTF was very fun to try, and I will definitely give it a proper shot next time.
|
||||
Yes! The CTF was very fun to try, and I will definitely give it a proper shot next time.
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
layout: page
|
||||
title: "The language hunt: Part 2"
|
||||
title: 'The language hunt: Part 2'
|
||||
description: A quick followup
|
||||
date: 2019-06-24
|
||||
tags:
|
||||
- frc
|
||||
- frc
|
||||
aliases:
|
||||
- /blog/2019/06/24/languagehunt2
|
||||
- /blog/2019/06/24/languagehunt2
|
||||
- /blog/languagehunt2
|
||||
---
|
||||
|
||||
This is a very short post, just to explain the result of [The language Hunt](/blog/frc-languages).
|
||||
@ -18,4 +19,4 @@ For our upcoming 2020 season and for the forseeable future, we have chosen Java
|
||||
Not too much. Aside from learning new syntax, tools, and no longer worrying about linker errors, Java and C++ have no real difference. Most of the reason Java was chosen was based on support instead of functionality. Java is much better supported by FIRST, WPILib, and other vendors. Java is also taught in the school 5024 is based from. For a more detailed explanation of the benefits of each language, take a look at Chief Delphi. There are plenty of posts there explaining the choices of many teams and their reasoning.
|
||||
|
||||
## Side note
|
||||
I am experimenting with various post formats (This being a short post). Let me know which you prefer via the social platform of your choice.
|
||||
I am experimenting with various post formats (This being a short post). Let me know which you prefer via the social platform of your choice.
|
||||
|
@ -4,10 +4,11 @@ title: BashSmash
|
||||
description: A tool for driving people crazy
|
||||
date: 2019-06-26
|
||||
tags:
|
||||
- project
|
||||
- bash
|
||||
- project
|
||||
- bash
|
||||
aliases:
|
||||
- /blog/2019/06/26/bashsmash
|
||||
- /blog/2019/06/26/bashsmash
|
||||
- /blog/bashsmash
|
||||
---
|
||||
|
||||
I was watching this great [Liveoverflow video](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=2ahUKEwiOhNze_4fjAhUiB50JHR12D8AQwqsBMAB6BAgJEAQ&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D6D1LnMj0Yt0&usg=AOvVaw2nOgft0SoPZujc9js9Vxhx) yesterday, and really liked the idea of building escape sequences with strings. So, I built a new tool, [BashSmash](https://pypi.org/project/bashsmash/).
|
||||
@ -136,4 +137,4 @@ For more info, see the [PYPI Page](https://pypi.org/project/bashsmash/).
|
||||
## Why do you have a desire to break things with python
|
||||
Because it is fun. Give it a try!
|
||||
|
||||
I will have a post here at some point about the weird things I do in my python code and why I do them.
|
||||
I will have a post here at some point about the weird things I do in my python code and why I do them.
|
||||
|
@ -4,10 +4,11 @@ title: I had some fun with a router
|
||||
description: cleartext passwords + external management = death wish
|
||||
date: 2019-06-27
|
||||
tags:
|
||||
- project
|
||||
- cybersecurity
|
||||
- project
|
||||
- cybersecurity
|
||||
aliases:
|
||||
- /blog/2019/06/27/pwnlink
|
||||
- /blog/2019/06/27/pwnlink
|
||||
- /blog/pwnlink
|
||||
---
|
||||
|
||||
I was playing around with some D-link routers today and remembered an [ExploitDB Entry](https://www.exploit-db.com/exploits/33520) I read a while ago. Many D-link routers have a great feature that allows remote management and configuration queries. Interestingly, this cannot be disabled, and one of the pages contains a cleartext version of the admin password (yay!).
|
||||
@ -46,4 +47,4 @@ I don't see much point to these, but I should probably put one anyways.
|
||||
|
||||
**Don't be dumb with this script.**
|
||||
|
||||
I have only used it on my own (or 5024's) routers, and did not create PWNlink with any malicious intent.
|
||||
I have only used it on my own (or 5024's) routers, and did not create PWNlink with any malicious intent.
|
||||
|
@ -4,10 +4,11 @@ title: Hunting snakes with a shotgun
|
||||
description: Python is a little too forgiving
|
||||
date: 2019-06-27
|
||||
tags:
|
||||
- random
|
||||
- python
|
||||
- random
|
||||
- python
|
||||
aliases:
|
||||
- /blog/2019/06/27/python
|
||||
- /blog/2019/06/27/python
|
||||
- /blog/python
|
||||
---
|
||||
|
||||
A rather large number of people know me as "the guy who does weird things with python". I would object to this title, but it is quite accurate. So, here are some of the things I like playing with in python. None of these are actually breaking the language, just little known facts and syntax. At some point I will share about actually breaking the language. For now, enjoy the weird things I have found over the past 6 years.
|
||||
@ -118,4 +119,4 @@ print("The world has ended" if 100 is 5 else "All is good")
|
||||
This one is interesting. Python, like Java, is compiled into bytecode. So yes, it technically is a compiled language. To see said bytecode, take a look at any `.pyc` file sitting in your `__pycache__`
|
||||
|
||||
## Blog formatting experiments
|
||||
I am still playing with post formats, and various types of content. This is more random than I usually prefer. Let me know your thoughts on the social media platform of your choosing.
|
||||
I am still playing with post formats, and various types of content. This is more random than I usually prefer. Let me know your thoughts on the social media platform of your choosing.
|
||||
|
@ -1,10 +1,12 @@
|
||||
---
|
||||
layout: page
|
||||
title: "devDNS"
|
||||
description: "The DNS over devRant service"
|
||||
date: 2019-07-01
|
||||
title: devDNS
|
||||
description: The DNS over devRant service
|
||||
date: 2019-07-01
|
||||
tags: project
|
||||
aliases: [/blog/2019/07/01/devdns]
|
||||
aliases:
|
||||
- /blog/2019/07/01/devdns
|
||||
- /blog/devdns
|
||||
---
|
||||
|
||||
Over the past year and a half, I have been hacking my way around the undocumented [devRant](https://devrant.com) auth/write API. At the request of devRant's creators, this API must not be documented due to the way logins work on the platform. That is besides the point. I have been working on a little project called [devDNS](https://devrant.com/collabs/2163502) over the past few days that uses this undocumented API. Why must I be so bad at writing intros?
|
||||
@ -36,4 +38,4 @@ The Python script behind devDNS is very simple. devDNS does the following every
|
||||
Thats it! Super simple, and only two days from concept to reality.
|
||||
|
||||
## Where is this hosted?
|
||||
This program is hosted on a raspberry pi laying in my room running docker. I also have [Portainer](https://www.portainer.io/) set up so I can easily monitor the bot from my phone over my VPN.
|
||||
This program is hosted on a raspberry pi laying in my room running docker. I also have [Portainer](https://www.portainer.io/) set up so I can easily monitor the bot from my phone over my VPN.
|
||||
|
@ -1,10 +1,12 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Scraping FRC team's GitHub accounts to gather large amounts of data"
|
||||
description: "There are a lot of teams..."
|
||||
date: 2019-07-06
|
||||
title: Scraping FRC team's GitHub accounts to gather large amounts of data
|
||||
description: There are a lot of teams...
|
||||
date: 2019-07-06
|
||||
tags: frc
|
||||
aliases: [/blog/2019/07/06/scrapingfrcgithub]
|
||||
aliases:
|
||||
- /blog/2019/07/06/scrapingfrcgithub
|
||||
- /blog/scrapingfrcgithub
|
||||
---
|
||||
|
||||
I was curious about the most used languages for FRC, so I build a Python script to find out what they where.
|
||||
@ -100,4 +102,4 @@ In terms of github account names, 133 teams follow FRC convention and use a user
|
||||
## Using the script
|
||||
This script is not on PYPI this time. You can obtain a copy from my GitHub repo: [https://github.com/Ewpratten/frc-code-stats](https://github.com/Ewpratten/frc-code-stats)
|
||||
|
||||
First, make sure both `python3.7` and `python3-pip` are installed on your computer. Next, delete the `data.json` file. Then, install the requirements with `pip3 install -r requirements.txt`. Finally, run with `python3 main.py` to start the script. Now, go outside and enjoy nature for about an hour, and your data should be loaded!.
|
||||
First, make sure both `python3.7` and `python3-pip` are installed on your computer. Next, delete the `data.json` file. Then, install the requirements with `pip3 install -r requirements.txt`. Finally, run with `python3 main.py` to start the script. Now, go outside and enjoy nature for about an hour, and your data should be loaded!.
|
||||
|
@ -4,9 +4,10 @@ title: Taking a look back at GMAD
|
||||
description: Fun, Simple, and Quick
|
||||
date: 2019-07-13
|
||||
tags:
|
||||
- project
|
||||
- project
|
||||
aliases:
|
||||
- /blog/2019/07/13/lookback-gmad
|
||||
- /blog/2019/07/13/lookback-gmad
|
||||
- /blog/lookback-gmad
|
||||
---
|
||||
|
||||
One day, back in June of 2018, I was both looking for a new project to work on, and trying to decide which Linux distro to install on one of my computers. From this, a little project was born. [Give Me a Distro](http://ewpratten.retrylife.ca/GiveMeADistro/) (or, GMAD, as I like to call it) is a little website that chooses a random distribution of Linux and shows a description of what you are about to get yourself into, and a download link for the latest ISO.
|
||||
@ -29,4 +30,4 @@ Secondly, the version of the site hosted on [retrylife.ca](https://retrylife.ca/
|
||||
If you would like to add a distro or three to the website, feel free to make a pull request over on [GitHub](https://github.com/Ewpratten/GiveMeADistro).
|
||||
|
||||
## Why make a post about it a year later?
|
||||
I just really enjoyed working with the project and sharing it with friends, so I figured I should mention it here too. Maybe it will inspire someone to make something cool!
|
||||
I just really enjoyed working with the project and sharing it with friends, so I figured I should mention it here too. Maybe it will inspire someone to make something cool!
|
||||
|
@ -4,10 +4,11 @@ title: Mind map generation with Python
|
||||
description: Step 1
|
||||
date: 2019-07-15
|
||||
tags:
|
||||
- project
|
||||
- python
|
||||
- project
|
||||
- python
|
||||
aliases:
|
||||
- /blog/2019/07/15/mindmap
|
||||
- /blog/2019/07/15/mindmap
|
||||
- /blog/mindmap
|
||||
---
|
||||
|
||||
While working on an assignment with [Coggle](https://coggle.it) today, I noticed an interesting option in the save menu. *Download as .mm file*. Having rarely worked with mind maps before, and only doing it online, it never occured to me that someone would have a file format for it. So I took a look.
|
||||
@ -132,4 +133,4 @@ This script just translates a `.mm` file to JSON. Nothing else. Next, I want to
|
||||
I want a script that I can drop in the root of any project to build a [Gource](https://gource.io/)-style visualization of the folder structure. This will give me a way to make cool visualizations for lessons on the robotics team. On top of the folder visualization, Coggle's new flowchart feature can be used to generate graphical representations of @frc5024's codebases. This could give me an interactive overview of the work being done by our team.
|
||||
|
||||
### Further learning
|
||||
crm.org has done a great writeup of [Coggle, and some of it's features](https://crm.org/news/free-flowin-mind-maps-with-coggle). If you are looking to learn more about the tool, I recommend taking a few minute to read their post.
|
||||
crm.org has done a great writeup of [Coggle, and some of it's features](https://crm.org/news/free-flowin-mind-maps-with-coggle). If you are looking to learn more about the tool, I recommend taking a few minute to read their post.
|
||||
|
@ -4,9 +4,10 @@ title: My weird piece of EDC
|
||||
description: Reasons why I always carry NFC cards with me
|
||||
date: 2019-08-10
|
||||
tags:
|
||||
- random
|
||||
- random
|
||||
aliases:
|
||||
- /blog/2019/08/10/why-i-carry-nfc
|
||||
- /blog/2019/08/10/why-i-carry-nfc
|
||||
- /blog/why-i-carry-nfc
|
||||
---
|
||||
|
||||
Im back with a quick little post about something I cary with me everywhere I go, EDC (Every-Day Carry) if you will.
|
||||
@ -41,4 +42,4 @@ Thanks to the NFC Tools app, pretty much everything is 3 taps and a swipe away.
|
||||
## A/N
|
||||
Occasionally, I either have nothing in the works, or am working on some very boring and technical projects, so I look to post some fun content like this. Currently the latter of the options is true, and I wanted a quick break from writing networking code.
|
||||
|
||||
Let me know what you think of this type of content!
|
||||
Let me know what you think of this type of content!
|
||||
|
@ -4,11 +4,12 @@ title: How I set up ひらがな input on my laptop
|
||||
description: I3wm makes everything 10x harder than it should be
|
||||
date: 2019-08-12
|
||||
tags:
|
||||
- languages
|
||||
- walkthrough
|
||||
- linux
|
||||
- languages
|
||||
- walkthrough
|
||||
- linux
|
||||
aliases:
|
||||
- /blog/2019/08/12/setting-up-ja
|
||||
- /blog/2019/08/12/setting-up-ja
|
||||
- /blog/setting-up-ja
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
@ -4,10 +4,11 @@ title: Keyed data encoding with Python
|
||||
description: XOR is pretty cool
|
||||
date: 2019-08-24
|
||||
tags:
|
||||
- project
|
||||
- python
|
||||
- project
|
||||
- python
|
||||
aliases:
|
||||
- /blog/2019/08/24/shift2
|
||||
- /blog/2019/08/24/shift2
|
||||
- /blog/shift2
|
||||
---
|
||||
|
||||
I have always been interested in text and data encoding, so last year, I made my first encoding tool. [Shift64](https://github.com/Ewpratten/shift64) was designed to take plaintext data with a key, and convert it into a block of base64 that could, in theory, only be decoded with the original key. I had a lot of fun with this tool, and a very stripped down version of it actually ended up as a bonus question on the [5024 Programming Test](https://github.com/frc5024/Programming-Test/blob/master/test.md) for 2018/2019. Yes, the key was in fact `5024`.
|
||||
@ -79,4 +80,4 @@ Due to the fact that shift2 can also be used as a library (as outlined in the [R
|
||||
If you are interested in helping out, or taking on this idea for yourself, send me an email.
|
||||
|
||||
<!-- Python code -->
|
||||
<script type="text/python" src="/assets/python/shift2/shift2demo.py"></script>
|
||||
<script type="text/python" src="/assets/python/shift2/shift2demo.py"></script>
|
||||
|
@ -1,13 +1,15 @@
|
||||
---
|
||||
layout: page
|
||||
title: I did some cleaning
|
||||
description: Spring cleaning is fun when it isn't spring, and a computer does all the work
|
||||
description: Spring cleaning is fun when it isn't spring, and a computer does all
|
||||
the work
|
||||
date: 2019-08-27
|
||||
tags:
|
||||
- random
|
||||
- github
|
||||
- random
|
||||
- github
|
||||
aliases:
|
||||
- /blog/2019/08/27/github-cleanup
|
||||
- /blog/2019/08/27/github-cleanup
|
||||
- /blog/github-cleanup
|
||||
---
|
||||
|
||||
As I am continuing to check items off my TODO list before school starts, I have come to an item I have been putting off for a while. **Clean up GitHub Account**. Luckily, I discovered a little trick to make the process of deleting unused repos a little easier!
|
||||
@ -49,4 +51,4 @@ and the second with:
|
||||
and *replace all* again.
|
||||
|
||||
## Deleting the repos
|
||||
Simply copy the entire text file that was made, and paste it in a terminal, then press \<enter\> (this will take a while)
|
||||
Simply copy the entire text file that was made, and paste it in a terminal, then press \<enter\> (this will take a while)
|
||||
|
@ -1,10 +1,12 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Doing Python OOP the wrong way"
|
||||
description: "In the name of science!"
|
||||
date: 2019-09-07
|
||||
title: Doing Python OOP the wrong way
|
||||
description: In the name of science!
|
||||
date: 2019-09-07
|
||||
tags: project random
|
||||
aliases: [/blog/2019/09/07/wrong-python]
|
||||
aliases:
|
||||
- /blog/2019/09/07/wrong-python
|
||||
- /blog/wrong-python
|
||||
---
|
||||
|
||||
If you know me, you probably know of the many weird things I do with python. Most recent of which being this [FizzBuzz](https://en.wikipedia.org/wiki/Fizz_buzz) implementation in one line of python code:
|
||||
@ -97,4 +99,4 @@ This code will still function like a normal class. Unlike a regular class defini
|
||||
## Why?
|
||||
I have absolutely no idea why this would ever be useful. If you think you should start doing this in your code, **don't**. It leads to very messy and confusing code, and is bad practice in just about every way.
|
||||
|
||||
The point of this post is to show yet another instance of the Python interpreter saying "[idgaf](https://www.urbandictionary.com/define.php?term=idgaf)", and letting us have a little fun.
|
||||
The point of this post is to show yet another instance of the Python interpreter saying "[idgaf](https://www.urbandictionary.com/define.php?term=idgaf)", and letting us have a little fun.
|
||||
|
@ -4,17 +4,18 @@ title: Building images from binary data
|
||||
description: Simple, yet fun
|
||||
date: 2019-09-11
|
||||
tags:
|
||||
- python
|
||||
- images
|
||||
- project
|
||||
- python
|
||||
- images
|
||||
- project
|
||||
redirect_from:
|
||||
- /post/ef7b3166/
|
||||
- /ef7b3166/
|
||||
- /post/ef7b3166/
|
||||
- /ef7b3166/
|
||||
aliases:
|
||||
- /blog/2019/09/11/buildingimgfrombin
|
||||
- /blog/2019/09/11/buildingimgfrombin
|
||||
- /blog/buildingimgfrombin
|
||||
extra:
|
||||
uses:
|
||||
- twitter
|
||||
- twitter
|
||||
---
|
||||
|
||||
During a computer science class today, we were talking about embedding code and metadata in *jpg* and *bmp* files. @exvacuum was showing off a program he wrote that watched a directory for new image files, and would display them on a canvas. He then showed us a special image. In this image, he had injected some metadata into the last few pixels, which were not rendered, but told his program where to position the image on the canvas, and it's size.
|
||||
@ -62,4 +63,4 @@ Back to executable data, these are small segments of a `dll` file:
|
||||
This script is hosted [on my GitHub account](https://github.com/Ewpratten/binmap) as a standalone file. Any version of python3 should work, but the following libraries are needed:
|
||||
|
||||
- Pillow
|
||||
- Numpy
|
||||
- Numpy
|
||||
|
@ -4,14 +4,15 @@ title: Using an RNN to generate Bill Wurtz notes
|
||||
description: Textgenrnn is fun
|
||||
date: 2019-10-05
|
||||
tags:
|
||||
- project
|
||||
- walkthrough
|
||||
- python
|
||||
- project
|
||||
- walkthrough
|
||||
- python
|
||||
redirect_from:
|
||||
- /post/99g9j2r90/
|
||||
- /99g9j2r90/
|
||||
- /post/99g9j2r90/
|
||||
- /99g9j2r90/
|
||||
aliases:
|
||||
- /blog/2019/10/05/billwurtz
|
||||
- /blog/2019/10/05/billwurtz
|
||||
- /blog/billwurtz
|
||||
---
|
||||
|
||||
[Bill Wurtz](https://billwurtz.com/) is an American musician who became [reasonably famous](https://socialblade.com/youtube/user/billwurtz/realtime) through short musical videos posted to Vine and YouTube. I was searching through his website the other day, and stumbled upon a page labeled [*notebook*](https://billwurtz.com/notebook.html), and thought I should check it out.
|
||||
@ -93,4 +94,4 @@ Here are some of my favorite generated notes:
|
||||
Not perfect, but it is readable english, so i call it a win!
|
||||
|
||||
## Play with the code
|
||||
I have uploaded the basic code, the scraped posts, and a partial hdf5 file [to GitHub](https://github.com/Ewpratten/be-bill) for anyone to play with. Maybe make a twitter bot out of this?
|
||||
I have uploaded the basic code, the scraped posts, and a partial hdf5 file [to GitHub](https://github.com/Ewpratten/be-bill) for anyone to play with. Maybe make a twitter bot out of this?
|
||||
|
@ -1,13 +1,15 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Programming a live robot"
|
||||
description: "Living on the edge is an understatement"
|
||||
date: 2019-11-20
|
||||
title: Programming a live robot
|
||||
description: Living on the edge is an understatement
|
||||
date: 2019-11-20
|
||||
tags: random frc
|
||||
redirect_from:
|
||||
- /post/e9gdhj90/
|
||||
- /e9gdhj90/
|
||||
aliases: [/blog/2019/11/20/realtime-robot-code]
|
||||
redirect_from:
|
||||
- /post/e9gdhj90/
|
||||
- /e9gdhj90/
|
||||
aliases:
|
||||
- /blog/2019/11/20/realtime-robot-code
|
||||
- /blog/realtime-robot-code
|
||||
---
|
||||
|
||||
> *"So.. what if we could skip asking for driver inputs, and just have the robot operators control the bot through a commandline interface?"*
|
||||
@ -183,4 +185,4 @@ The message at the end occurs when killing the code.
|
||||
|
||||
## Conclusion
|
||||
|
||||
I have no idea why any of this would be useful, or if it is even field legal.. It's just a fun project for a monday morning.
|
||||
I have no idea why any of this would be useful, or if it is even field legal.. It's just a fun project for a monday morning.
|
||||
|
@ -1,16 +1,17 @@
|
||||
---
|
||||
layout: page
|
||||
title: "I used cron for the first time"
|
||||
description: "And I didn't die"
|
||||
date: 2019-12-11
|
||||
title: I used cron for the first time
|
||||
description: And I didn't die
|
||||
date: 2019-12-11
|
||||
tags: random
|
||||
redirect_from:
|
||||
- /post/cd9dj84kf0/
|
||||
- /cd9dj84kf0/
|
||||
aliases: [/blog/2019/12/11/cron]
|
||||
redirect_from:
|
||||
- /post/cd9dj84kf0/
|
||||
- /cd9dj84kf0/
|
||||
aliases:
|
||||
- /blog/2019/12/11/cron
|
||||
- /blog/cron
|
||||
---
|
||||
|
||||
|
||||
[Cron](https://en.wikipedia.org/wiki/Cron) has always been one of those "scary sysadmin things" in my head. But today, I finally used it!
|
||||
|
||||
## My need
|
||||
@ -54,4 +55,4 @@ Then, by running `crontab -e` in my terminal, I just added a new line at the bot
|
||||
|
||||
This will run once per month, on the 1st, at 11:00.
|
||||
|
||||
That's it! Stupidly simple, and I am no longer scared of cron
|
||||
That's it! Stupidly simple, and I am no longer scared of cron
|
||||
|
@ -4,13 +4,14 @@ title: Compiling BrainFuck with a shell script
|
||||
description: That was easy
|
||||
date: 2020-01-20
|
||||
tags:
|
||||
- random
|
||||
- bash
|
||||
- random
|
||||
- bash
|
||||
redirect_from:
|
||||
- /post/es3v140d/
|
||||
- /es3v140d/
|
||||
- /post/es3v140d/
|
||||
- /es3v140d/
|
||||
aliases:
|
||||
- /blog/2020/01/20/brainfuckinbash
|
||||
- /blog/2020/01/20/brainfuckinbash
|
||||
- /blog/brainfuckinbash
|
||||
---
|
||||
|
||||
[BrainFuck](https://en.wikipedia.org/wiki/Brainfuck) is an [esoteric programming language](https://en.wikipedia.org/wiki/Esoteric_programming_language) that is surprisingly easy to implement. It is almost on the same level as "Hello, world!", but for compilers and interpreters. In this post, ill share my new little BrainFuck compiler I built with a bash script.
|
||||
@ -54,4 +55,4 @@ The script is available at [git.io/JvIHm](https://git.io/JvIHm), and works as fo
|
||||
1. Create a file containing a "header" that contains some C code that imports `stdio.h` and creates a char array
|
||||
2. Use SED to replace all BF instructions with the matching C code
|
||||
3. Append a file footer with code to return the current value at the program pointer
|
||||
4. Compile this c file with [GCC](https://gcc.gnu.org/)
|
||||
4. Compile this c file with [GCC](https://gcc.gnu.org/)
|
||||
|
@ -1,14 +1,16 @@
|
||||
---
|
||||
title: "Robot reveal: Darth Raider"
|
||||
title: 'Robot reveal: Darth Raider'
|
||||
description: What I have been working on for the past few months
|
||||
date: 2020-02-21
|
||||
tags:
|
||||
- video
|
||||
- frc
|
||||
- video
|
||||
- frc
|
||||
draft: false
|
||||
extra:
|
||||
excerpt: Darth Raider is a competitive robot built by Raider Robotics.
|
||||
icon: las la-play
|
||||
aliases:
|
||||
- /blog/darth-raider
|
||||
---
|
||||
|
||||
My roles in this project included:
|
||||
@ -20,4 +22,4 @@ My roles in this project included:
|
||||
|
||||
## Reveal teaser
|
||||
|
||||
<iframe width="100%" height="500" src="https://www.youtube.com/embed/iF-p-rTo8Xk" title="Robot Reveal 2019" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
<iframe width="100%" height="500" src="https://www.youtube.com/embed/iF-p-rTo8Xk" title="Robot Reveal 2019" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
@ -1,21 +1,22 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Ludum Dare 46: Jamming with friends"
|
||||
title: 'Ludum Dare 46: Jamming with friends'
|
||||
description: Recapping the development of *Micromanaged Mike*
|
||||
date: 2020-04-20
|
||||
tags:
|
||||
- gamejam
|
||||
- ldjam
|
||||
- javascript
|
||||
- project
|
||||
- gamejam
|
||||
- ldjam
|
||||
- javascript
|
||||
- project
|
||||
redirect_from:
|
||||
- /post/ebsdjtd9/
|
||||
- /ebsdjtd9/
|
||||
- /post/ebsdjtd9/
|
||||
- /ebsdjtd9/
|
||||
aliases:
|
||||
- /blog/2020/04/20/ludumdare46
|
||||
- /blog/2020/04/20/ludumdare46
|
||||
- /blog/ludumdare46
|
||||
extra:
|
||||
uses:
|
||||
- twitter
|
||||
- twitter
|
||||
excerpt: A look back at the development of Micromanaged Mike
|
||||
---
|
||||
|
||||
@ -122,4 +123,4 @@ Micromanaged Mike is free to play on [@rsninj722's website](https://rsninja.dev/
|
||||
|
||||

|
||||
|
||||
*Final game screenshot*
|
||||
*Final game screenshot*
|
||||
|
@ -1,15 +1,17 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Running RoboRIO firmware inside Docker"
|
||||
description: "Containerized native ARMv7l emulation in 20 minutes"
|
||||
date: 2020-05-19
|
||||
title: Running RoboRIO firmware inside Docker
|
||||
description: Containerized native ARMv7l emulation in 20 minutes
|
||||
date: 2020-05-19
|
||||
tags: frc roborio emulation
|
||||
redirect_from:
|
||||
- /post/5d3nd9s4/
|
||||
- /5d3nd9s4/
|
||||
aliases: [/blog/2020/05/19/running-roborio-native]
|
||||
redirect_from:
|
||||
- /post/5d3nd9s4/
|
||||
- /5d3nd9s4/
|
||||
aliases:
|
||||
- /blog/2020/05/19/running-roborio-native
|
||||
- /blog/running-roborio-native
|
||||
extra:
|
||||
excerpt: This post covers how to run a RoboRIO's operating system in Docker
|
||||
excerpt: This post covers how to run a RoboRIO's operating system in Docker
|
||||
---
|
||||
|
||||
It has now been 11 weeks since the last time I have had access to a [RoboRIO](https://www.ni.com/en-ca/support/model.roborio.html) to use for debugging code, and there are limits to my simulation software. So, I really only have one choice: *emulate my entire robot*.
|
||||
@ -198,4 +200,4 @@ You should now be able to SSH into the RoboRIO container with:
|
||||
ssh admin@10.50.24.2
|
||||
```
|
||||
|
||||
Or even deploy code to the container! (Just make sure to set your FRC team number to `5024`)
|
||||
Or even deploy code to the container! (Just make sure to set your FRC team number to `5024`)
|
||||
|
@ -4,15 +4,17 @@ title: Flashing code to a 32u4 chip
|
||||
description: Notes for my future self
|
||||
date: 2020-06-05
|
||||
tags:
|
||||
- avr
|
||||
- walkthrough
|
||||
- avr
|
||||
- walkthrough
|
||||
redirect_from:
|
||||
- /post/65f9kjl4/
|
||||
- /65f9kjl4/
|
||||
- /post/65f9kjl4/
|
||||
- /65f9kjl4/
|
||||
aliases:
|
||||
- /blog/2020/06/05/32u4-upload
|
||||
- /blog/2020/06/05/32u4-upload
|
||||
- /blog/32u4-upload
|
||||
extra:
|
||||
excerpt: A reference post that explains how to flash new software to an atmega32u4 chip
|
||||
excerpt: A reference post that explains how to flash new software to an atmega32u4
|
||||
chip
|
||||
---
|
||||
|
||||
The [ATmega32u4](http://ww1.microchip.com/downloads/en/devicedoc/atmel-7766-8-bit-avr-atmega16u4-32u4_datasheet.pdf) (aka. 32u4) chip is one of my favorite microcontrollers to work with. It is a low power, 8-bit, [AVR](https://en.wikipedia.org/wiki/AVR_microcontrollers)-based system developed by [Atmel](https://en.wikipedia.org/wiki/Atmel). They are commonly used in [Arduino Leonardo](https://www.arduino.cc/en/Main/Arduino_BoardLeonardo) development boards and programmed via the [Arduino IDE](https://www.arduino.cc/en/Main/Software), but I prefer having as much control over the device as I can. So I choose to program these chips directly in [AVRASM](http://ww1.microchip.com/downloads/en/devicedoc/40001917a.pdf) and [AVR-C](https://www.nongnu.org/avr-libc/user-manual/).
|
||||
@ -79,4 +81,4 @@ sudo avrdude -patmega32u4 -cavr109 -P /dev/ttyACM0 -b57600 -v -U flash:w:main.he
|
||||
|
||||
*NOTE: `/dev/ttyACM0` may need to be changed depending on the system*
|
||||
|
||||
Once the code has uploaded, reset the chip to start the code.
|
||||
Once the code has uploaded, reset the chip to start the code.
|
||||
|
@ -1,17 +1,19 @@
|
||||
---
|
||||
title: "Notes from FRC: Converting joystick data to tank-drive outputs"
|
||||
title: 'Notes from FRC: Converting joystick data to tank-drive outputs'
|
||||
description: and making a tank-based robot's movements look natural
|
||||
date: 2020-08-03
|
||||
tags:
|
||||
- frc
|
||||
- math
|
||||
- python
|
||||
- frc
|
||||
- math
|
||||
- python
|
||||
aliases:
|
||||
- /blog/2020/08/03/joystick-to-voltage
|
||||
- /blog/2020/08/03/joystick-to-voltage
|
||||
- /blog/joystick-to-voltage
|
||||
extra:
|
||||
uses:
|
||||
- katex
|
||||
excerpt: This post covers the algorithm I devised for converting joystick data to motor commands at Raider Robotics
|
||||
- katex
|
||||
excerpt: This post covers the algorithm I devised for converting joystick data to
|
||||
motor commands at Raider Robotics
|
||||
---
|
||||
|
||||
I am starting a new little series here called "Notes from FRC". The idea is that I am going to write about what I have learned over the past three years of working (almost daily) with robots, and hopefully someone in the future will find them useful. The production source code I based this post around is available [here](https://github.com/frc5024/lib5k/blob/cd8ad407146b514cf857c1d8ac82ac8f3067812b/common_drive/src/main/java/io/github/frc5024/common_drive/calculation/DifferentialDriveCalculation.java).
|
||||
@ -109,4 +111,4 @@ def computeMotorOutputs(T: float, S: float) -> Tuple[float, float]:
|
||||
|
||||
---
|
||||
|
||||
I hope someone will some day find this post helpful. I am working on a few more FRC-related posts about more advanced topics, and things I have learned through my adventures at Raider Robotics. If you would like to check out the code that powers all of this, take a look at our core software library: [Lib5K](https://github.com/frc5024/lib5k)
|
||||
I hope someone will some day find this post helpful. I am working on a few more FRC-related posts about more advanced topics, and things I have learned through my adventures at Raider Robotics. If you would like to check out the code that powers all of this, take a look at our core software library: [Lib5K](https://github.com/frc5024/lib5k)
|
||||
|
@ -1,17 +1,20 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Notes from FRC: Autonomous point-to-point navigation"
|
||||
title: 'Notes from FRC: Autonomous point-to-point navigation'
|
||||
description: The tale of some very curvy math
|
||||
date: 2020-08-13
|
||||
tags:
|
||||
- frc
|
||||
- math
|
||||
- frc
|
||||
- math
|
||||
extra:
|
||||
excerpt: This post is a continuation on my "Notes from FRC" series. This time, I cover an extremely simple, yet very effective way to get a tank-drive robot from A to B autonomously.
|
||||
excerpt: This post is a continuation on my "Notes from FRC" series. This time, I
|
||||
cover an extremely simple, yet very effective way to get a tank-drive robot from
|
||||
A to B autonomously.
|
||||
uses:
|
||||
- katex
|
||||
- katex
|
||||
aliases:
|
||||
- /blog/2020/08/13/drivetrain-navigation
|
||||
- /blog/2020/08/13/drivetrain-navigation
|
||||
- /blog/drivetrain-navigation
|
||||
---
|
||||
|
||||
This post is a continuation on my "Notes from FRC" series. If you haven't already, I recommend reading my post on [Converting joystick data to tank-drive outputs](/blog/2020/08/03/joystick-to-voltage). Some concepts in this post were introduced there. Like last time, to see the production code behind this post, check [here](https://github.com/frc5024/lib5k/blob/ab90994b2a0c769abfdde9a834133725c3ce3a38/common_drive/src/main/java/io/github/frc5024/common_drive/DriveTrainBase.java) and [here](https://github.com/frc5024/lib5k/tree/master/purepursuit/src/main/java/io/github/frc5024/purepursuit/pathgen).
|
||||
@ -87,4 +90,4 @@ For a real-world example of this method in use, check out 5024's robot (bottom r
|
||||
|
||||
---
|
||||
|
||||
I hope someone will some day find this post helpful. Most papers about this topic went way over my head in 10th grade, or were over-complicated for the task. If you would like me to go further in depth on this topic, [contact me](/about/) and let me know. I will gladly help explain things, or write a new post further expanding on a topic.
|
||||
I hope someone will some day find this post helpful. Most papers about this topic went way over my head in 10th grade, or were over-complicated for the task. If you would like me to go further in depth on this topic, [contact me](/about/) and let me know. I will gladly help explain things, or write a new post further expanding on a topic.
|
||||
|
@ -1,17 +1,18 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Taking notes with Markdown and LaTeX"
|
||||
description: "Using a lot of tech to replace a piece of paper"
|
||||
date: 2020-08-23
|
||||
title: Taking notes with Markdown and LaTeX
|
||||
description: Using a lot of tech to replace a piece of paper
|
||||
date: 2020-08-23
|
||||
tags: pandoc latex bazel
|
||||
extra:
|
||||
excerpt: >-
|
||||
I have completely reworked my school notetaking system to use LaTeX.
|
||||
This post outlines how I did everything, and my new workflow.
|
||||
redirect_from:
|
||||
- /post/68df02l4/
|
||||
- /68df02l4/
|
||||
aliases: [/blog/2020/08/23/notetaking-with-latex]
|
||||
excerpt: I have completely reworked my school notetaking system to use LaTeX. This
|
||||
post outlines how I did everything, and my new workflow.
|
||||
redirect_from:
|
||||
- /post/68df02l4/
|
||||
- /68df02l4/
|
||||
aliases:
|
||||
- /blog/2020/08/23/notetaking-with-latex
|
||||
- /blog/notetaking-with-latex
|
||||
---
|
||||
|
||||
*You can view my public demo for this post [here](https://github.com/Ewpratten/school-notes-demo)*
|
||||
@ -55,4 +56,4 @@ This is almost entirely accomplished by a shell script and a custom CI script.
|
||||
|
||||
---
|
||||
|
||||
If you have any questions about this system, want me to write another post about it, or would like me to walk you through setting up a notes workspace of your own, [contact me](/about)
|
||||
If you have any questions about this system, want me to write another post about it, or would like me to walk you through setting up a notes workspace of your own, [contact me](/about)
|
||||
|
@ -4,17 +4,19 @@ title: Compiling AVR-C code with a modern build system
|
||||
description: Bringing Bazel to 8-bit microcontrollers
|
||||
date: 2020-09-03
|
||||
tags:
|
||||
- avr
|
||||
- embedded
|
||||
- bazel
|
||||
- walkthrough
|
||||
- avr
|
||||
- embedded
|
||||
- bazel
|
||||
- walkthrough
|
||||
extra:
|
||||
excerpt: In this post, I cover my process of combining low level programming with a very high level buildsystem.
|
||||
excerpt: In this post, I cover my process of combining low level programming with
|
||||
a very high level buildsystem.
|
||||
redirect_from:
|
||||
- /post/68dk02l4/
|
||||
- /68dk02l4/
|
||||
- /post/68dk02l4/
|
||||
- /68dk02l4/
|
||||
aliases:
|
||||
- /blog/2020/09/03/bazel-and-avr
|
||||
- /blog/2020/09/03/bazel-and-avr
|
||||
- /blog/bazel-and-avr
|
||||
---
|
||||
|
||||
*The GitHub repository for everything in this post can be found [here](https://github.com/Ewpratten/avr-for-bazel-demo)*
|
||||
@ -245,4 +247,4 @@ cc_binary(
|
||||
|
||||
This can be compiled with `bazel build //example --config=avr_config`, and the output binary will be in the `bazel-bin` directory. You can run `avr-objcopy` and `avrdude` manually just like with a normal program.
|
||||
|
||||
Importantly, every normal Bazel function will still work. Want to include [EigenArduino](https://github.com/vancegroup/EigenArduino) in your project? Just import the [`rules_foreign_cc`](https://github.com/bazelbuild/rules_foreign_cc) ruleset and load the Eigen library like normal. You can also run unit tests through Bazel's regular [testing rules](https://docs.bazel.build/versions/master/be/c-cpp.html#cc_test). If you are a masochist, you could even try loading the [pybind11 rules](https://github.com/pybind/pybind11_bazel) and embedding a Python interpreter in your code.
|
||||
Importantly, every normal Bazel function will still work. Want to include [EigenArduino](https://github.com/vancegroup/EigenArduino) in your project? Just import the [`rules_foreign_cc`](https://github.com/bazelbuild/rules_foreign_cc) ruleset and load the Eigen library like normal. You can also run unit tests through Bazel's regular [testing rules](https://docs.bazel.build/versions/master/be/c-cpp.html#cc_test). If you are a masochist, you could even try loading the [pybind11 rules](https://github.com/pybind/pybind11_bazel) and embedding a Python interpreter in your code.
|
||||
|
@ -4,14 +4,17 @@ title: Integrating GitHub Codespaces with FRC
|
||||
description: Robotics software development in your browser
|
||||
date: 2020-09-10
|
||||
tags:
|
||||
- github
|
||||
- frc
|
||||
- project
|
||||
- java
|
||||
- github
|
||||
- frc
|
||||
- project
|
||||
- java
|
||||
extra:
|
||||
excerpt: "I was recently accepted into the GitHub Codespaces beta test program and decided to try it out on the largest open source project I am currently involved with. "
|
||||
excerpt: 'I was recently accepted into the GitHub Codespaces beta test program and
|
||||
decided to try it out on the largest open source project I am currently involved
|
||||
with. '
|
||||
aliases:
|
||||
- /blog/2020/09/10/codespaces-for-frc
|
||||
- /blog/2020/09/10/codespaces-for-frc
|
||||
- /blog/codespaces-for-frc
|
||||
---
|
||||
|
||||
I was recently accepted into the [GitHub Codespaces](https://github.com/features/codespaces) beta test program. After reading through the documentation, I wanted to find a good use for this new tool, and decided to try it out on the largest open source project I am currently involved with. At *Raider Robotics* (@frc5024), we maintain a fairly large robotics software library called [Lib5K](https://github.com/frc5024/lib5k). The goal of this library is to provide an easy-to-use framework for new programmers to use when writing control systems code. As this library has become more complex, we have recently forked it into its own GitHub repository, and completely reworked our dependency system to match that of any other large OSS project. I figured that setting this repository up to use Codespaces might make it easier for other developers at Raider Robotics to make small changes to the library without needing to pull in the nearly 5GB of dependencies needed just to compile the codebase.
|
||||
|
@ -1,21 +1,23 @@
|
||||
---
|
||||
layout: page
|
||||
title: Building a mini maven server
|
||||
description: "Project overview: The Ultralight maven server"
|
||||
description: 'Project overview: The Ultralight maven server'
|
||||
date: 2020-09-17
|
||||
written: 2020-09-05
|
||||
tags:
|
||||
- project
|
||||
- github
|
||||
- maven
|
||||
- java
|
||||
- project
|
||||
- github
|
||||
- maven
|
||||
- java
|
||||
extra:
|
||||
excerpt: In this post, I explain the process of building my own personal maven server, and show how simple maven servers really are.
|
||||
excerpt: In this post, I explain the process of building my own personal maven
|
||||
server, and show how simple maven servers really are.
|
||||
redirect_from:
|
||||
- /post/2jf002s4/
|
||||
- /2jf002s4/
|
||||
- /post/2jf002s4/
|
||||
- /2jf002s4/
|
||||
aliases:
|
||||
- /blog/2020/09/17/ultralight-writeup
|
||||
- /blog/2020/09/17/ultralight-writeup
|
||||
- /blog/ultralight-writeup
|
||||
---
|
||||
|
||||
I have been looking around for a small, and easy-to-use [maven](https://maven.apache.org/) server to host my personal Java libraries for some time now. I origionally went with [Jitpack.io](https://jitpack.io/), but didn't like the fact I jitpack overwrites artifact `groupID` fields. This means that instead of specifying a package via something like `ca.retrylife:librandom:1.0.0`, a user would have to write `com.github.ewpratten:librandom:1.0.0`. While this is not a huge deal, I prefer to use a `gorupID` under my own domain for branding reasons. Along with this issue, I just didn't have enough control over my artifacts with Jitpack.
|
||||
@ -82,4 +84,4 @@ Finally, a request is made to `http(s)://<baseurl>/<groupID>/<artifactID>/<versi
|
||||
|
||||
Both to make the experience faster, and to get around GitHub's rate limiting on the tags API, Ultralight sends the client [`stale-while-revalidate`](https://vercel.com/docs/edge-network/caching#stale-while-revalidate) cache control headers. This forces the Vercel server that hosts Ultralight to only update its cache once per minute (slightly slower than the GitHub rate limit :wink:)
|
||||
|
||||
For instructions on how to set up your own maven server using Ultralight, see the [README](https://github.com/Ewpratten/ultralight#ultralight) on GitHub.
|
||||
For instructions on how to set up your own maven server using Ultralight, see the [README](https://github.com/Ewpratten/ultralight#ultralight) on GitHub.
|
||||
|
@ -1,19 +1,21 @@
|
||||
---
|
||||
layout: page
|
||||
title: "My workflow: video conference edition"
|
||||
description: "Turning some spare filmmaking equipment into a high-quality video conference setup"
|
||||
date: 2020-09-24
|
||||
title: 'My workflow: video conference edition'
|
||||
description: Turning some spare filmmaking equipment into a high-quality video conference
|
||||
setup
|
||||
date: 2020-09-24
|
||||
written: 2020-09-13
|
||||
tags: video cameras workflow
|
||||
extra:
|
||||
excerpt: >-
|
||||
As my courses have moved mostly online, I have looked to improve
|
||||
my live video setup. This post covers how I stream sharp HD video
|
||||
at home, and some interesting quirks of the setup.
|
||||
redirect_from:
|
||||
- /post/XcaM04o4/
|
||||
- /XcaM04o4/
|
||||
aliases: [/blog/2020/09/24/gopro-webcam]
|
||||
excerpt: As my courses have moved mostly online, I have looked to improve my live
|
||||
video setup. This post covers how I stream sharp HD video at home, and some interesting
|
||||
quirks of the setup.
|
||||
redirect_from:
|
||||
- /post/XcaM04o4/
|
||||
- /XcaM04o4/
|
||||
aliases:
|
||||
- /blog/2020/09/24/gopro-webcam
|
||||
- /blog/gopro-webcam
|
||||
---
|
||||
|
||||
It has been quite some fun writing about my workflows for various day-to-day things on this blog recently, and since I have been getting a lot of positive feedback from my last few workflow-related posts, I am planning to continue writing them.
|
||||
@ -56,4 +58,4 @@ I recently remembered that GoPros also have [voice commands](https://www.capture
|
||||
|-----------|---------------------------------------------------------------------------------------------------|
|
||||
| timelapse | Narrow view, zoomed in on my face. This looks like a normal laptop webcam |
|
||||
| video | Linear view. Very crisp, and auto-lowlight handling enabled. This looks like I'm using a DSLR |
|
||||
| photo | Superview. Zoomed all the way out, at full resolution. It's so wide, you can see whats on my desk |
|
||||
| photo | Superview. Zoomed all the way out, at full resolution. It's so wide, you can see whats on my desk |
|
||||
|
@ -1,20 +1,21 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Reading metadata from a bitmap file"
|
||||
description: "A project writeup"
|
||||
date: 2020-10-01
|
||||
title: Reading metadata from a bitmap file
|
||||
description: A project writeup
|
||||
date: 2020-10-01
|
||||
written: 2020-09-15
|
||||
tags: project c images
|
||||
extra:
|
||||
excerpt: >-
|
||||
Inspired from one of my friend's projects, I built a small
|
||||
tool for displaying bitmap file info from the command line.
|
||||
redirect_from:
|
||||
- /post/XcaMdj2m/
|
||||
- /XcaMdj2m/
|
||||
excerpt: Inspired from one of my friend's projects, I built a small tool for displaying
|
||||
bitmap file info from the command line.
|
||||
redirect_from:
|
||||
- /post/XcaMdj2m/
|
||||
- /XcaMdj2m/
|
||||
uses:
|
||||
- github-cards
|
||||
aliases: [/blog/2020/10/01/reading-a-bitmap]
|
||||
- github-cards
|
||||
aliases:
|
||||
- /blog/2020/10/01/reading-a-bitmap
|
||||
- /blog/reading-a-bitmap
|
||||
---
|
||||
|
||||
Recently, @rsninja722 was telling me about [a project](https://github.com/rsninja722/file2bmp) he was working on. The basic idea is that you pass a file into his program, and it generates a bitmap of the binary data. This was inspired by [an old post of mine](/post/ef7b3166) where I did the same thing with a horribly written Python script and the library [`pillow`](https://github.com/python-pillow/Pillow).
|
||||
|
@ -5,17 +5,20 @@ description: Easy-to-use Google Drive integration for Linux using rclone
|
||||
date: 2020-10-15
|
||||
written: 2020-09-22
|
||||
tags:
|
||||
- linux
|
||||
- workflow
|
||||
- google
|
||||
- walkthrough
|
||||
- linux
|
||||
- workflow
|
||||
- google
|
||||
- walkthrough
|
||||
extra:
|
||||
excerpt: "I can never get the Google Drive webapp to load quickly when I need it to. My solution: use some command-line magic to mount my drives directly to my laptop's filesystem."
|
||||
excerpt: 'I can never get the Google Drive webapp to load quickly when I need it to.
|
||||
My solution: use some command-line magic to mount my drives directly to my laptop''s
|
||||
filesystem.'
|
||||
redirect_from:
|
||||
- /post/XcaM0k24/
|
||||
- /XcaM0k24/
|
||||
- /post/XcaM0k24/
|
||||
- /XcaM0k24/
|
||||
aliases:
|
||||
- /blog/2020/10/15/mounting-google-drives
|
||||
- /blog/2020/10/15/mounting-google-drives
|
||||
- /blog/mounting-google-drives
|
||||
---
|
||||
|
||||
When sharing files, I use three main services. I use [Firefox Send](https://en.wikipedia.org/wiki/Firefox_Send) and [KeybaseFS](https://book.keybase.io/docs/files) to share one-off and large files with friends, and I use [Google Drive](https://drive.google.com) to store some personal files, and for everything school-related (I don't get a choice about this). For the first two services, sharing a file is as simple as calling [`ffsend`](https://github.com/timvisee/ffsend) or moving a local file into my kbfs mountpoint, and I am done. Google Drive, on the other hand, the process isn't as easy. While some Linux distributions have Google Drive integration out of the box (I miss daily-driving [ChromiumOS](https://www.chromium.org/chromium-os)), Linux users generally have to go to `drive.google.com`, and deal with the Google Drive webapp. Not sure if this is an "only me" problem, but whenever I need to quickly make a change to a document through the webapp, It decides to stop working.
|
||||
@ -105,4 +108,4 @@ In pretty much any Debian-based system, you can edit `/etc/rc.local` (using `sud
|
||||
rclone mount my_drive: /home/<user>/google_drive --vfs-cache-mode writes
|
||||
```
|
||||
|
||||
*Make sure to replace `<user>` with your username.*
|
||||
*Make sure to replace `<user>` with your username.*
|
||||
|
@ -1,17 +1,19 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Using Bazel to create Minecraft modpacks"
|
||||
description: "An overview of how I automated the build process for CorePack"
|
||||
date: 2020-10-24
|
||||
title: Using Bazel to create Minecraft modpacks
|
||||
description: An overview of how I automated the build process for CorePack
|
||||
date: 2020-10-24
|
||||
written: 2020-09-27
|
||||
tags: bazel workflow git minecraft
|
||||
extra:
|
||||
excerpt: >-
|
||||
I decided to modernize my system for producing builds of my personal Minecraft modpack using the Bazel buildsystem.
|
||||
redirect_from:
|
||||
- /post/XlA00k24/
|
||||
- /XlA00k24/
|
||||
aliases: [/blog/2020/10/24/corepack-development]
|
||||
excerpt: I decided to modernize my system for producing builds of my personal Minecraft
|
||||
modpack using the Bazel buildsystem.
|
||||
redirect_from:
|
||||
- /post/XlA00k24/
|
||||
- /XlA00k24/
|
||||
aliases:
|
||||
- /blog/2020/10/24/corepack-development
|
||||
- /blog/corepack-development
|
||||
---
|
||||
|
||||
*All content of this post is based around the work I did [here](https://github.com/Ewpratten/corepack)*
|
||||
@ -123,4 +125,4 @@ Using the following example file as `config.json.in`, this rule would have the f
|
||||
|
||||
Once mods are loaded, and configuration files are defined in the buildsystem, I use a large number of [`filegroup`](https://docs.bazel.build/versions/master/be/general.html#filegroup) and [`genrule`](https://docs.bazel.build/versions/master/be/general.html#genrule) rules to set up a directory hierarchy in the workspace, and wrap everything in a call to [`zipper`](https://sourcegraph.com/github.com/v2ray/ext/-/blob/bazel/zip.bzl#L23:25) to package the modpack into a ZIP file.
|
||||
|
||||
Finally, I use [GitHub Actions](https://github.com/features/actions) to automatically run the buildscript, and publish the resulting MultiMC instance zip to the [GitHub repo](https://github.com/Ewpratten/corepack) for this project.
|
||||
Finally, I use [GitHub Actions](https://github.com/features/actions) to automatically run the buildscript, and publish the resulting MultiMC instance zip to the [GitHub repo](https://github.com/Ewpratten/corepack) for this project.
|
||||
|
@ -1,17 +1,19 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Connecting to a Minecraft server over IRC"
|
||||
description: "For server administration, or just chatting with friends"
|
||||
date: 2020-11-21
|
||||
title: Connecting to a Minecraft server over IRC
|
||||
description: For server administration, or just chatting with friends
|
||||
date: 2020-11-21
|
||||
written: 2020-10-25
|
||||
tags: minecraft project irc
|
||||
extra:
|
||||
excerpt: >-
|
||||
This post outlines the process of writing a custom IRC server that can bridge between your favorite IRC client, and any Minecraft server
|
||||
redirect_from:
|
||||
- /post/lls5jkd4/
|
||||
- /lls5jkd4/
|
||||
aliases: [/blog/2020/11/21/minecraft-irc]
|
||||
excerpt: This post outlines the process of writing a custom IRC server that can
|
||||
bridge between your favorite IRC client, and any Minecraft server
|
||||
redirect_from:
|
||||
- /post/lls5jkd4/
|
||||
- /lls5jkd4/
|
||||
aliases:
|
||||
- /blog/2020/11/21/minecraft-irc
|
||||
- /blog/minecraft-irc
|
||||
---
|
||||
|
||||
As I talked about in my post [about Minecraft modpack development](/blog/2020/10/24/corepack-development), I got back in to playing Minecraft earlier this year. I primairly play on a server full of friends, where the server owner has [dynmap](https://github.com/webbukkit/dynmap) installed. Dynmap is a handy tool that provides a near-real-time overview of the minecraft world in the form of a webapp. I always keep Dynmap open on my laptop so I can chat with whoever is online, and see whats being worked on.
|
||||
@ -45,4 +47,4 @@ Connecting to a server is done via specific IRC channel names. If you wanted to
|
||||
/JOIN #mc.example.com:12345
|
||||
```
|
||||
|
||||
Upon channel join, the server opens a socket to the specified Minecraft server, and relays chat messages (along with their sender) to both Minecraft and IRC. This means that ingame users show up in your IRC user list, and you can send commands and chats to the game.
|
||||
Upon channel join, the server opens a socket to the specified Minecraft server, and relays chat messages (along with their sender) to both Minecraft and IRC. This means that ingame users show up in your IRC user list, and you can send commands and chats to the game.
|
||||
|
@ -1,20 +1,22 @@
|
||||
---
|
||||
layout: page
|
||||
title: "My first mechanical keyboard: The Vortex Core"
|
||||
title: 'My first mechanical keyboard: The Vortex Core'
|
||||
description: Just the right amount of obscure
|
||||
date: 2020-11-06
|
||||
written: 2020-09-28
|
||||
tags:
|
||||
- keyboards
|
||||
- workflow
|
||||
- product
|
||||
- keyboards
|
||||
- workflow
|
||||
- product
|
||||
extra:
|
||||
excerpt: I recently purchased my first mechanical keyboard, and decided to go "all in" with a 40% layout.
|
||||
excerpt: I recently purchased my first mechanical keyboard, and decided to go "all
|
||||
in" with a 40% layout.
|
||||
redirect_from:
|
||||
- /post/XlPl0k24/
|
||||
- /XlPl0k24/
|
||||
- /post/XlPl0k24/
|
||||
- /XlPl0k24/
|
||||
aliases:
|
||||
- /blog/2020/11/06/vortex-core
|
||||
- /blog/2020/11/06/vortex-core
|
||||
- /blog/vortex-core
|
||||
---
|
||||
|
||||
About a month ago, I decided to buy myself a mechanical keyboard. I have always been a huge fan of membrane / laptop keyboards. My current laptop (the Lenovo T480) has a very nice feel to its keyboard, and my previous laptop (the Acer R11) had the best keyboard I have ever used. The switch to mechanical wasn't my first choice, although I was open to trying something new, so didn't see it as a negative. Ever since adding another monitor to my setup, I haven't had enough room on my desk to fit a keyboard. This generally is not a problem since I mainly use my laptop, but I occasionally need to use my desktop for rendering work, which requires a separate keyboard.
|
||||
@ -71,4 +73,3 @@ Speaking of flashing the board, with the MPC firmware, the process for loading c
|
||||
Well, that depends. If you are the type of person to customize everything for maximum efficiency, go for it! The Vortex Core is a very nice keyboard with more configurability than I can wrap my head around (even if you need a third party tool to do so). If you just want something simple, stick to a 60% keyboard. The lack of numbers on the core drives many people crazy.
|
||||
|
||||
For programmers: you basically need to remap your keys. Most common keys (brackets, quotes, operators, ...) are hidden behind one or two function keys, and the learning curve might hurt for the first week or so.
|
||||
|
||||
|
@ -1,22 +1,24 @@
|
||||
---
|
||||
layout: page
|
||||
title: How I have tweaked my Minecraft client to be 'just right'
|
||||
description: Pushing the boundaries of a vanilla game, while being able to play on un-modified servers
|
||||
description: Pushing the boundaries of a vanilla game, while being able to play on
|
||||
un-modified servers
|
||||
date: 2020-12-19
|
||||
written: 2020-12-04
|
||||
tags:
|
||||
- project
|
||||
- minecraft
|
||||
- project
|
||||
- minecraft
|
||||
extra:
|
||||
excerpt: Over the past 10 years, I have been building the perfect Minecraft experience for myself. This post shares the collection of mods I run, and why I use them.
|
||||
excerpt: Over the past 10 years, I have been building the perfect Minecraft experience
|
||||
for myself. This post shares the collection of mods I run, and why I use them.
|
||||
redirect_from:
|
||||
- /post/gas49g43/
|
||||
- /gas49g43/
|
||||
- /post/gas49g43/
|
||||
- /gas49g43/
|
||||
aliases:
|
||||
- /blog/2020/12/19/vanilla-plus-mods
|
||||
- /blog/2020/12/19/vanilla-plus-mods
|
||||
- /blog/vanilla-plus-mods
|
||||
---
|
||||
|
||||
|
||||
## The base game
|
||||
|
||||
Starting out at the base game. I like to keep this fairly up-to-date. Right now, my base game is version [`1.16.4`](https://minecraft.gamepedia.com/Java_Edition_1.16.4). Along with the base game, my game launcher of choice, [MultiMC](https://multimc.org/), allows using a custom [LWJGL](https://www.lwjgl.org/) version. I choose to use version `3.2.2`, as it is the most stable for me.
|
||||
|
@ -5,15 +5,17 @@ description: I wrote a lot of code this year. This post looks back on it all
|
||||
date: 2020-12-31
|
||||
written: 2020-12-09
|
||||
tags:
|
||||
- project
|
||||
- frc
|
||||
- project
|
||||
- frc
|
||||
extra:
|
||||
excerpt: 2020 has been my most productive year so far in terms of software development. This post looks back at the year
|
||||
excerpt: 2020 has been my most productive year so far in terms of software development.
|
||||
This post looks back at the year
|
||||
redirect_from:
|
||||
- /post/g494l5j3/
|
||||
- /g494l5j3/
|
||||
- /post/g494l5j3/
|
||||
- /g494l5j3/
|
||||
aliases:
|
||||
- /blog/2020/12/31/year-wrapup
|
||||
- /blog/2020/12/31/year-wrapup
|
||||
- /blog/year-wrapup
|
||||
---
|
||||
|
||||
*So, whats up with 2020?* For readers who do not know me personally, here is a quick overview:
|
||||
@ -83,4 +85,3 @@ People who know me in real life know of a bit of a challenge I set for myself a
|
||||
### This website
|
||||
|
||||
I have now experimented with three posting schedules for this website: monthly, bi-weekly, and weekly. Monthly posts were too spread-apart, and left this site feeling a little empty. I switched to weekly posting through the summer, which worked out great. Since school started again, I have moved to bi-weekly posts, writing each post a few weeks before publishing it (hover over the date of any post to see the date I wrote it). The bi-weekly system seems to be working very well, and I will likely stick to it until summer 2021, so enjoy more content fairly regularly (and remember to subscribe to my [RSS Feed](/feed.xml)).
|
||||
|
||||
|
@ -1,17 +1,19 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Upgrading my chromebook"
|
||||
description: "The process of installing GalliumOS on an ACER R11"
|
||||
date: 2020-12-04
|
||||
title: Upgrading my chromebook
|
||||
description: The process of installing GalliumOS on an ACER R11
|
||||
date: 2020-12-04
|
||||
written: 2020-10-31
|
||||
tags: project laptop hardware
|
||||
extra:
|
||||
excerpt: >-
|
||||
Performing some upgrades to my old laptop. This post outlines the setup process for installing GalliumOS
|
||||
redirect_from:
|
||||
- /post/gk3jEkd4/
|
||||
- /gk3jEkd4/
|
||||
aliases: [/blog/2020/12/04/galliumos]
|
||||
excerpt: Performing some upgrades to my old laptop. This post outlines the setup
|
||||
process for installing GalliumOS
|
||||
redirect_from:
|
||||
- /post/gk3jEkd4/
|
||||
- /gk3jEkd4/
|
||||
aliases:
|
||||
- /blog/2020/12/04/galliumos
|
||||
- /blog/galliumos
|
||||
---
|
||||
|
||||
My previous development laptop was an [Acer R11](https://www.acer.com/ac/en/CA/content/series/acerchromebookr11) chromebook. I always ran it in [developer mode](https://chromium.googlesource.com/chromiumos/docs/+/master/developer_mode.md) with all the Linux packages I needed installed via [chromebrew](https://github.com/skycocker/chromebrew). This setup worked great except for GUI programs, as (at the time), the built-in [Wayland](https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)) server on the chromebook was not exposed to the user in a meaningful way. I relied on an internal tool from Google called [sommelier](https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/sommelier/) to translate X11 calls to the internal Wayland server. None of this was ideal, but with a lot of scripts and aliases, I made it work.
|
||||
@ -75,4 +77,4 @@ https://medium.com/@simstems/how-i-got-the-acer-chromebook-r11-cb5-132t-to-run-p
|
||||
https://wiki.galliumos.org/Hardware_Compatibility
|
||||
|
||||
https://chromium.googlesource.com/chromiumos/platform/vboot/+/master/_vboot_reference/firmware/include/gbb_header.h
|
||||
-->
|
||||
-->
|
||||
|
@ -5,15 +5,18 @@ description: Using socat to port-forward between network interfaces
|
||||
date: 2021-01-16
|
||||
written: 2020-12-19
|
||||
tags:
|
||||
- project
|
||||
- tutorial
|
||||
- project
|
||||
- tutorial
|
||||
extra:
|
||||
excerpt: I use a self-hosted VPN to access all my devices at all times, and to deal with my school's aggressive firewall. This post explains the process I use for exposing my home printer to the VPN.
|
||||
excerpt: I use a self-hosted VPN to access all my devices at all times, and to deal
|
||||
with my school's aggressive firewall. This post explains the process I use for
|
||||
exposing my home printer to the VPN.
|
||||
redirect_from:
|
||||
- /post/g494ld99/
|
||||
- /g494ld99/
|
||||
- /post/g494ld99/
|
||||
- /g494ld99/
|
||||
aliases:
|
||||
- /blog/2021/01/16/printer-tunneling
|
||||
- /blog/2021/01/16/printer-tunneling
|
||||
- /blog/printer-tunneling
|
||||
---
|
||||
|
||||
For the past few years, I have been using a self-hosted VPN to bring all my personal devices into the same "network" even though many of them are spread across various locations and physical networks. This system never gives me problems, but there was one thing I wished I could do: access non-VPN devices on other networks using one of my VPN devices as a gateway.
|
||||
@ -30,4 +33,4 @@ As stated in the Linux manpages, socat is essentially a port-forwarding utility.
|
||||
socat tcp-listen:9100,reuseaddr,fork tcp:<printer_ip>:9100
|
||||
```
|
||||
|
||||
I have also published a small tool called [`localexpose`](https://github.com/Ewpratten/localexpose) that does the same thing with a bit of a nicer argument syntax.
|
||||
I have also published a small tool called [`localexpose`](https://github.com/Ewpratten/localexpose) that does the same thing with a bit of a nicer argument syntax.
|
||||
|
@ -5,16 +5,18 @@ description: A free and secure way to host personal Java libraries and applicati
|
||||
date: 2021-02-25
|
||||
written: 2021-02-22
|
||||
tags:
|
||||
- maven
|
||||
- project
|
||||
- java
|
||||
- maven
|
||||
- project
|
||||
- java
|
||||
extra:
|
||||
excerpt: In my never-ending hunt for a suitable solution for hosting Java libraries, I take a stop to try out Keybase Filesystem (KBFS)
|
||||
excerpt: In my never-ending hunt for a suitable solution for hosting Java libraries,
|
||||
I take a stop to try out Keybase Filesystem (KBFS)
|
||||
redirect_from:
|
||||
- /post/g4lk45j3/
|
||||
- /g4lk45j3/
|
||||
- /post/g4lk45j3/
|
||||
- /g4lk45j3/
|
||||
aliases:
|
||||
- /blog/2021/02/25/kbfs-maven
|
||||
- /blog/2021/02/25/kbfs-maven
|
||||
- /blog/kbfs-maven
|
||||
---
|
||||
|
||||
As I continue to write more and more Java libraries for personal and public use, I keep finding myself limited by my library hosting solutions. Maven servers are currently my go-to way of storing and organizing all things Java. I have gone through a solid handful of servers over the past few years, here are my comments on each:
|
||||
@ -190,4 +192,4 @@ I am also now able to switch out backend servers / services whenever I want, and
|
||||
|
||||
## Future improvements
|
||||
|
||||
Some time in the future, I plan to move from KBFS to the S3-based [DigitalOcean Spaces](https://www.digitalocean.com/products/spaces/) so I can speed up the download time for packages, and have better global distribution of files.
|
||||
Some time in the future, I plan to move from KBFS to the S3-based [DigitalOcean Spaces](https://www.digitalocean.com/products/spaces/) so I can speed up the download time for packages, and have better global distribution of files.
|
||||
|
@ -5,17 +5,19 @@ description: Open-source firmware on a closed-source keyboard
|
||||
date: 2021-03-14
|
||||
written: 2021-03-14
|
||||
tags:
|
||||
- project
|
||||
- keyboards
|
||||
- firmware
|
||||
- walkthrough
|
||||
- project
|
||||
- keyboards
|
||||
- firmware
|
||||
- walkthrough
|
||||
extra:
|
||||
excerpt: After having some issues with the factory firmware on my 40% keyboard, I decided to replace it with the widely used QMK firmware instead.
|
||||
excerpt: After having some issues with the factory firmware on my 40% keyboard,
|
||||
I decided to replace it with the widely used QMK firmware instead.
|
||||
redirect_from:
|
||||
- /post/gkedkd93/
|
||||
- /gkedkd93/
|
||||
- /post/gkedkd93/
|
||||
- /gkedkd93/
|
||||
aliases:
|
||||
- /blog/2021/03/14/qmk-vortex-core
|
||||
- /blog/2021/03/14/qmk-vortex-core
|
||||
- /blog/qmk-vortex-core
|
||||
---
|
||||
|
||||
Last fall, I [purchased my first mechanical keyboard](/blog/2020/11/06/vortex-core), the [Vortex Core](https://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=3550), and have been loving it ever since. Well, almost loving it. There are a few "quirks" of the keyboard that I wasn't super fond of, like: occasionally not sending `KEY_UP` commands back to the computer, or the badly documented and maintained system for building custom layouts.
|
||||
@ -203,4 +205,4 @@ Any time you want to update QMK or change layouts, the above commands will be ho
|
||||
|
||||
```sh
|
||||
sudo ./pok3rtool -t vortex-core bootloader
|
||||
```
|
||||
```
|
||||
|
@ -5,18 +5,20 @@ description: How I set up my feature-packed APRS digipeater for under $100
|
||||
date: 2021-04-20
|
||||
written: 2021-04-20
|
||||
tags:
|
||||
- project
|
||||
- raspberrypi
|
||||
- aprs
|
||||
- walkthrough
|
||||
- radio
|
||||
- project
|
||||
- raspberrypi
|
||||
- aprs
|
||||
- walkthrough
|
||||
- radio
|
||||
extra:
|
||||
excerpt: Using an extra radio and some spare parts, I set up an APRS/APRS-IS/APRStt digipeater. This post covers some of the details.
|
||||
excerpt: Using an extra radio and some spare parts, I set up an APRS/APRS-IS/APRStt
|
||||
digipeater. This post covers some of the details.
|
||||
redirect_from:
|
||||
- /post/eb0klDd9/
|
||||
- /eb0klDd9/
|
||||
- /post/eb0klDd9/
|
||||
- /eb0klDd9/
|
||||
aliases:
|
||||
- /blog/2021/04/20/direwolf-aprs
|
||||
- /blog/2021/04/20/direwolf-aprs
|
||||
- /blog/direwolf-aprs
|
||||
---
|
||||
|
||||
***WARNING:** To replicate this project, you **must** be the holder of an amateur radio license in your country*
|
||||
@ -92,4 +94,4 @@ The entire configuration process is outlined in the Dire Wolf [user manual](http
|
||||
|
||||
## Need help?
|
||||
|
||||
If you happened to follow this guide and need more configuration help, [send me a message](/about).
|
||||
If you happened to follow this guide and need more configuration help, [send me a message](/about).
|
||||
|
@ -5,12 +5,14 @@ description: A tutorial for future me
|
||||
date: 2021-07-07
|
||||
written: 2021-07-07
|
||||
tags:
|
||||
- reference
|
||||
- tutorial
|
||||
- reference
|
||||
- tutorial
|
||||
extra:
|
||||
excerpt: I commonly need to configure SSH servers on remote Windows 10 boxes. This post covers the whole process.
|
||||
excerpt: I commonly need to configure SSH servers on remote Windows 10 boxes. This
|
||||
post covers the whole process.
|
||||
aliases:
|
||||
- /blog/2021/07/07/windows-ssh
|
||||
- /blog/2021/07/07/windows-ssh
|
||||
- /blog/windows-ssh
|
||||
---
|
||||
|
||||
Between work, school, and just helping various people out with things, I end up needing to quickly spin up SSH servers on windows machines *a lot*. Despite what you might think, this functionality is actually built right in to Windows 10, and fairly easy to enable.
|
||||
|
@ -5,11 +5,15 @@ description: Reference material for my friends
|
||||
date: 2021-09-28
|
||||
written: 2021-09-28
|
||||
tags:
|
||||
- reference
|
||||
- frc
|
||||
- hardware
|
||||
- reference
|
||||
- frc
|
||||
- hardware
|
||||
extra:
|
||||
excerpt: This document is aimed at a small handful of people, but published publicly as reference material for anyone that needs it. All contents are highly specific to the FRC robotics electrical and programming environments.
|
||||
excerpt: This document is aimed at a small handful of people, but published publicly
|
||||
as reference material for anyone that needs it. All contents are highly specific
|
||||
to the FRC robotics electrical and programming environments.
|
||||
aliases:
|
||||
- /blog/frc-tech-reference
|
||||
---
|
||||
|
||||
This document is aimed at a small handful of people, but published publicly as reference material for anyone that needs it. All contents are highly specific to the FRC robotics electrical and programming environments.
|
||||
@ -99,4 +103,4 @@ More devices can be found in [this list](https://docs.wpilib.org/en/stable/docs/
|
||||
- [The CAN Bus and Protocol](https://en.wikipedia.org/wiki/CAN_bus)
|
||||
- [The SPI Communication Standard](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface) used by many peripherals
|
||||
- [Pulse Width Modulation](https://en.wikipedia.org/wiki/Pulse-width_modulation) (used by some speed controllers and encoders)
|
||||
- [Rotary Encoders](https://en.wikipedia.org/wiki/Rotary_encoder) (keep in mind, we almost exclusively use **Hall Effect + Quadrature + Incremental** encoders)
|
||||
- [Rotary Encoders](https://en.wikipedia.org/wiki/Rotary_encoder) (keep in mind, we almost exclusively use **Hall Effect + Quadrature + Incremental** encoders)
|
||||
|
@ -1,15 +1,18 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Adventures in BGP: routing my own public IPv4 address space"
|
||||
title: 'Adventures in BGP: routing my own public IPv4 address space'
|
||||
description: A college student, playing with the "big boys"
|
||||
date: 2021-11-14
|
||||
tags:
|
||||
- reference
|
||||
- amprnet
|
||||
- bgp
|
||||
- networking
|
||||
- reference
|
||||
- amprnet
|
||||
- bgp
|
||||
- networking
|
||||
extra:
|
||||
excerpt: This post covers the process I went through to publicly route my own /24 block of IP addresses with low-cost hardware.
|
||||
excerpt: This post covers the process I went through to publicly route my own /24
|
||||
block of IP addresses with low-cost hardware.
|
||||
aliases:
|
||||
- /blog/amprnet-bgp
|
||||
---
|
||||
|
||||
Your first, and possibly only question is likely: *"what?"*, and I forgive you for asking such a thing. As probably any reader of my posts knows very well, IPv4 address blocks are practically impossible to get, and more than impossible to get for personal use. To quickly clear things up, my address block is *not* for personal use, but in comparison to the majority of the internet's existing address block owners, I am basically a single person holding on to a `/24` subnet for dear life while the giants of large internet corporations are eating up everything around me.
|
||||
|
@ -4,13 +4,16 @@ title: A rusty guide to quaternions
|
||||
description: Fast and efficient 3D object manipulation
|
||||
date: 2021-12-03
|
||||
tags:
|
||||
- reference
|
||||
- math
|
||||
- reference
|
||||
- math
|
||||
draft: false
|
||||
extra:
|
||||
uses:
|
||||
- katex
|
||||
excerpt: This post is an overview of Quaternions for Rust programmers, and anyone willing to learn.
|
||||
- katex
|
||||
excerpt: This post is an overview of Quaternions for Rust programmers, and anyone
|
||||
willing to learn.
|
||||
aliases:
|
||||
- /blog/quaternions
|
||||
---
|
||||
|
||||
The running joke in the graphics programming world is that nobody understands quaternions. These big scary math-filled types are always <em>someone else's problem</em>. While quaternions <del>are</del> may be scary, they serve an important purpose in the world of computing as they
|
||||
|
@ -1,13 +1,16 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Unfinished projects and failed ideas"
|
||||
description: "A walkthrough of my private GitHub repos"
|
||||
date: 2022-01-06
|
||||
title: Unfinished projects and failed ideas
|
||||
description: A walkthrough of my private GitHub repos
|
||||
date: 2022-01-06
|
||||
tags: random
|
||||
draft: false
|
||||
extra:
|
||||
|
||||
excerpt: My GitHub profile is a bit like an iceberg. At the time of writing, I have made nearly 8 and a half thousand commits to nearly a thousand repositories. This post covers the hidden failed projects.
|
||||
excerpt: My GitHub profile is a bit like an iceberg. At the time of writing, I have
|
||||
made nearly 8 and a half thousand commits to nearly a thousand repositories. This
|
||||
post covers the hidden failed projects.
|
||||
aliases:
|
||||
- /blog/unfinished-projects
|
||||
---
|
||||
|
||||
My [GitHub profile](https://github.com/Ewpratten) is a bit like an iceberg. At the time of writing, I have made nearly 8 and a half thousand commits to nearly a thousand repositories. Since July 2018, I have made an effort to go no more than 3 consecutive days without writing code, and I have only broken that streak 6 times (each of those being a 4-day break).
|
||||
|
@ -4,12 +4,15 @@ title: Monocular depth mapping in Blender
|
||||
description: My 3D pipeline is backed by neural networks
|
||||
date: 2022-01-19
|
||||
tags:
|
||||
- random
|
||||
- 3d-pipeline
|
||||
- python
|
||||
- random
|
||||
- 3d-pipeline
|
||||
- python
|
||||
draft: false
|
||||
extra:
|
||||
excerpt: This post covers the process I went through to write a Neural-Network-assisted Blender plugin for converting monocular images into 3D textured meshes.
|
||||
excerpt: This post covers the process I went through to write a Neural-Network-assisted
|
||||
Blender plugin for converting monocular images into 3D textured meshes.
|
||||
aliases:
|
||||
- /blog/monocular-blender
|
||||
---
|
||||
|
||||
A while back, I encountered an interesting trend going on over on TikTok. People were turning their photos into videos with 3D camera movements.
|
||||
@ -130,4 +133,4 @@ And finally, a demo render:
|
||||
<video style="max-width:100%;" controls>
|
||||
<source src="/images/posts/monocular-blender/demo_render.mp4" type="video/mp4">
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
</video>
|
||||
|
@ -1,13 +1,14 @@
|
||||
---
|
||||
layout: page
|
||||
title: "I built my own private telephone network"
|
||||
description: "Nobody makes phone calls anymore"
|
||||
date: 2022-02-14
|
||||
title: I built my own private telephone network
|
||||
description: Nobody makes phone calls anymore
|
||||
date: 2022-02-14
|
||||
tags: project pbx
|
||||
draft: true
|
||||
extra:
|
||||
|
||||
auto_center_images: true
|
||||
aliases:
|
||||
- /blog/personal-pbx
|
||||
---
|
||||
|
||||
Over the past few months, I have built my own [internet backbone router](/blog/amprnet-bgp) (and an [internet exchange](https://ffixp.net)). So logically, the next step is to branch off into telephony... *right?*
|
||||
@ -103,4 +104,4 @@ Then, I set up a number on Twilio and followed their [Elastic SIP Trunking guide
|
||||
|
||||
In the end, with some additional tweaking to the [IVR](https://en.wikipedia.org/wiki/Interactive_voice_response) settings to allow external password access, I was able to get a working PBX up and running.
|
||||
|
||||
I can now place a PSTN call from my cellphone to the PBX, enter a password, then dial a Hamshack Hotline RF-Link number to call up repeaters from my phone.
|
||||
I can now place a PSTN call from my cellphone to the PBX, enter a password, then dial a Hamshack Hotline RF-Link number to call up repeaters from my phone.
|
||||
|
@ -1,15 +1,16 @@
|
||||
---
|
||||
layout: page
|
||||
title: "I built a slightly infuriating keyboard"
|
||||
description: "Re-learning how to type at 18"
|
||||
date: 2022-02-26
|
||||
title: I built a slightly infuriating keyboard
|
||||
description: Re-learning how to type at 18
|
||||
date: 2022-02-26
|
||||
tags: project keyboard
|
||||
draft: true
|
||||
extra:
|
||||
|
||||
auto_center_images: true
|
||||
aliases:
|
||||
- /blog/ferris-sweep
|
||||
---
|
||||
|
||||
After getting myself in to the world of customized mechanical keyboards with my [vortex core](/blog/2020-11-6-vortex-core) two years ago, I have proceeded to dive further into the hobby by [modifying keyboard firmware](/blog/qmk-vortex-core) and eventually building myself a TG4X for daily use. The TG4X has been a great keyboard, and my muscle memory has completely switched over to the quirks of using a 40% layout in daily use.
|
||||
|
||||
<!-- Of course, I shall not settle for a whole 45 keys on my keyboard, **we must go smaller!**. Thus, I have built my very own customised [ferris sweep](#) -->
|
||||
<!-- Of course, I shall not settle for a whole 45 keys on my keyboard, **we must go smaller!**. Thus, I have built my very own customised [ferris sweep](#) -->
|
||||
|
@ -1,15 +1,17 @@
|
||||
---
|
||||
layout: page
|
||||
title: "A Java development cheatsheet for my classmates"
|
||||
description: "PROG10082: Reference Material"
|
||||
date: 2022-03-15
|
||||
title: A Java development cheatsheet for my classmates
|
||||
description: 'PROG10082: Reference Material'
|
||||
date: 2022-03-15
|
||||
tags: reference
|
||||
draft: true
|
||||
extra:
|
||||
excerpt: This document is written for my PROG10082 classmates as a quick reference for some Java concepts that were skipped over in the course.
|
||||
|
||||
excerpt: This document is written for my PROG10082 classmates as a quick reference
|
||||
for some Java concepts that were skipped over in the course.
|
||||
hidden: true
|
||||
auto_center_images: true
|
||||
aliases:
|
||||
- /blog/java-cheatsheet
|
||||
---
|
||||
|
||||
This document is written for my PROG10082 classmates as a quick reference for some Java concepts that were skipped over in the course. This document may be updated as needed.
|
||||
|
@ -4,11 +4,14 @@ title: Making my UDM-Pro scream
|
||||
description: Remote fan control for the Unifi Dream Machine Pro
|
||||
date: 2022-04-06
|
||||
tags:
|
||||
- random
|
||||
- hardware
|
||||
- random
|
||||
- hardware
|
||||
draft: false
|
||||
extra:
|
||||
excerpt: A project review post covering my work on remote-control for the UDM-Pro cooling system
|
||||
excerpt: A project review post covering my work on remote-control for the UDM-Pro
|
||||
cooling system
|
||||
aliases:
|
||||
- /blog/udm-fan
|
||||
---
|
||||
|
||||
[Ubiquiti](https://www.ui.com/)'s [Unifi Dream Machine Pro](https://www.ubnt.com/products/unifi-dream-machine-pro) is a powerful medium-scale business-oriented rack-mount router, capable of handling 10/100/1000/10000 ethernet traffic. Really quite a nice device.
|
||||
|
@ -4,13 +4,15 @@ title: The angle problem
|
||||
description: A look at a slightly infuriating robotics problem
|
||||
date: 2022-04-11
|
||||
tags:
|
||||
- frc
|
||||
- frc
|
||||
draft: true
|
||||
extra:
|
||||
uses:
|
||||
- katex
|
||||
excerpt: In this post, I take a look at a mathematical problem commonly encountered with relative rotation offset calculation in robotics.
|
||||
- katex
|
||||
excerpt: In this post, I take a look at a mathematical problem commonly encountered
|
||||
with relative rotation offset calculation in robotics.
|
||||
aliases:
|
||||
- /blog/angle-problem
|
||||
---
|
||||
|
||||
In robotics, a common task is calculating the shortest arc between two rotational offsets. Such a task finds itself in turrets and other mechanisms requiring planar rotation.
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Album Release: Space & Time Vol. 1"
|
||||
description: "New music from Evan Pratten"
|
||||
title: 'Album Release: Space & Time Vol. 1'
|
||||
description: New music from Evan Pratten
|
||||
date: 2022-05-10
|
||||
tags: music
|
||||
draft: true
|
||||
extra:
|
||||
|
||||
auto_center_images: true
|
||||
excerpt: Release notification for Space & Time Vol. 1
|
||||
---
|
||||
aliases:
|
||||
- /blog/album-space-time
|
||||
---
|
||||
|
@ -4,12 +4,15 @@ title: Commit syncing across hosted GIT instances
|
||||
description: How I keep my commit graph alive
|
||||
date: 2022-05-18
|
||||
tags:
|
||||
- random
|
||||
- git
|
||||
- random
|
||||
- git
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: This post covers how to keep your commit graph alive across multiple GIT instances by syncing your commit history to magic repos.
|
||||
excerpt: This post covers how to keep your commit graph alive across multiple GIT
|
||||
instances by syncing your commit history to magic repos.
|
||||
aliases:
|
||||
- /blog/commit-sync
|
||||
---
|
||||
|
||||
Since September of 2018 (3 and a half years ago) I have been roughly holding a streak of going no more than three days without making a commit to some project on GitHub.
|
||||
@ -99,4 +102,3 @@ Importantly, the `--allow-empty` flag removes the requirement for any files to b
|
||||
## Conclusion
|
||||
|
||||
Uh, ya. Cool. With your scripting language of choice, you can chain these commands together, toss a `git push` in there, stick this in a cron job, and have yourself a nice, healthy commit graph.
|
||||
|
||||
|
@ -1,17 +1,19 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Field Log: First look at the NanoVNA"
|
||||
title: 'Field Log: First look at the NanoVNA'
|
||||
description: Weekends are prime radio time
|
||||
date: 2022-05-21
|
||||
tags:
|
||||
- radio
|
||||
- random
|
||||
- nanovna
|
||||
- product
|
||||
- radio
|
||||
- random
|
||||
- nanovna
|
||||
- product
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: I went out in the field and tried out my brand new NanoVNA.
|
||||
aliases:
|
||||
- /blog/nanovna
|
||||
---
|
||||
|
||||
Today I had a rather anticipated package arrive in the mail.. a NanoVNA! For anyone unfamiliar with the NanoVNA, it is a *small* and cheap [Vector Network Analyzer](https://en.wikipedia.org/wiki/Network_analyzer_(electrical)).
|
||||
|
@ -1,14 +1,17 @@
|
||||
---
|
||||
layout: page
|
||||
title: "How I hacked full IPv6 support into a Bell residential network"
|
||||
description: "Circumventing nearly everything my ISP has set up in the name of public IPv6 addresses for my friends"
|
||||
title: How I hacked full IPv6 support into a Bell residential network
|
||||
description: Circumventing nearly everything my ISP has set up in the name of public
|
||||
IPv6 addresses for my friends
|
||||
date: 2022-06-08
|
||||
tags: networking
|
||||
draft: true
|
||||
extra:
|
||||
|
||||
auto_center_images: true
|
||||
excerpt: I used multiple layers of IP encapsulation to evade an upstream firewall in the name of IPv6.
|
||||
excerpt: I used multiple layers of IP encapsulation to evade an upstream firewall
|
||||
in the name of IPv6.
|
||||
aliases:
|
||||
- /blog/bell-ipv6
|
||||
---
|
||||
|
||||
> At this point, I feel like I should actually just start my own ISP.
|
||||
@ -153,4 +156,4 @@ Endpoint = <badger-ip-address>:51820
|
||||
PublicKey = <public-key>
|
||||
AllowedIps = 2000::/3
|
||||
PersistentKeepalive = 25
|
||||
```
|
||||
```
|
||||
|
@ -4,13 +4,15 @@ title: Getting Visual Paradigm to launch on Fedora 36
|
||||
description: Bundle your libraries correctly, kids
|
||||
date: 2022-06-13
|
||||
tags:
|
||||
- random
|
||||
- tutorial
|
||||
- reference
|
||||
- random
|
||||
- tutorial
|
||||
- reference
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: A quick guide on launching Visual Paradigm on Fedora 36
|
||||
aliases:
|
||||
- /blog/fedora-36-vp
|
||||
---
|
||||
|
||||
When installing [Visual Paradigm](https://www.visual-paradigm.com/) on my Fedora workstation today, I kept running into a `SIGSEGV` error, causing the bundled JVM to crash.
|
||||
|
@ -4,12 +4,15 @@ title: Using a Steam Controller with the Nintendo Switch
|
||||
description: An unreasonably cursed setup for zero gain
|
||||
date: 2022-06-23
|
||||
tags:
|
||||
- random
|
||||
- hardware
|
||||
- random
|
||||
- hardware
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: How to flash custom firmware to the Steam Controller, allowing it to connect to the Nintendo Switch
|
||||
excerpt: How to flash custom firmware to the Steam Controller, allowing it to connect
|
||||
to the Nintendo Switch
|
||||
aliases:
|
||||
- /blog/steam-controller-switch
|
||||
---
|
||||
|
||||
Remember the [Steam Controller](https://store.steampowered.com/app/353370/Steam_Controller/)?
|
||||
|
@ -4,12 +4,15 @@ title: Rickrolling the internet
|
||||
description: Abusing ICMPv6 to inject lyrics into public routes
|
||||
date: 2022-06-26
|
||||
tags:
|
||||
- random
|
||||
- networking
|
||||
- random
|
||||
- networking
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: This post covers some of the logistics behind rickrolling the internet with some clever routing tricks.
|
||||
excerpt: This post covers some of the logistics behind rickrolling the internet
|
||||
with some clever routing tricks.
|
||||
aliases:
|
||||
- /blog/rickrolling-the-internet
|
||||
---
|
||||
|
||||
**NOTICE: The service mentioned in this post is currently unavailable due to ongoing network upgrades.**
|
||||
|
@ -4,12 +4,15 @@ title: My journey through robotics
|
||||
description: 5 years of self-taught robotics development, recapped
|
||||
date: 2022-07-02
|
||||
tags:
|
||||
- story
|
||||
- frc
|
||||
- story
|
||||
- frc
|
||||
draft: true
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: From 2016 to 2021, I dedicated most of my time to robotics and control systems programming. This is my journey
|
||||
excerpt: From 2016 to 2021, I dedicated most of my time to robotics and control
|
||||
systems programming. This is my journey
|
||||
aliases:
|
||||
- /blog/robotics-journey
|
||||
---
|
||||
|
||||
My very first introduction to robotics was back in 2014, when I took an autonomous programming workshop as a part of a bigger summer engineering event at [Western University](https://www.uwo.ca/). A few years later, I ended up beginning a stint of robotics work through two different competitive robotics teams.
|
||||
@ -45,4 +48,4 @@ Fast-forward a few months to early February 2018, and I had figure out how to co
|
||||
<video style="max-width:100%;" controls>
|
||||
<source src="/videos/posts/robotics-journey/2018_drive.mp4">
|
||||
Video not supported
|
||||
</video>
|
||||
</video>
|
||||
|
@ -4,14 +4,17 @@ title: I am my own ISP
|
||||
description: The next stage in my hobby network
|
||||
date: 2022-08-17
|
||||
tags:
|
||||
- networking
|
||||
- bgp
|
||||
- networking
|
||||
- bgp
|
||||
draft: true
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: I recently started AS398057, a low cost Autonomous System. This post talks about how its going
|
||||
excerpt: I recently started AS398057, a low cost Autonomous System. This post talks
|
||||
about how its going
|
||||
aliases:
|
||||
- /blog/as398057
|
||||
---
|
||||
|
||||
Last year, I [dipped my toes in BGP](/blog/amprnet-bgp) while learning how to set up the infrastructure needed to route a public IPv4 address prefix to the world. A lot has changed since then, and I have fallen further into the world of network engineering and backbone routing.
|
||||
|
||||
At the time of writing my last post, I had been singlehomed on [Vultr](https://www.vultr.com/)'s network via their *byoip* (Bring Your Own IP) plan, and was peering with them using one of their private ASNs.
|
||||
At the time of writing my last post, I had been singlehomed on [Vultr](https://www.vultr.com/)'s network via their *byoip* (Bring Your Own IP) plan, and was peering with them using one of their private ASNs.
|
||||
|
@ -4,11 +4,13 @@ title: Website updates
|
||||
description: Changing a few things in the background
|
||||
date: 2022-09-09
|
||||
tags:
|
||||
- meta
|
||||
- meta
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: A small update post about some website changes
|
||||
aliases:
|
||||
- /blog/new-domain
|
||||
---
|
||||
|
||||
Hello! Its been a bit since the last post made it out of the drafts (I promise, there are many in the works). I figure a little public update is needed to talk about some backend changes that have recently been made to this site.
|
||||
@ -18,4 +20,3 @@ Firstly, there is a new domain name! I should have done this a while ago, but no
|
||||
Secondly, this site is now anycasted and edge cached. Hopefully this change will make the browsing experience a little faster for viewers outside of North America. [HTTP/3](https://en.wikipedia.org/wiki/HTTP/3) is now supported too. In the future, I might even set up some older protocols (Gopher, FTP, ..telnet..?) for fun. Info on that will come in a later post.
|
||||
|
||||
Anyways, thanks for reading. I'm always amazed to see my analytics data. A surprising number of people read these posts :smile:
|
||||
|
||||
|
@ -4,14 +4,16 @@ title: An analysis of personal ASNs in the wild
|
||||
description: You can get a surprising amount of info from bulk whois
|
||||
date: 2022-10-02
|
||||
tags:
|
||||
- project
|
||||
- networking
|
||||
- bgp
|
||||
- data-analysis
|
||||
- project
|
||||
- networking
|
||||
- bgp
|
||||
- data-analysis
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: A look at the usage of personal ASNs based on freely available data
|
||||
aliases:
|
||||
- /blog/personal-ases
|
||||
---
|
||||
|
||||
As a [network operator](/network), I keep a fairly close eye on what my peers are up to. This is mainly to make sure nobody is doing something *too* stupid near my network, but also just out of curiosity. Its nice to know what other people are up to, both as a sanity check on my own network, and as a view into new things I could try out.
|
||||
|
@ -4,13 +4,16 @@ title: Announcing your AMPRNet prefix to Vultr with BGP
|
||||
description: That how-to guide everyone keeps asking me to make
|
||||
date: 2022-10-17
|
||||
tags:
|
||||
- amprnet
|
||||
- networking
|
||||
- bgp
|
||||
- amprnet
|
||||
- networking
|
||||
- bgp
|
||||
draft: true
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: A tutorial for AMPRNet operators who are BGP announcing their first prefix to Vultr
|
||||
excerpt: A tutorial for AMPRNet operators who are BGP announcing their first prefix
|
||||
to Vultr
|
||||
aliases:
|
||||
- /blog/ampr-vultr-bgp
|
||||
---
|
||||
|
||||
Since I briefly [waved my hands over this topic](/blog/amprnet-bgp/) last year, I have gotten many emails and DMs from fellow amateur radio operators asking for help announcing their own `/24`s to the world.
|
||||
|
@ -3,6 +3,8 @@ title: BGP peering over a WireGuard tunnel
|
||||
description: Some notes on getting Bird and WireGuard to play nice
|
||||
draft: true
|
||||
tags:
|
||||
- networking
|
||||
- bgp
|
||||
- networking
|
||||
- bgp
|
||||
aliases:
|
||||
- /blog/wireguard-bgp
|
||||
---
|
||||
|
@ -4,19 +4,21 @@ title: Announcing your AMPRNet prefix to Vultr with BGP
|
||||
description: That how-to guide everyone keeps asking me to make
|
||||
date: 2022-10-17
|
||||
tags:
|
||||
- amprnet
|
||||
- networking
|
||||
- bgp
|
||||
- amprnet
|
||||
- networking
|
||||
- bgp
|
||||
draft: true
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: A tutorial for AMPRNet operators who are BGP announcing their first prefix to Vultr
|
||||
excerpt: A tutorial for AMPRNet operators who are BGP announcing their first prefix
|
||||
to Vultr
|
||||
aliases:
|
||||
- /blog/bird-udmpro
|
||||
---
|
||||
|
||||
|
||||
```sh
|
||||
unifi-os shell
|
||||
apt install build-essential libfl-dev libbison-dev libreadline-dev libncurses5-dev
|
||||
bash ./configure --host aarch64 --with-sysconfig=linux
|
||||
make
|
||||
```
|
||||
```
|
||||
|
@ -4,11 +4,13 @@ title: Crudely geo-filtering internet routes
|
||||
description: How I make routers drop traffic for certain countries
|
||||
date: 2022-11-04
|
||||
tags:
|
||||
- networking
|
||||
- networking
|
||||
draft: true
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt:
|
||||
excerpt: null
|
||||
aliases:
|
||||
- /blog/country-filtering
|
||||
---
|
||||
|
||||
Sometimes I find the need to filter internet traffic traversing my networks based on country of origin. Commonly, I find that dropping certain countries (*cough Russia*) decreases the amount of scans and attacks I see to nearly zero. Sometimes its also nice to ignore routes that pass through countries with heavy surveillance policies too.
|
||||
@ -44,4 +46,3 @@ After pondering my options, I ended up choosing to just filter on the country of
|
||||
If I were to update this filter regularly, I would try pulling [WHOIS](https://en.wikipedia.org/wiki/WHOIS) database dumps, parsing through the data, and creating a lookup table for this purpose.
|
||||
|
||||
However, I really don't need to instantly catch networks as they are registered, and feel perfectly fine updating this filter every few months. Thus, the easy route.
|
||||
|
||||
|
@ -1,13 +1,15 @@
|
||||
---
|
||||
layout: page
|
||||
title: "A brief walk through my all-time favorite songs"
|
||||
description: "..and crashing spotify clients in the process"
|
||||
title: A brief walk through my all-time favorite songs
|
||||
description: ..and crashing spotify clients in the process
|
||||
date: 2022-11-10
|
||||
tags: music
|
||||
draft: true
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt:
|
||||
excerpt: null
|
||||
aliases:
|
||||
- /blog/mega-playlists
|
||||
---
|
||||
|
||||
Music is a core part of my daily life. For about 13 hours straight each day, I have all kinds of tracks playing while I work on things. Having a constant stream of music playing is a habit I have held for years, it keeps some rhythm in my day, and at the same time gives me plenty of chances to find new tracks and artists to listen to.
|
||||
@ -84,4 +86,4 @@ Keeping with the semi-chronology of this post, I went on to listen to heavier, m
|
||||
<br>
|
||||
<iframe style="border-radius:12px" src="https://open.spotify.com/embed/track/68RuKZzcIp8X3p7PgG6mbU?utm_source=generator" width="100%" height="80" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"></iframe>
|
||||
|
||||
A brief intermission of vocal-filled melodic tracks was induced after this period due to the release of [Instinct](https://open.spotify.com/album/7qzURREdjo1w2mKBGGcDkZ?si=4hKGb9YAR1iFP3UBWzNsDg), another great Monstercat album.
|
||||
A brief intermission of vocal-filled melodic tracks was induced after this period due to the release of [Instinct](https://open.spotify.com/album/7qzURREdjo1w2mKBGGcDkZ?si=4hKGb9YAR1iFP3UBWzNsDg), another great Monstercat album.
|
||||
|
@ -1,13 +1,17 @@
|
||||
---
|
||||
layout: page
|
||||
title: "I re-implemented ls to query the Steam API"
|
||||
description: "gamels: never be confused about Steam appid direcroties again"
|
||||
title: I re-implemented ls to query the Steam API
|
||||
description: 'gamels: never be confused about Steam appid direcroties again'
|
||||
date: 2022-12-07
|
||||
tags: project
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: "gamels will list all files in a directory in the style of 'ls -la', but will also show the name of any Steam game found in the listing. This utility was made to help me explore the filesystem of the Steam Deck."
|
||||
excerpt: gamels will list all files in a directory in the style of 'ls -la', but
|
||||
will also show the name of any Steam game found in the listing. This utility was
|
||||
made to help me explore the filesystem of the Steam Deck.
|
||||
aliases:
|
||||
- /blog/gamels
|
||||
---
|
||||
|
||||
Today, I released a new command-line tool called [`gamels`](https://github.com/ewpratten/gamels).
|
||||
|
@ -4,14 +4,17 @@ title: Lazy search for Mastodon accounts
|
||||
description: Webfinger + Cloudflare Workers + Firefox custom search engines
|
||||
date: 2023-01-17
|
||||
tags:
|
||||
- project
|
||||
- javascript
|
||||
- project
|
||||
- javascript
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: I made a custom search prefix for my browser that can resolve ActivityPub accounts into their profile pages
|
||||
excerpt: I made a custom search prefix for my browser that can resolve ActivityPub
|
||||
accounts into their profile pages
|
||||
discuss:
|
||||
reddit: https://www.reddit.com/r/ewpratten/comments/12xzulo/lazy_search_for_mastodon_accounts/
|
||||
aliases:
|
||||
- /blog/webfinger-redir
|
||||
---
|
||||
|
||||
Anyone who has been using Mastodon (or other ActivityPub servers) for a bit might have noticed how its a little annoying to look up someone's "home profile" from their account handle. My personal flow goes something like:
|
||||
@ -160,4 +163,4 @@ To set up a search prefix for the redirect service, we need to do the following:
|
||||
2. Set the url to `https://mastodon-redirect.example.com/profile/%s`
|
||||
3. Set the prefix to `@mastodon` (or whatever else you want)
|
||||
|
||||
Finally, you can search `@mastodon @evan@ewpratten.com` in your searchbar, and you'll end up on my profile page!
|
||||
Finally, you can search `@mastodon @evan@ewpratten.com` in your searchbar, and you'll end up on my profile page!
|
||||
|
@ -4,13 +4,16 @@ title: Blatant self-advertising on the IPv6 Canvas
|
||||
description: An ungodly amount of pings for a small bitmap
|
||||
date: 2023-02-07
|
||||
tags:
|
||||
- random
|
||||
- random
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: Using some python, I have a reference to this website semi-permanently implanted on the IPv6 Canvas
|
||||
excerpt: Using some python, I have a reference to this website semi-permanently
|
||||
implanted on the IPv6 Canvas
|
||||
discuss:
|
||||
reddit: https://www.reddit.com/r/ewpratten/comments/12xzvf9/blatant_selfadvertising_on_the_ipv6_canvas/
|
||||
aliases:
|
||||
- /blog/ipv6-canvas
|
||||
---
|
||||
|
||||
Yesterday, the [IPv6 Canvas](https://blog.tugzrida.xyz/2023/02/06/introducing-the-ipv6-canvas/) was pushed to the public.
|
||||
@ -37,4 +40,3 @@ This script is executed via a Cron job on one of my edge routers for maximum IP
|
||||
### Why ping?
|
||||
|
||||
I considered doing this with some clever `mtr` commands, or even crafting the ICMP ECHO packets straight from the script, but that was slightly too much work for the 5 minutes I had before work this morning.
|
||||
|
||||
|
@ -4,14 +4,17 @@ title: Some lesser known WireGuard settings
|
||||
description: Things I will probably forget in an important moment
|
||||
date: 2023-02-15
|
||||
tags:
|
||||
- random
|
||||
- networking
|
||||
- random
|
||||
- networking
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: This post covers some lesser known WireGuard configuration options that I have found useful
|
||||
excerpt: This post covers some lesser known WireGuard configuration options that
|
||||
I have found useful
|
||||
discuss:
|
||||
reddit: https://www.reddit.com/r/ewpratten/comments/12xzvun/some_lesser_known_wireguard_settings/
|
||||
aliases:
|
||||
- /blog/wireguard-options
|
||||
---
|
||||
|
||||
I extensively use [WireGuard](https://www.wireguard.com/) to keep various devices connected across foreign and unstable networks. Over the past few years of doing this, I've discovered a few handy configuration tricks that can help in weirdly specific situations. The following is a short overview to be used as reference in the future.
|
||||
|
@ -4,13 +4,15 @@ title: Announcing your shiny new AMPRNet BGP allocation
|
||||
description: A crash course on BGP for radio people
|
||||
date: 2023-03-21
|
||||
tags:
|
||||
- radio
|
||||
- amprnet
|
||||
- bgp
|
||||
- radio
|
||||
- amprnet
|
||||
- bgp
|
||||
draft: true
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: This post is a quick guide to announcing your shiny new AMPRNet BGP allocation
|
||||
aliases:
|
||||
- /blog/amprnet-bgp-announce
|
||||
---
|
||||
|
||||
So, you got yourself a shiny new [AMPRNet](https://ampr.org) BGP allocation. What's next?
|
||||
@ -23,4 +25,4 @@ A surprising number of people seem to request BGP allocations without understand
|
||||
|
||||
The internet *inter-networks networks*. Or, in less confusing terms: the internet is a broad term for how network **A** can communicate with networks **B** and **C**.
|
||||
|
||||

|
||||

|
||||
|
@ -4,15 +4,18 @@ title: A script that hides AI topics from Hacker News
|
||||
description: Sometimes I want to read about something different
|
||||
date: 2023-03-21
|
||||
tags:
|
||||
- random
|
||||
- javascript
|
||||
- random
|
||||
- javascript
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: This post shows off a userscript I built that hides AI topics from Hacker News.
|
||||
excerpt: This post shows off a userscript I built that hides AI topics from Hacker
|
||||
News.
|
||||
discuss:
|
||||
reddit: https://www.reddit.com/r/ewpratten/comments/12xzw5x/a_script_that_hides_ai_topics_from_hacker_news/
|
||||
hacker_news: https://news.ycombinator.com/item?id=35252186
|
||||
aliases:
|
||||
- /blog/hackernews-block-ai
|
||||
---
|
||||
|
||||
Ok. AI-backed tools are cool, but sometimes I just want to read about something else on the [Hacker News](https://news.ycombinator.com/news) website.
|
||||
@ -84,4 +87,4 @@ const BANNED_TERMS = [
|
||||
|
||||
## A side effect of doing this
|
||||
|
||||
And now, after publishing this post, I am about to share it on Hacker News... where I will never be able to find it again because the title of *this post* contains the term `AI` as well :facepalm:
|
||||
And now, after publishing this post, I am about to share it on Hacker News... where I will never be able to find it again because the title of *this post* contains the term `AI` as well :facepalm:
|
||||
|
@ -4,13 +4,16 @@ title: What are people actually doing with APRS?
|
||||
description: An analysis of worldwide APRS data
|
||||
date: 2023-03-23
|
||||
tags:
|
||||
- radio
|
||||
- aprs
|
||||
- data-analysis
|
||||
- radio
|
||||
- aprs
|
||||
- data-analysis
|
||||
draft: true
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: This post looks in to what radio operators are actually doing with the APRS network
|
||||
excerpt: This post looks in to what radio operators are actually doing with the
|
||||
APRS network
|
||||
aliases:
|
||||
- /blog/aprs-usage
|
||||
---
|
||||
|
||||
Sometimes I wonder how many people really use the amateur radio services I hear about.
|
||||
@ -92,4 +95,4 @@ Ok. So, lots of APRS traffic involves beacons. I guess that makes sense, althoug
|
||||
|
||||
The way I see the data, RF users are largely sending messages between each other, and occasionally beaconing their positions and telemetry. This seems to be the way APRS was intended to be used.
|
||||
|
||||
Internet users on the other hand seem to be just filling the network with data. Position reports don't make a ton of sense, but this traffic is probably a lot of people who (like me) use cron jobs to display their QTH and possibly local repeaters on the APRS maps. This is probably a bit less of the intended use of APRS.
|
||||
Internet users on the other hand seem to be just filling the network with data. Position reports don't make a ton of sense, but this traffic is probably a lot of people who (like me) use cron jobs to display their QTH and possibly local repeaters on the APRS maps. This is probably a bit less of the intended use of APRS.
|
||||
|
@ -1,14 +1,13 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Purely client-side point-of-interest marking for multiplayer Minecraft"
|
||||
description: "A showcase of my latest Minecraft mod: Client Ping"
|
||||
title: Purely client-side point-of-interest marking for multiplayer Minecraft
|
||||
description: 'A showcase of my latest Minecraft mod: Client Ping'
|
||||
date: 2023-04-27
|
||||
tags: minecraft
|
||||
draft: true
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: "A showcase of my latest Minecraft mod: Client Ping"
|
||||
# discuss:
|
||||
# reddit: https://www.reddit.com/r/ewpratten/comments/12xzw5x/a_script_that_hides_ai_topics_from_hacker_news/
|
||||
# hacker_news: https://news.ycombinator.com/item?id=35252186
|
||||
excerpt: 'A showcase of my latest Minecraft mod: Client Ping'
|
||||
aliases:
|
||||
- /blog/client-ping
|
||||
---
|
||||
|
@ -4,8 +4,8 @@ title: I performed a button swap on my mouse
|
||||
description: This had better not be my gateway drug into custom mice
|
||||
date: 2023-05-01
|
||||
tags:
|
||||
- random
|
||||
- hardware
|
||||
- random
|
||||
- hardware
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
@ -13,6 +13,8 @@ extra:
|
||||
discuss:
|
||||
reddit: https://www.reddit.com/r/ewpratten/comments/1356u1t/i_performed_a_button_swap_on_my_mouse/
|
||||
hacker_news: https://news.ycombinator.com/item?id=35781662
|
||||
aliases:
|
||||
- /blog/mouse-button-swap
|
||||
---
|
||||
|
||||
Recently, my mouse (a [Logitech M310](https://www.logitech.com/en-us/products/mice/m310-wireless-mouse.910-001917.html)) has been starting to give out on me, which I suppose is to be expected considering how much use my peripherals get, but is nevertheless annoying, considering that the failing component was the middle button, which I use a lot.
|
||||
|
@ -4,12 +4,14 @@ title: Rainbow keyboard
|
||||
description: Game-specific keyboard layouts are really handy
|
||||
date: 2023-06-15
|
||||
tags:
|
||||
- keyboards
|
||||
- random
|
||||
- keyboards
|
||||
- random
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: This post shows off my custom keyboard layout for playing Rainbow Six Siege
|
||||
aliases:
|
||||
- /blog/rainbow-keyboard
|
||||
---
|
||||
|
||||
In my ever-continuing quest to do interesting things with custom keyboards, I recently had the idea to take the left half of my [Ferris sweep](https://github.com/davidphilipbarr/Sweep) and configure it specifically for use in the game [Rainbow Six Siege](https://en.wikipedia.org/wiki/Tom_Clancy%27s_Rainbow_Six).
|
||||
|
@ -1,17 +1,17 @@
|
||||
---
|
||||
layout: page
|
||||
title: "How I set up NAT64"
|
||||
description: "Working towards single-stack inside AS54041"
|
||||
title: How I set up NAT64
|
||||
description: Working towards single-stack inside AS54041
|
||||
date: 2023-06-16
|
||||
tags: networking
|
||||
draft: true
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: "Information on how I set up NAT64 inside AS54041"
|
||||
# discuss:
|
||||
# reddit: https://www.reddit.com/r/ewpratten/comments/1356u1t/i_performed_a_button_swap_on_my_mouse/
|
||||
# hacker_news: https://news.ycombinator.com/item?id=35781662
|
||||
uses: [mermaid]
|
||||
excerpt: Information on how I set up NAT64 inside AS54041
|
||||
uses:
|
||||
- mermaid
|
||||
aliases:
|
||||
- /blog/nat64
|
||||
---
|
||||
|
||||
Somewhere along the way of setting up AS54041 over the past few years I stumbled across a reference to [NAT64](https://en.wikipedia.org/wiki/NAT64).
|
||||
@ -72,4 +72,3 @@ graph LR
|
||||
## How I set up NAT64 on a Debian-based router
|
||||
|
||||
## Final Remarks
|
||||
|
||||
|
@ -4,12 +4,14 @@ title: Setting up a static DNF repository
|
||||
description: Hosting RPMs is less painful than I expected
|
||||
date: 2023-07-05
|
||||
tags:
|
||||
- linux
|
||||
- walkthrough
|
||||
- linux
|
||||
- walkthrough
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: Information on how I set up dist.ewpratten.com, my DNF repository
|
||||
aliases:
|
||||
- /blog/simple-dnf-repo
|
||||
---
|
||||
|
||||
<!-- I regularly find myself bouncing between wanting to *self-host all the things* (because it is fun), and use well-known hosting services (because I generally have better things to do with my time). I doubt I'll ever actually pick one side or the other, but I have found that the back-and-fourth of `hosted, diy, hosted` leads me to learn a lot about the tools I use. -->
|
||||
|
@ -4,18 +4,21 @@ title: Building a VPN with an AMPRNet BGP allocation
|
||||
description: A quick guide on using your shiny new AMPRNet allocation
|
||||
date: 2023-07-07
|
||||
tags:
|
||||
- networking
|
||||
- amprnet
|
||||
- bgp
|
||||
- networking
|
||||
- amprnet
|
||||
- bgp
|
||||
draft: false
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: A guide on setting up a VPS, announcing a prefix over BGP, and using it as a VPN server
|
||||
excerpt: A guide on setting up a VPS, announcing a prefix over BGP, and using it
|
||||
as a VPN server
|
||||
discuss:
|
||||
reddit: https://www.reddit.com/r/ewpratten/comments/14tdltu/building_a_vpn_with_an_amprnet_bgp_allocation/
|
||||
hacker_news: https://news.ycombinator.com/item?id=36635146
|
||||
uses:
|
||||
- mermaid
|
||||
- mermaid
|
||||
aliases:
|
||||
- /blog/ampr-vpn
|
||||
---
|
||||
|
||||
One of the most common emails I receive from readers of this website generally starts with:
|
||||
@ -236,4 +239,4 @@ birdc show route export vultr
|
||||
|
||||
Your AMPRNet prefix should be listed in the output.
|
||||
|
||||
You can also head to [bgp.tools](https://bgp.tools) and search your prefix to see how its being advertised to the world from Vultr's routers.
|
||||
You can also head to [bgp.tools](https://bgp.tools) and search your prefix to see how its being advertised to the world from Vultr's routers.
|
||||
|
@ -4,13 +4,15 @@ title: A homebrew sound card designed for the Baofeng UV-5R
|
||||
description: Using cheap parts to programmatically transmit audio
|
||||
date: 2023-07-10
|
||||
tags:
|
||||
- radio
|
||||
- project
|
||||
- radio
|
||||
- project
|
||||
draft: true
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: This post describes how I homebrewed a sound card for my Baofeng UV-5R radios
|
||||
excerpt: This post describes how I homebrewed a sound card for my Baofeng UV-5R
|
||||
radios
|
||||
uses:
|
||||
- mermaid
|
||||
- mermaid
|
||||
aliases:
|
||||
- /blog/baofeng-sound-card
|
||||
---
|
||||
|
||||
|
@ -4,15 +4,18 @@ title: Authoring Blog Posts with Obsidian
|
||||
description: Trying a new way to write for this site
|
||||
date: 2023-10-20
|
||||
tags:
|
||||
- meta
|
||||
- random
|
||||
- meta
|
||||
- random
|
||||
draft: true
|
||||
extra:
|
||||
auto_center_images: true
|
||||
excerpt: A post about authoring blog posts with Obsidian
|
||||
uses:
|
||||
- mermaid
|
||||
- mermaid
|
||||
aliases:
|
||||
- /blog/obsidian-blogging
|
||||
---
|
||||
|
||||
It recently occurred to me that [Obsidian](https://obsidian.md) is capable of editing *any* type of markdown document store, not just its own note "Vaults". So, as a test I've been using it to interface with the source files that make up this website.
|
||||
|
||||
This post largely exists for the sake of figuring out how Obsidian behaves when forced into an environment that doesn't entirely agree with the "obsidian way of doing things".
|
||||
@ -22,4 +25,4 @@ This post largely exists for the sake of figuring out how Obsidian behaves when
|
||||
- Hot reload works very nicely (with auto-save when typing!)
|
||||
- Editing properties is pretty nice
|
||||
- Graph is very good
|
||||
-
|
||||
-
|
||||
|
Loading…
x
Reference in New Issue
Block a user