Same. Have it baked into my neovim setup.
Same. Have it baked into my neovim setup.
I haven’t made a keyboard in awhile but anything that supports QMK (or whatever is new and shiny today) should be able to support this.
QMK and the like are custom firmware so you can pretty much code up whatever feature you need.
If you are looking for a pre-built, I know my Tofu65 supports QMK from https://kbdfans.com/.
QMK is written in C but they do have a no code tool I used for my Tofu65: https://config.qmk.fm/#/.
If the tool doesn’t cover your use case and you are able to do a little C, these sections are good starting points for layers (what you call modes) and cursor keys.
Won’t auto update but you could add the upgrade command to a login script or something.
Won’t lie, nix has a high learning curve to get the most out of it, but installing a single app is pretty simple.
I open the conversation with “Jmp.chat bot” in Cheogram. That particular conversation has two tabs, conversation or commands. On the commands tab I have “Buy account credit by…”.
Most startups I’ve applied to are Linux friendly.
I currently work for a fortune 100 and managed to get a Linux machine purchased as a “lab” machine.
I’m fully in control. IT doesn’t even know it exists. I’m not allowed on the corporate network, but I managed to get some internal corporate access through another department’s lab network (IT sanctioned) that has a VPN with a few routes to things like ticketing, time cards, and our internal wiki. Most of the stuff I need to do my job is in AWS and we are allowed to add home IPs to the security groups.
IT still gives me a MacBook. I use it like once every 6 months.
nixos-unstable is the only thing I will use currently.
I’m running bleeding edge stuff like the latest kernel, Hyprland nightly, my own “shell” built from Gnome components and lots of custom stuff using GJS (Gnome JavaScript).
If you get one, and you are free to do whatever on it, encrypt your drives like your job depends on it. I have a memorized passphrase, pin protected hardware key, and a key in TPM. No biometrics.
As far as other nice things to have:
I work in software dev as FYI. For the few issues I have, my team has more issues getting stuff working consistently on macOS for our project. I used that as a justification when requesting the laptop: my dev environment should closely match our runtime environment. Most of that is moot now since we use Nix flakes in our repos for local dev envs.
Yeah I don’t want locally deleted media (to free up space) to sync those deletions to my remote.
My crypted remotes wrap a B2 Backblaze one which doesn’t delete, just hides. Periodically I go clean it up.
You are correct, fixed!
https://github.com/newhinton/Round-Sync. Not in any app store and have to download and install from GitHub.
It is an Android wrapper around rsync rclone.
Setup a remote, setup tasks, and setup triggers. Mine syncs every night. It supports encrypting with your own keys. Large number of remotes supported from self-hosted to cloud.
Looks good to me. Interface to Dest Ports are your match conditions. NAT IP/Port are the translations performed on each packet matched inbound and the Dest.
Traffic going the other way reverses this operation on the Src instead of destination.
That’s an over simplification of NAT, but for basic port forwarding the general principal holds.
Immutable Nixos. My entire server deployment from partitioning to config is stored in git on all my machines.
Every time I boot all runtime changes are “wiped”, which is really just BTRFS subvolume swapping.
Persistence is possible, but I’m forced to deal with it otherwise it will get wiped on boot.
I use LVM for mirrored volumes for local redundancy.
My persisted volumes are backed up automatically to B2 Backblaze using rclone. I don’t backup everything. Stuff I can download again are skipped for example. I don’t have anything currently that requires putting a process in “maint mode” like a database getting corrupt if I backup while its being written to. When I did, I’d either script gracefully shutting down the process or use any export functionality if the process supported it.
I use rclone and the Round Sync Android client.
Supports a ton of back ends, self hosted, and commercial options. You can transparently encrypt with private keys you control.
I personally use B2 Backblaze for storage.
My phone backs up every night and Round Sync pushes them to B2. On my desktop I can mount as a volume. I can also access my storage from my phone going the other direction.
I’ve done the same using SFTP if I don’t want the overhead of persistent file storage.
It does not support indexing or previews for searching or finding say a photo. You can put whatever you want for data. So I have caches, indexes, and thumbnails that work in Linux. I can’t really make use of those on my phone though.
Rclones bisync feature is also a bit dangerous when I tried to use it a year ago. I more than once “deleted” everything. B2 doesn’t delete by default, just hides, so I was able to recover. I now do unidirectional syncs from my machines to different buckets until I’m motivated to investigate a proper 3-way merge solution.
Has not worked for me in ages on Graphene. Same issue. It quits right away. Even tried messing with the hardened malloc and it was no go. Been a pain trying to use Zelle or deposit checks. Other than a handful of core apps I just use the web mostly at this point.
Oh nice! I’ll have to dig into that. Wonder if its an implementation issue across vendors. I was always under the impression that DHCPv6 was the common convention if not static.
Ok. So a device didn’t get a dhcp address? No problem… It creates it’s open IP address and starts talking and try to get out on internet on its own…
Its not that different from a conceptual point of view. Your router is still the gate keeper.
Home router to ISP will usually use DHCPv6 to get a prefix. Sizes vary by ISP but its usually like a /64. This is done with Prefix Delegation.
Client to Home Router will use either SLACC, DHCPv6, or both.
SLACC uses ICMPv6 where the client asks for the prefix (Router Solicitation) and the router advertises the prefix (Router Advertisement) and the client picks an address in it. There is some duplication protection for clients picking the same IP, but its nothing you have to configure. Conceptually its not that different from DHCP Request/Offer. The clients cannot just get to the internet on their own.
SLACC doesn’t support sending stuff like DNS servers. So DHCPv6 may still be used to get that information, but not an assigned IP.
Just DHCPv6 can also be used, but SLACC has the feature of being stateless. No leases or anything.
The only other nuance worth calling out is interfaces will pick a link local address so it can talk to the devices its directly connected to over layer 3 instead of just layer 2. This is no different than configuring 169.254.1.10/31 on one side and 169.254.1.11/31 on the other. These are not routed, its just for two connected devices to send packets to each other. This with Neighbor Discovery fills the role of ARP.
There is a whole bunch more to IPv6, but for a typical home network these analogies pretty much cover what you’d use.
Very happy. My two daily drivers (Desktop and Laptop) are on Ubuntu but user space is managed with Nix.
All other machines are Nixos proper. Only thing keeping me back from moving to Nixos fully is I decided to piecemeal my own DE and I’ve just lacked the time to debug some issues related to gnome-keyring, computer locking, and coding up some system setting widgets.
While I have nothing against an arch recommendation, I wouldn’t rely on my distro when there is tooling to get any version of a library directly from pypi.
Having done some MQTT IoT work in the past, dropping a couple resources:
https://github.com/eclipse/mosquitto - CLI interface and C bindings. I’ve only used the CLI interface. Its a nice way to test communication with a remote broker.
RabbitMQ /w MQTT plugin - Message queue based on AMQP. We ran this as the server in a container. There maybe others options like 0MQ (been a few years so don’t know every option). I had my clients post to a wild card topic so that I could consume a single device or all devices. Consumption is not with MQTT though. We’d use AMQP on that side.
I recommended checking out package managers that will simplify using whatever version of a library you want with project level virtual environments.
I haven’t done heavy python dev since 3.7, so I don’t know the full landscape of options these days, but here are some references to dig into.
https://python-poetry.org/ is the one I started using as the first step up from pip.
It looks like there are some new contenders like hatch, rye, and pdm: https://dev.to/adamghill/python-package-manager-comparison-1g98.
There is also pixi referenced from the comments in that article: https://github.com/prefix-dev/pixi
I haven’t tested in Windows, but this is my setup Linux to Linux using rclone which the docs say works with Windows.
Server
Client
I use this setup for my local files and a similar setup to my Backblaze B2 off site backups.
The VFS implementation has been pretty good. You can also manually sync. Their bisync I don’t fully trust though.
I can access everything through android using https://github.com/newhinton/Round-Sync. Not great for photos though as thumbnails weren’t loading without pulling the whole file last I tested a year ago.
Download 5 seasons of some show from multiple sources or some artist’s entire discography, and want to normalize all the file names? It is way easier in the terminal.
I’ll check this out, but I use https://github.com/stevearc/oil.nvim for such tasks as I have nvim’s full suite of editor commands to rename all the files way faster than I could in a GUI. I’m sure there are GUI apps to perform a similar task, but I already know how to use nvim.