Less Ties With A Machine - Desktop Customization & Workflow

Users browsing this thread:
venam
Administrators
(This is part of the podcast discussion extension)

Link of the recording [ https://raw.githubusercontent.com/nixers...-02-19.mp3 http://podcast.nixers.net/feed/download....02-191.mp3 ]

Hello fellow nixers,
This thread is a discussion regarding new ways to think and work with a machine, tips and practices.

I'm currently in the process of switching my main work machine because of the deprecation of 686 on Arch.

Xero mentioned during the last podcast that one of his coworker reached a sort of workflow that is un-tied with the machine, dynamically setting up his custom environment at every boot.
I'm not really looking for that exact setup but for something lighter, at least on the brain for possible future changes.

The last few days I've thought of all the ways I could list what I wanted to transfer on my new box, what I wanted to retain from it and what software to help me manage this in the future.


I've thought of dot file keepers like stow for the configuration.
I've thought of ricerous, just to guide me through the installs.
I've went back through my definition of minimalism to realize what I truly needed.
I've thought of creating a well ordered home directory.
I've thought of easy backups.
I reviewed this thread about managing multiple machines.
I've thought about keeping track of my things.

All those ideas merge somewhere along of the lines of "less ties", "less worries", "better and lighter workflow".

What are your thoughts on this fuzzy subject?

# Less ties with a machine #


Let's say you've been using a machine for a year or two and over time you
gradually become more attached and dependent on it. This is a situation
I've found myself into more than once and it is quite annoying, it's
straining for the brain. I've been through it the past few days and it
and I kept wondering about the ways I could make it less of a pain.
Imagine if today you suddenly lost access to your current work machine,
what would you do? This all rotates around the concept of having "less
ties", "less worries", "better or lighter workflow". And there are no
exact step-by-step guide to reach this, only nebulous and vague ideas
that rotate around it. However, checking some of them might make it less
straining on the brain, less of a burden, for possible future changes.

So we're going to discuss how we can have less ties with a machine,
how to be more relaxed with our workflow, machine, and operating system.

I guess the best way, first way I can think of, to have nothing as a
burden would be to have no machine to begin with. To be not tied with a
machine at all. Let's say to boot from a USB or live distribution. You're
completely untied in that case. Or what about using a thin client. Those
are all less straining because you can't necessarily make long lasting
changes on live distros for instance.
But other than live distros you could also have persistent pendrive,
live distro that run entirely on the ram but that can keep persistent data
on the USB itself. On the other side to do that you'll have to deal with
the disadvantage of having slower boot time, because of the media type,
be it CD/DVD or USB. More than that you could do a full installation of
a distribution on the USB drive but the disadvantage is that USB are
sort of small and not supported for all fs. To counter that you could
install the distro on a portable hard disk, those are pretty cheap
Nowadays. A full install on a hard disk, no ties to a real machine. But
the real disadvantage now is that usually a lot of binaries are
architecture dependent (x86 x96_64 powerpc, etc..) so you're not truly
machine dependent because you'll have to install all sort of architectures
and libraries so that it's supported everywhere.
So this is an overview of how to lighten up your setup by not having
a machine at all.

Did you run your daily backup, do you even have backups. Do you have
backups and know how to deploy them back again. What's the role of having
backups on a desktop. Ok, I mean... What are you going to backup? That's
the big question we discussed in the episode about backing up and
deploying: What to backup, how to backup, and how to deploy it.
Backups themselves are a great way to remove a burden from your life,
you have to run them because you never know when your data is going to be
on fire. You have to keep redundancy, consistent, with all your important
files. You have to make sure that what you care about is duplicated there,
that it's safe. But if at the moment you are a hoarder, stacking up files
everywhere on your system, then what's the goal of a backup if it's a
copy of everything. How are you going to set everything again after you
lost the first machine. If you can't make sense of what you have in the
first place then backups are junk. It's true they are duplicates but
those duplicates are useless.

This is an extract from an article I've written called "Keeping track
of your things":
"""
What some us of tend to forget is that to make a workflow smooth you
don’t especially need to know your tools by heart but you have to
reach a point where your tools will guide you.

You might argue that as a Unix user you want full power over your machine
but this is not what this is about. No one, except the masochist,
would want to work on a system by forcing his intentions into it. As
a developer, sys-admin, Unix enthusiast, you dream of those days where
everything goes smooth, where you’re happy to have chosen Unix because
it suits you best.

The smoothness comes from the fact that your environment evolved and
morphed to your needs and is now capable of helping you get on track
when you get lost.

Enough of the sentimental talk, let’s get into how you reach such state.

Apart from knowing the basics of your system and how to use the programs
themselves the biggest part of a enjoyable and sweet workflow is one
that can acts as your second memory.

By second memory I mean an extension of your thoughts, thinking, and
physical brain memory. (resident memory but for human)

Let’s start with a simple exercise, for those of you that have been on
Unix for more than a year. Close your eyes and remember the last time
you had to work on a machine that wasn't yours, what were the things
that annoyed you the most?

Was it the window manager itself? Was it that it was missing the tools you
usually work with? Was it because it just didn't seem to be responsive
to your needs?

Or was it because you were lost on that system?

The hard truth is that the only reason it was annoying to work on
that other machine was because you were lost, it wasn't your home,
you didn't know how to handle things that weren't in your mundane
daily flow.

What makes a flow so intuitive.

My guess is that it’s all about the way you inserted your thoughts
in the environment in the first place. People keep track of things,
that’s what information technology is all about.

Let’s list all the places where I keep my memories as a personal example:

* A todo list
* Commands
* Browser Bookmarks/Opened Tabs
* Program Launchers
* Conky/Wallpaper
* Shell History/Aliases/Functions
* File Manager Bookmarks/Soft Linking

Exercise number two: List the top of your memory-helpers on your current
machine. Now think back to that time when you used that foreign machine,
if you could have the equivalent of those memory-helpers on that box
would you still feel the same way?

No, there’s nothing wrong with having your machine helping you remember
things. No, it doesn't make you machine dependent, on the opposite,
it helps considerably. My bet is that you’re already doing all that
I mentioned unconsciously. Though it would be a bad idea to start doing
that if you haven’t grasp the basics and are heavily reliant on your
little fake memory.

The last step is to make those actions concious. If you know that your
shell history has helped you why not take it to the next level and have
a side program handle that history for you.

Keep it between machines synchronized.
Keep track of your things.
"""

It's satisfying to know about the things that help you use your machine
as an extension of your mind. But where do draw the line, to stop taking
things from the machine or from memory. Creating in the meanwhile mental
clutter and visual clutter on the machine.
That's where the concept of minimalism comes into play. We've amply
discussed that topic quite a bit in a podcast with this topic before,
you can go back to that. There are many aspects around this topic,
simple living which conflates with minimalism in the world of computing
and minimalism in the world of art and digital minimalism. Simple living
would be simplifying one's own lifestyle. Minimalism in computing refers
to hardware and software design that goes to the core of the value of
what you're using. Minimalism in art is about using as less material
as possible, as less visual bloat as possible while still conveying the
message. There's an article I've recently linked in the newsletter by Cal
Newport on digital minimalism and I think the things he mentions in the
article encompass the message I want to convey here. He splits the value
you can give something in the digital world into three categories. Those
categories are very subjective, you can associate them to whatever you
personal think is appropriate for yourself. Those categories are: the
core value, the minor value, and the invented value. The core value is
for any technology that majorly impact your life, something you can't live
without. A minor value is something that provides some moderate benefits
while being a positive part of your life. And an invented value is, like
the obvious name, is something that gives an invented value, it solves
a problem that the technology itself brings to light/into your life. Those
values themselves, again, are very subjective you can associate the tech
you want with what value you want, but all in all it's important to talk
about minimalism when discussing the topic of less ties. To have less
ties you have to minimize. When you have less things you are able to foc us
more to keep track of your things more and realize truly what you need.
And while you are doing this backups do make sense. What else can you
do to keep track of your things and to keep them in order.

So maybe you really know what you want from the get go. Maybe you
have that small space in your mind to keep track of whatever you have
installed on your system at the moment. However most probably you don't,
you don't keep track of everything and that's where some softwares come
to the rescue. For example you could use one to help you manage dot
files, like gnu stow which works by having a repository (farm) holding
your dot files and it managing them, keeping them in order, in sync,
etc.. Or you could have a software to give you a list of whatever you
have installed, somewhat like a tutorial. For example ricerous that we
built at nixers. You could also use softwares to sync machines together
like rsync and others. Or you could probably keep a simple text file
with a list of softwares you have installed, or even hook it with your
package manager so that it's in sync with the current packages, whenever
you install a package it will append it to this list. What I want to say
is that there are a bunch of ways that can help you leverage the burden
on your mind to keep track of what is on your machine and how coherent
it is without necessarily it being a hassle.
But I think this management part comes after the minimalism step,
after cleaning up, when you already know what you want install and
knowing how your system works. Maybe you have to mess up your machine
at least once, to learn, and then go through this process.
So overall use those softwares if you're not able to keep order yourself.

There are some good practices that can help you have less ties with
a machine while still being productive. One of them is to not have
configurations installed for all users, as in installed globally in /etc/
or /usr/local... So that means having everything in your home, having
a transportable home. Having something that is reproducible. Having a
well ordered tidy home directory is really important when it comes to
having less ties with a machine. If you want you can glance at a thread
we had on the forums about creating nice home directory trees. It could
inspire you. Overall what I found what help was to have at least a
binary directory with executables in it, so it's appended to the path,
some documents directory, some media, some source code, whatever suits
your needs. You just need to keep up with it, and not hoarder.
A well ordered home directory is a transportable home directory.

Let's continue with the good practices, another thing would be to have
a reproducible, scriptable, deployable home directory, which would have
everything in it. It's sort of the mix up between the dot file keepers,
the setup stepbystep keeper, and the portable home directory, along with
the script that sets everything up, config in the home, creating the
symlink where they need to be, install the packages, etc.. Once it's
setup it's setup, that's it. It's a good way to have less ties because
it means copying your home and running the script will reproduce your
system, workflow, minimal stuffs, and core value. I think this is the
epitome of whatever having less ties with a machine means.

With that we can conclude this podcast.

If you want to contribute check this thread.


Music:
everlong (instumental acoustic)
by cassidy orth
Halfwit
Members
I look forward to seeing what comes of this, venam.
Nihility
Members
I love that you can integrate everything with dmenu, here are some examples

Code:
# Show battery status in dmenu
cat /sys/class/power_supply/BAT0/capacity | dmenu

Code:
# Some scripts online
https://github.com/cdown/clipmenu
https://git.zx2c4.com/password-store/tree/contrib/dmenu/passmenu
https://bbs.archlinux.org/viewtopic.php?id=80145&p=13

And all you need is bind shortcut keys using xbindkeys

I'm using dwm, dmenu & st so this is the kind of setup/workflow that works well for me
venam
Administrators
I've recorded an episode of the podcast related to this topic:

Link of the recording [ https://raw.githubusercontent.com/nixers...-02-19.mp3 http://podcast.nixers.net/feed/download....02-191.mp3 ]

Refer to the original post for more info.
z3bra
Grey Hair Nixers
That's a topic I'm more and more concerned about everyday. I'v been working it for the past year as I had to reinstall different machines of mine multiple times, be it a server, phone, or desktop.
The first step toward it (and the most consequent one) was to learn how to NOT customize softwares. If you dont have any dotfike, then you dont need to manage them. It doesn't sound like rocket science, but its actually helpful. When you login to a virgin system, all you need to do is installing the software you need, and you're good to go! By using default configs, you also spend less time configuring things and more time using them.

Another point I'm still working on is the persistence of data accross installs. This can be done using things like NFS. But I dont have something 100% working yet.
This also include deployment of new SSH keys and password managers, so this point is a bit touchy.

And last, but not least: Deciding what I want after the reinstall. I'm still not 100% satisfied with all the distros out there, so each install brings the question on the table (i currently run 6 different OS across 8 machines)
Halfwit
Members
I came up with a solution I'm going to try for this.
Basically, i'm going to set up a server on my desktop, serving up many things - one of which is a PXE server
I'll then have my main work machines, two thinkpads as diskless clients, using their onboard SSD's as cache; and serving up a shared home directory to each machine. It seems that this is possible to do, coming from such things as http://wiki.ltsp.org/wiki/Concepts
I'll keep this updated as things change, but i'm planning on creating a small builld chain and config to generate the images for a specific type of device. I want to have the ability to do musl or glibc on boot on x86, or start up on a Pi, and this way it should be doable.
venam
Administrators
(02-03-2017, 03:45 AM)Halfwit Wrote: The first step toward it (and the most consequent one) was to learn how to NOT customize softwares.
I've understated this many times.
It's hard to find the right balance between vanilla or customized software.
For example, the advantage of using the default keybinds in a software means that wherever that software is installed you'll directly know how to interact with it without installing your own configs.
acg
Members
(03-03-2017, 02:40 AM)venam Wrote: I've understated this many times.
It's hard to find the right balance between vanilla or customized software.
For example, the advantage of using the default keybinds in a software means that wherever that software is installed you'll directly know how to interact with it without installing your own configs.

And my law for this is to only customize not-so-common software, software i'd only use on my computer. That's the case of mutt, for example, i'm not checking email on every remote i log. Even after this i try to keep the changes to a minimun (at least when it comes to keybinds) on my personal computer.
argonaut · musician · developer · writer · https://www.betoissues.com
venam
Administrators
Finally transcripted this one:
# Less ties with a machine #


Let's say you've been using a machine for a year or two and over time you
gradually become more attached and dependent on it. This is a situation
I've found myself into more than once and it is quite annoying, it's
straining for the brain. I've been through it the past few days and it
and I kept wondering about the ways I could make it less of a pain.
Imagine if today you suddenly lost access to your current work machine,
what would you do? This all rotates around the concept of having "less
ties", "less worries", "better or lighter workflow". And there are no
exact step-by-step guide to reach this, only nebulous and vague ideas
that rotate around it. However, checking some of them might make it less
straining on the brain, less of a burden, for possible future changes.

So we're going to discuss how we can have less ties with a machine,
how to be more relaxed with our workflow, machine, and operating system.

I guess the best way, first way I can think of, to have nothing as a
burden would be to have no machine to begin with. To be not tied with a
machine at all. Let's say to boot from a USB or live distribution. You're
completely untied in that case. Or what about using a thin client. Those
are all less straining because you can't necessarily make long lasting
changes on live distros for instance.
But other than live distros you could also have persistent pendrive,
live distro that run entirely on the ram but that can keep persistent data
on the USB itself. On the other side to do that you'll have to deal with
the disadvantage of having slower boot time, because of the media type,
be it CD/DVD or USB. More than that you could do a full installation of
a distribution on the USB drive but the disadvantage is that USB are
sort of small and not supported for all fs. To counter that you could
install the distro on a portable hard disk, those are pretty cheap
Nowadays. A full install on a hard disk, no ties to a real machine. But
the real disadvantage now is that usually a lot of binaries are
architecture dependent (x86 x96_64 powerpc, etc..) so you're not truly
machine dependent because you'll have to install all sort of architectures
and libraries so that it's supported everywhere.
So this is an overview of how to lighten up your setup by not having
a machine at all.

Did you run your daily backup, do you even have backups. Do you have
backups and know how to deploy them back again. What's the role of having
backups on a desktop. Ok, I mean... What are you going to backup? That's
the big question we discussed in the episode about backing up and
deploying: What to backup, how to backup, and how to deploy it.
Backups themselves are a great way to remove a burden from your life,
you have to run them because you never know when your data is going to be
on fire. You have to keep redundancy, consistent, with all your important
files. You have to make sure that what you care about is duplicated there,
that it's safe. But if at the moment you are a hoarder, stacking up files
everywhere on your system, then what's the goal of a backup if it's a
copy of everything. How are you going to set everything again after you
lost the first machine. If you can't make sense of what you have in the
first place then backups are junk. It's true they are duplicates but
those duplicates are useless.

This is an extract from an article I've written called "Keeping track
of your things":
"""
What some us of tend to forget is that to make a workflow smooth you
don’t especially need to know your tools by heart but you have to
reach a point where your tools will guide you.

You might argue that as a Unix user you want full power over your machine
but this is not what this is about. No one, except the masochist,
would want to work on a system by forcing his intentions into it. As
a developer, sys-admin, Unix enthusiast, you dream of those days where
everything goes smooth, where you’re happy to have chosen Unix because
it suits you best.

The smoothness comes from the fact that your environment evolved and
morphed to your needs and is now capable of helping you get on track
when you get lost.

Enough of the sentimental talk, let’s get into how you reach such state.

Apart from knowing the basics of your system and how to use the programs
themselves the biggest part of a enjoyable and sweet workflow is one
that can acts as your second memory.

By second memory I mean an extension of your thoughts, thinking, and
physical brain memory. (resident memory but for human)

Let’s start with a simple exercise, for those of you that have been on
Unix for more than a year. Close your eyes and remember the last time
you had to work on a machine that wasn't yours, what were the things
that annoyed you the most?

Was it the window manager itself? Was it that it was missing the tools you
usually work with? Was it because it just didn't seem to be responsive
to your needs?

Or was it because you were lost on that system?

The hard truth is that the only reason it was annoying to work on
that other machine was because you were lost, it wasn't your home,
you didn't know how to handle things that weren't in your mundane
daily flow.

What makes a flow so intuitive.

My guess is that it’s all about the way you inserted your thoughts
in the environment in the first place. People keep track of things,
that’s what information technology is all about.

Let’s list all the places where I keep my memories as a personal example:

* A todo list
* Commands
* Browser Bookmarks/Opened Tabs
* Program Launchers
* Conky/Wallpaper
* Shell History/Aliases/Functions
* File Manager Bookmarks/Soft Linking

Exercise number two: List the top of your memory-helpers on your current
machine. Now think back to that time when you used that foreign machine,
if you could have the equivalent of those memory-helpers on that box
would you still feel the same way?

No, there’s nothing wrong with having your machine helping you remember
things. No, it doesn't make you machine dependent, on the opposite,
it helps considerably. My bet is that you’re already doing all that
I mentioned unconsciously. Though it would be a bad idea to start doing
that if you haven’t grasp the basics and are heavily reliant on your
little fake memory.

The last step is to make those actions concious. If you know that your
shell history has helped you why not take it to the next level and have
a side program handle that history for you.

Keep it between machines synchronized.
Keep track of your things.
"""

It's satisfying to know about the things that help you use your machine
as an extension of your mind. But where do draw the line, to stop taking
things from the machine or from memory. Creating in the meanwhile mental
clutter and visual clutter on the machine.
That's where the concept of minimalism comes into play. We've amply
discussed that topic quite a bit in a podcast with this topic before,
you can go back to that. There are many aspects around this topic,
simple living which conflates with minimalism in the world of computing
and minimalism in the world of art and digital minimalism. Simple living
would be simplifying one's own lifestyle. Minimalism in computing refers
to hardware and software design that goes to the core of the value of
what you're using. Minimalism in art is about using as less material
as possible, as less visual bloat as possible while still conveying the
message. There's an article I've recently linked in the newsletter by Cal
Newport on digital minimalism and I think the things he mentions in the
article encompass the message I want to convey here. He splits the value
you can give something in the digital world into three categories. Those
categories are very subjective, you can associate them to whatever you
personal think is appropriate for yourself. Those categories are: the
core value, the minor value, and the invented value. The core value is
for any technology that majorly impact your life, something you can't live
without. A minor value is something that provides some moderate benefits
while being a positive part of your life. And an invented value is, like
the obvious name, is something that gives an invented value, it solves
a problem that the technology itself brings to light/into your life. Those
values themselves, again, are very subjective you can associate the tech
you want with what value you want, but all in all it's important to talk
about minimalism when discussing the topic of less ties. To have less
ties you have to minimize. When you have less things you are able to foc us
more to keep track of your things more and realize truly what you need.
And while you are doing this backups do make sense. What else can you
do to keep track of your things and to keep them in order.

So maybe you really know what you want from the get go. Maybe you
have that small space in your mind to keep track of whatever you have
installed on your system at the moment. However most probably you don't,
you don't keep track of everything and that's where some softwares come
to the rescue. For example you could use one to help you manage dot
files, like gnu stow which works by having a repository (farm) holding
your dot files and it managing them, keeping them in order, in sync,
etc.. Or you could have a software to give you a list of whatever you
have installed, somewhat like a tutorial. For example ricerous that we
built at nixers. You could also use softwares to sync machines together
like rsync and others. Or you could probably keep a simple text file
with a list of softwares you have installed, or even hook it with your
package manager so that it's in sync with the current packages, whenever
you install a package it will append it to this list. What I want to say
is that there are a bunch of ways that can help you leverage the burden
on your mind to keep track of what is on your machine and how coherent
it is without necessarily it being a hassle.
But I think this management part comes after the minimalism step,
after cleaning up, when you already know what you want install and
knowing how your system works. Maybe you have to mess up your machine
at least once, to learn, and then go through this process.
So overall use those softwares if you're not able to keep order yourself.

There are some good practices that can help you have less ties with
a machine while still being productive. One of them is to not have
configurations installed for all users, as in installed globally in /etc/
or /usr/local... So that means having everything in your home, having
a transportable home. Having something that is reproducible. Having a
well ordered tidy home directory is really important when it comes to
having less ties with a machine. If you want you can glance at a thread
we had on the forums about creating nice home directory trees. It could
inspire you. Overall what I found what help was to have at least a
binary directory with executables in it, so it's appended to the path,
some documents directory, some media, some source code, whatever suits
your needs. You just need to keep up with it, and not hoarder.
A well ordered home directory is a transportable home directory.

Let's continue with the good practices, another thing would be to have
a reproducible, scriptable, deployable home directory, which would have
everything in it. It's sort of the mix up between the dot file keepers,
the setup stepbystep keeper, and the portable home directory, along with
the script that sets everything up, config in the home, creating the
symlink where they need to be, install the packages, etc.. Once it's
setup it's setup, that's it. It's a good way to have less ties because
it means copying your home and running the script will reproduce your
system, workflow, minimal stuffs, and core value. I think this is the
epitome of whatever having less ties with a machine means.

With that we can conclude this podcast.

Let's bring back this topic of discussion, it was so interesting to hear about all the ideas the community could come up with.
josuah
Long time nixers
Thank you for these podcasts!

(18-04-2018, 11:22 AM)venam Wrote: I guess the best way, first way I can think of, to have nothing as a
burden would be to have no machine to begin with. To be not tied with a
machine at all. Let's say to boot from a USB or live distribution. You're
completely untied in that case. Or what about using a thin client.

Thin client and then a server which gives all the environment (SSH, X11
forwarding, drawterm... :P). Then you need a good connection, but that
is a great deal of device-independence!

Oops, but what about ties with the server which powers it? Then the
question comes again...

(18-04-2018, 11:22 AM)venam Wrote: But the real disadvantage now is that usually a lot of binaries are
architecture dependent (x86 x96_64 powerpc, etc..).

There could be a /arch/amd64 /arch/i386 /arch/armhf... and then an
export PATH=$PATH:/arch/$(uname -m)

(18-04-2018, 11:22 AM)venam Wrote: backups

No "backups". More like duplication, mirroring... Git is good at this, and
I keep my e-mail safe like that.

Git only store incremental changes, and in case you mess up a repository,
you can `git init` a new one, move the index/pack/objects files. After all,
with the maildir format, every mail is a text files, so git works very well.

(18-04-2018, 11:22 AM)venam Wrote: What to backup, how to backup, and how to deploy it.

Every time I use a new machine, I git clone everything on it. That acts as
a backup. Even if I wanted to delete my own data forever (password on
dotfiles...), I'd have a hard time doing so. Even with a hammer. :P
Text files are not very big, so that is possible.

(18-04-2018, 11:22 AM)venam Wrote: By second memory I mean an extension of your thoughts, thinking, and
physical brain memory. (resident memory but for human)

Interesting.

Let’s list all the places where I keep my memories as a personal example:

I'm thinking about making a wiki or notetaking system. Then I can forget
something, it would be easily available.

It seems that I mostly remember the path to access to things in internet than
making real bookmarks. But then if the path changes, I'm screwed.

Another approach is instead of storing links to documents, storing the actual
document. For whatever .ps, .pdf, .txt, it's easy. Then you can probably do
a full text search on your own machine. :P

(18-04-2018, 11:22 AM)venam Wrote: No, there’s nothing wrong with having your machine helping you remember
things. No, it doesn't make you machine dependent, on the opposite,
it helps considerably. My bet is that you’re already doing all that
I mentioned unconsciously.

Books have had this role before hard drives. Oh, so this is my grand parents
like their bookshelf this much? And the mere fact of saying "I want to
remember this so I put it in a safe place" make me remember that thing more
than any other with no effort. Maybe it acts as a signal to my brain to: "Store
this in a safe place" wherease "I'll remember it later" makes my memory filter
it out...

(18-04-2018, 11:22 AM)venam Wrote: list of whatever you have installed

My take on this is having a tiny (stupid) portable package manager that I can
use on all distros (besides Windows and *maybe* plan9) and have a build recipe
for all package I really care about (mail client, text editor, git, rsync, libressl...).
They get installed in ~/.local/{bin,lib,share/man}. Pretty weird? But hey, it works
and I can have packages for things that are rarely packaged (suckless tools).

(18-04-2018, 11:22 AM)venam Wrote: So that means having everything in your home, having a transportable home.

That might be taking things a little bit too far, as then you have configurations in
/etc, /usr/local/etc, /var, /home/username, /home/git, /root... But I do this, hehe.

(18-04-2018, 11:22 AM)venam Wrote: The script that sets everything up.

AKA poor man's puppet. :P
venam
Administrators
(21-04-2018, 04:51 AM)josuah Wrote: Interesting.

Let’s list all the places where I keep my memories as a personal example:

I'm thinking about making a wiki or notetaking system. Then I can forget
something, it would be easily available.

This reminds me of three recent entries I've shared in the newsletter about this topic:
Are we our tools: https://codewithoutrules.com/2018/03/23/...our-tools/
The Grand Analogy: https://www.edge.org/response-detail/25335
The extended mind: http://cognitivemedium.com/tat/index.html

(21-04-2018, 04:51 AM)josuah Wrote: AKA poor man's puppet. :P
This could be a nice additional idea. Same as containerization and the likes too.
z3bra
Grey Hair Nixers
I'm digging back this thread, as I recently decided to cleanup my workstation (running crux 3.4). I had 2 drives hanging around, doing nothing so I am doing an experiment:

- reinstall crux 3.5 from scratch, amd remounting /home from last install (hdd)
- install openbsd 6.6 from scratch, and recreate my environment there (ssd)

In the end, the environment should be somehow the same (same software installed, and dotfiles, if any), but the way to get there is totally different.
I want to see how hard it is to recreate it from scratch on the openbsd drive, and how dirty my clean crux 3.5 system becomes when I recreate the environment arounf mmd an existing /home.

Sonfar, both systems are up, and I boot in crux from now on. My "fresh" system is surprisingly useful out-of-the-box, because I started installng more and more software in ~/.local (like st, wmutils, sxhkd, ...) this has the nice benefit of feeling right at home on a new install ! Pretty cool so far. however, many software didn't work right away because librairies where missing. I should compile them statically perhaps ;)

I can't wait till I rebuild my workflow on openbsd now, to see how tedious it is. That's gonna be complex, as my /home currently lives on an LVM partition, so I don't have any way to read it while on openbsd. And Linux cannot mount openbsd UFS in rw either.... Good times ahead ^^
venam
Administrators
(14-03-2020, 09:00 PM)z3bra Wrote: I'm digging back this thread

I've had a similar epiphany. Since writing about the topic, digging into UX/UI, and anything rotating around it, I've taken a different approach to computing.

A book I've recently read goes a long way in explaining it, it's called the design of everyday things. It's premise is that if you're not able to use a tool don't blame yourself, blame the tool. Another one is about asking yourself why would you have to learn different behavior to do the same thing with different tools.

So, with this in mind, I've settled on a vanilla reproducible setup that has the less friction possible between me wanting to do something and it happening. I got a text file with the list of everything that was every installed and customized on the system, a script to rebuild the symbolic links for configurations if ever needed. And that's mostly it.

I've taken to heart the habit of questioning a tool once I experience a discrepancy or lag between what I want to do and what's actually going on.

There's a similar exercise I do with my programming environment IDEs called a Code Kata.
twee
Members
(15-03-2020, 05:56 AM)venam Wrote:
(14-03-2020, 09:00 PM)z3bra Wrote: I'm digging back this thread
Another one is about asking yourself why would you have to learn different behavior to do the same thing with different tools.

Maybe I'm slightly missing the point, but I find all these arguments slightly unfair. The ultimate goal of both a cello and a trumpet is to make music, but that doesn't mean that either should be blamed for the fact that they approach that goal in a different way. Should a kazoo be the only instrument, because it is the only one that one can immediately play a tune on? It can also be hard to know what is good design and what is learnt: I remember listening to some recordings of Microsoft testing the double-click system, which didn't seem to come at all naturally to some people.

It might be that I'm beating a strawman, in which case I apologise. Anyway, my personal way of partially solving the situation is mostly to push as much as possible into email: I keep my notes in email, emails in email (but not a full archive, just things I care about), news in email, and appointments are mailed to me. Wherever I am, it's easy to access and I can use various different interfaces. This requires a collection of shell scripts, which is not ideal, but my primary problem at the moment that I'm trying to solve is avoiding external services and minimising the need for internet connectivity; it happens that lessening ties with any particular machine has partially arisen from that.

Tangentially, I've been meaning to read the design of everyday things. Is it worth it?
neeasade
Grey Hair Nixers
> Tangentially, I've been meaning to read the design of everyday things. Is it worth it?

It's a great read -- helped me change my perspective on how I interact with tools and interfaces in my day to day.

WRT this thread, I moved most of my ties into emacs, so I just need a platform that can lift me into my elisp playground. I suppose that might be an approach of complexity, embrace big meta tools that let me do what I like (I'm a nix/nixos user as well) -- my line of thinking is that I'll be happy with the right "big tools" that let me create what I want -- I think from a "ties to a machine" POV this actually simplifies things, since you have fewer targets/tools that enable tools by owning more of the environment
twee
Members
(16-03-2020, 04:25 PM)neeasade Wrote: I moved most of my ties into emacs, so I just need a platform that can lift me into my elisp playground.

That's pretty much what I had for the last six months or so; a single literate org configuration, for all my tools, and some bootstrapping scripts to tangle it. The configuration was sorted by category, so I had a mail section which held the dotfiles for msmtp, mpop, mairix, rmail, and the parts of the guix profile necessary to install those programs, an interface section for xresources, emacs theme, and the gui lobotomisation, and so on. I found this very beneficial in working out what was actually necessary for each way I interacted with the computer and how they linked together.

I didn't like using features written exclusively as part as Emacs though (org mode for example), preferring to use tools which Emacs was simply an interface for (such as shell or rmail), and I've been moving away from Emacs because of this. I've started tentative designs for something similar to Acme but keyboard-oriented to fill this niche for me but ultimately I'm not sure what I want.

But whatever happens, whatever I think idealistically, you can guarantee that I'm going to back on Emacs in a month or so, because I'm addicted and can't get away from it.
venam
Administrators
(16-03-2020, 02:08 PM)twee Wrote: Maybe I'm slightly missing the point, but I find all these arguments slightly unfair. The ultimate goal of both a cello and a trumpet is to make music, but that doesn't mean that either should be blamed for the fact that they approach that goal in a different way.

Instruments are not "everyday things", so it's a bit of a strawman. Maybe a better way to explain it would be to say that there needs to be less friction, less disconnection, with the things you don't really want to have to think about. They need to happen without a thought so that you can get on and do what is actually of importance to you, be it playing the trombone or the kazoo. That's why re-learning is a bother because it takes time away from what you really want to do. Standards are of tremendous help but customization can be too if it fits your special workflow.
I think the metaphor of the extended mind and the grand analogy that I linked previously are great.
z3bra
Grey Hair Nixers
I think I get what venam means here: switching tools takes you away from your original goal. When I want to take notes, I don't wanna bother with learning how to save (:w ? c-x c-s ? c-w ?), so if all editors had a common way to do it, that'd be easier to switch tools.

I don't particularly agree with that though, as this would prevent having good idioms like vi's mosal edition, which is just so different from traditional edition. It's aboit choice after all, so the best way to lessen ties woth a machine is to provide multiple alternatives. For example, ubuntu has both vi and nano by default. Openbsd integrated mg specially for that: providesimple alternatives on the base system.

I personally think that to lessen the burden of "learning tools", the best solution is to provide a common intrrface to them, so you are not surprised when learning the tool. OpenBSD does it right, as all the configuration format for their tools are STRICTLY the same. Take nsd or httpd, both will use the same keywords to listen on an interface. They also all have great manpages with a good documentation, organized in the same way.
If their was a common ground for all unix tools, that would be much easier to swap systems, I guarantee it !

Now until we get that, I'll keep installing stuff statically to ~/.local so I can easily "migrate" from one system to another ☺
neeasade
Grey Hair Nixers
@z3bra hear hear.

@twee FWIW I've definitely gone the other direction, folding {git,shell,notes,irc,dev,dmenu,...} into emacs. For me the benefit is the blended experience between everything I pull in, going for the extended feel that @venam has mentioned.
twee
Members
(18-03-2020, 11:14 AM)neeasade Wrote: I've definitely gone the other direction, folding {git,shell,notes,irc,dev,dmenu,...} into emacs. For me the benefit is the blended experience between everything I pull in

This is why I'm currently staying with Emacs, but in the long run I don't feel like emacs entirely fits the model I want. I like Emacs frontends to stuff currently because of the uniformity, but want to be able to also not use Emacs if I so choose, if that makes sense.

(18-03-2020, 05:24 AM)venam Wrote: Instruments are not "everyday things", so it's a bit of a strawman.

My apologies, I thought that might be the case, but it wasn't the intention, I was genuinely confused.

(18-03-2020, 05:24 AM)venam Wrote: That's why re-learning is a bother because it takes time away from what you really want to do.

I think that this is always going to be something of a problem with computers in their current incarnation, because the metaphors are imperfect and different people prefer different interpretations of them. At the start of the year I started writing my notes on real life paper after a long time using various plain-text systems, because for what I want it's the best way. Overall I never really re-searched them a whole lot, and I've had a lot of fun experimenting with indexing systems. Yes, it's not automated, but I think that having to do it manually has actually helped me to write better notes in the process.

That's probably a very different kind of less ties with a machine than you were thinking of, but it's working for me :P

(18-03-2020, 05:56 AM)z3bra Wrote: if all editors had a common way to do it, that'd be easier to switch tools. I don't particularly agree with that...

I agree, because then there'd also be less point to switch tools. The CUA standard is pretty much this, and while it's great to be able to use Pages or Word or whatever and know what keys do, like you say the power of individual applications is lost.

(18-03-2020, 05:56 AM)z3bra Wrote: the best solution is to provide a common intrrface to them, so you are not surprised when learning the tool.

Yep, as I mentioned to @neeasade this is why I'm currently using Emacs still and why I'm so interested in Acme.


(18-03-2020, 05:56 AM)z3bra Wrote: OpenBSD does it right

OpenBSD is definitely my favourite unixy system, unfortunately the battery life was so bad on my laptop that I had to move away :(


(18-03-2020, 05:56 AM)z3bra Wrote: Now until we get that, I'll keep installing stuff statically to ~/.local so I can easily "migrate" from one system to another ☺

I used to do a similar thing, but now I use Emacs...
stratex
Nixers
If it's a short gig you can carry a flash drive with your preferred setup.
If it's a long term employment you can write a bootstrapping script to install and configure your working env.
For servers default vim is almost enough, most of the time you edit config files or looking at logs.
If it's an employer which requires: Windows 10, .NET, corporate spyware preinstalled, no Linux, code in VSCode only (unified environments, group policies, you are not an Admin), you know what to do in this case, calm down, breathe, walk away without explanation, there are nothing to fix here.
Guest0x0
Members
I feel that NixOS really provides a solution to this.

The fact that system iis "tied to" a machine is actually because the actual behavior of the system is distributed and hidden in the file system, through various small configs, command calls, etc. If every detail of the system is "reachable" from somewhere, or even better, they are stored centrally somewhere, then the system naturally becomes portable.

NixOS tries to put everything in the config file of NixOS itself, in this way, once you have the NixOS config file, you have your whole system. There is also home-manager, which manages user dot files as well.

Another thing I really like about NixOS is that its package system is so flexible. The fact that NixOS uses a programming language to describe packages implies that you can customize the build option, etc. of any package, *while keeping it completely managed by the package manager*. Which makes tweaked packages much easier to manage and port.
opfez
Members
(09-12-2020, 12:30 AM)Guest0x0 Wrote: I feel that NixOS really provides a solution to this.

The fact that system iis "tied to" a machine is actually because the actual behavior of the system is distributed and hidden in the file system, through various small configs, command calls, etc. If every detail of the system is "reachable" from somewhere, or even better, they are stored centrally somewhere, then the system naturally becomes portable.

NixOS tries to put everything in the config file of NixOS itself, in this way, once you have the NixOS config file, you have your whole system. There is also home-manager, which manages user dot files as well.

Another thing I really like about NixOS is that its package system is so flexible. The fact that NixOS uses a programming language to describe packages implies that you can customize the build option, etc. of any package, *while keeping it completely managed by the package manager*. Which makes tweaked packages much easier to manage and port.

Right now I mostly just use the Nix package manager on Arch to provide Haskell, but all of this sounds very nice. I'll keep this in mind the next time I'm reinstalling Linux.
jkl
Long time nixers
NixOS works just like GuixSD in these regards. Still, you’re tied to this very configuration format then.

--
<mort> choosing a terrible license just to be spiteful towards others is possibly the most tux0r thing I've ever seen
Guest0x0
Members
(09-12-2020, 06:22 AM)jkl Wrote: NixOS works just like GuixSD in these regards. Still, you’re tied to this very configuration format then.
Well, historically NixOS comes earlier. But the two systems are very similar, and people from the two are close, too. So to some extent they are the same under the context here.

Certainly you are now tied to the very distro and config format, but people usually don’t expect a completely identical system and/or small amount of work, while they do expect so when switching to another hardware. People switching distro are seeking changes, so that case is not the concern of this thread, I guess.
stratex
Nixers
No one expects you to learn yet another programming language just to switch distribution. If you know python,bash, and somewhat of C you are good to go for any linux distro, except those two, where they push you to learn lisp dialect. It isn't for everybody.
opfez
Members
(09-12-2020, 07:39 AM)stratex Wrote: No one expects you to learn yet another programming language just to switch distribution. If you know python,bash, and somewhat of C you are good to go for any linux distro, except those two, where they push you to learn lisp dialect. It isn't for everybody.

Nix is configured with the Nix language, inspired by Haskell and not Lisp. The distros are different in that regard. Judging from the configuration examples of Nix, it looks easy enough to manage a config like that even if you're not proficient in Haskell.
These languages were also chosen for a reason: They provide more power and flexibility. If we continue to use shell, C and Python forever, we'll never advance the *nix landscape. I think the fact that they stray from the usual format is good because it breeds innovation.
I do understand how you feel though. As an example, Rust uses TOML for Cargo configuration which is basically the only place that configuration language is used.
freem
Nixers
I'm surprised that the only tool for automated configurations mentioned (very quiclky) in that thread seems to be puppet... and is only mentioned as "the poor man's puppet".
I am personally quite interested in that topic, which is why I am (slowly) building my own debian installer, of which having an acceptable PXE configuration is only the 1st step (it's not good enough for me), and I have found various tools to achieve that goal, that I would split in 2 categories, each having different contraints:

* agent-based tools, which usually derive from cfengine, which agent is written in C (puppet being one of them). They are (probably) great when you are actually admin of the targets, and have the right to install stuff. They (should) allow a system to auto-repair or to inform it's administrators about the derive from the repository from which their configuration is derived
* independent tools, which seems to all be some fashion of interpreted language. I know more about rexify, which is written in perl, there are some in bourne script, but the most well known nowadays seems to be written in python.

I don't really think a package manager can do the trick here, not alone at least, you'd need some way to trigger it, and a cron tab for updates will just break stuff at a moment or another, except if you own your repo and validate the packages you put there, but that's a lot of work
jkl
Long time nixers
I surely hope that Python will fall into obscurity soon. It was an awful idea to overrun the Perl ecosystem with a teaching language as a vehicle. The victims are yet to be identified.

TOML predates the rise of Rust though.

--
<mort> choosing a terrible license just to be spiteful towards others is possibly the most tux0r thing I've ever seen
venam
Administrators
Alright, one of my favorite thread.
I've been trying out nix the past few days and as the people in this thread have noted, it's indeed a wonderful way to have less ties with a machine.
Do you have new tricks or ideas related to that topic? Maybe things related to nix or nixOS too?