

Another vote for Silverbullet, it allows you to write your code blocks in a certain manner that you can query them, so it suits very well the use case.
Another vote for Silverbullet, it allows you to write your code blocks in a certain manner that you can query them, so it suits very well the use case.
Which is why I prefer Silberbullet
Absolutely, but you need to set plugins for that and it’s not easy to get to the same state, but once you’re there it’s easy to surpass it. Vim has a very steep learning curve, this applies to everything from moving around the text to plugin specific stuff, but once you learn it it’s much better than any alternative I’ve ever come across (and I’ve been programming for 20 years, only switched to Nvim recently, although I’ve known basic vim since forever).
First let me tell you that I don’t know how to do all that you asked, some of it I’ve never needed, but I’m 100% sure it’s possible due to all of the other much more difficult stuff I have on my setup. The stuff that I do have, is much more convenient, e.g. with the cursor on a function/variable I can type gd
(Go-to Declaration) to go to the declaration of it, or gr
(Go-to References) to go to a list of references for that function/variable, that’s much more efficient than using a mouse, especially when it takes me at most 4 key presses to go to anywhere on the visible screen using jumps. So at the worst case scenario it takes me 6 keystrokes to go to the declaration of something I have on my screen, which even at 70WPM it means a bit over a second, whereas moving your hand to your mouse, mouse to the thingand Ctrl+click probably takes longer and is worse for the wrist.
But it’s the things that you can only do on vim that make it worth it, really you might gain a few seconds here and there, which do accumulate but it’s the stuff that seems like magic, e.g. have you ever had to replace '
with "
on a string because you wanted to write can't
? <space>srq"
that’s my shortcut for that, i.e. space to enter a “special mode” Surround Replace Quotes with " (srq"), and if I wanted to change from "
to '
it would be <space>srq'
so only the character I want to use change. Similarly I can do <leader>srb(
to replace parantesis/brace/brackets with a parenthesis, heck I can even do <space>srq)
to replace a quote with a parenthesis (notice I used open in the other and closed here? Open parenthesis means to add a space, closing one no space, same thing for brackets or braces). Another cool thing this plugin lets me do is ciq
(Change Inside Quotes) to change all of the text inside the current/next quotes or dab
(Delete Around Brackets) to delete everything inside the brackets and the brackets themselves. And all of that is just ONE plugin that extends the basic around/inside keywords in vim. There are dozens of plugins that completely revolutionize the way you move around and edit stuff. It’s hard to learn, but it’s incredibly rewarding.
I had that same problem, then I saw some YouTube videos where the guy recommended using Ansible to do stuff and it’s been night and day, not only it’s reproducible so if I ever want to move a service to another machine all I have to do is move a couple of roles around and possibly copy stuff over to keep the data but also it acts as documentation, because if I ever forget something I can look at the code.
Also I decided to write the roles myself instead of relying on pre-existing ones, so there’s some logic to how my stuff gets deployed and it’s easy to extend for any new stuff I want to add.
Depends on what you want the server to do. A Minecraft server and a Pihole server have vastly different requirements. As a general rule, any old laptop or desktop will do, think on requirements for your grandma and that should cover most (except gaming servers) needs.
It’s still a decentralized system, and saying that they aren’t because the default is for everyone to use the same node is either disingenuous or missing the point entirely. By your definition decentralization is impossible, because you always need to know at least one node in the network in order to enter.
That’s just pedantic, you will always need to know where the door is to enter the network, but in both cases even if that specific server that you know gets taken down you can still enter by any other server you might discover in any other way. It doesn’t cease to be centralized because you are using the same single node to get into the network, that would be like claiming email is not federated because you only use Gmail, or because you need to know the email of the person you’re writing to.
Lots of questions, let’s take it one step at a time. You have a domain, now you can point it to your public IP, so that whenever someone tries to access example.com they ask their DNS server and it replies with 10.172.172.172 (which btw is not a valid public IP). Now that request will hit your router, you need to configure your router to redirect ports 80 and 443 to 192.168.200.101, that way the request to example.com gets to your local machine.
Ok, so now you need your local machine to reply on that port, I recommend using Caddy it’s very easy to setup, but NGIX is the more traditional approach. A simple Caddy config would look like:
example.com {
respond "Hello"
}
jellyfin.example.com {
handle {
reverse_proxy http://192.168.200.101:1020/
}
}
So after the request reaches Caddy it will see that the person tried to access, example.com and respond with a “Hello”.
If instead you had tried jellyfin.example.com the DNS would have sent you to 10.172.172.172, your router would send that to 192.168.200.101, Caddy would then send it to 192.168.200.101:1020, which is Jellyfin so that would get returned.
There are some improvements that can be made, for example if both caddy and Jellyfin are docker you can share a network between them so Jellyfin is only exposed through caddy. Another possibly good idea is to add some authentication service like Authelia or Authentik to harden stuff a little bit. Also as you might have noticed Caddy can forward stuff to other computers, so you can have one machine on your network exposing multiple services on multiple machines.
This thread made me look at this issue. Realistically it’s not a big issue, the VAST majority of the binary blobs are accounted for and have a script or a readme file that shows where they’re downloaded from.
That being said I will take a serious look at alternatives.
Use docker, once you’re comfortable with it then switch to Podman. Podman has a few more complications, so it’s easier to get the base thing running using the most common tool, and work from there.
Others have given you many options, but I would like to know why Nvim or Emacs are not good options for you?