mirror of
https://github.com/jbowdre/runtimeterror.git
synced 2024-11-25 00:12:18 +00:00
Compare commits
5 commits
5babcd07ba
...
c8509de9ea
Author | SHA1 | Date | |
---|---|---|---|
c8509de9ea | |||
97c2a23608 | |||
09cd21ea36 | |||
bc59d3c7a4 | |||
ae0ef7a52d |
9 changed files with 24 additions and 23 deletions
|
@ -6,7 +6,7 @@ comments = true
|
||||||
+++
|
+++
|
||||||
|
|
||||||
We're not sure what you were looking for but it's not here.
|
We're not sure what you were looking for but it's not here.
|
||||||
![](/images/nothing-to-see-here.gif)
|
![Animated GIF from the movie "The Naked Gun". A man in the foreground proclaims "Please disperse. Nothing to see here." while a building explodes in the background.](/images/nothing-to-see-here.gif)
|
||||||
|
|
||||||
Maybe head back [home](/)?
|
Maybe head back [home](/)?
|
||||||
|
|
||||||
|
|
|
@ -18,12 +18,12 @@ That's a pretty sweet setup, but I still needed a way to convert STL 3D models i
|
||||||
Enter "Crostini," Chrome OS's [Linux (Beta) feature](https://chromium.googlesource.com/chromiumos/docs/+/master/containers_and_vms.md). It consists of a hardened Linux VM named `termina` which runs (by default) a Debian Buster LXD container named `penguin` (though you can spin up just about any container for which you can find an [image](https://us.images.linuxcontainers.org/)) and some fancy plumbing to let Chrome OS and Linux interact in specific clearly-defined ways. It's a brilliant balance between offering the flexibility of Linux while preserving Chrome OS's industry-leading security posture.
|
Enter "Crostini," Chrome OS's [Linux (Beta) feature](https://chromium.googlesource.com/chromiumos/docs/+/master/containers_and_vms.md). It consists of a hardened Linux VM named `termina` which runs (by default) a Debian Buster LXD container named `penguin` (though you can spin up just about any container for which you can find an [image](https://us.images.linuxcontainers.org/)) and some fancy plumbing to let Chrome OS and Linux interact in specific clearly-defined ways. It's a brilliant balance between offering the flexibility of Linux while preserving Chrome OS's industry-leading security posture.
|
||||||
|
|
||||||
|
|
||||||
![Neofetch in the Crostini terminal](lhTnVwCO3.png)
|
![Screenshot of the 'neofetch' utility](lhTnVwCO3.png)
|
||||||
|
|
||||||
There are plenty of great guides (like [this one](https://www.computerworld.com/article/3314739/linux-apps-on-chrome-os-an-easy-to-follow-guide.html)) on how to get started with Linux on Chrome OS so I won't rehash those steps here.
|
There are plenty of great guides (like [this one](https://www.computerworld.com/article/3314739/linux-apps-on-chrome-os-an-easy-to-follow-guide.html)) on how to get started with Linux on Chrome OS so I won't rehash those steps here.
|
||||||
|
|
||||||
One additional step you will probably want to take is make sure that your Chromebook is configured to enable hyperthreading, as it may have [hyperthreading disabled by default](https://support.google.com/chromebook/answer/9340236). Just plug `chrome://flags/#scheduler-configuration` into Chrome's address bar, set it to `Enables Hyper-Threading on relevant CPUs`, and then click the button to restart your Chromebook. You'll thank me later.
|
One additional step you will probably want to take is make sure that your Chromebook is configured to enable hyperthreading, as it may have [hyperthreading disabled by default](https://support.google.com/chromebook/answer/9340236). Just plug `chrome://flags/#scheduler-configuration` into Chrome's address bar, set it to `Enables Hyper-Threading on relevant CPUs`, and then click the button to restart your Chromebook. You'll thank me later.
|
||||||
![Enabling hyperthreading](LHax6lAwh.png)
|
![Screenshot of ChromeOS flags page showing that '#scheduler-configuration' is set to 'Enables Hyper-Threading on relevant CPUs](LHax6lAwh.png)
|
||||||
|
|
||||||
### The Software
|
### The Software
|
||||||
I settled on using [FreeCAD](https://www.freecadweb.org/) for parametric modeling and [Ultimaker Cura](https://ultimaker.com/software/ultimaker-cura) for my GCODE slicer, but unfortunately getting them working cleanly wasn't entirely straightforward.
|
I settled on using [FreeCAD](https://www.freecadweb.org/) for parametric modeling and [Ultimaker Cura](https://ultimaker.com/software/ultimaker-cura) for my GCODE slicer, but unfortunately getting them working cleanly wasn't entirely straightforward.
|
||||||
|
@ -68,7 +68,7 @@ Comment[de_DE]=Feature-basierter parametrischer Modellierer
|
||||||
MimeType=application/x-extension-fcstd
|
MimeType=application/x-extension-fcstd
|
||||||
```
|
```
|
||||||
That's it! Get on with your 3D-modeling bad self.
|
That's it! Get on with your 3D-modeling bad self.
|
||||||
![FreeCAD](qDTXt1jp3.png)
|
![Screenshot of FreeCAD showing a 3d model being worked on](qDTXt1jp3.png)
|
||||||
Now that you've got a model, be sure to [export it as an STL mesh](https://wiki.freecadweb.org/Export_to_STL_or_OBJ) so you can import it into your slicer.
|
Now that you've got a model, be sure to [export it as an STL mesh](https://wiki.freecadweb.org/Export_to_STL_or_OBJ) so you can import it into your slicer.
|
||||||
|
|
||||||
#### Ultimaker Cura
|
#### Ultimaker Cura
|
||||||
|
@ -88,12 +88,12 @@ sudo apt update && sudo apt install menulibre # [tl! .cmd:2]
|
||||||
menulibre
|
menulibre
|
||||||
```
|
```
|
||||||
Just plug in the relevant details (you can grab the appropriate icon [here](https://github.com/Ultimaker/Cura/blob/master/icons/cura-128.png)), hit the filing cabinet Save icon, and you should then be able to search for Cura from the Chrome OS launcher.
|
Just plug in the relevant details (you can grab the appropriate icon [here](https://github.com/Ultimaker/Cura/blob/master/icons/cura-128.png)), hit the filing cabinet Save icon, and you should then be able to search for Cura from the Chrome OS launcher.
|
||||||
![Using menulibre to create the launcher shortcut](VTISYOKHO.png)
|
![Screenshot demoing the use of 'menulibre' to create the launcher shortcut](VTISYOKHO.png)
|
||||||
|
|
||||||
![Ultimaker Cura](f8nRJcyI6.png)
|
![Screenshot of Ultimake Cura software](f8nRJcyI6.png)
|
||||||
|
|
||||||
From there, just import the STL mesh, configure the appropriate settings, slice, and save the resulting GCODE. You can then just upload the GCODE straight to The Spaghetti Detective and kick off the print.
|
From there, just import the STL mesh, configure the appropriate settings, slice, and save the resulting GCODE. You can then just upload the GCODE straight to The Spaghetti Detective and kick off the print.
|
||||||
|
|
||||||
![Successful print, designed and sliced on Chrome OS!](2g57odtq2.jpeg)
|
![A 3d-printed adapter for mounting a rear reflector on a bicycle, designed, sliced, and printed from a Chromebook](2g57odtq2.jpeg)
|
||||||
|
|
||||||
Nice!
|
Nice!
|
|
@ -312,7 +312,7 @@ This doesn't give me the *name* of the regions, but I could use the `_links.regi
|
||||||
You'll notice that HTTPie also prettifies the JSON response to make it easy for humans to parse. This is great for experimenting with requests against different API endpoints and getting a feel for what data can be found where. And firing off tests in HTTPie can be a lot quicker (and easier to format) than with other tools.
|
You'll notice that HTTPie also prettifies the JSON response to make it easy for humans to parse. This is great for experimenting with requests against different API endpoints and getting a feel for what data can be found where. And firing off tests in HTTPie can be a lot quicker (and easier to format) than with other tools.
|
||||||
|
|
||||||
Now let's take what we've learned and see about implementing it as vRO actions.
|
Now let's take what we've learned and see about implementing it as vRO actions.
|
||||||
[^pie]: ![](pie.gif)
|
[^pie]: ![GIF from Supernatural wherein Dean ogles some delicious pie.](pie.gif)
|
||||||
[^token]: Well, most of it.
|
[^token]: Well, most of it.
|
||||||
[^foreshadowing]: That knowledge will come in handy later.
|
[^foreshadowing]: That knowledge will come in handy later.
|
||||||
### vRealize Orchestrator actions
|
### vRealize Orchestrator actions
|
||||||
|
|
|
@ -36,7 +36,7 @@ Fortunately there's a somewhat-hidden way to disable (and re-enable) vCLS on a p
|
||||||
Disabling vCLS will break DRS, and could have other unintended side effects. Don't do this in prod if you can avoid it.
|
Disabling vCLS will break DRS, and could have other unintended side effects. Don't do this in prod if you can avoid it.
|
||||||
{{% /notice %}}
|
{{% /notice %}}
|
||||||
|
|
||||||
[^off-and-on]: ![](off-and-on.gif)
|
[^off-and-on]: ![GIF from The IT Crowd: "Have you tried turning it off and back on again?"](off-and-on.gif)
|
||||||
|
|
||||||
### Find the cluster's domain ID
|
### Find the cluster's domain ID
|
||||||
It starts with determining the affected cluster's domain ID, which is very easy to do once you know where to look. Simply browse to the cluster object in the vSphere inventory, and look at the URL:
|
It starts with determining the affected cluster's domain ID, which is very easy to do once you know where to look. Simply browse to the cluster object in the vSphere inventory, and look at the URL:
|
||||||
|
|
|
@ -536,7 +536,7 @@ Serving HTTP on 0.0.0.0 port 1313 (http://0.0.0.0:1313/) ... # [tl! focus:1]
|
||||||
#### Netlify
|
#### Netlify
|
||||||
Setting up Netlify to leverage the Torchlight API is kind of similar. I'll start with logging in to the [Netlify dashboard](https://app.netlify.com) and navigating to **Site Configuration > Environment Variables**. There, I'll click on **Add a variable > Add a ingle variable**. I'll give the new variable a key of `TORCHLIGHT_TOKEN` and set its value to the token I obtained earlier.
|
Setting up Netlify to leverage the Torchlight API is kind of similar. I'll start with logging in to the [Netlify dashboard](https://app.netlify.com) and navigating to **Site Configuration > Environment Variables**. There, I'll click on **Add a variable > Add a ingle variable**. I'll give the new variable a key of `TORCHLIGHT_TOKEN` and set its value to the token I obtained earlier.
|
||||||
|
|
||||||
![](netlify-env-var.png)
|
![Screenshot showing the creation of the 'TORCHLIGHT_TOKEN' variable in Netlify](netlify-env-var.png)
|
||||||
|
|
||||||
Once that's done, I edit the `netlify.toml` file at the root of my site repo to alter the build commands:
|
Once that's done, I edit the `netlify.toml` file at the root of my site repo to alter the build commands:
|
||||||
```toml
|
```toml
|
||||||
|
|
|
@ -983,7 +983,8 @@ I'll define the new subnet as `192.168.1.0/24`. Once I enable the option to *Che
|
||||||
![A new (but empty) subnet](new_subnet_pre_scan.png)
|
![A new (but empty) subnet](new_subnet_pre_scan.png)
|
||||||
|
|
||||||
It shows the scanner associated with the subnet, but no data yet. I'll need to wait a few minutes for the first scan to kick off (at the five-minute interval I defined in the configuration).
|
It shows the scanner associated with the subnet, but no data yet. I'll need to wait a few minutes for the first scan to kick off (at the five-minute interval I defined in the configuration).
|
||||||
![](five_minutes.gif)
|
|
||||||
|
![GIF which says 'Five Minutes Later!'](five_minutes.gif)
|
||||||
![Newly discovered IPs!](newly-discovered_IPs.png)
|
![Newly discovered IPs!](newly-discovered_IPs.png)
|
||||||
|
|
||||||
Woah, it actually works!
|
Woah, it actually works!
|
||||||
|
|
|
@ -331,9 +331,9 @@ I'll do that with another scriptable task element, named `Apply new names`, whic
|
||||||
|
|
||||||
{{% notice note "Binding a workflow output" %}}
|
{{% notice note "Binding a workflow output" %}}
|
||||||
To easily create a new workflow output and bind it to a task's output, click the task's **Add New** option like usual:
|
To easily create a new workflow output and bind it to a task's output, click the task's **Add New** option like usual:
|
||||||
![](add_new.png)
|
![Screenshot showing the creation of a new output](add_new.png)
|
||||||
Select **Output** at the top of the *New Variable* dialog and the complete the form with the other required details:
|
Select **Output** at the top of the *New Variable* dialog and the complete the form with the other required details:
|
||||||
![](new_output_parameter.png)
|
![Screenshot showing the new output parameter with 'Name: resourceNames' and 'Type: string'](new_output_parameter.png)
|
||||||
{{% /notice %}}
|
{{% /notice %}}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ title = "SimpleX Chat"
|
||||||
+++
|
+++
|
||||||
*You can **[contact me on SimpleX Chat](https://l.runtimeterror.dev/simplex-chat-invite)** by clicking that link or scanning the QR code below.*
|
*You can **[contact me on SimpleX Chat](https://l.runtimeterror.dev/simplex-chat-invite)** by clicking that link or scanning the QR code below.*
|
||||||
|
|
||||||
![](/images/simplex-invite.png)
|
![QR code](/images/simplex-invite.png)
|
||||||
|
|
||||||
[SimpleX Chat](https://simplex.chat/) is a secure messaging solution with a strong emphasis on user privacy. It's (naturally) end-to-end encrypted, doesn't require (or collect) *any* information about you in order to sign up, doesn't use any persistent user identifiers (not even a randomly-generated one), is fully decentralized, and is *not* affiliated with any cryptocurrency project/scam.
|
[SimpleX Chat](https://simplex.chat/) is a secure messaging solution with a strong emphasis on user privacy. It's (naturally) end-to-end encrypted, doesn't require (or collect) *any* information about you in order to sign up, doesn't use any persistent user identifiers (not even a randomly-generated one), is fully decentralized, and is *not* affiliated with any cryptocurrency project/scam.
|
||||||
|
|
||||||
|
@ -19,37 +19,37 @@ Incoming messages are routed through a pool of servers so that your conversation
|
||||||
The app is also packed with other features like disappearing messages, encrypted file transfers, encrypted voice messages, encrypted audio and video calls, decentralized private groups, and a cool incognito mode which connects new conversations to a randomly-generated profile instead of your primary one. There's even a [CLI client](https://github.com/simplex-chat/simplex-chat/blob/stable/docs/CLI.md)!
|
The app is also packed with other features like disappearing messages, encrypted file transfers, encrypted voice messages, encrypted audio and video calls, decentralized private groups, and a cool incognito mode which connects new conversations to a randomly-generated profile instead of your primary one. There's even a [CLI client](https://github.com/simplex-chat/simplex-chat/blob/stable/docs/CLI.md)!
|
||||||
|
|
||||||
## Servers
|
## Servers
|
||||||
[![](https://status.vpota.to/api/badge/11/status)](https://status.vpota.to/status/simplex)
|
[![Status badge](https://status.runtimeterror.dev/api/badge/11/status)](https://status.runtimeterror.dev/status/simplex)
|
||||||
|
|
||||||
You can easily host your own [simplexmq server](https://github.com/simplex-chat/simplexmq) for handling your inbound message queue, and I've done just that; in fact, I've deployed three! And, as one of my closest internet friends, *you're welcome to use them as well.*
|
You can easily host your own [simplexmq server](https://github.com/simplex-chat/simplexmq) for handling your inbound message queue, and I've done just that; in fact, I've deployed three! And, as one of my closest internet friends, *you're welcome to use them as well.*
|
||||||
|
|
||||||
Just add these in the SimpleX app at **Settings > Network & servers > SMP servers > + Add server...**. Enable the option to use them for new connections, and they'll be added to the pool used for incoming messages in new conversations. If you want to use them immediately for existing conversations, go into each conversation's options menu and use the **Switch receiving address** option. You can also *disable* the option to use the default servers for new conversations if you only want messages to be routed through specific servers, but that does increase the likelikhood of concurrent conversations being routed the same way. More servers, more path options, less metadata in any one place.
|
Just add these in the SimpleX app at **Settings > Network & servers > SMP servers > + Add server...**. Enable the option to use them for new connections, and they'll be added to the pool used for incoming messages in new conversations. If you want to use them immediately for existing conversations, go into each conversation's options menu and use the **Switch receiving address** option. You can also *disable* the option to use the default servers for new conversations if you only want messages to be routed through specific servers, but that does increase the likelikhood of concurrent conversations being routed the same way. More servers, more path options, less metadata in any one place.
|
||||||
|
|
||||||
---
|
---
|
||||||
![](/images/smp-vpota-to.png)
|
![QR code](/images/smp-vpota-to.png)
|
||||||
|
|
||||||
`smp://kYx5LmVD9FMM8hJN4BQqL4WmeUNZn8ipXsX2UkBoiHE=@smp.vpota.to`
|
`smp://kYx5LmVD9FMM8hJN4BQqL4WmeUNZn8ipXsX2UkBoiHE=@smp.vpota.to`
|
||||||
|
|
||||||
| | |
|
| | |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| [![](https://status.vpota.to/api/badge/6/uptime)](https://status.vpota.to/status/simplex) | [[details](https://l.runtimeterror.dev/smp_status)] |
|
| [![Status badge](https://status.runtimeterror.dev/api/badge/6/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp_status)] |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
![](/images/smp1-vpota-to.png)
|
![QR code](/images/smp1-vpota-to.png)
|
||||||
|
|
||||||
`smp://TbUrGydawdVKID0Lvix14UkaN-WarFgqXx4kaEG8Trw=@smp1.vpota.to`
|
`smp://TbUrGydawdVKID0Lvix14UkaN-WarFgqXx4kaEG8Trw=@smp1.vpota.to`
|
||||||
|
|
||||||
| | |
|
| | |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| [![](https://status.vpota.to/api/badge/4/uptime)](https://status.vpota.to/status/simplex) | [[details](https://l.runtimeterror.dev/smp1_status)] |
|
| [![Status badge](https://status.runtimeterror.dev/api/badge/4/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp1_status)] |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
![](/images/smp2-vpota-to.png)
|
![QR code](/images/smp2-vpota-to.png)
|
||||||
|
|
||||||
`smp://tNfQisxTQ9MhKpFDTbx9RnjgWigtxF1a26jroy5-rR4=@smp2.vpota.to`
|
`smp://tNfQisxTQ9MhKpFDTbx9RnjgWigtxF1a26jroy5-rR4=@smp2.vpota.to`
|
||||||
|
|
||||||
| | |
|
| | |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| [![](https://status.vpota.to/api/badge/5/uptime)](https://status.vpota.to/status/simplex) | [[details](https://l.runtimeterror.dev/smp2_status)] |
|
| [![Status badge](https://status.runtimeterror.dev/api/badge/5/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp2_status)] |
|
||||||
|
|
Loading…
Reference in a new issue