summaryrefslogtreecommitdiff
path: root/content-org/articles.org
blob: 2cd11cabccd756af54fd74294975d910f7b61ee2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
#+TITLE: Articles
#+AUTHOR: Michał Sapka
#+URL: https://michal.sapka.me
#+STARTUP: show2levels indent logdone

#+HUGO_BASE_DIR: ~/ghq/vcs.sapka.me/michal-sapka-me/
#+HUGO_WEIGHT: auto
#+HUGO_SECTION: articles

* DONE Article Library                                             
CLOSED: [2023-12-20 Wed 22:47]
:PROPERTIES:
:EXPORT_FILE_NAME: _index
:END:
Articles are long(-sh) publications that don't fit the blog or any other category. 
* Article                                                           :@article:
** 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.
: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.
: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.
** DONE The Secret of Monkey Island                                :@update:
CLOSED: [2022-05-04 Fri 22:26]
:PROPERTIES:
:EXPORT_FILE_NAME: secret-of-monkey-island
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: abstract Secret of Monkey Island is a classic point-and-click adventure game. This is my short review.
:EXPORT_HUGO_PAIRED_SHORTCODES: img-c
:END:
In preparation for /Return to Monkey Island/[fn:rtmi], I have decided to replay the first three classic games[fn:2023].

Frankly, I played only the third one as a child, soon after release. "The Secret of Monkey Island" came out right after Poland became an independent country again, and I was still in kindergarten.
Three years later, I received my first computer - a (not so)powerful PC386.
I was a kid back then, and I knew very little English.
Certainly not enough to comprehend this game.
My first play through was sometime around the year 2002. 

#+attr_shortcode: "somi-splash.png"
#+begin_img-c
Title screen
#+end_img-c

