Compare commits

..

No commits in common. "c8509de9eaa4d6238ff1f27a0657de255ca03f28" and "5babcd07ba955be689b284e045b5ff6ed3acfbec" have entirely different histories.

9 changed files with 23 additions and 24 deletions

View file

@ -6,7 +6,7 @@ comments = true
+++
We're not sure what you were looking for but it's not here.
![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)
![](/images/nothing-to-see-here.gif)
Maybe head back [home](/)?

View file

@ -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.
![Screenshot of the 'neofetch' utility](lhTnVwCO3.png)
![Neofetch in the Crostini terminal](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.
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.
![Screenshot of ChromeOS flags page showing that '#scheduler-configuration' is set to 'Enables Hyper-Threading on relevant CPUs](LHax6lAwh.png)
![Enabling hyperthreading](LHax6lAwh.png)
### 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.
@ -68,7 +68,7 @@ Comment[de_DE]=Feature-basierter parametrischer Modellierer
MimeType=application/x-extension-fcstd
```
That's it! Get on with your 3D-modeling bad self.
![Screenshot of FreeCAD showing a 3d model being worked on](qDTXt1jp3.png)
![FreeCAD](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.
#### Ultimaker Cura
@ -88,12 +88,12 @@ sudo apt update && sudo apt install menulibre # [tl! .cmd:2]
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.
![Screenshot demoing the use of 'menulibre' to create the launcher shortcut](VTISYOKHO.png)
![Using menulibre to create the launcher shortcut](VTISYOKHO.png)
![Screenshot of Ultimake Cura software](f8nRJcyI6.png)
![Ultimaker Cura](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.
![A 3d-printed adapter for mounting a rear reflector on a bicycle, designed, sliced, and printed from a Chromebook](2g57odtq2.jpeg)
![Successful print, designed and sliced on Chrome OS!](2g57odtq2.jpeg)
Nice!

View file

@ -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.
Now let's take what we've learned and see about implementing it as vRO actions.
[^pie]: ![GIF from Supernatural wherein Dean ogles some delicious pie.](pie.gif)
[^pie]: ![](pie.gif)
[^token]: Well, most of it.
[^foreshadowing]: That knowledge will come in handy later.
### vRealize Orchestrator actions

View file

@ -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.
{{% /notice %}}
[^off-and-on]: ![GIF from The IT Crowd: "Have you tried turning it off and back on again?"](off-and-on.gif)
[^off-and-on]: ![](off-and-on.gif)
### 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:

View file

@ -536,7 +536,7 @@ Serving HTTP on 0.0.0.0 port 1313 (http://0.0.0.0:1313/) ... # [tl! focus:1]
#### 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.
![Screenshot showing the creation of the 'TORCHLIGHT_TOKEN' variable in Netlify](netlify-env-var.png)
![](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:
```toml

View file

@ -983,8 +983,7 @@ 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)
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).
![GIF which says 'Five Minutes Later!'](five_minutes.gif)
![](five_minutes.gif)
![Newly discovered IPs!](newly-discovered_IPs.png)
Woah, it actually works!

View file

@ -331,9 +331,9 @@ I'll do that with another scriptable task element, named `Apply new names`, whic
{{% 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:
![Screenshot showing the creation of a new output](add_new.png)
![](add_new.png)
Select **Output** at the top of the *New Variable* dialog and the complete the form with the other required details:
![Screenshot showing the new output parameter with 'Name: resourceNames' and 'Type: string'](new_output_parameter.png)
![](new_output_parameter.png)
{{% /notice %}}

View file

@ -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.*
![QR code](/images/simplex-invite.png)
![](/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.
@ -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)!
## Servers
[![Status badge](https://status.runtimeterror.dev/api/badge/11/status)](https://status.runtimeterror.dev/status/simplex)
[![](https://status.vpota.to/api/badge/11/status)](https://status.vpota.to/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.*
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.
---
![QR code](/images/smp-vpota-to.png)
![](/images/smp-vpota-to.png)
`smp://kYx5LmVD9FMM8hJN4BQqL4WmeUNZn8ipXsX2UkBoiHE=@smp.vpota.to`
| | |
| --- | --- |
| [![Status badge](https://status.runtimeterror.dev/api/badge/6/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp_status)] |
| [![](https://status.vpota.to/api/badge/6/uptime)](https://status.vpota.to/status/simplex) | [[details](https://l.runtimeterror.dev/smp_status)] |
---
![QR code](/images/smp1-vpota-to.png)
![](/images/smp1-vpota-to.png)
`smp://TbUrGydawdVKID0Lvix14UkaN-WarFgqXx4kaEG8Trw=@smp1.vpota.to`
| | |
| --- | --- |
| [![Status badge](https://status.runtimeterror.dev/api/badge/4/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp1_status)] |
| [![](https://status.vpota.to/api/badge/4/uptime)](https://status.vpota.to/status/simplex) | [[details](https://l.runtimeterror.dev/smp1_status)] |
---
![QR code](/images/smp2-vpota-to.png)
![](/images/smp2-vpota-to.png)
`smp://tNfQisxTQ9MhKpFDTbx9RnjgWigtxF1a26jroy5-rR4=@smp2.vpota.to`
| | |
| --- | --- |
| [![Status badge](https://status.runtimeterror.dev/api/badge/5/uptime)](https://status.runtimeterror.dev/status/simplex) | [[details](https://l.runtimeterror.dev/smp2_status)] |
| [![](https://status.vpota.to/api/badge/5/uptime)](https://status.vpota.to/status/simplex) | [[details](https://l.runtimeterror.dev/smp2_status)] |