diff options
author | mms <michal@sapka.me> | 2024-06-21 20:29:53 +0200 |
---|---|---|
committer | mms <michal@sapka.me> | 2024-06-21 20:29:53 +0200 |
commit | 83aeb3094b1efbc551399322f433cd7b10ce9ded (patch) | |
tree | 8498c560bca067a321971bb56ffc1c4c427c66c6 /content-org/blog.org | |
parent | 32247378e71b3b89d66f19af8c7c12074cdbc149 (diff) |
feat: move some articles back to blog
Diffstat (limited to 'content-org/blog.org')
-rw-r--r-- | content-org/blog.org | 801 |
1 files changed, 801 insertions, 0 deletions
diff --git a/content-org/blog.org b/content-org/blog.org index b76c838..577cda4 100644 --- a/content-org/blog.org +++ b/content-org/blog.org @@ -2257,6 +2257,801 @@ But, most importantly, The Weaver published _TWO_ new articles on computer histo - [[http://wovenmemories.net/2024/01/02/Subroutines.html][Subroutines]] + +** 2023 +:PROPERTIES: +:EXPORT_HUGO_SECTION: blog/2023 +:END: + +*** DONE Ownership in the digital age :@update: +CLOSED: [2023-12-08 Wed 23:00] +:PROPERTIES: +:EXPORT_FILE_NAME: digital-ownership +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract Digital economy has taken over and with this we need to reevaluate what it means to actually own something. In this article I try to present my definition of ownership and what results from it. +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :aliases '(/articles/digital-ownership) +:END: + +It is often said that you can't own anything unless you have a physical thing in your hand. +So, any digital purchase is not ownership. +A Blu-ray is. + +> ... And in the case of "Oppenheimer", we put a lot of care and attention into the Blu-ray version […] and trying to translate the photography and the sound, putting that into the digital realm with a version you can buy and own at home and put on a shelf so no evil streaming service can come steal it from you. ... \ +> Christopher Nolan + +This made me wonder and the longer I thought, the less I could agree. +The simple fact that you own the carrier does not necessary mean that you own the content. + +**** 1. What it means to own something? + +Here are a few questions I asked myself to get to that conclusion + +- *Can you access it?* +This is simple. +I have paid for it, can I access it assuming all requirements are fulfilled? +If not, this is a scam. +- *Does it require subscription?* +Do I need to pay again to use it? +Case in point: any SASS. +You don't own any Netflix content. +- *Can you run it locally?* +I have paid for it. Can I run (play) it on my local machine? +Or is the provider infrastructure needed? +Example: any cloud software. +You can't run Notion on your machine. +- *Can someone take it from you?* +Can someone block me from accessing it? +Case in point: Amazon removing copy of /1984/ from Kindles[^1984]. +Note, that the situation where law enforcement or judge can take it from you is completely valid. +We have a different relation with governments than with private companies. +- *Are there any locked features?* +Are there features provider can use, but you can not? +You need to /hack/ your android device to gain root privileges. +- *Can you sell it?* +Can I sell my copy? +You can't sell previously bought game on Steam[^steam-acc]. +- *Can you back it up* +Can I create a copy in case of breaking the original? +Disks can break and data stored on them can rot. +You can't back up Blu-ray without defeating DRM mechanisms. +This is the first moment I disagree with Nolan. +- *Can you copy it?* +Can you create an identical copy? +It's a digital entity, so identical copy is the easiest out there. +I don't mention selling here, just to create a copy. +Again, Blu-ray with DRM block copying. +- *Can you borrow it?* +Can I borrow it to a friend? +You can borrow a Blu-ray, but not a Kindle book or PSN game. +- *Can you access it on wide range of devices?* +Can I access it on a device fulfilling technical requirements? +I don't expect to run an TRS-80 game on PlayStation 5, but why can't I play my DVD bought in Europe after traveling to North America? +Ergo, any DRM "secured" digital good is not owned. +- *Can you modify it?* +Can you change the home screen layout of iPhone outside what the designers provided? +- *Can you repair it?* +A bit self-explanatory. +Can you repair your MacBook assuming you have the skills required? +What about the Windows copy you use? + +[^1984]: [[https://archive.nytimes.com/pogue.blogs.nytimes.com/2009/07/17/some-e-books-are-more-equal-than-others/][Some E-Books Are More Equal Than Others]] +[^steam-acc]: I know that people sell entire Steam accounts with games, but this is bypassing the no-sell policy; not a feature. + +Nowadays, it's almost impossible to make a transition regarding a digital good which would tick most of those ticks. +Back before everything went digital it would be difficult to find cases which *wouldn't*. +Not all of them, as it would be difficult to copy a refrigerator (but not impossible) but the sentiment remains. +It used to be that owner was able to exercise much broader freedom of usage. + +**** 2. Impact of ownership on my perceived value + +As I've hopefully explained before, almost all digital goods on the mark don't fall into "possible to own" category. +But if we pay for it, where does it leave us? +I needed a word to define the result of transaction which does not pass ownership. +And there is such word: /rent/. + +Renting was always there. +I would rent videotape for a local rental. +I would rent a book from local library. +I would rent a car from car rental company. +None of these were ever considered a /purchase/, because why would we? +I paid for access, but whatever I rented was still owned by the other party. + +This is not the exact case as with the primary subject here. +I am lured to believe that I own "my digital purchase" because the timeframe is not defined upfront. +Therefore, I think of a Steam, Amazon, PSN, iTunes "purchase" as indefinite renal. +I may lose access at any moment[^sony], I just don't know when. +It may happen due to multitude of reasons: the company may go bankrupt, the license may expire[^sony], my account may become blocked[^sony2], or the company may pull out and close the service[^google]. +[^sony]: [[https://arstechnica.com/gadgets/2023/12/playstation-is-erasing-1318-seasons-of-discovery-shows-from-customer-libraries/][PlayStation is erasing 1,318 seasons of Discovery shows from customer libraries]]. Seriously. +[^sony2]: [[https://www.indiatoday.in/technology/news/story/several-playstation-users-locked-out-of-their-accounts-get-permanent-suspension-message-from-sony-2472107-2023-12-05][Several PlayStation users locked out of their accounts, get permanent suspension message from Sony]] +[^google]: [[https://www.wired.com/story/google-stadia-shutting-down-phil-harrison/][The End of Google Stadia]] + +The wording here is exact: I may /loose access/. Yup, this is what I mean when I think of renting. + +There was, however, one huge benefit of renting when compared to buying: the price. +It was always much cheaper to rent a move than buy one. +It made perfect sense. +I was able to watch a rented movie for a few days, and then return it. +The renter would invest in purchase, I would pay a small amount and the world would still do its thing. + +In the digital age this gain is no longer valid. +When renting becomes the only option, there is no reason to offer it cheaper than ownership. +And therefore renting of digital goods is expensive. + +Too expensive. +If we start to think that the "buy" button actually means "rent", that $60 shiny new game stops making so much sense. + +**** 3. Digital scarcity + +But since it is commonly understood as "purchase", then companies can try to use our collecting impulses. +And they are strong, just look at any random tech channel. +People want to collect, and to put things in their collections. + +Steam library is often a reason to brag about. +I have a thousand games they say! +I played 10, but I have 1000! + +And so there are preorders. +Get you digital purchase early, be the first to own it. +Get *rare* add-ons (as if anything digital can be rare). +Pay extra for super-duper version with limited horse armor (nothing stops them from releasing the bonus content later on). + +The idea come from olden days, where getting stuff soon may have been the only way to actually get it. +If it's vinyl record they are selling, they indeed may run of it. +If it's download, the only way to stop next person from it is greed. + +**** 4. "My" page + +A special mention goes to Facebook with their brilliant "My page" marketing. +"Visit our Facebook page" is what I often see and hear. +And yet there nothing "theirs" on that page except of content, to which right were transferred to Meta the moment someone hit "send". +This is (still) free, but using the "My" word is further eroding the meaning of ownership. +Please, don't. + +**** 5 The pirate in the room + +And now the sad part: the closest way to own digitual stuff warez[^dmca]. +Crackers, in order to bypass the DRM mechanism (now called jail breaking) need to remove limitations enforced on the end user. +You can copy a pirated game, you can borrow it, you can modify it, you can archive it. +It's more /yours/ than the biggest of Steam libraries. + +[^dmca]: My views on DMCA are not part of this article. Someday I'll write one and get banned from Google. + +**** 6. Conclusion + +Where does this leave me? +I can't change anything and the transformation to digital-renting of everything is here to stay. +Everyone wants me to rent to something - be it streaming service, or a car company. + +However, when I stopped thinking that I can actually own anything, my perceived value of digital stuff couldn't be lower. +I may drop a few bucks for a digital-download. +But above that? +Hard sell. + +Meaning of words change over time, and they always had. +The definition of "ownership" was clear but no longer is. +The word can mean any financial transaction or be nothing more than marketing ploy. +You can have zero ownership (Netflix), a bit of it (PSN), a lot of it (GOG[^gog]). +And this gradation correlates my interest of doing business. +I'll **gladly** pay an author for a DRM-free PDF of their book if I can download it. +I'll happily buy a DRM-free game from GOG. + +But below that level of purchasing? Well, I can either skip it completely or think of other ways of obtaining it. + +[^gog]: [GOG 2022 update #2: our commitment to DRM-free gaming](https://www.gog.com/news/bgog_2022_update_2b_our_commitment_to_drmfree_gaming). + + +*** DONE On generative content :@update: +CLOSED: [2023-12-20 Wed 22:47] +:PROPERTIES: +:EXPORT_FILE_NAME: generative-content +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract I don't believe that AI will kill us, but I strongly believe it will lessen us. Here I try to describe that by looking at impact on art, culture, tech, and potential benefits. +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :aliases '(/articles/generative-content/) +:END: +It seems that generative content from "modern" AI models has been with us forever. +In reality this is still a new fad. +The feeling is here because it seems that every few days we hear new product or controversy. + +However, I still remember that computers were to be unable to replace humans in /creative/ work. +That the /human/ part is irreplaceable, and machines can only reproduce. +I think it still the case. +But, somehow, artists, techies, and all kinds of other folks all over the world are afraid of loosing their means of living. +Rightfully so. +But why? +**** 1. Mass-art market +When I was younger, I was very into cinematography. +We had so many directors with their voices - Jarmush, Lynch, Smith, Tarantino, Cronenberg, Carpenter, Boyle, Ritchie, Anderson, or Fincher. +And that's just the USA! +They had the voice - even when imitating, the movies were distinctly /theirs/. +They got chances, so we all knew them. +It is no longer the case. +The mid-budget movie is almost non-existent, and that's where the creativity strived. +The popular movies, the ones that make all the money, are indistinguishable copies of each other. +What earns the money is the same, big budget CGI fest without any real meaning or personal touch. + +In photography the end product is so removed from the original, that often it is impossible to see similarities. +Everything that is not perfect is corrected and removed. +We don't see people from posters on the street because they don't exist in the same reality we do. +This is what we call /content/, this shapeless blob filling platforms. + +The mass-market "art" (and I use the term here very loosely) was removed from the /human/ a long time ago. +Why take chances, when we know what will work? +And if you know what will work, why even bother with humans? +An AI can create the script, and we can reuse that 3d model of Bogart - because why not? +What we see and what we pay for is no longer /human/. +It's more machine than that - endlessly modified to be as close the blob of mass appeal as possible. +Indistinguishable from each other. + +And this is where generative algorithms strive. +When we exactly know what we want to produce, where there is a mathematical equation of beauty, we're no longer in *human* creativity. + +Since the most popular /content/ is made from the same mold, LLM models can create it as well. +In fact, it can create it better, as those /imperfections/ that a human might have missed, an AI can easily remove. + +All the Dall-E pictures are perfect. They are impossibly complex and complying to the popular norms. + +They are also boring. +It's the imperfections that make /art/, well, /Art/. +No human creation is perfect and this why computer generated /content/ can not be called art. +It's too studied, too ideal, too perfect. + +But the mass market pulp is what allows /artists/ to live. +This is where they make the money. +This is what pays the bills, what puts the food on the table. +Why pay 50EUR and wait 2 weeks for a Fiver order? +You can get just as good result in 10 minute chat with a bot. + +LLMs have reversed humanity. +I fear that we are getting back to the state where /art/ may come only from /suffering/; +where artists live to create that one piece which may immortalize them, but this life is not what modern world promises. +We are to no longer see /hungry/ people in developed countries. +We are to no longer experience /pain/ in pursue of /happiness/. +Why would anyone choose it? + +Therefore, I am afraid that this will decrease the number of people who choose creativity as their living hood. +Without them, we will be destined to status-quo of mediocrity +It will be perfect, but it will be soulless. + +Just as the mass market is now, just without anyone pushing it forward. +And with us, running the hamster wheel of never ending /content/. +**** 2. Tech market +The other, very popular, use case is code generation. + +GitHub Copilot can translate a short query into an evaluable code. +It is sold as a mean to automate the /boring/ and /repetitive/ tasks - creating boilerplate, configurations, loops, or simple algorithms. +But are those really lesser tasks than the big ones? + +I've been a professional Software Engineer for 10 years now. +My journey has not been the typical, one where one finishes either IT college, or a boot camp. +I'm self-thought, and I joined It Crowd from other occupation by sheer luck. +The company needed /Ruby/ developer and boom - there I was. +Not the perfect candidate, but I was capable, eager and hungry. + +I've made a lot of mistakes, I've wasted a lot of time, I've taken down the production on a few occasions. +All of those could have been avoided if I used a code generation. + +But it's impossible of overstate how important those menial tasks were in making me into a real /Software Engineer/. + +With every mistake, I learned. +With every issue, I became swifter to jump into action, +With every boring, repetitive task[^ruby] I gained insights into how stuff works. +[^ruby]: with /Ruby/ and /Ruby on Rails/ there aren't many of those but still, you do the same things from time to time. + +But the biggest growth came from the most hated task of all - writing tests. +It is there where I learned how to write a usable contract; it is there where I learned the value of documentation-as-a-code[^cdac] +Would I learn anything from "hey copilot, write tests for this class"? +I doubt. +[^cdac]: very often the best documentation of a contract is the test for it. + +This was what every intern/junior would do - the dirty work. +With the dirty work comes the realization that the real world is not perfect, not every code is good and not every developer is good at being a developer. +And with Copilot we are loosing it. + +We are losing it two ways: first, juniors will not learn; second junior will not be hired. +We are already seeing that there are much fewer offers for sub-senior positions. +Why would it be different? +A senior aimed with code generation can do the work of many junior and one senior. +It makes /perfect/ economic sense. + +But this is also the suicide of the industry. +Without new blood, the tech crowd will shrink. +Companies want infinite growth, and will not stop at anything to accomplish it. +We've seen all the visa scandals, the inclusivity actions, the offshoring[^contr]., +It's clear that all those had only one goal: to increase the pool of /cheaper/ candidates. +The typical programmer is expensive; someone fighting to leave poverty is not. +But now the competition is no longer /someone/ cheaper, but rather something that's never tired, and can create infinite number of creations, but is still /cheaper/ than a human can ever be. +When was the last time you tried to outrun a train? +When was the last time you tried to fight a machine to give your children a better start? +[^contr]: this is not the place where I want to address those subjects, but their existence is important for this article. +**** 3. Maybe I am wrong +But what if I am wrong? +We've seen similar things before. +Ever since the beginning of industrial revolution, more and more industries were mechanized and automated. +The machines needed someone to take care of them, to design them. +And the rest of the populi moved to other areas. + +Will it be the same? +Well, how much work does an /algorithm/ need to operate? +We are still in development phase, so we see a lot of people working there. +But when we will reach plateau? +There will be a time when it will be good enough. +A moment when companies will buy it and not expect it to be better. +How many people will be needed then? +What will be left to do? + +Will Universal Basic Income be enough? +It assumes infinite growth, and this may be in the hands of very few, gigantic companies. +We already see how big influence Altman and Open AI has. +There will still be rich, the 1%, so money will still be an issue. +Will we simply do yet another October Revolution? +**** 4. Utopia that is false +The best case scenario is that humanity, as a whole, will ascend. +Free from the shackles of menial task, we will all be poets and explorers. + +This is what /Star Trek/[^old] is all about - a world where we no longer need to create and work to survive. +In place of that, we are free to pursue adventure, knowledge. +With nothing to gain, why one would need power? +Money? +We can focus on the humanity as one entity, to make it better. +[^old]: old Trek, at last. + +In /Star Trek/ this was not created by removing jobs but by presence of /replicators/ - a device capable of creating virtually anything. +No longer food is scarce, we can simply create it. + +Replicators are like LLM, but they create things of intrinsic value. +This is what removed the shakles. +And this is the biggest difference: LLM don't create anything that will actually free us. +It will never make our lives better and freer. +It will make it easier for /few/ on the cost of /many/. +**** 4. Summary + +I believe that LLMs will steal of us younger talent, who has yet to make a dent. +They won't have the chance to learn and earn on the basic stuff, so they will not be in position to create the big thing. +The cost of using LLMs is so low (and will only become cheaper), that there will be no place for them. +And I am afraid that the post-LLM market can find worthy place for them. + + +** 2022 +:PROPERTIES: +:EXPORT_HUGO_SECTION: blog/2022 +:END: + +*** DONE Dynamic DNS +CLOSED: [2022-05-13 Fri 22:26] +:PROPERTIES: +:EXPORT_FILE_NAME: ddns +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract DDNS is a DNS for folks with non-static IP. Here I try to choose the best for me. +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :aliases '(/2022/ddns/ /articles/ddns/) +:END: + +I am one of the unlucky ones without static IP address. +I would get one from my ISP, but this would require me to upgrade to a business contract. +And to do such upgrade, I would need a company - which I do not own nor have I any plans to own in the near future. +Luckily, I can still have a domain. +There is a group of services under the umbrella term Dynamic DNS. + +[[https://wiki.archlinux.org/title/Dynamic_DNS][DDNS on Arch Wiki]] + +Basically, I need to point my domain to their name server and keep them up to date with changes of my IP. +The DDNS server acts as a middle-man when using a normal domain. +In most cases, I just need to fetch a given URL periodically ad the service will treat this as current IP set. + +**** Self hosting vs 3rd party + +There are ready-made packages I could install on any VPS, but debugging DNS is not something I would like to do. +Therefore, I will go with 3rd party. + +I looked through the interwebs for providers and found lots of them. +Unfortunately, most of them are dead, so the choice is much less difficult. + +**** Requirements + +After a short analysis, I came up with few requirements: + +| Max number of domains | 3 | +| Max number of subdomains per domain | 20 | +| Expected uptime | 95.5 | +| Location | Europe/USA | +| MX Records | YES | +| TTL | 10min | + +**** Instant rejects + +I instantly rejected some providers, since they will now work for my use case: + +| Service | Reason? +|-----------------------+----------------------------- +| activedns.co.za | South Africa only +| bcu.cc | Site does not open +| ddns.nu | Site does not open +| dhcp.io | Domain for sale +| dhs.org | Site does not open +| dns.widge.net | Site does not open +| dnsdynamic.org | Some random site under the address +| dnsmadeeasy.com | It's namecheap now +| dnspark.com | It's namecheap now +| dtdns.com | Broken site +| dyn.ee | Domain for sale +| dyn.ro | Domain for sale (I think) +| dynamicdomain.net | Site reads like poor phising attempt +| dyndsl.com | Domain for sale +| domain-dns.com | Not accepting new zones +| dyndnsservices.com | Offers self-host only +| dynfree.com | Broken site +| dynup.net | Broken site +| hldns.com | No longer offers DDNS +| hn.org | Site does not work +| homepc.org | Site does not work +| hub.turnkeylinux.org | Site does not work +| microtech.co.gg | Site does not work +| minidns.net | Site does not work +| myonlineportal.net | Only 10 domains per account +| myserver.org | Broken site +| nettica.com | Domain for sale +| nicolas.cx | No sign-up via web +| nubem.com | Site does not work +| ods.org | Domain for sale +| powerdns.com | Self hosted solution +| prout.be | Self hosted solution +| spdns.de | No english site +| system-ns.com | No longer offers DDNS +| tzo.com | Site does not work +| whyi.org | Site does not work +| worldwidedns.net | Does not support enough zones +| xname.org | Site does not work +| yi.org | Site does not work + +## The potential ones + +After removing most positions from list, I dig a big deeper: + +| Service | Price | Uptime | Location +| | per year | | +|-----------------------+---------------+-----------+--- +| changeip.com | $6 | 99.9% (1) | USA +| dhis.org | Donation | ? | ? +| dns2go.com | lots$ | ? | ? +| dnsexit.com | FREE for TLD | 100% | Distributed +| duckdns.org | FREE | ? | ? +| duiadns.net | $11 | ? | ? +| dynaccess.de | 22EUR | ? | Germany +| dynamip.com | $48 | ? | ? +| dyndns.berlin | FREE | ? | Germany +| dyndns.com | $55 | ? | ? +| dyndns.dk | FREE | ? | ? +| dynip.com | lots$ | ? | ? +| dyns.cx | Donation | ? | ? +| dynu.com | FREE | 100% (2) | Distributed +| easydns.com | FREE | 100% | ? +| freedns.afraid.org | $60 | ~99.3%(3) | ? +| noip.com | $24.99 | 100% (2) | ? +| planetdns.net | $299.95 | ? | ? +| staticcling.org | FREE | ? | ? +| thatip.com | $48 | ? | ? +| thebbs.org | FREE | ? | ? +| totaluptime.com | $1188(SIC!) | ? | ? +| zonomi.com | lots$ | ? | ? + + - [(1) whtop.com](https://www.whtop.com/review/changeip.com) + - [(2) comparingtech.com](https://www.comparitech.com/net-admin/dynamic-dns-providers/) + - [(3) dnsperf.com](https://www.dnsperf.com/dns-provider/afraid-org) + +Notes: +- "?" - I couldn't find data, but also I wasn't looking very hard +- "lots$" - some providers have a complicated pricing and at first glance it was obvious, that it will be expensive. + + As we see, some working providers are crazy expensive. They add extra features, but still - crazy expensive. + +**** Conclusion + +DDNS is a strange market. It's mostly dead. But when the service is still available, it seems to be run from someone's basement. There are companies in the space, don't get me wrong - but most of it looks like hacker culture byproduct. And this makes sense, since the primary use case for DDNS is someone without static IP - ergo, an individual and not a company. + +The sad aspect of this is lack of any SLAs in most cases. + +The happy aspect of this is that you can get a lot for very little. + +**** Decision + +Looking at the data, I have decided to go with dynu.com as it has 100% uptime, and it's free. + +**** Setting up dynu.com on Synology + +First, create a dedicated IP update password on dynu.com. It's optional, but highly recommended. + +Then, in Synology Control Panel open External Access, then click on "DDNS" tab. Click "Customize Provider" and set query URL to + +#+BEGIN_SRC +https://api.dynu.com/nic/update?myip=__MYIP__&username=__USERNAME__&password=__PASSWORD__&hostname__HOSTNAME__&myipv6=no +#+END_SRC + +Now, add a subdomain. Note, that it would be best to MD5 the password. + + + + + + +*** DONE GNU Stow :@update: +CLOSED: [2022-06-09 Fri 22:26] +:PROPERTIES: +:EXPORT_FILE_NAME: gnu-stow +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract GNU Stow is a tool for managing symlink farms, used primarily for dotfiles. Here you can find a short guide on how to use it. +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :aliases '(/articles/gnu-stow) +:END: +If you are working with Linux/BSD based system, you are most likely accustomed to managing your configs with dotfiles. +And you most likely have them stored with Git. +But there is the never ending problem of how to actually use them. +I have moved management of this under GNU Stow. + +Let's take a very typical dotfiles repository. + +#+BEGIN_SRC shell +./nvim/init.lua +./tmux/tmux.conf +#+END_SRC + +You want to have those files available as + +#+BEGIN_SRC shell +~/.config/nvim/init.lua +~/.tmux.conf +#+END_SRC + +The most popular approach would be to symlink the files under the expected location. +We could also copy the files every time something changes, but that would be crazy. +Are we the stuck with having to do those symlinks manually every time we install a new machine or create a virtual one? And what if we have dozens of such configs stored under git? + +**** Symlink farm + +GNU Stow is a symlink farm. +This means, that it's a system aimed at automating creating of those symlinks. + +[[https://www.gnu.org/software/stow/manual/stow.html][GNU Stow website]] + +For Stow, the dotfiles directory is called "Stowed" directory. +Now comes the cool part. +Each folder in the Stowed directory (called "Package directory") stores a separate directory tree. +GNU Stow will join all those separate trees and create a proper structure under Target Directory, which by default is the parent of Stowed directory. +Let's look at example. + +#+BEGIN_SRC shell +~/target/stow/one/config/one.conf +~/target/stow/two/config/two.conf +~/target/stow/three/config/three.conf +#+END_SRC + +So, our home director now has a "Target" directory, which has a "Stow" directory. +The Stow directory stores three configs which we want to symlink as + +#+BEGIN_SRC shell +~/target/config/one.conf +~/target/config/two.conf +~/target/config/three.conf +#+END_SRC + +Let's stow the first one + +#+BEGIN_SRC shell +cd ~/target/stow +stow one +#+END_SRC + +And see what happened + +#+BEGIN_SRC shell +cd ~/target +ls -lA +#+END_SRC + +We get something like + +#+BEGIN_SRC shell +lrwxrwxrwx 1 msapka wheel 15 Jun 9 23:01 config -> stow/one/config +drwxr-xr-x 5 msapka wheel 4096 Jun 9 22:55 stow +#+END_SRC + +Stow created a config symlink in the target directory. +Very cool, but it gets cooler! Let' stow the second one + +#+BEGIN_SRC shell +cd ~/target/stow +stow two +#+END_SRC + +and what we get + +#+BEGIN_SRC shell +drwxr-xr-x 2 msapka wheel 4096 Jun 9 23:03 config +drwxr-xr-x 5 msapka wheel 4096 Jun 9 22:55 stow +#+END_SRC + +Our config is no longer a symlink, but a real folder. +Let's see what's inside here. + +#+BEGIN_SRC shell +cd config +ls -lA +#+END_SRC + +#+BEGIN_SRC shell +lrwxrwxrwx 1 msapka wheel 27 Jun 9 23:03 one.conf -> ../stow/two/config/one.conf +lrwxrwxrwx 1 msapka wheel 26 Jun 9 23:03 two.conf -> ../stow/one/config/two.conf +#+END_SRC + +We have our two configs, but what has happened? +Stow looked at both subtrees for "one" and "two" and joined them in a way, that is possible. +The only way for one.conf and two.conf to exist in config is if config is a normal directory. Extremely cool! + +Let's image that our target is actually homedir, so we have a ~/dotfiles directory. +Then each package directory can mimic the tree structure of the actual config! Coming back to our example, we can have a + +#+BEGIN_SRC shell +~/dotfiles/tmux/.tmux.conf +~/dotfiles/nvim/.config/nvim/init.lua +#+END_SRC + +Then, after stowing both packages we have symlinks under our desired + +#+BEGIN_SRC shell +~/.config/nvim/init.lua +~/.tmux.conf +#+END_SRC + +GNU Stow is a very simple tool. All we need to understand what will happen with each subtree. + + +*** DONE Adding simple music server to my network +CLOSED: [2022-05-25 Fri 22:26] +:PROPERTIES: +:EXPORT_FILE_NAME: music-server +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :abstract As part of my partitioning with streaming services, I have created a small music server on my home network. This article touches on how to get music, how to store and how to actually listen to it. +:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :aliases '(/articles/music-server /2022/music-server) +:END: + +/This is an old article, and even though it is still valid, I no longer use Linux/ + +One of my goals for 2022 is to not pay for music subscriptions anymore. +Nowadays, it's really easy and cheap to actually own my music. + +**** Getting music +Internet is full of cheap, used CDs and new music is ready for purchase on sites like Bandcamp. +Since I mostly listen to dead people, CDs are my primary source. + +The first problem is having something to put a disc in. +I've gotten myself a cheap USB-CD/DVD drive. +It's very loud, but since I use it only for getting the data to my computer, it's not a problem. + +I rip (a word that I have not seen in a long time) on MacBook using XLD app. +I plan to move this step to Linux soon. + +[[https://tmkk.undo.jp/xld/index_e.html][XLD homepage]] + +I rip the music to FLAC, which seems to be standard. +It's lossless and most file-based players have no problems with it. +Of course, not everywhere. +iOS is always problematic, but I don't listen to music on the go very often, so it's a problem for future me. + +A single album in FLAC takes about 200-300 MB. +I still remember MP3 days, where it would go down to 60 MB or less, but back then storage and transfer were actually expensive. +I don't hear any noticeable difference between FLAC and good compressed file, but again - storage and transfer is cheap, Furthermore I have a single high-res album where half an hour takes 750 MBMB and there is zero difference. +Well, now I know, and I won't buy-high res ever again :) + +**** Storing and serving music + +The music will be accessed by multiple devices on local network, so putting it on the Home Server makes perfect sense. +I now have a dedicated share "music" which is shared via Samba and NFS. + +Samba seems better than NFS, but then NFS on Linux is simpler to set up. + +For Samba, I need to add read+write access to Music share for each user from Synology web UI. + +NFS on the other hand doesn't support users, but devices instead. +The first step is to set static IP for my devices (which is always a good idea). +How exactly this should be approached depends on the setup, but I use UniFi Dream Machine and forcing IP for a device is very straight forward. +After I have static IPs, I can add read/write access for those addresses, also via Synology web UI. + +Served music is so small, that this does not add any noticeable overhead for the server. + +**** Accessing the music on Linux + +First, I needed to install NFS support. I use Arch, so: + +#+BEGIN_SRC shell + pacman -S nfs-utils +#+END_SRC + +Then I checked if the share actually exists. My server's address is 10.0.1.200. + +#+BEGIN_SRC shell +showmount -e 10.0.1.200 +------------------ +Export list for 10.0.1.200: +/volume2/music 10.0.1.10 +#+END_SRC + +Voilà! Next step: check if it works + +#+BEGIN_SRC shell + mkdir /mnt/music + mount 10.0.1.200:/volume2/music /mnt/music/ + cd /mnt/music + ls +#+END_SRC + +And listing worked. +Noice. +To automate it for future, and to allow non-root users to actually mount the drive I added a new mount to /etc/fstab: + +#+BEGIN_SRC shell +10.0.1.200:/volume2/music /mnt/music nfs _netdev,noauto,x-systemd.automount,x-systemd.mount-timeout=10,timeo=14,users,x-systemd.idle-timeout=1min 0 0 +#+END_SRC + +After the first user accesses /mnt/music, the drive will be mounted. + +**** Playing the music using CMUS + +We have access to the files, let's play it. +Every modern music player for Linux should work with Flac, but I've chosen CMUS. +It's fast, it's terminal based, and it supports VIM keybindings. + +[[https://cmus.github.io/][CMUS on Github]] + +#+BEGIN_SRC shell +pacman -S cmus +#+END_SRC + +After we open cmus, we need to add music. +It's done similarly to VIM, via an ex command. + +#+BEGIN_SRC shell +:add /mnt/music/ +#+END_SRC + +And a few seconds later, the music is visible in the player. +Using CMUS requires reading the manual + +#+BEGIN_SRC shell +man cmus-tutorial +#+END_SRC + +but the basics I needed to play something from Artist/Album view were: + +| key | descrition | +|-------+---------------------------------------| +| j | go up | +| k | go down | +| tab | change active window (artists/tracks) | +| space | expand artist to album list | +| c | play track / pause track | +| e | add track to queue | +| q | exit | + + +Extra bonus: after first configuring system I had some problems with audio not working from time to time. +Moving from Pulse to Pipewire solved them all. + +[[https://pipewire.org/][Pipewire webpage]] + +**** Listening on Mac via CMUS + +I have no idea how to auto mount a server on MacOS, so after every reboot or network change, I need access the Samba share via Finder. +After it's mounted, I can access it under /Volumes/music. + +On Mac I also use CMUS, so all of the above apply as well. +One difference is adding the files due to different location + +#+BEGIN_SRC shelll +:add /Volumes/music +#+END_SRC + +**** Next up + +This doesn't solve all my needs. In the future I need to find out how to: + +- Access The Music Outside My Home Network +- how to marry this setup with my multiroom system (Sonos + Homepods) + + + + * WIP ** TODO Bringing back web buttons, antipixels, and banners ** TODO Wikipedia is a problem @@ -2267,3 +3062,9 @@ Wikpedia has a list of /controvesion subjecs/ https://en.wikipedia.org/wiki/Wiki ** New things make me sad ** TODO Don McMillan https://www.youtube.com/watch?v=kwz-Md6OoyA + + + + + + |