(This is a general remark, but it goes for a blog post like this as well.)
517 karma · joined August 5, 2018
(This is a general remark, but it goes for a blog post like this as well.)
But jails of course are older and can be used on their own, I didn’t want to imply they’re the same thing
In general everything needs to be compiled for FreeBSD, but the ports collection is quite extensive. For example you will find Firefox, wayland, GNOME, KDE, xfce, … even dotnet was on there.
Problems arise with properietary stuff like Spotify, Widevine DRM etc. However, FreeBSD has a Linux emulation layer (providing syscalls), dubbed ‘Linuxulator’. I managed to run the Spotify Linux desktop client but the Spotify website wouldn’t let me log in, didn’t research further. AFAIK the emulator is limited though, not implementing all syscalls.
There is also podman for FreeBSD and in addition to running FreeBSD containers (using Jails under the hood I guess?) it can run Linux containers as well (using the Linuxulator in addition then?).
It also comes with a hypervisor called bhyve if you want to run VMs
There is a handbook on their website describing how to set up a system (including desktop environment) if you want to give it a go.
:term to open a terminal in a new vim window (or :vert term)
Standard window movements apply (by default the window prefix is Ctrl-W), most important are: Ctrl-W,{hjkl} to switch between windows, Ctrl-W,{<>+-} to resize windows, Ctrl-W,{HJKL} to move windows to edges, Ctrl-W,{qc} to (force) close windows
Enter normal mode of a terminal buffer with Ctrl-W,N: now you can perform vim motions and scroll the output
Enter insert mode with i and you can type into the terminal again
In insert mode: Ctrl-W "x to paste register x, Ctrl-W . to send a literal Ctrl-W. If too annoying, you can change the window prefix of vim
This goes for vim, neovim also has a terminal mode but it works differently I think
But it definitely used to be possible, I tried once with success.
Anti spoofing for incoming mails was not perfect the last time I checked either, but is a different issue.
Standard-conforming IPv6 at most allows prefix translation (i.e., proper NAT, not PAT), which wouldn’t need it.
Was hoping for the new iPhone Fold (with Touch ID even) to be small but looks like it’s going to be a really weird ratio when folded.
Of course there are caveats: - Spotify not getting app updates anymore (but still playing fine)
- some websites do not support the Safari version, e.g. GitHub
- most banking apps are not supported
<https://en.wikipedia.org/w/index.php?title=44,100_Hz&oldid=1...>
Take it with a grain of salt, I’m not really knowledgeable about this.
E: also note the section about prime number squares below
Wouldn’t the additional frequencies be inaudible with the original frequencies still present? Why would that sound nasty?
Is this about commit signing? Git and all of the mentioned forges (by uploading the public key in the settings) support SSH keys for that afaik.
git configuration:
gpg.format = ssh
user.signingkey = /path/to/key.pub
If you need local verification of commit signatures you need gpg.ssh.allowedSignersFile too to list the known keys (including yours). ssh-add can remember credentials. Security keys are supported too.
This prevents clashing subnets when using VPN like it sometimes happens with IPv4.
using (var result = foo.GetSomethingIfLucky())
{
if (result.IfHappy is {} success)
{
// do something
}
} readonly record struct Result<TResult, TDisposable>(TResult? IfHappy, TDisposable? Disposable): IDisposable where TDisposable : IDisposable
{
public void Dispose() => Disposable?.Dispose();
}In addition, if the caller itself is a long-lived object it can remember the object and implement dispose itself by delegating. Then the user of the long-lived object can manage it.
using (var foo = new Foo())
{
}
// foo.Dispose() gets called here, even if there is an exception
Or, to avoid nesting: using var foo = new Foo(); // same but scoped to closest current scope
These also is `await using` in case the cleanup is async (`await foo.DisposeAsync()`)I think Java has something similar called try with resources.