mirror of
https://github.com/Brandon-Rozek/website.git
synced 2024-11-22 00:06:29 -05:00
Added medium syndication metadata
This commit is contained in:
parent
a51e20fbc7
commit
a22bb998cb
14 changed files with 78 additions and 68 deletions
|
@ -1,11 +1,14 @@
|
||||||
---
|
---
|
||||||
title: "Antenna Basics"
|
date: 2021-07-25 14:43:11
|
||||||
date: 2021-07-25T10:43:11-04:00
|
|
||||||
draft: false
|
draft: false
|
||||||
tags: ["Amateur Radio"]
|
|
||||||
math: false
|
math: false
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: fdec15d43776
|
||||||
|
tags:
|
||||||
|
- Amateur Radio
|
||||||
|
title: Antenna Basics
|
||||||
---
|
---
|
||||||
|
|
||||||
When a radio wave hits an antenna, the electrical component of the wave induces a difference of potential in the conductor which gives rise to an electric current. This is called electromotive force. The current induced is normally small, therefore, we usually design antennas to be as efficient as possible.
|
When a radio wave hits an antenna, the electrical component of the wave induces a difference of potential in the conductor which gives rise to an electric current. This is called electromotive force. The current induced is normally small, therefore, we usually design antennas to be as efficient as possible.
|
||||||
|
|
||||||
Ways to increase efficiency:
|
Ways to increase efficiency:
|
||||||
|
@ -15,4 +18,3 @@ Ways to increase efficiency:
|
||||||
- Make the antenna resonant at the frequency you're interested in. You can do this by adjusting the length of the wire, inductance, capacitance.
|
- Make the antenna resonant at the frequency you're interested in. You can do this by adjusting the length of the wire, inductance, capacitance.
|
||||||
- Design the antenna so that it focuses the energy from the direction you care about, as opposed to listening equally in all directions.
|
- Design the antenna so that it focuses the energy from the direction you care about, as opposed to listening equally in all directions.
|
||||||
- Similarly, raise the antenna higher off the ground so that more of it's beam pattern reaches the horizon.
|
- Similarly, raise the antenna higher off the ground so that more of it's beam pattern reaches the horizon.
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
---
|
---
|
||||||
title: "Comparator Logic Gate"
|
date: 2021-06-18 05:09:45
|
||||||
date: 2021-06-18T01:09:45-04:00
|
|
||||||
draft: false
|
draft: false
|
||||||
tags: []
|
|
||||||
math: true
|
math: true
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: 7bbc125ead40
|
||||||
|
tags: []
|
||||||
|
title: Comparator Logic Gate
|
||||||
---
|
---
|
||||||
|
|
||||||
This post is heavily derived from the Wikipedia post on [Digital Comparators](https://en.wikipedia.org/wiki/Digital_comparator) and therefore can be distributed under the Creative Commons Attribution-ShareAlike 3.0 license.
|
This post is heavily derived from the Wikipedia post on [Digital Comparators](https://en.wikipedia.org/wiki/Digital_comparator) and therefore can be distributed under the Creative Commons Attribution-ShareAlike 3.0 license.
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
---
|
---
|
||||||
title: "Convert DJVU to PDF"
|
date: 2021-08-28 02:00:00
|
||||||
date: 2021-08-27T22:00:00-04:00
|
|
||||||
draft: false
|
draft: false
|
||||||
tags: []
|
|
||||||
math: false
|
math: false
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: ddf23ae64f9a
|
||||||
|
tags: []
|
||||||
|
title: Convert DJVU to PDF
|
||||||
---
|
---
|
||||||
|
|
||||||
I've recently come across the DJVU file format before and needed to convert it to a PDF. The most reliable way I've found to do it is via the following command.
|
I've recently come across the DJVU file format before and needed to convert it to a PDF. The most reliable way I've found to do it is via the following command.
|
||||||
|
@ -43,4 +44,3 @@ fi
|
||||||
|
|
||||||
djvups "$1" | ps2pdf - "${1%.*}.pdf"
|
djvups "$1" | ps2pdf - "${1%.*}.pdf"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
---
|
---
|
||||||
title: "Do-While Loop in Other Languages"
|
date: 2021-08-28 01:50:02
|
||||||
date: 2021-08-27T21:50:02-04:00
|
|
||||||
draft: false
|
draft: false
|
||||||
tags: []
|
|
||||||
math: false
|
math: false
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: 5a9c792673f2
|
||||||
|
tags: []
|
||||||
|
title: Do-While Loop in Other Languages
|
||||||
---
|
---
|
||||||
|
|
||||||
Some languages like C, C++, and Java have a concept of a Do-While loop which normally look like the following:
|
Some languages like C, C++, and Java have a concept of a Do-While loop which normally look like the following:
|
||||||
|
@ -23,5 +24,3 @@ while condition or first_run:
|
||||||
first_run = False
|
first_run = False
|
||||||
statements
|
statements
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
---
|
---
|
||||||
title: "Introduction to RF Power Amplifiers"
|
date: 2021-04-10 17:01:00
|
||||||
date: 2021-04-10T13:01:00-04:00
|
|
||||||
draft: false
|
draft: false
|
||||||
tags: ["Amateur Radio"]
|
|
||||||
math: true
|
math: true
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: a8510ebe7754
|
||||||
|
tags:
|
||||||
|
- Amateur Radio
|
||||||
|
title: Introduction to RF Power Amplifiers
|
||||||
---
|
---
|
||||||
|
|
||||||
For field day I've been toying with the idea of buying a power amplifier for my HackRF. What I've come to realize is that there are a lot more to power amplifiers than just how much it amplifies by. This post outlines my current understanding (I'm by no means an expert) on the subject of RF power amplifiers.
|
For field day I've been toying with the idea of buying a power amplifier for my HackRF. What I've come to realize is that there are a lot more to power amplifiers than just how much it amplifies by. This post outlines my current understanding (I'm by no means an expert) on the subject of RF power amplifiers.
|
||||||
|
@ -61,5 +63,3 @@ Considerations:
|
||||||
- Need a gain of 30dB
|
- Need a gain of 30dB
|
||||||
- Lower noise figure is always better but a link budget analysis would get you a specific number.
|
- Lower noise figure is always better but a link budget analysis would get you a specific number.
|
||||||
- Want VSWR as close to 1 as possible.
|
- Want VSWR as close to 1 as possible.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
---
|
---
|
||||||
title: "Lean Theorem Prover Tactics"
|
date: 2021-10-11 03:52:41
|
||||||
date: 2021-10-10T23:52:41-04:00
|
|
||||||
draft: false
|
draft: false
|
||||||
tags: ["Formal Methods"]
|
|
||||||
math: false
|
math: false
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: adea1a69ddc8
|
||||||
|
tags:
|
||||||
|
- Formal Methods
|
||||||
|
title: Lean Theorem Prover Tactics
|
||||||
---
|
---
|
||||||
|
|
||||||
I've recently been playing with the Lean Theorem Prover. I am impressed with how some of the mathematics community decided to extend this project via [mathlib](https://leanprover-community.github.io/) and really make proving theorems in this framework easy and enjoyable.
|
I've recently been playing with the Lean Theorem Prover. I am impressed with how some of the mathematics community decided to extend this project via [mathlib](https://leanprover-community.github.io/) and really make proving theorems in this framework easy and enjoyable.
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
---
|
---
|
||||||
title: "Netboot.xyz Bootloader"
|
date: 2021-06-18 19:43:29
|
||||||
date: 2021-06-18T15:43:29-04:00
|
|
||||||
draft: false
|
draft: false
|
||||||
tags: []
|
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: d99cafd95a34
|
||||||
|
tags: []
|
||||||
|
title: Netboot.xyz Bootloader
|
||||||
---
|
---
|
||||||
|
|
||||||
Instead of manually loading ISOs onto a USB stick for [Ventoy](/blog/ventoy) to display, we can use Netboot.xyz to present us a list of options and download them during boot. This requires an internet connection in order to work.
|
Instead of manually loading ISOs onto a USB stick for [Ventoy](/blog/ventoy) to display, we can use Netboot.xyz to present us a list of options and download them during boot. This requires an internet connection in order to work.
|
||||||
|
@ -15,4 +16,3 @@ Download the [Netboot ISO](https://boot.netboot.xyz/ipxe/netboot.xyz.iso) and [l
|
||||||
![](/files/images/blog/netboot.xyz.gif)
|
![](/files/images/blog/netboot.xyz.gif)
|
||||||
|
|
||||||
Another benefit of this approach over Ventoy is that we don't have to manually update the flash drive. It always comes fresh with the ISOs available on their website.
|
Another benefit of this approach over Ventoy is that we don't have to manually update the flash drive. It always comes fresh with the ISOs available on their website.
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
---
|
---
|
||||||
title: "Common Network Debugging Commands"
|
date: 2022-01-02 20:17:02
|
||||||
date: 2022-01-02T15:17:02-05:00
|
|
||||||
draft: false
|
draft: false
|
||||||
tags: ["Networking"]
|
|
||||||
math: false
|
math: false
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: 7a55c1f5f40e
|
||||||
|
tags:
|
||||||
|
- Networking
|
||||||
|
title: Common Network Debugging Commands
|
||||||
---
|
---
|
||||||
|
|
||||||
Below are list of commands that I use to debug common issues in a network. There is a wonderful tool called Wireshark which you can use to sniff packets in a network and filter by a wide range of options, but we'll mainly focus on simple tools that you can use in the terminal.
|
Below are list of commands that I use to debug common issues in a network. There is a wonderful tool called Wireshark which you can use to sniff packets in a network and filter by a wide range of options, but we'll mainly focus on simple tools that you can use in the terminal.
|
||||||
|
@ -158,4 +160,3 @@ Address HWtype HWaddress Flags Mask Iface
|
||||||
192.168.0.11 ether 72:25:22:2c:72:72 C wlan0
|
192.168.0.11 ether 72:25:22:2c:72:72 C wlan0
|
||||||
192.168.0.111 ether 03:33:34:3b:23:39 C wlan0
|
192.168.0.111 ether 03:33:34:3b:23:39 C wlan0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
---
|
---
|
||||||
title: "Parallel SCP with LFTP"
|
date: 2021-07-25 14:38:43
|
||||||
date: 2021-07-25T10:38:43-04:00
|
|
||||||
draft: false
|
draft: false
|
||||||
tags: []
|
|
||||||
math: false
|
math: false
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: 610d337c8783
|
||||||
|
tags: []
|
||||||
|
title: Parallel SCP with LFTP
|
||||||
---
|
---
|
||||||
|
|
||||||
Segmented file transfer allows you to split up a file into multiple chunks and download them in parallel. There is a program written for Linux called LFTP which can accomplish this task and supports FTP, HTTP, SFTP, BitTorrent, among others. The syntax is a little funky, so I wrote a wrapper I call `pget` which allows for segmented file transfers using SCP.
|
Segmented file transfer allows you to split up a file into multiple chunks and download them in parallel. There is a program written for Linux called LFTP which can accomplish this task and supports FTP, HTTP, SFTP, BitTorrent, among others. The syntax is a little funky, so I wrote a wrapper I call `pget` which allows for segmented file transfers using SCP.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
|
@ -59,4 +61,3 @@ fi
|
||||||
LFTP_COMMAND="pget -n $NUM_SEGMENTS $FILE_LOCATION;bye"
|
LFTP_COMMAND="pget -n $NUM_SEGMENTS $FILE_LOCATION;bye"
|
||||||
lftp -e "$LFTP_COMMAND" sftp://"$REMOTE_HOST"
|
lftp -e "$LFTP_COMMAND" sftp://"$REMOTE_HOST"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
---
|
---
|
||||||
title: "Print Statements with Frame Information"
|
date: 2021-06-03 17:54:39
|
||||||
date: 2021-06-03T13:54:39-04:00
|
|
||||||
draft: false
|
draft: false
|
||||||
tags: ["Testing"]
|
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: a811c52bda55
|
||||||
|
tags:
|
||||||
|
- Testing
|
||||||
|
title: Print Statements with Frame Information
|
||||||
---
|
---
|
||||||
|
|
||||||
I find it extremely useful to include frame information such as filename, line number, and current function in my print statements. Here's a couple ways that I've done that in the past.
|
I find it extremely useful to include frame information such as filename, line number, and current function in my print statements. Here's a couple ways that I've done that in the past.
|
||||||
|
@ -37,4 +39,3 @@ def debuglog(m):
|
||||||
function_name = last_frame_info.function if last_frame_info is not None else "<module>"
|
function_name = last_frame_info.function if last_frame_info is not None else "<module>"
|
||||||
print(f"[{filename}:{lineno} {function_name}] {m}")
|
print(f"[{filename}:{lineno} {function_name}] {m}")
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
---
|
---
|
||||||
title: "Forward Packets with Socat"
|
date: 2021-06-18 23:38:43
|
||||||
date: 2021-06-18T19:38:43-04:00
|
|
||||||
draft: false
|
draft: false
|
||||||
tags: ["Networking"]
|
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: 790558856bee
|
||||||
|
tags:
|
||||||
|
- Networking
|
||||||
|
title: Forward Packets with Socat
|
||||||
---
|
---
|
||||||
|
|
||||||
I've written about relaying TCP traffic using [SSH port forwarding](/blog/sshlocalportforwarding/). Though sometimes you don't require the authenticity and encryption of SSH or want to use another protocol such as UDP. That's where `socat` comes in.
|
I've written about relaying TCP traffic using [SSH port forwarding](/blog/sshlocalportforwarding/). Though sometimes you don't require the authenticity and encryption of SSH or want to use another protocol such as UDP. That's where `socat` comes in.
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
---
|
---
|
||||||
title: "Terminal Output in Vim"
|
date: 2021-06-18 20:22:30
|
||||||
date: 2021-06-18T16:22:30-04:00
|
|
||||||
draft: false
|
draft: false
|
||||||
tags: []
|
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: fba948955d22
|
||||||
|
tags: []
|
||||||
|
title: Terminal Output in Vim
|
||||||
---
|
---
|
||||||
|
|
||||||
In Vim you can output the result of a command below your cursor by using `:r!`.
|
In Vim you can output the result of a command below your cursor by using `:r!`.
|
||||||
|
@ -23,4 +24,3 @@ The current timestamp
|
||||||
```
|
```
|
||||||
|
|
||||||
Outputs: `[2021-06-18 16:13:19]`
|
Outputs: `[2021-06-18 16:13:19]`
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
---
|
---
|
||||||
title: "Ventoy for managing ISOs on one USB"
|
date: 2021-06-18 19:32:38
|
||||||
date: 2021-06-18T15:32:38-04:00
|
|
||||||
draft: false
|
draft: false
|
||||||
tags: ["Virtualization"]
|
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: b096fed9be3c
|
||||||
|
tags:
|
||||||
|
- Virtualization
|
||||||
|
title: Ventoy for managing ISOs on one USB
|
||||||
---
|
---
|
||||||
|
|
||||||
Traditionally I would hold one Linux distribution per USB drive. Though with 32 GB USB Flash drives only costing $12, why hold only one per drive? That's where Ventoy comes in. With Ventoy, we can store multiple ISOs which it then presents as a boot screen.
|
Traditionally I would hold one Linux distribution per USB drive. Though with 32 GB USB Flash drives only costing $12, why hold only one per drive? That's where Ventoy comes in. With Ventoy, we can store multiple ISOs which it then presents as a boot screen.
|
||||||
|
@ -21,4 +23,3 @@ To install Ventoy onto a flash drive, follow the [Get Started](https://www.vento
|
||||||
![](/files/images/blog/ventoy.png)
|
![](/files/images/blog/ventoy.png)
|
||||||
|
|
||||||
Example screenshot from their website.
|
Example screenshot from their website.
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
---
|
---
|
||||||
title: "Z3 Constraint solving"
|
date: 2021-06-18 04:53:20
|
||||||
date: 2021-06-18T00:53:20-04:00
|
|
||||||
draft: false
|
draft: false
|
||||||
math: true
|
math: true
|
||||||
tags: []
|
|
||||||
medium_enabled: true
|
medium_enabled: true
|
||||||
|
medium_post_id: 9e4ced42d47
|
||||||
|
tags: []
|
||||||
|
title: Z3 Constraint solving
|
||||||
---
|
---
|
||||||
|
|
||||||
I've been looking for an easy to use constraint solver for a while and recently I've landed on using the python bindings for the SMT solver Z3.
|
I've been looking for an easy to use constraint solver for a while and recently I've landed on using the python bindings for the SMT solver Z3.
|
||||||
|
@ -44,4 +45,3 @@ m = s.model()
|
||||||
x_val = m.eval(x)
|
x_val = m.eval(x)
|
||||||
y_val = m.eval(y)
|
y_val = m.eval(y)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue