summaryrefslogtreecommitdiff
path: root/content-org/blog.org
diff options
context:
space:
mode:
authormms <michal@sapka.me>2024-06-21 20:29:53 +0200
committermms <michal@sapka.me>2024-06-21 20:29:53 +0200
commit83aeb3094b1efbc551399322f433cd7b10ce9ded (patch)
tree8498c560bca067a321971bb56ffc1c4c427c66c6 /content-org/blog.org
parent32247378e71b3b89d66f19af8c7c12074cdbc149 (diff)
feat: move some articles back to blog
Diffstat (limited to 'content-org/blog.org')
-rw-r--r--content-org/blog.org801
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
+
+
+
+
+
+