[fn:rtmi] [[https://returntomonkeyisland.com/]["Return to Monkey Island" official webpage]]
[fn:2023] update from 2023: this is still in progress.
*** Running the game

Running this 30-year-old game is amazingly easy, thanks to SummVM[fn:scvm].
Just download the emulator, find a copy of the game, and everything runs perfectly on any system.
An updated version was released in 2009, but it was never released on Linux, and macOS/iOS versions are no longer working. 


You can also play in the browser via Internet Archive[fn:ia].


If you want the updated version, you can get it on GOG[fn:gog].

[fn:scvm] [[https://www.scummvm.org/][ScummVM website]]
[fn:ia] [[https://archive.org/details/mnkyega]["The Secret of Monkey Island" on the  Internet Archive]]
[fn:gog] [[https://www.gog.com/game/the_secret_of_monkey_island_special_edition]["The Secret of Monkey Island" on GOG]]

*** Playing the game

/The Secret of Monkey Island/ is a pirate-themed adventure with lots of humor.
The later games focused more on the funny aspect, but we have an interesting story here.
Guybrush Threepwood lands on Mêlée Island, where he starts his quest to become a pirate.
He will have to pass a test, find true love, and face a ghost pirate LeChuck.
Some say that the idea for the game came from Disneyland's "Pirates of the Caribbean" ride.
Some say the movie of the same name stole the idea from the game. The similarities are, for sure, not coincidental.
And now, since LucasArts is part of Disney, it all made a giant circle.


/The Secret of Monkey Island/ was one of the earliest examples of adventure gaming done right.
You no longer need to guess and type which action the authors envisioned.
Instead, the game can be completely operated using a Mouse, as simple verbs represent all actions.
This interface has stood the test of time perfectly.
I tried (and failed) playing the original Zork games despite the fantastic writing due to the text interpreter.
Using the mouse is as simple as it gets. Pro hint: "." on the keyboard allows skipping dialogue lines in ScummVM.

#+attr_shortcode: "somi-lazypirates.gif"
#+begin_img-c
Lazy pirates and the UI
#+end_img-c

The graphics aged, but it did it like a fine wine.
The game was a marvel when it came out.
LucasArts hired actual graphic artists to do computer games.
This was still the wild west, and no one knew how to do it.
Nowadays, a game can take up gigabytes, and no one bats an eye.
LucasArts sold "Monkey Island" on floppies, and every bite counted.
Everything we see or hear was a sacrifice of something else.
Luckily, Ron Gilbert - the author and primary programmer on the team - was a legend.
He created the Scumm engine, which allowed non-technical folks to create games (by writing scripts, not code), but he also managed to find a way to enable the designers to use dithering.
You can listen more on YouTube

- [[https://www.youtube.com/watch?v=ikaqus5_QIg][A five-hour chat with Ron Gilbert, the creator]]
- [[https://www.youtube.com/watch?v=ri4_3P2Oh14][A two-hour interview with Mark Ferrari, designer]]
- [[https://www.youtube.com/watch?v=GABrEdG8Ez4][A short one-hour-long interview with Dave Grossman, designer]]
- [[https://www.youtube.com/watch?v=qzorEPK6khk][Another interview with Ron Gilbert, this time only 45 minutes long]]

The graphical design is not only a technical marvel but a testament to design done right.
The islands look great, and I really wanted to explore them. 

But the most significant thing is the idea that the game should not punish players for experimentation.
Lucasarts biggest competitor back in those days, Sierra, always found creative and annoying ways to kill the player character.
Did you go a pixel too far? You fell from a cliff.
Have you met a monster you still lack the means of defeating? Time to die. Sometimes they even completely blocked their progress.
For example, in the first "Space Quest," you are expected to find a pixel-wide item on the very first screen.
If you skip it, the game won't tell you, and you can proceed.
Then, a few hours later, you need to use that item however you can no longer access that location.
And you are lucky if you even know about it. There was no internet back then to check the walkthrough!

LucasArts also was guilty of this.
For example, in the "Maniac Mansion," you could put a hamster into a microwave.
Cooking a hamster seemed funny, but it also blocked the player from finishing the game.
Ron Gilbert wrote a short manifesto where he stated that a game should not punish the player but rather encourage him to play.
And so, "The Secret of Monkey Island" has no pitfalls.
You are never in a position where your prior action blocks you from finishing the game.
This has not aged a single day.
And, since "The Secret..." is still one of the funniest games ever made, allowing the player to see the funny parts is what makes so many people play it after all those years.

There are still some puzzles that are far from perfect.
I solved Chicken with a Trolley puzzle solely because I remembered it after all those years - it's this bad.
Moreover, I had to resort to a walkthrough because the solution was based on wordplay, which was far from natural for someone whose English is a second language.
After I learned the solution, it made perfect sense.
I have to give it to the authors.
Everything in the game makes sense in the context of the game.
But there were times I could not make head or tails, and I had to resort to the old "let's use everything on everything" strategy - and it's simply not fun to do so.

On the other hand, "The Secret of Monkey Island" is also the home of one of the most fantastic puzzles I've ever witnessed - insult swordplay.
You need to defeat pirates in a sword fight, but the fight is an insult-response loop instead of an action sequence.
First, the pirate insults you, and you need to learn the proper response and use it, then you insult the pirate, and so on.
After a few rounds, you either win and advance to another pirate or lose, but you learn some new insults and need to look for a pirate who will know how to reply.
Ingenious! A cherry on top - this part was written by Orson Scott, the author of "Ender's game".

#+attr_shortcode: "somi-swordfight.jpg"
#+begin_img-c
Insult swordfighting
#+end_img-c

The game consists of four parts.
Out of them, the first one is easily the most polished and exciting.
Luckily, it also took roughly half the total playtime of my play through.
The rest is still good (and the worst, I'd say, "Flight of the Amazon Queen" good), but the first few hours shine the most, and I am sure this is what most players remember.

Overall, the game was great and (despite some shortcomings) is still extremely fun to play.
I sure hope that "Return to Monkey Island" will keep the adventure/comedy ratio from this installment.

And if you get stuck, remember that the "Universal Hint System"[fn:uhs] is the best way to get unstuck without getting a ready answer.

[fn:uhs] [[https://www.uhs-hints.com/uhsweb/monkey.php]["The Secret of Monkey Island" on UHS]]


*** Memories Emporium

What I'll remember from the game?

Mostly, the amazing world. Mêlée Island looks great and is full of rememberable characters - like the Voodoo Lady or lazy pirates training their pet rat for a circus.
LucasArts has the gift of creating exceptional places.
Their later game, "Grim Fandango," shows Rubacava.
This is the one gaming place I simply return to from time to time, just to hang out there - but that's a story for a different time.
They create a believable world inhabited but not completely sane people.
Love it! I'll have to return here with my son when he is a bit older.

The insult sword fighting.
I guess I already remembered it as I say, "Well, you fight like a cow" from time to time.

Guybrush.
Since this is primarily an adventure story, he is fleshed out for an early 90s game.
I really like the guy.
He is quirky but also driven and a bit insane.
Like every good heron should be.
And he can hold his breath underwater for solid 10 minutes!

Not bad for a 6 hour game.

** 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.
: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.
: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)

** 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.
: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.