brew install minikube
brew install hyperkit
minikube config set driver hyperkit
minikube start --memory 8192 --cpus 5 --disk-size=80GB
brew install docker
# point docker to the minikube env
eval $(minikube -p minikube docker-env)
# validate setup- I faced bandwidth issues between a WG Peer and a WG server. Download bandwidth when downloading from WG Server to WG peer was reduced significantly and upload bandwidth was practically non existent.
- I found a few reddit posts that said that we need to choose the right MTU. So I wrote a script to find an optimal MTU.
- Ideally I would have liked to have run all possible MTU configurations for both WG Server and WG Peer but for simplicity I choose to fix the WG Server to the original 1420 MTU and tried all MTUs from 1280 to 1500 for the WG Peer.
- On WG server, I started an
iperf3server - On WG peer, I wrote a script that does the following:
wg-quick down wg0
- Edit MTU in the
/etc/wireguard/wg0.conffile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * A type-safe high-order-component creator | |
| * that injects a prop named a given string, | |
| * with a type inferred by a given hook's | |
| * return value. | |
| * | |
| * Ex: | |
| * const Component = ({ name }) => { | |
| * return <>Hello {name}</>; | |
| * }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // assets/js/app.js | |
| // ... | |
| import Pickr from "./pickr" | |
| const hooks = { | |
| Pickr | |
| } | |
| // ... |
The package that linked you here is now pure ESM. It cannot be require()'d from CommonJS.
This means you have the following choices:
- Use ESM yourself. (preferred)
Useimport foo from 'foo'instead ofconst foo = require('foo')to import the package. You also need to put"type": "module"in your package.json and more. Follow the below guide. - If the package is used in an async context, you could use
await import(…)from CommonJS instead ofrequire(…). - Stay on the existing version of the package until you can move to ESM.
These are notes to the stream: https://youtu.be/S9V-pcTrdL8
- We are not aware of a lot of GNU software available to us.
- Seems that Guix more hacker-friendly/explorable.
| Description | Nix | Guix | Comment |
I'll preface this with three things. 1. I prefer schemes over Common Lisps, and I prefer Racket of the Schemes. 2. There is more to it than the points I raise here. 3. I assume you have no previous experience with Lisp, and don't have a preference for Schemes over Common Lisp. With all that out of the way... I would say Common Lisp/SBCL. Let me explain
- SBCL Is by far the most common of the CL implementations in 2021. It will be the easiest to find help for, easiest to find videos about, and many major open source CL projects are written using SBCL
- Download a binary directly from the website http://www.sbcl.org/platform-table.html (even for M1 macs) to get up and running (easy to get started)
- Great video for setting up Emacs + Slime + Quick Lisp https://www.youtube.com/watch?v=VnWVu8VVDbI
Now as to why Common Lisp over Scheme
Requirements:
- YouTube-Agent.Bundle
- Absolute Series Scanner
- Youtube-DL
- Channel ID or Playlist ID of Channel
- YouTube Data API Key (free)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Readme: In the following pseudo code, [] indicates a subroutine. | |
| Sometimes I choose to write the subroutine inline under the [] in order to maintain context. | |
| One important fact about the way rollbacks are handled here is that we are storing state for every frame. | |
| In any real implementation you only need to store one game state at a time. Storing a game | |
| state for every frame allows us to only rollback to the first frame where the predicted inputs don't match the true ones. | |
| ==Constants== | |
| MAX_ROLLBACK_FRAMES := Any Positive Integer # Specifies the maximum number of frames that can be resimulated | |
| FRAME_ADVANTAGE_LIMIT := Any Positive Integer # Specifies the number of frames the local client can progress ahead of the remote client before time synchronizing. |