summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--new/bin/builder.rb15
-rw-r--r--new/lib/crys.rb7
-rw-r--r--new/lib/crys/_code_processor.rb0
-rw-r--r--new/lib/crys/_default_data.rb4
-rw-r--r--new/lib/crys/_file_watcher.rb0
-rw-r--r--new/lib/crys/_listing.rb0
-rw-r--r--new/lib/crys/_new_file.rb0
-rw-r--r--new/lib/crys/_page_from_erb.rb0
-rw-r--r--new/lib/crys/_page_from_org.rb0
-rw-r--r--new/lib/crys/_resource_from_css.rb0
-rw-r--r--new/lib/crys/batch_builder.rb34
-rw-r--r--new/lib/crys/builder.rb40
-rw-r--r--new/lib/crys/pages_db_manager.rb62
-rw-r--r--new/lib/crys/processors/html_processor.rb7
-rw-r--r--new/lib/crys/processors/rss_processor.rb28
-rw-r--r--new/splash/assets/images/logo.pngbin0 -> 2732 bytes
-rwxr-xr-xnew/splash/bin/build.rb5
-rw-r--r--new/splash/db/pages.yaml12
-rw-r--r--new/splash/lib/splash.rb2
-rw-r--r--new/splash/lib/splash/batch_builder.rb25
-rw-r--r--new/splash/lib/splash/builder.rb4
-rw-r--r--new/splash/lib/splash/pages_db_manager.rb9
-rw-r--r--new/splash/output/index.xml2255
-rw-r--r--new/splash/output/logo.pngbin0 -> 2732 bytes
-rw-r--r--new/splash/pages/index.html.erb14
-rw-r--r--new/splash/pages/index.xml.rb29
26 files changed, 2520 insertions, 32 deletions
diff --git a/new/bin/builder.rb b/new/bin/builder.rb
index 47195b2..d3a273a 100644
--- a/new/bin/builder.rb
+++ b/new/bin/builder.rb
@@ -12,24 +12,33 @@ OptionParser.new do |opts|
opts.on('-fPATH', '--file=PATH', 'File path') do |n|
@options[:filepath] = n
end
+
+ opts.on('-a', '--all', 'Process all files') do |v|
+ @options[:filepath] = :all
+ end
end.parse!
module Crys
class BuilderRunner
- def initialize(file_path:, image_dir:, output_dir:, builder_class:)
+ def initialize(file_path:, image_dir:, output_dir:, builder_class:, batch_builder_class:)
@file_path = file_path
@output_dir = output_dir
@builder_class = builder_class
+ @batch_builder_class = batch_builder_class
@image_dir = image_dir
end
- def run
+ def run
+ if file_path == :all
+ batch_builder_class.new.build
+ else
builder_class.new(file_path: file_path, output_dir: output_dir, image_dir: image_dir).build
end
+ end
private
- attr_reader :builder_class, :file_path, :output_dir, :image_dir
+ attr_reader :builder_class, :file_path, :output_dir, :image_dir, :batch_builder_class
end
end
diff --git a/new/lib/crys.rb b/new/lib/crys.rb
index 68542a0..bd0d298 100644
--- a/new/lib/crys.rb
+++ b/new/lib/crys.rb
@@ -1,8 +1,15 @@
+require 'erb'
+require 'rss'
+
require_relative "crys/processors/html_processor.rb"
+require_relative "crys/processors/rss_processor.rb"
require_relative "crys/server.rb"
require_relative "crys/builder.rb"
+require_relative "crys/batch_builder.rb"
require_relative "crys/image_processor.rb"
+require_relative "crys/pages_db_manager.rb"
module Crys
end
+
diff --git a/new/lib/crys/_code_processor.rb b/new/lib/crys/_code_processor.rb
deleted file mode 100644
index e69de29..0000000
--- a/new/lib/crys/_code_processor.rb
+++ /dev/null
diff --git a/new/lib/crys/_default_data.rb b/new/lib/crys/_default_data.rb
deleted file mode 100644
index 8333669..0000000
--- a/new/lib/crys/_default_data.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-module Crys
- module DefaultData
- end
-end
diff --git a/new/lib/crys/_file_watcher.rb b/new/lib/crys/_file_watcher.rb
deleted file mode 100644
index e69de29..0000000
--- a/new/lib/crys/_file_watcher.rb
+++ /dev/null
diff --git a/new/lib/crys/_listing.rb b/new/lib/crys/_listing.rb
deleted file mode 100644
index e69de29..0000000
--- a/new/lib/crys/_listing.rb
+++ /dev/null
diff --git a/new/lib/crys/_new_file.rb b/new/lib/crys/_new_file.rb
deleted file mode 100644
index e69de29..0000000
--- a/new/lib/crys/_new_file.rb
+++ /dev/null
diff --git a/new/lib/crys/_page_from_erb.rb b/new/lib/crys/_page_from_erb.rb
deleted file mode 100644
index e69de29..0000000
--- a/new/lib/crys/_page_from_erb.rb
+++ /dev/null
diff --git a/new/lib/crys/_page_from_org.rb b/new/lib/crys/_page_from_org.rb
deleted file mode 100644
index e69de29..0000000
--- a/new/lib/crys/_page_from_org.rb
+++ /dev/null
diff --git a/new/lib/crys/_resource_from_css.rb b/new/lib/crys/_resource_from_css.rb
deleted file mode 100644
index e69de29..0000000
--- a/new/lib/crys/_resource_from_css.rb
+++ /dev/null
diff --git a/new/lib/crys/batch_builder.rb b/new/lib/crys/batch_builder.rb
new file mode 100644
index 0000000..61fdcf2
--- /dev/null
+++ b/new/lib/crys/batch_builder.rb
@@ -0,0 +1,34 @@
+module Crys
+ class BatchBuilder
+ def db_path
+ output_dir = "#{File.dirname(File.dirname(File.dirname(__FILE__)))}/db/pages.yaml"
+ end
+
+ def output_dir
+ "#{File.dirname(File.dirname(__FILE__))}/output"
+ end
+
+ def image_dir
+ "#{File.dirname(File.dirname(File.expand_path(__FILE__)))}/assets/images"
+ end
+
+ def builder_class
+ Crys::Builder
+ end
+
+ def db
+ Crys::PagesDbManager.new
+ end
+
+ def build
+ db.pages.each do |page|
+ builder_class.new(
+ file_path: page.file_path,
+ output_dir: output_dir,
+ image_dir: image_dir,
+ ).build
+ puts "processed: " + page.filename
+ end
+ end
+ end
+end
diff --git a/new/lib/crys/builder.rb b/new/lib/crys/builder.rb
index a3f55b1..b8135c7 100644
--- a/new/lib/crys/builder.rb
+++ b/new/lib/crys/builder.rb
@@ -1,24 +1,26 @@
-
module Crys
class Builder
-
-
def initialize(file_path:, output_dir:, image_dir:)
@file_path = file_path
@output_dir = output_dir
@processor = processor_class.new(file_path: file_path, image_dir: image_dir)
-
end
def build
- process_html
+ process_content
process_assets
+
+ upsert_pages_db
end
private
- attr_reader :file_path, :output_dir, :processor
+ attr_reader :file_path, :output_dir, :processor, :db
+ def pages_db_manager
+ Crys::PagesDbManager.new
+ end
+
def process_assets
processor.assets.each do |asset|
output_path = output_dir + "/" + asset.relative_path
@@ -26,19 +28,21 @@ module Crys
end
end
- def process_html
- html = processor.to_html
+ def process_content
+ content = processor.parsed_content
filename = processor.filename
output_path = output_dir + "/" + filename
- File.open(output_path, 'w') { |file| file.write(html) }
+ File.open(output_path, 'w') { |file| file.write(content) }
end
- def processor_class
- case file_path
- when /html.erb$/
- html_processor
- else
+ def processor_class
+ case file_path
+ when /html.erb$/
+ html_processor
+ when /xml.rb$/
+ rss_processor
+ else
raise StandardError.new("No processor for #{file_path}")
end
end
@@ -46,5 +50,13 @@ module Crys
def html_processor
Crys::HtmlProcessor
end
+
+ def rss_processor
+ Crys::RssProcessor
+ end
+
+ def upsert_pages_db
+ pages_db_manager.add_page(processor)
+ end
end
end
diff --git a/new/lib/crys/pages_db_manager.rb b/new/lib/crys/pages_db_manager.rb
new file mode 100644
index 0000000..6a5e71c
--- /dev/null
+++ b/new/lib/crys/pages_db_manager.rb
@@ -0,0 +1,62 @@
+module Crys
+ class PagesDbManager
+ PAGES_KEY = :pages
+ PAGE = Struct.new(:filename, :file_path, :last_update, :in_rss, keyword_init: true)
+
+ def db_path
+ end
+
+ def add_page(processor)
+ @processor = processor
+ hash = Digest::MD5.hexdigest(processor.file_path)
+ known_page = known_page(hash)
+
+ upsert_db(hash, known_page)
+ save_db
+ end
+
+ def pages
+ db.fetch(:pages).map do | _, data|
+ PAGE.new(data)
+ end
+ end
+
+ private
+
+ attr_reader :hash, :processor
+
+
+ def db
+ @db ||= YAML.load_file(
+ db_path,
+ permitted_classes: [Time, Symbol]
+ )
+ end
+
+ def upsert_db(hash, known_page)
+ if known_page
+ record = PAGE.new(known_page)
+ else
+ record = PAGE.new(
+ filename: processor.filename,
+ file_path: processor.file_path,
+ in_rss: true
+ )
+ end
+
+ record.last_update = Time.now
+
+ @db[PAGES_KEY][hash] = record.to_h
+ end
+
+ def save_db
+ File.open(db_path, 'w') do |f|
+ f.write db.to_yaml
+ end
+ end
+
+ def known_page(hash)
+ db[PAGES_KEY][hash]
+ end
+ end
+end
diff --git a/new/lib/crys/processors/html_processor.rb b/new/lib/crys/processors/html_processor.rb
index d5ea73d..bcc9768 100644
--- a/new/lib/crys/processors/html_processor.rb
+++ b/new/lib/crys/processors/html_processor.rb
@@ -14,21 +14,20 @@ module Crys
@assets = []
end
- def to_html
+ def parsed_content
html_file = ERB.new(File.read(file_path))
html_file.result(local_binding)
end
-
def filename
file_path.scan(/.*\/(.*)\.erb/).flatten.first
end
- attr_reader :assets
+ attr_reader :assets, :file_path
private
- attr_reader :file_path, :image_dir
+ attr_reader :image_dir
attr_writer :assets
def local_binding
diff --git a/new/lib/crys/processors/rss_processor.rb b/new/lib/crys/processors/rss_processor.rb
new file mode 100644
index 0000000..bce48ad
--- /dev/null
+++ b/new/lib/crys/processors/rss_processor.rb
@@ -0,0 +1,28 @@
+require_relative "common_functions"
+require_relative "common_parts"
+
+module Crys
+ class RssProcessor
+ def initialize(file_path:, image_dir:)
+ @file_path = file_path
+ rss_file = File.read(file_path)
+ instance_eval(rss_file)
+ @assets = []
+ end
+
+ def parsed_content
+ rss.content
+ end
+
+ def filename
+ rss.filename
+ end
+
+ attr_reader :assets, :file_path
+
+ private
+
+ attr_reader :rss
+
+ end
+end
diff --git a/new/splash/assets/images/logo.png b/new/splash/assets/images/logo.png
new file mode 100644
index 0000000..8242224
--- /dev/null
+++ b/new/splash/assets/images/logo.png
Binary files differ
diff --git a/new/splash/bin/build.rb b/new/splash/bin/build.rb
index 1439dd6..36da3ec 100755
--- a/new/splash/bin/build.rb
+++ b/new/splash/bin/build.rb
@@ -5,8 +5,8 @@ require_relative '../lib/splash'
require_relative '../../bin/builder'
builder_class = Crys::Splash::Builder
+batch_builder_class = Crys::Splash::BatchBuilder
output_dir = "#{File.dirname(File.dirname(__FILE__))}/output"
-#file_path = "#{File.dirname(File.dirname(__FILE__))}/pages/#{@options[:filepath]}"
image_dir = "#{File.dirname(File.dirname(File.expand_path(__FILE__)))}/assets/images"
file_path=@options[:filepath]
@@ -15,5 +15,6 @@ Crys::BuilderRunner.new(
file_path: file_path,
output_dir: output_dir,
builder_class: builder_class,
- image_dir: image_dir
+ image_dir: image_dir,
+ batch_builder_class: batch_builder_class,
).run
diff --git a/new/splash/db/pages.yaml b/new/splash/db/pages.yaml
new file mode 100644
index 0000000..562d8d4
--- /dev/null
+++ b/new/splash/db/pages.yaml
@@ -0,0 +1,12 @@
+---
+:pages:
+ d5d3594a0e43df11c58fad58073dc288:
+ :filename: index.html
+ :file_path: "/home/mms/ghq/michal.sapka.me/mms/site/new/splash/pages/index.html.erb"
+ :last_update: 2025-01-06 22:16:56.656586258 +01:00
+ :in_rss: false
+ b6bd1d5c7d2d3ea1d0db3032235af0bf:
+ :filename: index.xml
+ :file_path: "/home/mms/ghq/michal.sapka.me/mms/site/new/splash/pages/index.xml.rb"
+ :last_update: 2025-01-06 22:16:56.674745665 +01:00
+ :in_rss: false
diff --git a/new/splash/lib/splash.rb b/new/splash/lib/splash.rb
index 68674f9..5a29956 100644
--- a/new/splash/lib/splash.rb
+++ b/new/splash/lib/splash.rb
@@ -4,6 +4,8 @@ require_relative '../../lib/crys'
require_relative 'splash/server'
require_relative 'splash/builder'
+require_relative 'splash/batch_builder'
+require_relative 'splash/pages_db_manager'
module Crys
module Splash
diff --git a/new/splash/lib/splash/batch_builder.rb b/new/splash/lib/splash/batch_builder.rb
new file mode 100644
index 0000000..1502a80
--- /dev/null
+++ b/new/splash/lib/splash/batch_builder.rb
@@ -0,0 +1,25 @@
+module Crys
+ module Splash
+ class BatchBuilder < Crys::BatchBuilder
+ def db_path
+ "#{File.dirname(File.dirname(File.dirname(__FILE__)))}/db/pages.yaml"
+ end
+
+ def output_dir
+ "#{File.dirname(File.dirname(File.dirname(__FILE__)))}/output"
+ end
+
+ def image_dir
+ "#{File.dirname(File.dirname(File.dirname(File.expand_path(__FILE__))))}/assets/images"
+ end
+
+ def db
+ Crys::Splash::PagesDbManager.new
+ end
+
+ def builder_class
+ Crys::Splash::Builder
+ end
+ end
+ end
+end
diff --git a/new/splash/lib/splash/builder.rb b/new/splash/lib/splash/builder.rb
index 7b0f13f..dc52d64 100644
--- a/new/splash/lib/splash/builder.rb
+++ b/new/splash/lib/splash/builder.rb
@@ -9,6 +9,10 @@ module Crys
def html_processor
Crys::Splash::SplashProcessor
end
+
+ def pages_db_manager
+ Crys::Splash::PagesDbManager.new
+ end
end
end
end
diff --git a/new/splash/lib/splash/pages_db_manager.rb b/new/splash/lib/splash/pages_db_manager.rb
new file mode 100644
index 0000000..11a8d6f
--- /dev/null
+++ b/new/splash/lib/splash/pages_db_manager.rb
@@ -0,0 +1,9 @@
+module Crys
+ module Splash
+ class PagesDbManager < Crys::PagesDbManager
+ def db_path
+ "#{File.dirname(File.dirname(File.dirname(__FILE__)))}/db/pages.yaml"
+ end
+ end
+ end
+end
diff --git a/new/splash/output/index.xml b/new/splash/output/index.xml
new file mode 100644
index 0000000..9f93f6e
--- /dev/null
+++ b/new/splash/output/index.xml
@@ -0,0 +1,2255 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<rss version="2.0"
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
+ xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
+ <channel>
+ <title>Crys Site</title>
+ <link>https://crys.site/</link>
+ <description>Recent content on Crys Site</description>
+ <webMaster>rss</webMaster>
+ <lastBuildDate>Fri, 03 Jan 2025 16:14:00 +0100</lastBuildDate>
+ <item>
+ <title>Bookmark dump for December 2024</title>
+ <link>https://crys.site/blog/2025/bookmarks-dec/</link>
+ <description>
+
+
+&lt;p&gt;Here are some cool webpages I&#39;ve found recently:&lt;/p&gt;
+&lt;ul&gt;
+
+
+
+
+
+
+ &lt;li&gt;
+ 2024-12-23
+ -
+ &lt;a href=&quot;https://indiadispatch.com/2024/12/22/big-techs-292-billion-ai-spending-spree-meets-the-revenue-desert/&quot;&gt;Tech giants pour $292 billion into AI while software revenue barely registers.&lt;/a&gt;
+ (indiadispatch.com)
+
+ (via &lt;a href=&quot;https://tech.slashdot.org/story/24/12/23/1314259/software-revenue-lags-despite-tech-giants-292-billion-ai-spend&quot;&gt;tech.slashdot.org&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-23
+ -
+ &lt;a href=&quot;https://perladvent.org/2024/2024-12-23.html&quot;&gt; Perl Advent Calendar 2024 - A New Logo for Perl &lt;/a&gt;
+ (perladvent.org)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-23
+ -
+ &lt;a href=&quot;https://www.osnews.com/story/141399/never-forgive-them/&quot;&gt;Never forgive them&lt;/a&gt;
+ (osnews.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-21
+ -
+ &lt;a href=&quot;https://www.tomshardware.com/desktops/indiana-bakery-still-using-commodore-64s-originally-released-in-1982-as-point-of-sale-terminals&quot;&gt;Indiana bakery still using Commodore 64s originally released in 1982 as cash registers — Hilligoss Bakery in Brownsburg sticks to the BASICs&lt;/a&gt;
+ (tomshardware.com)
+
+ (via &lt;a href=&quot;https://lemmy.sdf.org/post/26623449&quot;&gt;lemmy.sdf.org&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-21
+ -
+ &lt;a href=&quot;https://www.hackster.io/news/a-classic-acer-pocket-pc-lives-again-thanks-to-a-risc-v-emulation-of-its-battery-controller-f8a5474e592f&quot;&gt;A Classic Acer Pocket PC Lives Again, Thanks to a RISC-V Emulation of Its Battery Controller&lt;/a&gt;
+ (hackster.io)
+
+ (via &lt;a href=&quot;https://lemmy.sdf.org/post/26737655&quot;&gt;lemmy.sdf.org&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-21
+ -
+ &lt;a href=&quot;https://www.honest-broker.com/p/the-ugly-truth-about-spotify-is-finally&quot;&gt;The Ugly Truth About Spotify Is Finally Revealed&lt;/a&gt;
+ (honest-broker.com)
+
+ (via &lt;a href=&quot;https://chaos.social/@citizen428/113691489014325440&quot;&gt;chaos.social&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-17
+ -
+ &lt;a href=&quot;https://www.youtube.com/watch?v=cKjFJDZmWNM&quot;&gt;(1981) Interlisp-D Demonstration by Beau Sheil&lt;/a&gt;
+ (youtube.com)
+
+ (via &lt;a href=&quot;https://fosstodon.org/@interlisp/113650957735095671&quot;&gt;fosstodon.org&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-17
+ -
+ &lt;a href=&quot;https://www.gog.com/en/gog-preservation-program&quot;&gt;GOG Preservation Program&lt;/a&gt;
+ (gog.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-17
+ -
+ &lt;a href=&quot;https://arstechnica.com/tech-policy/2024/12/companies-issuing-rto-mandates-lose-their-best-talent-study/&quot;&gt;Companies issuing RTO mandates “lose their best talent”: Study&lt;/a&gt;
+ (arstechnica.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-16
+ -
+ &lt;a href=&quot;https://dillo-browser.github.io/25-years/&quot;&gt;25 years of Dillo&lt;/a&gt;
+ (dillo-browser.github.io)
+
+ (via &lt;a href=&quot;https://lobste.rs/s/zrgps1/25_years_dillo&quot;&gt;lobste.rs&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-13
+ -
+ &lt;a href=&quot;https://arstechnica.com/gadgets/2024/12/the-optical-disc-onslaught-continues-with-lg-quitting-blu-ray-players/&quot;&gt;The optical disc onslaught continues, with LG quitting Blu-ray players&lt;/a&gt;
+ (arstechnica.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-13
+ -
+ &lt;a href=&quot;https://www.bbc.com/news/articles/cd0elzk24dno&quot;&gt;BBC complains to Apple over misleading shooting headline&lt;/a&gt;
+ (bbc.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-12
+ -
+ &lt;a href=&quot;https://emacsconf.org/2024/talks/&quot;&gt;EmacsConf - 2024 - Talks&lt;/a&gt;
+ (emacsconf.org)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-12
+ -
+ &lt;a href=&quot;https://bzg.fr/en/org-has-a-new-maintainer/&quot;&gt;Org Mode has a new maintainer - Bastien Guerry&lt;/a&gt;
+ (bzg.fr)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-11
+ -
+ &lt;a href=&quot;https://tabloid.vercel.app/&quot;&gt;Tabloid: the clickbait headline programming language&lt;/a&gt;
+ (tabloid.vercel.app)
+
+ (via &lt;a href=&quot;https://urbanists.social/@enobacon/113630060542720768&quot;&gt;urbanists.social&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-11
+ -
+ &lt;a href=&quot;https://arstechnica.com/science/2024/12/congressional-republicans-conclude-sars-cov-2-originated-in-a-lab-leak/&quot;&gt;Congressional Republicans conclude SARS-CoV-2 originated in a lab leak&lt;/a&gt;
+ (arstechnica.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-11
+ -
+ &lt;a href=&quot;https://it.slashdot.org/story/24/12/11/156219/researchers-uncover-chinese-spyware-used-to-target-android-devices&quot;&gt;Researchers Uncover Chinese Spyware Used To Target Android Devices - Slashdot&lt;/a&gt;
+ (it.slashdot.org)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-11
+ -
+ &lt;a href=&quot;https://www.youtube.com/watch?v=WDAZAgrzNoo&quot;&gt;How Atari 8-Bit Computers Work!&lt;/a&gt;
+ (youtube.com)
+
+ (via &lt;a href=&quot;https://lemmy.sdf.org/post/26228788&quot;&gt;lemmy.sdf.org&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-10
+ -
+ &lt;a href=&quot;https://www.nathalielawhead.com/candybox/in-defense-and-absolute-condemnation-of-ai-how-ai-has-already-affected-the-game-industry&quot;&gt;In defense and absolute condemnation of AI: how AI has already affected “The Game Industry”&lt;/a&gt;
+ (nathalielawhead.com)
+
+ (via &lt;a href=&quot;https://mastodon.social/@alienmelon/113628449572893204&quot;&gt;mastodon.social&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-10
+ -
+ &lt;a href=&quot;https://arstechnica.com/information-technology/2024/12/new-badram-attack-neuters-security-assurances-in-amd-epyc-processors/&quot;&gt;AMD’s trusted execution environment blown wide open by new BadRAM attack&lt;/a&gt;
+ (arstechnica.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-09
+ -
+ &lt;a href=&quot;https://www.theverge.com/2024/12/9/24316882/itch-io-offline-domain-registration-funko-report&quot;&gt;Itch.io is currently offline due to a ‘trash AI-powered’ phishing report&lt;/a&gt;
+ (theverge.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-09
+ -
+ &lt;a href=&quot;https://www.youtube.com/watch?v=OUuz9-CtCwY&quot;&gt;Literate Programming for the 24th Century&lt;/a&gt;
+ (youtube.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-08
+ -
+ &lt;a href=&quot;https://www.youtube.com/watch?v=bopbmRyHQog&quot;&gt;The new Vim project What has changed after Bram&lt;/a&gt;
+ (youtube.com)
+
+ (via &lt;a href=&quot;https://hachyderm.io/@VimLinks/113619496551546679&quot;&gt;hachyderm.io&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-08
+ -
+ &lt;a href=&quot;https://damieng.com/typography/advent/2024/&quot;&gt;Advent of Fonts 2024&lt;/a&gt;
+ (damieng.com)
+
+ (via &lt;a href=&quot;https://mastodon.social/@damieng/113618210924442400&quot;&gt;mastodon.social&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-08
+ -
+ &lt;a href=&quot;https://www.youtube.com/watch?v=AeDaD-CEzzg&quot;&gt;The History of the BSD Daemon&lt;/a&gt;
+ (youtube.com)
+
+ (via &lt;a href=&quot;https://hostux.social/@lfa/113617660943032199&quot;&gt;hostux.social&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-08
+ -
+ &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/google-sign-in-popup-blocker/&quot;&gt;Google Sign-in Popup Blocker&lt;/a&gt;
+ (addons.mozilla.org)
+
+ (via &lt;a href=&quot;https://saltylike.us/@tuckerm/113613850024154051&quot;&gt;saltylike.us&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-06
+ -
+ &lt;a href=&quot;https://arstechnica.com/ai/2024/12/openai-and-anduril-team-up-to-build-ai-powered-drone-defense-systems/&quot;&gt;Soon, the tech behind ChatGPT may help drone operators decide which enemies to kill&lt;/a&gt;
+ (arstechnica.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-06
+ -
+ &lt;a href=&quot;https://techcrunch.com/2024/12/05/openais-o1-model-sure-tries-to-deceive-humans-a-lot/&quot;&gt;OpenAI&amp;#39;s o1 model sure tries to deceive humans a lot | TechCrunch&lt;/a&gt;
+ (techcrunch.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-04
+ -
+ &lt;a href=&quot;https://spectrum.ieee.org/groupware&quot;&gt;Collaboration Software: Microsoft, SRI, Lotus, and the History of Groupware&lt;/a&gt;
+ (spectrum.ieee.org)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-04
+ -
+ &lt;a href=&quot;https://arstechnica.com/tech-policy/2024/12/us-recommends-encrypted-messaging-as-chinese-hackers-linger-in-telecom-networks/&quot;&gt;US recommends encrypted messaging as Chinese hackers linger in telecom networks&lt;/a&gt;
+ (arstechnica.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-04
+ -
+ &lt;a href=&quot;https://jpcamara.com/2024/12/01/speeding-up-ruby.html&quot;&gt;Speeding up Ruby by rewriting C… in Ruby&lt;/a&gt;
+ (jpcamara.com)
+
+ (via &lt;a href=&quot;https://lobste.rs/s/lnnkmd/speeding_up_ruby_by_rewriting_c_ruby&quot;&gt;lobste.rs&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-04
+ -
+ &lt;a href=&quot;https://spillhistorie.no/the-story-of-rogue/&quot;&gt;The story of Rogue&lt;/a&gt;
+ (spillhistorie.no)
+
+ (via &lt;a href=&quot;https://news.ycombinator.com/item?id=42313087&quot;&gt;news.ycombinator.com&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-03
+ -
+ &lt;a href=&quot;https://www.youtube.com/watch?v=DestaWfHDIk&quot;&gt;Let&amp;#39;s Code MS DOS 0x01: Hello World!&lt;/a&gt;
+ (youtube.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-03
+ -
+ &lt;a href=&quot;https://www.theverge.com/2024/12/3/24312016/chatgpt-search-results-review-inaccurate-unpredictable&quot;&gt;ChatGPT’s search results for news are ‘unpredictable’ and frequently inaccurate&lt;/a&gt;
+ (theverge.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-03
+ -
+ &lt;a href=&quot;https://www.freebsd.org/releases/14.2R/announce/&quot;&gt;FreeBSD 14.2-RELEASE Announcement&lt;/a&gt;
+ (freebsd.org)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-03
+ -
+ &lt;a href=&quot;https://blog.infected.systems/posts/2024-12-01-no-nat-november/&quot;&gt;No NAT November: My Month Without IPv4&lt;/a&gt;
+ (blog.infected.systems)
+
+ (via &lt;a href=&quot;https://lobste.rs/s/ftizih/no_nat_november_my_month_without_ipv4&quot;&gt;lobste.rs&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-03
+ -
+ &lt;a href=&quot;https://stfn.pl/blog/28-intro-to-meshtastic/&quot;&gt;My first steps in Meshtastic&lt;/a&gt;
+ (stfn.pl)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-03
+ -
+ &lt;a href=&quot;https://ils.unc.edu/callee/gopherpaper.htm&quot;&gt;Where Have all the Gophers Gone? Why the Web beat Gopher in the Battle for Protocol Mind Share &lt;/a&gt;
+ (ils.unc.edu)
+
+ (via &lt;a href=&quot;https://jdd.freeshell.org/&quot;&gt;jdd.freeshell.org&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-02
+ -
+ &lt;a href=&quot;https://www.latimes.com/entertainment-arts/business/story/2024-12-02/the-casual-moviegoer-is-a-thing-of-the-past-thats-a-big-problem-for-hollywood&quot;&gt;The casual moviegoer is a thing of the past. That&amp;#39;s a problem for Hollywood&lt;/a&gt;
+ (latimes.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-02
+ -
+ &lt;a href=&quot;https://sfconservancy.org/news/2024/nov/29/openwrt-one-wireless-router-now-ships-black-friday/&quot;&gt;First Router Designed Specifically For OpenWrt Released&lt;/a&gt;
+ (sfconservancy.org)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-02
+ -
+ &lt;a href=&quot;https://www.servethehome.com/the-apple-mac-mini-m4-sets-the-mini-computer-standard/&quot;&gt;The Apple Mac Mini M4 Sets the Mini Computer Standard&lt;/a&gt;
+ (servethehome.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-02
+ -
+ &lt;a href=&quot;https://www.youtube.com/watch?v=VUFOSJZJVM4&quot;&gt;Worlds of Ultima Retrospective | Savage Empire &amp;amp; Martian Dreams&lt;/a&gt;
+ (youtube.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-02
+ -
+ &lt;a href=&quot;https://abnml.com/blog/2024/11/26/replacing-proxmox-with-freebsd-and-bhyve/&quot;&gt;Replacing Proxmox with FreeBSD and Bhyve - ABNML&lt;/a&gt;
+ (abnml.com)
+
+ (via &lt;a href=&quot;https://vermaden.wordpress.com/2024/12/02/valuable-news-2024-12-02/&quot;&gt;vermaden.wordpress.com&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-02
+ -
+ &lt;a href=&quot;https://no-color.org/&quot;&gt;NO_COLOR: disabling ANSI color output by default&lt;/a&gt;
+ (no-color.org)
+
+ (via &lt;a href=&quot;https://jcs.org/projects&quot;&gt;jcs.org&lt;/a&gt;)
+
+
+
+
+ &lt;li&gt;
+ 2024-12-02
+ -
+ &lt;a href=&quot;https://9to5google.com/2024/11/25/google-ios-app-link-annotations-search/&quot;&gt;Google app for iOS now injects links back to Search on websites&lt;/a&gt;
+ (9to5google.com)
+
+ (via &lt;a href=&quot;https://tech.slashdot.org/story/24/11/26/0029213/googles-ios-app-now-injects-links-on-third-party-websites-that-go-back-to-search&quot;&gt;tech.slashdot.org&lt;/a&gt;)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+&lt;/ul&gt;
+&lt;p&gt;You can find more on &lt;a href=&quot;/more/bookmarks&quot;&gt;Bookmarks&lt;/a&gt;&lt;/p&gt;
+
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Fri, 03 Jan 2025 16:14:00 +0100</pubDate>
+ <guid>816d8a1010c5f4fad8a50b07075e5b81</guid>
+ </item>
+ <item>
+ <title>2024 in retrospect</title>
+ <link>https://crys.site/blog/2025/2024-in-retrospect/</link>
+ <description>
+ &lt;p&gt;&lt;strong&gt;Please note that content warning is warranted.&lt;/strong&gt;
+&lt;strong&gt;The year was good, but I touch unpleasant subjects.&lt;/strong&gt;
+&lt;strong&gt;&lt;em&gt;O tempora!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
+&lt;p&gt;I have never done a retrospect here.
+I&amp;rsquo;ve made the rookie mistake of writing (or even having) plans for upcoming year, but that was futile.
+Now I don&amp;rsquo;t even plans of dinner.
+So, even though mistakes were made in the past, this time I am armed with experience and only looking back.&lt;/p&gt;
+&lt;p&gt;Let&amp;rsquo;s start with my personal life.
+I don&amp;rsquo;t write about it often, as it&amp;rsquo;s trespassing on the lives of closest to me, but I think they&amp;rsquo;ll allow me to indulge myself here.
+It&amp;rsquo;s also a subject I don&amp;rsquo;t particularly &lt;em&gt;enjoy&lt;/em&gt; thinking of, not to even mention writing about.
+The last few years of my life were centered around two things: my wife&amp;rsquo;s cancer and my son&amp;rsquo;s developmental problems.
+I think I&amp;rsquo;ll write about what king of toll being a cancer caregiver takes, but that&amp;rsquo;s not the day.
+Today is a happy day, as both of those things are doing great&amp;hellip; or terribly, depending on who you ask!
+My wife is now 6 years after initial treatment and still in full remission.
+It&amp;rsquo;s crazy expensive (&lt;a href=&quot;https://justyna.sapka.me&quot;&gt;we are raising funds for continuous treatment!&lt;/a&gt;), but she beat all chances and prognoses.
+Not only is she still alive, but her cancer has not shown any signs of returning.
+Similarly, my son (who was born prematurely) is beating all his problems like a champ.
+He struggles, but all signs point toward him needing only some extra time to catch up.
+Being a father of prematurely born child is a horror show on it&amp;rsquo;s own, but none of the worst cases materialized.
+I am also not showing no bigger problems, though it is time to do something about my cholesterol - it&amp;rsquo;s elevated and I&amp;rsquo;m &lt;em&gt;almost&lt;/em&gt; 40, so it&amp;rsquo;s time.
+I have been diagnosed with asthma, but it seems I had it my entire life.
+All in all, my personal life is as good as it could have been.
+I was not expecting it to be as good as it is, but panic attacks still happen, and dreams often become nightmares.&lt;/p&gt;
+&lt;p&gt;In other side of my personal life, my father passed away.
+We had complicated relation, and I still don&amp;rsquo;t know how I feel about his death.
+Another subject I don&amp;rsquo;t want to pollute this happy site with.&lt;/p&gt;
+&lt;p&gt;Work-wise, well.
+I was not laid off, which is an accomplishment in 2024.
+But what have I done?
+On one hand, I have not much to show.
+I enjoy it, I like our product and my team - which is always great.
+I also don&amp;rsquo;t have much stress - which is extremely great.
+Just think: I could have ended in something like Netflix!
+I would have had heart attack by now!
+I have also delivered some &lt;em&gt;small&lt;/em&gt; projects which was a lot of fun.
+Recently, I&amp;rsquo;ve added plain-text transactional emails to one of the subsystems we own, which brought a huge smile to my face, even though I don&amp;rsquo;t think any client will notice.
+It was a rather a case of thing I wanted to do to make the product (and the web) better.&lt;/p&gt;
+&lt;p&gt;But more important things come from years of introspection.
+I&amp;rsquo;ve been a software engineer for 10 years now (in the same company btw!), ever since I&amp;rsquo;ve changed fields from semi-manual labor.
+After this 10 years I think I start to understand what &lt;em&gt;kind&lt;/em&gt; of software engineer I want to be.
+I am glad I work on the backend (I like Ruby more and more), and I love that most of my work can be done using terminal and Emacs.
+I don&amp;rsquo;t care much about new technologies, even if some say it&amp;rsquo;s professional suicide.
+What I care about it simplicity and stability.
+And even though we work with Kubernetes running on AWS, I think my little world allows for that.
+I have yet to be forced to do anything with GenAI, and somehow I managed to leave a small crack in our &amp;ldquo;local&amp;rdquo; development environment which will allow me not to use docker.
+What I add to the plate is a different mindset, as I am an outlier.
+Unique doesn&amp;rsquo;t always mean good, but I think in this case it does.
+I&amp;rsquo;d love to have some more cool projects shipped &lt;em&gt;under my lead&lt;/em&gt; next year, and there are signs for that.
+What I&amp;rsquo;d love even more would be if I believed in the product side of the project - but that also looks promising.&lt;/p&gt;
+&lt;p&gt;Money is between those two areas.
+Funny, how swiftly priorities shift when health problems arise - and I don&amp;rsquo;t even live in the US!
+My mental state &lt;em&gt;requires&lt;/em&gt; me to have a significant buffer of rainy day founds.
+If my wife&amp;rsquo;s illness returns - it will be expensive.
+If my son&amp;rsquo;s problems get worse - it will be expensive.
+If my CEO gets the crazy idea of mutating my position into some GenAI investment - there will be no income.
+I &lt;em&gt;need&lt;/em&gt; to have a dozen or so months of normal expenses secured, and my earnings allow for that.
+Guess this is why I look at apartment prices with laughter (1,5mil PLN for 70 meters? This stopped being funny some half a mil ago.), as I can&amp;rsquo;t add a huge liability.
+This is also why I&amp;rsquo;m delaying purchasing a real computer for months, even though I really-really-really want to have full FreeBSD compatible desktop.
+My job allows me to save a not insignificant sum, and this is what allows me to sleep at night.&lt;/p&gt;
+&lt;p&gt;Sadly, the IT business is going in the worst direction, but I&amp;rsquo;ve already &lt;a href=&quot;/blog/2024/llms-scare-me/&quot;&gt;written about it&lt;/a&gt;.
+As a counter measure, as I still love computes, my spare time is split between just few things.
+I hack on this site, I use old tech (FVMW! Emacs), I interact with like minded folks online (IRC, Mastodon).
+I love you all - the people I social with, and you who read this via web or RSS.
+I have also started my first &lt;em&gt;true&lt;/em&gt; open source project - &lt;a href=&quot;/projects/chotto/&quot;&gt;Chotto&lt;/a&gt;, and it should be usable in a month or so.&lt;/p&gt;
+&lt;p&gt;A good year is a boring year.
+A great year is a very boring year.
+I look at future with growing distaste and huge amount of panic.
+2024 has bean a good year, as nothing bad happened to me or the closest to me.&lt;/p&gt;
+&lt;p&gt;Here&amp;rsquo;s to another dull year!&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Thu, 02 Jan 2025 21:37:00 +0100</pubDate>
+ <guid>4d521912f1438301453bb460a0ac8520</guid>
+ </item>
+ <item>
+ <title>Armitage III (1995)</title>
+ <link>https://crys.site/reviews/anime_manga/armitage-iii-oav/</link>
+ <description>
+ &lt;p&gt;There was a time when anime was &lt;em&gt;the&lt;/em&gt; place to get cyberpunk-like stories.
+Titles like &lt;em&gt;Akira&lt;/em&gt; or &lt;em&gt;Ghost in the Shell&lt;/em&gt; are still the standard, which which we measure new movies.
+In most cases, that&amp;rsquo;s a very disappointing comparison.
+Have we peaked in the 90s?&lt;/p&gt;
+&lt;p&gt;But among those giants, a lot of titles dissapeared from our shared consciousness.
+What once was known to anyone in the SF and/or anime community, is now completely forgotten.
+This is a review of such title.&lt;/p&gt;
+&lt;p&gt;&lt;em&gt;Armitage III&lt;/em&gt; is a 4 part OAV series from 1995.
+Damn, that&amp;rsquo;s close to 30 years!
+In it, we are transferred to the not-too-distant future.
+Mankind has colonized Mars and humanoid robots became a commodity.
+Ross Sylibus is a detective from Earth transferred to Mars after an accident where a robot left him crippled and forced to use cybernetic leg.
+He is assigned new partner - Naomi Armitage.
+At the same time, a series of robot&amp;rsquo;s murders is discovered.
+We learn that they were all a part of a new series of androids - The Thirds.
+They are not known to the public, but it soon we learn that in contrast to all previous generations, they are capable of bearing children.&lt;/p&gt;
+&lt;p&gt;The story here is, sadly, very basic.
+There is a reason to why &lt;em&gt;Armitage III&lt;/em&gt; is a forgotten classic.
+Upon my first rewatch of the series since my teen years, I left a bit dissapointed.
+We&amp;rsquo;ve got robot woman, who can be impregnated by human males.
+How much story possibilities does it give?
+How many questions does it raise?
+Apparently, zero.
+They give birth to humans, end of story.
+This is not a philosophical anime.&lt;/p&gt;
+
+
+
+
+
+
+
+
+&lt;figure
+ class=&quot;centered&quot;
+&gt;
+ &lt;a href=&quot;https://crys.site/reviews/screenshots/armitage-iii-oav-1_hu8799345633121022968.jpg&quot;&gt;
+ &lt;img
+ alt=&quot;&quot;
+ src=&quot;https://crys.site/reviews/screenshots/armitage-iii-oav-1_hu10753540985211866555.png&quot;
+ srcset=&quot;
+ https://crys.site/reviews/screenshots/armitage-iii-oav-1_hu10753540985211866555.png 1x,
+ https://crys.site/reviews/screenshots/armitage-iii-oav-1_hu6991387434335146988.png 2x
+ &quot;
+ width=&quot;640&quot;
+ height=&quot;480&quot;
+ loading=&quot;lazy&quot;
+ &gt;
+ &lt;/a&gt;
+
+ &lt;figcaption&gt;
+
+I love that 90s aestesteric.
+Someone spent hours on those bullet holes.
+ &lt;a href=&quot;https://animenostalgia.tumblr.com/post/651897636160487424&quot; target=&quot;_blank&quot; title=&quot;source&quot;&gt;[source]&lt;/a&gt;
+
+ &lt;/figcaption&gt;
+
+&lt;/figure&gt;
+
+&lt;p&gt;But if not that, then what?
+Well, it&amp;rsquo;s deeply human.
+It should not come as surprise that Naomi Armitage is a Third (it&amp;rsquo;s in the title!), and all she wants is to be a human.
+She doesn&amp;rsquo;t understand her place in the world.
+Humanity seems to &lt;em&gt;hate&lt;/em&gt; robots, but it was the same humanity who created them.
+For her, the story is finding her human side.
+For Ross it&amp;rsquo;s about dropping all prejudice against androids.
+He starts as someone who would wear a &amp;ldquo;no robots allowed&amp;rdquo; t-shirt (if tshirst were still in fashion), but when he gets to know Naomi, all his believes are put to a test.&lt;/p&gt;
+&lt;p&gt;&lt;em&gt;Armitage III&lt;/em&gt; and everything in it is just a pretense for their story.
+If we look at it like that, it&amp;rsquo;s really nice.
+There is no pretense to ask questions about nature of humanity.
+It&amp;rsquo;s much more starigt forward, and is done really well.
+There is &lt;em&gt;some&lt;/em&gt; depth - humans treat android as property.
+They are sexualized, but they are more sexual creatures.
+They walk half naked, but it&amp;rsquo;s all for the joy of humans.
+The first robots who are closer human, who can bear children, is hunted and have to live in hiding.
+But that all plays second part.&lt;/p&gt;
+
+
+
+
+
+
+
+
+&lt;figure
+ class=&quot;centered&quot;
+&gt;
+ &lt;a href=&quot;https://crys.site/reviews/screenshots/armitage-iii-oav-2_hu1172055006466100878.jpg&quot;&gt;
+ &lt;img
+ alt=&quot;&quot;
+ src=&quot;https://crys.site/reviews/screenshots/armitage-iii-oav-2_hu17367412055929525294.png&quot;
+ srcset=&quot;
+ https://crys.site/reviews/screenshots/armitage-iii-oav-2_hu17367412055929525294.png 1x,
+ https://crys.site/reviews/screenshots/armitage-iii-oav-2_hu17928384205759454475.png 2x
+ &quot;
+ width=&quot;765&quot;
+ height=&quot;574&quot;
+ loading=&quot;lazy&quot;
+ &gt;
+ &lt;/a&gt;
+
+ &lt;figcaption&gt;
+
+I said it&#39;s over-sexualized
+ &lt;a href=&quot;https://pinnedupink.com/blogs/flashbacks/armitage-iii-martian-cyberpunk-review&quot; target=&quot;_blank&quot; title=&quot;source&quot;&gt;[source]&lt;/a&gt;
+
+ &lt;/figcaption&gt;
+
+&lt;/figure&gt;
+
+&lt;p&gt;Even the ending, where we learn why Thirds were developed, is only a reason for more Ross/Naomi scenes.&lt;/p&gt;
+&lt;p&gt;All in all, &lt;em&gt;Armitage III&lt;/em&gt; is a very well made classic.
+I love the character design, I like the music.
+They action scenes are nicely done, there is no time to be bored.
+All my gripes come from comparisons with &lt;em&gt;Ghost in the Shell&lt;/em&gt;, but those comparisons are not needed.&lt;/p&gt;
+&lt;p&gt;As it stand, I wholeheartedly recommend &lt;em&gt;Armitage III&lt;/em&gt; to anyone exploring the golden age of anime.
+Just don&amp;rsquo;t come in expecting one of the greats.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Tue, 24 Dec 2024 20:56:00 +0100</pubDate>
+ <guid>f0da2ffd8f3b48349495d05ece1f4676</guid>
+ </item>
+ <item>
+ <title>LLMs are everything that it wrong in the world of computing</title>
+ <link>https://crys.site/blog/2024/llms-scare-me/</link>
+ <description>
+ &lt;p&gt;For decades corporations have been doing anything in their power to make computers &lt;em&gt;worse&lt;/em&gt;.
+Software used to much faster, much leaner than it is now.
+Hardware performance is progresing by leaps and bounds, but somehow the software is slower.
+Yes, programs we run (cough, web applications, cough) are more complex, but the complexity increase is smaller than the compute improvements.&lt;/p&gt;
+&lt;p&gt;Software used to also be substantially better written.
+When sending patches to clients was a risk by itself, releasing barely working software was akin to shooting yourself in the foot.
+Now bug are expected.
+Again - I am comparing simpler software to what we have now, but the complexity increase is smaller than increase in budgets and team sizes.&lt;/p&gt;
+&lt;p&gt;Software also used to be:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;much more open&lt;/li&gt;
+&lt;li&gt;purchasable&lt;/li&gt;
+&lt;li&gt;not requiring internet&lt;/li&gt;
+&lt;li&gt;not as streamlined&lt;/li&gt;
+&lt;li&gt;not designed by psychologists to be addictive&lt;/li&gt;
+&lt;li&gt;not designed to be a constant stream of revenue&lt;/li&gt;
+&lt;li&gt;swiftly improving&lt;/li&gt;
+&lt;li&gt;possible to be created by teens in their bedrooms&lt;/li&gt;
+&lt;li&gt;simple (as in having a limited use case)&lt;/li&gt;
+&lt;li&gt;small&lt;/li&gt;
+&lt;li&gt;running on different hardware architectures (yes, there used to be more than 3 systems)&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;I am often accused of romanticizing past, but I am far from that.
+Software of the golden age had lots of problems, it was far from perfect.
+I am critical of the path we took - as it was aimed not at &lt;em&gt;better software&lt;/em&gt;, but at &lt;em&gt;better return of investment&lt;/em&gt;.
+We could have had much better working computers, but here we are.
+Everything is barely working but dollar pours.
+Some call it enshittification, others distribution.
+All I know is this is not going to stop.
+It is never enough.&lt;/p&gt;
+&lt;p&gt;This brings me to ChatGPT, LLMs and all that crap.
+I have to admit, that the way it works is extremely cool.
+Some vector math is able to fool us into thinking we are interacting with a human being?
+How cool!
+I&amp;rsquo;d love bo be amazed by it, but if you we look at it critically, it a is terrible peace of software.
+It is slow, expensive, and non-deterministic.
+If I released a code to production with has &lt;em&gt;some chance&lt;/em&gt; to work or not, I would need to fix it.
+If the same software yielded different returns &lt;em&gt;by design&lt;/em&gt;, I&amp;rsquo;d need to rewrite it.&lt;/p&gt;
+&lt;p&gt;I am fully convinced that LLMs are not a path forward at best, and a huge step backward at worst.
+A lot of people are looking at this tech with scared eyes, but there&amp;rsquo;s no chance LLM will be better than they are.&lt;/p&gt;
+&lt;p&gt;However, as in the above examples, better doesn&amp;rsquo;t always win.
+I am afraid that too much money was invested in this dead-end technology for it to fall.
+The entire computing world is the hands of a few gigantic companies, and each of them has fully risked their future on it.
+Google, Microsoft, Amazon, NVIDIA, AMD, Apple - by the end of 2024 there is no big computer company left that is not &amp;ldquo;AI first&amp;rdquo;.
+Will they let their investments go to waste?&lt;/p&gt;
+&lt;p&gt;Google search is useless; Windows is a clown show; Facebook/Twitter are not be touched by humans.
+Yet they own &lt;em&gt;billions&lt;/em&gt; of dollars.
+They are able to throw piles of dollars in the data center furnace and wait.
+The fact that they also benefit from those dollars doesn&amp;rsquo;t make it any harder.&lt;/p&gt;
+&lt;p&gt;I know people who already can&amp;rsquo;t work without asking ChatGPT and they lived through better times.
+But I also know teens who never had a fast computer; for whom slow a web app is the only status-quo they have experienced.
+For them the current crap software is simply &lt;em&gt;software&lt;/em&gt;.
+I am really afraid that the next generations may never know deterministic software.
+Companies can simply continue to add &amp;ldquo;AI&amp;rdquo; features (since AI is now a synonym for GenAI), and raise the kids with it.
+Will the kids care that it sucks?
+Will they even know?&lt;/p&gt;
+&lt;p&gt;Will they give a rat&amp;rsquo;s ass that the GenAI has only two goals: first, to become abstraction over all interactions with computer; second - to make people obsolete?
+I think the first one is the goal, while the other is what GenAI dealers sell to investors.
+Microsoft and Google want to be between everything we do with out computers; that was their strategy for a long time.
+It&amp;rsquo;s a self-propelling nightmare: the worse the vision, the bigger is the money river, which fuels making computers unusable.
+We have already lost so many alternatives - Google is trying to fix itself with GenAI after it destroyed itself with ads, after it destroyed all competition.
+The web was already great.
+Microsoft Windows ate all other x86 OSes except of Unix - and we had dozens of great ones.
+Apple iOS or Google Android are mandatory - but this was not the case a few short years ago.&lt;/p&gt;
+&lt;p&gt;Progress is not linear and &lt;em&gt;better&lt;/em&gt; doesn&amp;rsquo;t always win.
+In most cases whatever gives more return to the investors does.
+And no other technology has more investor risk attached to it than LLMs.
+AI has a lot of usecases, but it is thrown away to make way for GenAI.
+This steamroller may break computers, the economy, and the environment.
+But there is nothing we can about it, as none of us is a billionaire.
+All we can do is to dance how it pleases them.&lt;/p&gt;
+&lt;p&gt;Unless something &lt;strong&gt;big&lt;/strong&gt; happens.
+With infinite pockets, the giants can just &lt;a href=&quot;https://indiadispatch.com/2024/12/22/big-techs-292-billion-ai-spending-spree-meets-the-revenue-desert/&quot;&gt;burn the money&lt;/a&gt; - literally.&lt;/p&gt;
+&lt;hr&gt;
+&lt;p&gt;I will keep this site althole-free, and I will personally run software that has zero LLM.
+I don&amp;rsquo;t use copilot, I had only a dozen chats with GPT.
+I will try to continue keeping LLM subjects here to a minimum.
+This is my life and this is where I have any control.
+This is the only rebellion I am capable of.&lt;/p&gt;
+&lt;hr&gt;
+&lt;p&gt;In unrelated news - SystemD now tries to convince people that having file-based logs is deprecated.
+And in few short years we will have Linux &amp;ldquo;administrators&amp;rdquo; who don&amp;rsquo;t know how to use grep(1).&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Mon, 23 Dec 2024 21:53:00 +0100</pubDate>
+ <guid>a07c8a39af494e803fab6fd1741a23e5</guid>
+ </item>
+ <item>
+ <title>New license plate frame</title>
+ <link>https://crys.site/blog/2024/frame/</link>
+ <description>
+ &lt;p&gt;My car&amp;rsquo;s license plate frame broke, so I had to get new one.
+I could get a boring, all-black one&amp;hellip; or add a few &lt;em&gt;PLN&lt;/em&gt; and have it personalized.&lt;/p&gt;
+
+
+
+
+
+
+
+
+&lt;figure
+ class=&quot;centered&quot;
+&gt;
+ &lt;a href=&quot;https://crys.site/blog/images/license-frame_hu9942410596856573130.JPEG&quot;&gt;
+ &lt;img
+ alt=&quot;A black license plate frame. On the left a white &amp;amp;quot;FreeBSD&amp;amp;quot; text can be seen, and on the right &amp;amp;quot;RunBSD&amp;amp;quot;&quot;
+ src=&quot;https://crys.site/blog/images/license-frame_hu7901744941458084521.png&quot;
+ srcset=&quot;
+ https://crys.site/blog/images/license-frame_hu7901744941458084521.png 1x,
+ https://crys.site/blog/images/license-frame_hu304296380706668907.png 2x
+ &quot;
+ width=&quot;600&quot;
+ height=&quot;159&quot;
+ loading=&quot;lazy&quot;
+ &gt;
+ &lt;/a&gt;
+
+ &lt;figcaption&gt;
+
+My new frame
+ &lt;/figcaption&gt;
+
+&lt;/figure&gt;
+
+&lt;p&gt;You can now easily spot me on the road and say hello (or curse me)!&lt;/p&gt;
+&lt;p&gt;If my back one breaks as well, I&amp;rsquo;ll need something Emacs-themed.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Sat, 21 Dec 2024 21:08:00 +0100</pubDate>
+ <guid>a155e14df5f72e56175997a093b76f1f</guid>
+ </item>
+ <item>
+ <title>Hiatus due to Advent of Code</title>
+ <link>https://crys.site/blog/2024/aoc-hiatus/</link>
+ <description>
+ &lt;p&gt;I was tricked into participating into Advent of Code.
+I had no idea much time it would take!
+Therefore, don&amp;rsquo;t expect many updates here till the end of the year outside of fresh batches of the &lt;a href=&quot;/more/bookmarks/&quot;&gt;hottest bookmarks&lt;/a&gt; out there.
+I&amp;rsquo;ll try to spend all the little free time I have on those assignments.
+See you!&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Mon, 09 Dec 2024 00:01:00 +0100</pubDate>
+ <guid>a0f611729afcbd45492fa2aed2822f48</guid>
+ </item>
+ <item>
+ <title>Things I care about: documentation</title>
+ <link>https://crys.site/blog/2024/good-documentation/</link>
+ <description>
+ &lt;p&gt;This is a new passion for me.
+For &lt;em&gt;ages&lt;/em&gt; I was googling-first, and only then looking into documentation.
+And it was one of the worst mistakes I&amp;rsquo;ve ever made.
+It&amp;rsquo;s the standard way to start things, but it makes it impossible to be good at them.&lt;/p&gt;
+&lt;p&gt;I know how this changed: I moved to FreeBSD.
+Say what you will about Linux/Mac/and so on - their documentation is terrible.
+BSDs however threat their docs with love and care they deserve.&lt;/p&gt;
+&lt;p&gt;There is, however, another reason.
+And thisone makes me sad.
+So many of my colleagues limit themselves to asking ChatGPT &amp;ldquo;how to I reverse a string&amp;rdquo;.
+That&amp;rsquo;s no way to learn, to grow.
+The only thing you are achieving by that is making themselves more reliant on some new gadget and the destruction the planet.
+There should a world for people like me, who judge others based on their use of GenAI.
+Something positive, of course.&lt;/p&gt;
+&lt;p&gt;But back to documentation.
+I participate in Advent of Code, which requires me to find APIs I may have used 10 years ago.
+But all I really need is to know if I&amp;rsquo;m thinking about string, enumerable, or integer.
+Everything else is simply there, waitin, happy to share it&amp;rsquo;s knowledge.
+It&amp;rsquo;s available for free and written in languge I understand.&lt;/p&gt;
+&lt;p&gt;At this point, the first place I go to when encountering a problem are man-pages, then online docs.
+Stack Overflow, Reddit, and so on are simply terrible.
+Outdated, full of hate, done for some internet points.
+Having your documentation be Github or Discord is a slap in the face - I can&amp;rsquo;t search or &lt;em&gt;even access&lt;/em&gt; it without giving my data to a malicious agent.&lt;/p&gt;
+&lt;p&gt;I now understand why &lt;em&gt;gurus&lt;/em&gt;&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote-ref&quot; role=&quot;doc-noteref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; in their 50s, 60s and so on are so good at whey did.
+They had to look up documentation, so they had to know what they were looking for.
+And in the process they most likely learned a lot of random things.
+They didn&amp;rsquo;t waste their time with &amp;ldquo;Learn SQL in 20 minutes. Complete Course from begginer to expert&amp;rdquo; on YouTube by &amp;ldquo;TechChan2000&amp;rdquo;.&lt;/p&gt;
+&lt;p&gt;I&amp;rsquo;ve mentioned that I use Vim(1) quite a lot now.
+And while yes, sometimes I hit a wall and ask on IRC, most of my problems can be simply solved by a quick &lt;code&gt;:h&lt;/code&gt;.
+There is nothing better than having documentation distributed with programs or operating systems.
+Good documentation is the goal, but &lt;em&gt;having it&lt;/em&gt; is the first step.&lt;/p&gt;
+&lt;p&gt;A lot of modern software doesn&amp;rsquo;t come with manual.
+Some of it even doesn&amp;rsquo;t have online documentation.
+And while I get that one may sometimes need to pay for it (is it still the case?), it needs to exist.&lt;/p&gt;
+&lt;p&gt;At this point I want my docs to:&lt;/p&gt;
+&lt;ol&gt;
+&lt;li&gt;Be easily accessible, preferably from shell. Browser depletes my small reserves of focus.&lt;/li&gt;
+&lt;li&gt;Have general introduction (think &lt;code&gt;man man&lt;/code&gt;). I want to know what we are talking about.&lt;/li&gt;
+&lt;li&gt;Have details. Yeah, this is most likely what I am looking for.&lt;/li&gt;
+&lt;li&gt;Have EXAMPLES. BSDs have this perfected.&lt;/li&gt;
+&lt;/ol&gt;
+&lt;p&gt;Pretty soon I will refuse to use software without proper documentation.
+And I find this as a surprise, as it wasn&amp;rsquo;t the case, but having &lt;em&gt;good&lt;/em&gt; documentation at hand is additive.
+Not having to rely on mediocre search engine is the stuff dreams are made of.&lt;/p&gt;
+&lt;hr&gt;
+&lt;p&gt;&lt;code&gt;Man pages&lt;/code&gt; have a bad rap, as they tend to be long and difficult to comprehend.
+But if one dedicates enough time to learn how to use them, it will pay significant dividends.&lt;/p&gt;
+&lt;p&gt;People also tend to have a hard time finding things in there.
+Luckily there is &lt;code&gt;apropos(1)&lt;/code&gt; and &lt;code&gt;whatis(1)&lt;/code&gt;, which, in tandem, let us search for manpages related to what we are looking for.
+Of couse, we can &lt;code&gt;man apropos&lt;/code&gt; and &lt;code&gt;man man&lt;/code&gt;.&lt;/p&gt;
+&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
+&lt;hr&gt;
+&lt;ol&gt;
+&lt;li id=&quot;fn:1&quot;&gt;
+&lt;p&gt;n. [UNIX] An expert. Implies not only wizard skill but
+also a history of being a knowledge resource for others. Less
+often, used (with a qualifier) for other experts on other systems,
+as in `VMS guru&amp;rsquo; (via &lt;a href=&quot;https://latel.upf.edu/morgana/altres/cibres/hackers/Hacker_G.html#entr_089&quot;&gt;The Hacker&amp;rsquo;s Dictionary&lt;/a&gt;)&amp;#160;&lt;a href=&quot;#fnref:1&quot; class=&quot;footnote-backref&quot; role=&quot;doc-backlink&quot;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ol&gt;
+&lt;/div&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Wed, 04 Dec 2024 22:08:00 +0100</pubDate>
+ <guid>91dcc2afc29744130b19876b93f41108</guid>
+ </item>
+ <item>
+ <title>Things I care about: stable APIs</title>
+ <link>https://crys.site/blog/2024/stable-api/</link>
+ <description>
+ &lt;p&gt;I&amp;rsquo;m a FreeBSD guy, not a Linux person.
+I use Emacs(1), plain HTML, jpg/gifs.
+I love Irssi, notmuch, xmpp.
+I code in Ruby, not in Python.
+I&amp;rsquo;m using more and more vim, but not neovim.&lt;/p&gt;
+&lt;p&gt;What is the pattern here?
+Stable APIs.
+I&amp;rsquo;m too old to chase the current trend just to chase it.
+I want to lay down and have a nice time.
+I want to tinker with the software because I want to tinker it, not because the API changed.
+I don&amp;rsquo;t even auto-update apps on my phone!
+But it seems that things are changing just to be changed.
+Nothing can be good &lt;em&gt;enough&lt;/em&gt;, there is always this new crazy idea we simply have to chase.&lt;/p&gt;
+&lt;p&gt;Case in point: Hugo.
+I used to love Hugo.
+Hugo is amazing! when you first start to use it.
+But then your site grows; I now have over 6000 sub pages.
+So, what does Hugo do?
+Break things.
+I am afraid to update this damn thing, as there is a significant chance there will be some breaking change.
+Sure, it may be a warning here and there, but then it will stop working.
+Don&amp;rsquo;t like where I put my name for RSS?
+It was OK a month ago.
+Hate my use of HTML in markdown?
+We had a deal!
+I was to do it when markdown shows its huge limits.&lt;/p&gt;
+&lt;p&gt;I used to run neovim(1).
+It was shiny, it was fast, it was multi-threaded.
+But the community doesn&amp;rsquo;t care for old farts like me, and each update of packages was a lottery - what will break &lt;!-- raw HTML omitted --&gt;this time&lt;!-- raw HTML omitted --&gt;?
+Neovim broke vim, so why the hell not, right?
+(btw, hating of neovim community is a subject for a different time).&lt;/p&gt;
+&lt;p&gt;Yeah, no.
+Thank you.
+Since I&amp;rsquo;m using tmux(1) more and more, I&amp;rsquo;ll stick to good, old vim(1).
+My Emacs(1) config will most likely work for at least a few years before something breaks.
+I don&amp;rsquo;t expect FreeBSD to adapt SystemD/the-whatitsname-ifconfig-replacement.&lt;/p&gt;
+&lt;p&gt;And yes, they can rip Xorg from my cold, dead hands.&lt;/p&gt;
+&lt;p&gt;I&amp;rsquo;m not against progress, I love my multi threading, I love my fast internet.
+What I hate is progress at all cost.
+Sometimes it&amp;rsquo;s nothing at all cost, as GPT doesn&amp;rsquo;t offer anything new.
+But the cost it always there in the form of something that was there, working, having a great time.&lt;/p&gt;
+&lt;p&gt;Do you know that there are people solving Advent of Code using awk(1)?
+Yes, this old rusty thing.
+Somehow, after all those years, it is still &lt;em&gt;good enough&lt;/em&gt; for the task.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Tue, 03 Dec 2024 22:23:00 +0100</pubDate>
+ <guid>c28a17de5fd47d01e8524506be26d5de</guid>
+ </item>
+ <item>
+ <title>Bookmark dump for November 2024</title>
+ <link>https://crys.site/blog/2024/bookmarks-nov/</link>
+ <description>
+
+
+&lt;p&gt;Here are some cool webpages I&#39;ve found recently:&lt;/p&gt;
+&lt;ul&gt;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ &lt;li&gt;
+ 2024-11-28
+ -
+ &lt;a href=&quot;https://news.slashdot.org/story/24/11/28/1831249/coffee-at-highest-price-in-47-years&quot;&gt;Coffee at Highest Price in 47 years&lt;/a&gt;
+ (news.slashdot.org)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-26
+ -
+ &lt;a href=&quot;https://arstechnica.com/tech-policy/2024/11/doj-wraps-up-ad-tech-trial-google-is-three-times-a-monopolist/&quot;&gt;DOJ wraps up ad tech trial: Google is “three times” a monopolist&lt;/a&gt;
+ (arstechnica.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-26
+ -
+ &lt;a href=&quot;https://9to5google.com/2024/11/25/google-ios-app-link-annotations-search/&quot;&gt;Google app for iOS now injects links back to Search on websites&lt;/a&gt;
+ (9to5google.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-26
+ -
+ &lt;a href=&quot;http://textfiles.com/underconstruction/88x31/&quot;&gt;The 88x31 GIF Collection&lt;/a&gt;
+ (textfiles.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-25
+ -
+ &lt;a href=&quot;https://tumfatig.net/2024/running-web-browsers-in-freebsd-jail/&quot;&gt;Running Web Browsers in FreeBSD Jail&lt;/a&gt;
+ (tumfatig.net)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-25
+ -
+ &lt;a href=&quot;https://fabionatali.com/posts/make-your-gnupg-key-discoverable-via-web-key-directory/&quot;&gt;Make your GnuPG key discoverable via Web Key Directory&lt;/a&gt;
+ (fabionatali.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-24
+ -
+ &lt;a href=&quot;https://www.youtube.com/watch?v=XA2WjJbmmoM&quot;&gt;How to Do 90% of What Plugins Do (With Just Vim)&lt;/a&gt;
+ (youtube.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-24
+ -
+ &lt;a href=&quot;https://dustycloud.org/blog/how-decentralized-is-bluesky/&quot;&gt;How decentralized is Bluesky really?&lt;/a&gt;
+ (dustycloud.org)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-24
+ -
+ &lt;a href=&quot;https://dataswamp.org/~solene/2024-11-15-why-i-stopped-using-openbsd.html&quot;&gt;Why I stopped using OpenBSD&amp;#39;&lt;/a&gt;
+ (dataswamp.org)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-24
+ -
+ &lt;a href=&quot;https://www.youtube.com/watch?v=YCjNT9qGjh4&quot;&gt;Half-Life 2: 20th Anniversary Documentary&lt;/a&gt;
+ (youtube.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-24
+ -
+ &lt;a href=&quot;https://vermaden.wordpress.com/2024/11/22/new-jless-freebsd-jails-list-manage-tool/&quot;&gt;New jmore(8) FreeBSD Jails List/Manage Tool&lt;/a&gt;
+ (vermaden.wordpress.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-24
+ -
+ &lt;a href=&quot;https://brainbaking.com/post/2024/11/when-texting-destroyed-social-investment/&quot;&gt;When Texting Destroyed Social Investment&lt;/a&gt;
+ (brainbaking.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-24
+ -
+ &lt;a href=&quot;https://blog.thechases.com/posts/planning-the-day-on-the-cli-with-tsort/&quot;&gt;Planning the day on the CLI with tsort |&lt;/a&gt;
+ (blog.thechases.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-24
+ -
+ &lt;a href=&quot;https://arstechnica.com/tech-policy/2024/11/welcome-to-googles-nightmare-us-reveals-plan-to-destroy-search-monopoly/&quot;&gt;Welcome to Google’s nightmare: US reveals plan to destroy search monopoly&lt;/a&gt;
+ (arstechnica.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-24
+ -
+ &lt;a href=&quot;https://danluu.com/input-lag/&quot;&gt;Computer latency: 1977-2017&lt;/a&gt;
+ (danluu.com)
+
+
+
+
+ &lt;li&gt;
+ 2024-11-24
+ -
+ &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc1288&quot;&gt;RFC 1288 - The Finger User Information Protocol&lt;/a&gt;
+ (datatracker.ietf.org)
+
+
+
+&lt;/ul&gt;
+&lt;p&gt;You can find more on &lt;a href=&quot;/more/bookmarks&quot;&gt;Bookmarks&lt;/a&gt;&lt;/p&gt;
+
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Mon, 02 Dec 2024 22:00:00 +0100</pubDate>
+ <guid>6b874a250594f819bfede77a365c87f0</guid>
+ </item>
+ <item>
+ <title>GenAI dealers and self awareness</title>
+ <link>https://crys.site/blog/2024/gen-ai-awerness/</link>
+ <description>
+ &lt;p&gt;I watched a very long promo movie for &lt;a href=&quot;https://www.youtube.com/watch?v=C25g53PC5QQ&quot;&gt;an AI browser.&lt;/a&gt;
+At first I was afraid on what kind of new nightmares are they planning, but luckily it&amp;rsquo;s nothing like that.
+Yes, it&amp;rsquo;s close to useless and takes too much energy, but nothing for me to be worried about.&lt;/p&gt;
+&lt;p&gt;What coughed my eye however was how they made the movie.
+It&amp;rsquo;s full of soft lighting, kind chat, drawing on paper.
+It&amp;rsquo;s a nice, comfy, warm scene.
+It&amp;rsquo;s everything the product is not.
+Remember when oil companies bought ads to show them as the nice guys?
+Now the most vile of technology is pretending to be this nice, older fella.&lt;/p&gt;
+&lt;p&gt;While creating the final straw in the tech bubble, they are pretending to use a &lt;em&gt;real&lt;/em&gt; video tape.
+And while I get it (I also wouln&amp;rsquo;t like to be connected to any of GenAI), it&amp;rsquo;s fake.
+It&amp;rsquo;s as a fake as the grain we see in the movie.
+It leaves me wondering, how much of this is good advertising, and how much is self-awareness.
+The are the bad guys, but do they know it?
+The third chapter of the movie tells how GenAI are still useless, so maybe they are starting to see the bigger context?&lt;/p&gt;
+&lt;p&gt;Guess it&amp;rsquo;s time to start blocking not only AI Bots, but also AI browsers.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Mon, 02 Dec 2024 14:49:00 +0100</pubDate>
+ <guid>a5d0291b6b4d2eaaf73403fa3173ce82</guid>
+ </item>
+ <item>
+ <title>Moscow 2042 (Vladimir Voinovich, 1986)</title>
+ <link>https://crys.site/reviews/books/moscow-2042-1986/</link>
+ <description>
+ &lt;p&gt;Up till recently, I have not heard of Vladimir Voinovich.
+As you may have noticed, my knowledge of Russian SF literature is quite shallow.
+Everyone has read at leat a few novels from Strugatsky brothers, and I am only now doing it.
+But as it turns out (thanks Mastodon!), Voinovich was a prolific writer.
+At least enough prolific and critical to be forced into exile from Russia!
+Somehow, it seems that only a few years Russian literature was considered to be up there, right among the final bosses of literature!
+But I&amp;rsquo;m too shallow for that.
+I will finish Solzhenitsyn&amp;rsquo;s &lt;em&gt;Gulag Archipelago&lt;/em&gt; one day (the third book is wainting for me for some 15 years), but right now I NEED some fantastic elements in my critique of Communists regime.
+Luckily, Voinovich has me covered.&lt;/p&gt;
+&lt;p&gt;&lt;em&gt;Moscow 2042&lt;/em&gt; is satirical novel where the author describes his fantastical time travel into the future, where he is sent to learn about and report on the Communism to come.
+You may have already guessed, that the painted picture is not pretty at all.&lt;/p&gt;
+&lt;p&gt;It doesn&amp;rsquo;t start like that.
+At first, Voinovich gets enticed with what he is presented with.
+It seem that the Communists of 2042 have learned from the past.
+They removed all the evil parts that &lt;em&gt;we&lt;/em&gt; have seem (and there were lots of them), but kept the spirit of communism: brothership, unity, and happiness.&lt;/p&gt;
+&lt;p&gt;I will not spoil anything for the Curious Reader, but we spend the rest of the novel destroying that picture.
+Now, I am a bit too young to fully appreciate that (being born only 4 years before Poland regained it&amp;rsquo;s independence from USSR), and I am sure to have missed a lot nuances, but I laughed and I cried.
+Author dissects all the horrors of communism then exaggerates them to absurd.
+It&amp;rsquo;s kept light in tone, the atrocities seem distant and therefore funny.
+No chance in hell a system like that could ever be conceived.
+No one is cynical enough to establish it (but they did!)
+Fictionalized Voinoich is not a &lt;em&gt;member&lt;/em&gt; of this society.
+He is a VIP guest.
+He is able to get all the benefits it can give to the chosen few.
+And boy, if he doesn&amp;rsquo;t!
+He takes all he can, not caring where it came from - as he starts to see behind the cracks.
+It&amp;rsquo;s very hard to feel any sympathy for him.
+But then the bill comes&amp;hellip; and I&amp;rsquo;ll stop here.
+The story is masterfully crafted.&lt;/p&gt;
+&lt;p&gt;I was, however, surprised by the SF elements.
+For most of the text, they are reduced to a MacGuffin, a non important tool to tell the story.
+If it stayed like this, &lt;em&gt;Moscow 2042&lt;/em&gt; (I keep writing it as 2024&amp;hellip;) would be an excellent story.
+However, this changes significantly.
+Again, I won&amp;rsquo;t go into spoiler territory (it came as a huge surprise!) but it is a time travel story with all of it&amp;rsquo;s possibilities and paradoxes.
+Up till it is revealed, the time travel story make the book make very little sense (still great), but as a complete package it does.
+It may not go as hard into it like, let&amp;rsquo;s say &lt;em&gt;All You Zombies&lt;/em&gt;, but it goes hard enough to go into my personal &amp;ldquo;top time travel stories&amp;rdquo;, together with the aforementioned short story, &lt;em&gt;Time Crimes&lt;/em&gt;, &lt;em&gt;Looper&lt;/em&gt; and &lt;em&gt;Primer&lt;/em&gt;.
+I have a type it seems.&lt;/p&gt;
+&lt;p&gt;&lt;em&gt;Moscow 2024&lt;/em&gt; is one of the greatest SF books I&amp;rsquo;ve ever read.
+It&amp;rsquo;s fantastical in it&amp;rsquo;s nature, but the story is humanist.
+A true marvel you owe yourself to experience.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Sun, 01 Dec 2024 21:28:00 +0100</pubDate>
+ <guid>497b2bc533716cc3bc65d974071fd297</guid>
+ </item>
+ <item>
+ <title>Chotto 0.1.1 Released</title>
+ <link>https://crys.site/projects/chotto/0-1-1/</link>
+ <description>
+ &lt;p&gt;&lt;a href=&quot;/projects/chotto/&quot;&gt;Chotto&lt;/a&gt; 0.1.1 has been released:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;fix exec config in gemspec. You should be now able to run &amp;ldquo;gem exec chotto&amp;rdquo;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;Git tag: &lt;a href=&quot;https://cgit.crys.site/chotto/tag/?h=0.1.1&quot;&gt;0.1.1&lt;/a&gt;
+Sha256: &lt;code&gt;adaa7bcc0ce817bcc148f8a7d0554fca5d4644133c22d396081318a3f0506681&lt;/code&gt;&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Thu, 28 Nov 2024 15:24:00 +0100</pubDate>
+ <guid>6bdd89fcde2d3a5ed16a683dc8ab69a3</guid>
+ </item>
+ <item>
+ <title>Chotto 0.1.0 Released</title>
+ <link>https://crys.site/projects/chotto/0-1-0/</link>
+ <description>
+ &lt;p&gt;&lt;a href=&quot;/projects/chotto/&quot;&gt;Chotto&lt;/a&gt; 0.1.0 has been released:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Improve filtering DSL (it works now)&lt;/li&gt;
+&lt;li&gt;Allow to select order of messages in filter&lt;/li&gt;
+&lt;li&gt;Allow for processing other messages in thread&lt;/li&gt;
+&lt;li&gt;Allow to process only new messages&lt;/li&gt;
+&lt;li&gt;Add mailing list default filter&lt;/li&gt;
+&lt;li&gt;Add spam default filter&lt;/li&gt;
+&lt;li&gt;Lazy fetch tags in message&lt;/li&gt;
+&lt;li&gt;Distribute as gem (not yet in rubygems. This is planned for 0.3.0)&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;I use this version on my systems.
+New ideas are yet to be documented, but you can learn how to use it from provided filters.
+Full documentation will follow soon.&lt;/p&gt;
+&lt;p&gt;Git tag: &lt;a href=&quot;https://cgit.crys.site/chotto/tag/?h=0.1.0&quot;&gt;0.1.0&lt;/a&gt;
+Sha256: &lt;code&gt;88864df97129486435af0d0c6281a2187213d926066f91e973503ffc0c9b3243&lt;/code&gt;&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Wed, 27 Nov 2024 20:58:00 +0100</pubDate>
+ <guid>fa96bb075fc1b15ca117bced2ec0da3d</guid>
+ </item>
+ <item>
+ <title> Useless things you may want to know: on the origin of &quot;vi&quot;
+ </title>
+ <link>https://crys.site/blog/2024/origins-of-vi/</link>
+ <description>
+ &lt;p&gt;We all know, that &lt;code&gt;vim(1)&lt;/code&gt; stands for &amp;ldquo;vi improved&amp;rdquo;, but what the buttocks is &amp;ldquo;vi&amp;rdquo;?&lt;/p&gt;
+&lt;p&gt;Well, in the ancient times, a great editor was born - &lt;code&gt;ex(1)&lt;/code&gt;.
+While &lt;code&gt;ed(1)&lt;/code&gt; still is &lt;em&gt;the&lt;/em&gt; standard editor, it&amp;rsquo;s lineage is not that simple.
+The &lt;code&gt;ex(1)&lt;/code&gt; editor expanded on &lt;code&gt;ed(1)&lt;/code&gt;&amp;rsquo;s line-oriented text editing.
+In short: &lt;code&gt;ed(1)&lt;/code&gt; was designed before computer displays were common, but &lt;code&gt;ex(1)&lt;/code&gt; came out later.&lt;/p&gt;
+&lt;p&gt;Therefore, &lt;code&gt;ex(1)&lt;/code&gt; added a visual mode, where changes were displayed on the display.
+Like in Star Trek!
+This mode was enabled by calling the &lt;code&gt;:visual&lt;/code&gt; command, or (in short) &lt;code&gt;:vi&lt;/code&gt;.&lt;/p&gt;
+&lt;p&gt;There you go, cyberpalls.
+You&amp;rsquo;re now armed with a bulletproof story for the upcoming X-Mass parties!&lt;/p&gt;
+&lt;p&gt;&lt;code&gt;vim(1)&lt;/code&gt; stands for &lt;code&gt;visual mode of ex, the improved standard text editor, improved&lt;/code&gt;.
+(and, yup. &lt;code&gt;vi(1)&lt;/code&gt; is a standalone program as well.
+But we&amp;rsquo;re talking about naming here).&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Mon, 25 Nov 2024 23:44:00 +0100</pubDate>
+ <guid>c23abbbc35538c2b8cb69523a73a8f10</guid>
+ </item>
+ <item>
+ <title>RE: Self-Hosting Isn&#39;t a Solution; It&#39;s A Patch</title>
+ <link>https://crys.site/blog/2024/re-self-hosting/</link>
+ <description>
+ &lt;p&gt;Recently, an article written by Mathew Duggan titled &lt;a href=&quot;https://matduggan.com/self-hosting-isnt-a-solution-its-a-patch/&quot;&gt;Self-Hosting Isn&amp;rsquo;t a Solution; It&amp;rsquo;s A Patch&lt;/a&gt; has been shared everywhere.
+Frankly, I disagree with it quite deeply.
+It&amp;rsquo;s not even about giving terrible examples of Apple and Fastmail as &lt;em&gt;private&lt;/em&gt; services (with servers in Australia and US, governments have a open line to get the data. Also, Apple is an ad company now as well), but more on the definition of &lt;em&gt;decentralization&lt;/em&gt;.&lt;/p&gt;
+&lt;p&gt;Mathew argues that &amp;ldquo;Self-hosting platforms are fragile.&amp;rdquo;
+Well, this where I can not agree, as this not the type of services I advocate for.&lt;/p&gt;
+&lt;p&gt;Self-hosting platforms are, for the most part, ultra resilient because they don&amp;rsquo;t rely on any single provider.
+My Mastodon instance can be shut down by a lunatic (again), but then I can simply move to any other server.
+This it root of &lt;em&gt;decentralization&lt;/em&gt; as it&amp;rsquo;s based on &lt;em&gt;interoperability&lt;/em&gt;.
+You can&amp;rsquo;t change Twitter provider, it doesn&amp;rsquo;t work like this.
+When Musk gets bored with ruining it, he may very well turn of the lights and all of Twitter will never to be seen again.&lt;/p&gt;
+&lt;p&gt;Self-hosting is not the goal in itself, as it would make no sense.
+You can&amp;rsquo;t self-host for self-hosting sake, as no one will be able to use it.
+Only by allowing interoperability, you give it a raison d&amp;rsquo;etre.
+WWW is decentralized, Email is decentralized, IRC is decentralized and so on.
+And while I love the idea of self-hosting all of it, unless people who won&amp;rsquo;t, can access it, it makes non sense.
+This site could have been hidden behind a firewall, never to be exposed to a random visitor.
+But while it is self-hosted in my living room, I allowed it to be accessed from the wild, open net.
+It may go down any minute (and it will; I have no UPS), it will not matter in the grand scheme of things and millions of other sites will be there, unmoved by my sheer lack of better things to do.&lt;/p&gt;
+&lt;p&gt;Imagine world where all of the web relies on a single provider.
+It&amp;rsquo;s a VC&amp;rsquo;s wet dream.
+We are close to that (please, don&amp;rsquo;t use AWS), but we are not there yet.
+The web is decentralized, interoperable and you &lt;em&gt;may&lt;/em&gt; self host how much of it as you want.&lt;/p&gt;
+&lt;p&gt;What&amp;rsquo;s more, Mathew also assumes that it&amp;rsquo;s free labor.
+Is it?
+Some of if it, yes.
+But people (like me) earn a living from developing and maintaining the open-web.
+Threads, while still being Meta, is available from the Fediverse.
+It&amp;rsquo;s not self-hosted, but your self-hosted instance can be accessed from it.
+And Zuck sure earns a lot from it.&lt;/p&gt;
+&lt;p&gt;In fact, a lot of &lt;em&gt;centralized&lt;/em&gt; services stared as &lt;em&gt;decentralized&lt;/em&gt;.
+Remember when Slack was accessible from IRC clients?
+When Google Talk was just an XMPP?
+It worked much better than it does now.
+And this is exactly what I advocate for.
+It never was a Utopian idea, it was a reality and a normal thing.
+It&amp;rsquo;s the centralization of the web which is the outlier.&lt;/p&gt;
+&lt;p&gt;Privacy is a side-product of decentralization, of self-hosting.
+While it the essential, it&amp;rsquo;s not the whole picture.
+GDRP is a bare minimum, it&amp;rsquo;s tax &lt;em&gt;we&lt;/em&gt; pay for the web of today.
+We should have never needed it.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Mon, 25 Nov 2024 21:14:00 +0100</pubDate>
+ <guid>e24f076ee9342b761324aaaf7e7d42cf</guid>
+ </item>
+ <item>
+ <title>Updated pages</title>
+ <link>https://crys.site/blog/2024/updated-pages/</link>
+ <description>
+ &lt;p&gt;Recently, I have updated some pages:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;&lt;a href=&quot;/more/now/&quot;&gt;Now&lt;/a&gt; - which shows my current interest in &lt;code&gt;finger(1)&lt;/code&gt;&lt;/li&gt;
+&lt;li&gt;&lt;a href=&quot;/more/links/&quot;&gt;Links&lt;/a&gt; - which are finally manageable&lt;/li&gt;
+&lt;li&gt;&lt;a href=&quot;/more/contact/&quot;&gt;Contact&lt;/a&gt; - which look like they look now thank to envy of &lt;a href=&quot;https://jcs.org/contact&quot;&gt;joshua&amp;rsquo;s site&lt;/a&gt;.&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;Most likely I&amp;rsquo;ll recreate more in the coming weeks, but for now I am focusing on bringing &lt;a href=&quot;/projects/chotto/&quot;&gt;Chotto&lt;/a&gt; to version 0.1, which will have enough features to be usable.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Sat, 23 Nov 2024 22:39:00 +0100</pubDate>
+ <guid>d7a0574718f279eb03e4434637514da9</guid>
+ </item>
+ <item>
+ <title>Lost keys</title>
+ <link>https://crys.site/blog/2024/lost-keys/</link>
+ <description>
+ &lt;p&gt;Remember my recent &lt;a href=&quot;https://crys.site/blog/2024/broken-system/&quot;&gt;post&lt;/a&gt; where I came out as the stupid one?
+Well, lack of backup strikes again!&lt;/p&gt;
+&lt;p&gt;Turns out that one of the things I&amp;rsquo;ve lost were my GPG keys and I can&amp;rsquo;t seem to find my revoke key.
+At least I didn&amp;rsquo;t upload any of those to any keyserver&amp;hellip;&lt;/p&gt;
+&lt;p&gt;So, as a result I am not using any GPG key at the time being.
+I&amp;rsquo;ll re-upload a new one, but only after I come it with a fool-proof backup plan.&lt;/p&gt;
+&lt;p&gt;Good thing that my migration to pass(1) didn&amp;rsquo;t even start.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Fri, 22 Nov 2024 20:23:00 +0100</pubDate>
+ <guid>e5553c4d0a77ee6bd67522c5d5cc1730</guid>
+ </item>
+ <item>
+ <title>Sir! We reinvent the wheel here!</title>
+ <link>https://crys.site/blog/2024/reinventint-the-weel/</link>
+ <description>
+ &lt;p&gt;I spend the last few days at $DAYJOB trying to create metrics monitor.
+A Sidekiq services may (or may not) have emitted some stats which may (or may not) have been received by DataDog agent which may (or may not) have been received by data dog which may (or may not have) processed it and they may (or may not) be queried.
+Turns out, that on step 831 of this pipeline &lt;strong&gt;my&lt;/strong&gt; logs were rejected to save costs.
+I cursed more than I will ever admit and I named everyone in proximity of this hellscape while cursing.
+Screw you, Mr. Observability!&lt;/p&gt;
+&lt;p&gt;Now, analyzing logs and metrics is kinda in the epicenter of of being a software engineer.
+They may say it&amp;rsquo;s building software, but sometimes we build software just to maintain it.
+It&amp;rsquo;s not a new concept.
+Ever since we became able to curve numbers on rock plates, someone had to analyze it.&lt;/p&gt;
+&lt;p&gt;Remember grep?
+Tail?
+Cat?
+Our good old pals?
+They served us pretty well over the years, didn&amp;rsquo;t they?
+And then we took them the the shed, shot them, and decorated our editors with their carcasses.
+They are not adequate for &lt;em&gt;cloud scale&lt;/em&gt;.&lt;/p&gt;
+&lt;p&gt;Well, we at $DAYJOB produce close to 20Tb of logs a day.
+Is this a lot?
+Certainly not enough to make Alhtole salivate, but much too much for a laptop to &lt;em&gt;grep&lt;/em&gt; over.&lt;/p&gt;
+&lt;p&gt;We, as an industry, did what we always do: reinvent it.
+Somehow the &amp;ldquo;disruption&amp;rdquo; idea is so etched into our very selves, that we do it to ourselves.
+When we had a small problem of performance, we solved it by covering in layers upon layers of complexity.&lt;/p&gt;
+
+
+
+
+
+
+
+
+
+&lt;figure
+ class=&quot;pull-right&quot;
+&gt;
+ &lt;a href=&quot;https://crys.site/blog/images/how-youju-get-genai_hu4100722733616915020.jpg&quot;&gt;
+ &lt;img
+ alt=&quot;A drawing of a man in a suit. top text: Do you want to get GenAI? bottom text: Because this is how you get GenAI&quot;
+ src=&quot;https://crys.site/blog/images/how-youju-get-genai_hu479730418129302249.png&quot;
+ srcset=&quot;
+ https://crys.site/blog/images/how-youju-get-genai_hu479730418129302249.png 1x,
+ https://crys.site/blog/images/how-youju-get-genai_hu17387822763370681905.png 2x
+ &quot;
+ width=&quot;200&quot;
+ height=&quot;183&quot;
+ loading=&quot;lazy&quot;
+ &gt;
+ &lt;/a&gt;
+
+&lt;/figure&gt;
+
+&lt;p&gt;Now, I hate DataDog mostly because their UX is abysmal.
+It&amp;rsquo;s a constant flood of popovers over hovers.
+If you know how to use it with keyboard alone, please let me know.
+My Vimium is not flexible enough.&lt;/p&gt;
+&lt;p&gt;But sucking is at the core of DataDog.
+It&amp;rsquo;s contrary to their best interest to reuse skills we already had.
+Grep?
+Forget it!
+It&amp;rsquo;s colorful blobs of structured data.
+You just click on things which allow you to click on other things.
+No need to worry your pretty little head with it.
+If they build it, we will come.
+And then we will not know anything else.&lt;/p&gt;
+&lt;p&gt;They could have &lt;em&gt;built&lt;/em&gt; upon what was there, but this would not put them on a VC happy path.
+They could have created a simple system, but instead a company needs to have people fluent in DataDog to operate DataDog.&lt;/p&gt;
+&lt;p&gt;And even with that, it&amp;rsquo;s not &lt;em&gt;good&lt;/em&gt; and certainly not great.
+It&amp;rsquo;s slow, clunky, takes horrendous amount of horse power to use their web interface.
+The data is significantly delayed, and you need to sample it, as you can not afford not to.
+But don&amp;rsquo;t worry, if your have a blind spot as a result, you will never find the charts ever again!
+Problem solved!
+It&amp;rsquo;s one in one of your 77622145201 dashboards.&lt;/p&gt;
+&lt;p&gt;I&amp;rsquo;m currently angry at Data Dog, but it&amp;rsquo;s not only them.
+Our entire industry hates improving.
+It&amp;rsquo;s not enough to fix a problem, you should aim at changing the paradigm (and I have no idea what it even means!).
+A coworker once joked that Google created Kubernetes to ensure that spinning new product is complex enough, for them to never have a competition.&lt;/p&gt;
+&lt;p&gt;This mindset results in us, not even being out of current tech bubble, looking for the next tech bubble.
+Just let me grep logs!&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Thu, 21 Nov 2024 20:00:00 +0100</pubDate>
+ <guid>d2ca4acb5e914ba9f4a268b5439bde2d</guid>
+ </item>
+ <item>
+ <title>This site now has an IRC channel</title>
+ <link>https://crys.site/blog/2024/cryschan/</link>
+ <description>
+ &lt;p&gt;My IP was unbanned from libera.chat (I wasn&amp;rsquo;t the one who got banned!), so I want to use it more.
+After all, where else am I meet with my cyberpals?
+Discord?
+Let&amp;rsquo;s have some self respect!&lt;/p&gt;
+&lt;p&gt;One of ways to achieve that is to have an IRC channel for this site.&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;The official IRC channel for crys.site is &lt;!-- raw HTML omitted --&gt;##cryschan&lt;!-- raw HTML omitted --&gt; on libera.chat&lt;/strong&gt;&lt;/p&gt;
+&lt;hr&gt;
+&lt;p&gt;IRC sure has changed since I used it.
+I had a brief period of using it earlier this year, but it ended when my ISP changed my IP to a banned one.
+But I&amp;rsquo;ve learned that now:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;You can register a nick on a server. It&amp;rsquo;s done via &amp;ldquo;nameserver&amp;rdquo;&lt;/li&gt;
+&lt;li&gt;You can register a channel, so no hostile takeover is possible. It&amp;rsquo;s done via &amp;ldquo;chanserv&amp;rdquo;&lt;/li&gt;
+&lt;li&gt;You can have persistent connection with multiple clients attached. It&amp;rsquo;s done via proxy service called &amp;ldquo;bouncer&amp;rdquo;&lt;/li&gt;
+&lt;li&gt;All the good, old clients still work&lt;/li&gt;
+&lt;li&gt;There&amp;rsquo;s still a couple of hundred thousand people using IRC at any given moment&lt;/li&gt;
+&lt;/ul&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Wed, 20 Nov 2024 20:22:00 +0100</pubDate>
+ <guid>38311500b6928c8a3f4e01ed0afcca7a</guid>
+ </item>
+ <item>
+ <title>The Rock Paper Shotgun 100 and PC gaming</title>
+ <link>https://crys.site/blog/2024/rps-100/</link>
+ <description>
+ &lt;p&gt;Recently, the web page Rock Paper Shotgun published &lt;a href=&quot;https://www.rockpapershotgun.com/the-rps-100-2024&quot;&gt;a list of best 100 PC games.&lt;/a&gt;
+And what a list that is.
+100 games from close to 45 years of PC history.&lt;/p&gt;
+&lt;p&gt;However, I consider it to be a complete misunderstanding of what made PC gaming different.&lt;/p&gt;
+&lt;p&gt;Currently, the biggest differentiating factor is the presence of thriving indie scene.
+Ignoring it, all the mainstream games, are released everywhere.
+And they are the same games, running on the same engines, having the same boring designs, having the same control scheme.
+Yes, you can use keyboard with a PC, but you can pretend that it doesn&amp;rsquo;t exist - gamepad &lt;em&gt;will&lt;/em&gt; be supported.
+What I&amp;rsquo;m saying is that there is no difference between PC and console gaming in 2024.&lt;/p&gt;
+&lt;p&gt;20, 30, 40 years ago, it wasn&amp;rsquo;t the case.
+Not only were there a lot more systems (&lt;a href=&quot;http://retro.ruben.com&quot;&gt;Amiga! Commodore 64! Saturn! BBC Micro!&lt;/a&gt;) than survived till today, but they all had their strengths and weaknesses.
+Consoles were action-focused.
+NES games were fast.
+PC, for a long time, was catching up.
+It was far behind of what Amiga was capable of.&lt;/p&gt;
+&lt;p&gt;However, at some point in the 90s, those gray boxes exploded as gaming machines.
+This is where imagination ran wild, where a game from a year before looked ancient.
+But most importantly, different genres rules the PC marked.&lt;/p&gt;
+&lt;p&gt;First, it was the adventure game.
+We had Sierra, with it&amp;rsquo;s Quest series, Phantasmagorias, Gabriel Knights and son.
+We had Lucasarts, Tex Murphy, 3 Skulls of the Toltec, Flight of the Amazon Queen, or Discworlds.
+PC inherited those genres from older computers, where text-based adventures were &lt;em&gt;the thing&lt;/em&gt;.
+This is where the children of Zork found their new homes.&lt;/p&gt;
+&lt;p&gt;Then we moved to RPGs, a genre for which I was too young for.
+Gold box games, Dungeon Master, Wizardy, Might and Magic, and so on - just to limit ourselves the early ones.
+Later, there was no competition of Fallouts, Baldurs, or Diablos.&lt;/p&gt;
+&lt;p&gt;Then RTS were everywhere.
+C&amp;amp;C, Warcraft, KKND, Polanie, Total Annihilation, Age of Empires&amp;hellip;&lt;/p&gt;
+&lt;p&gt;Yes, most of those games moved to consoles, or came from other &lt;em&gt;computers&lt;/em&gt; but they were designed with a computer person in mind.
+Someone sitting in a dark room with a notepad, ready to draw a map.
+Someone who was ready to click all things on other things for the entire evening.
+Someone ready to do the same thing, all over again - build base, exterminate enemies, build another base.&lt;/p&gt;
+&lt;p&gt;Those games are almost absent from RPS&amp;rsquo;s list.
+Those were not action-oriented games.
+They evolved into such, but action was not at their core.&lt;/p&gt;
+&lt;p&gt;But things changed dramatically.
+No other company changed the gaming landscape as much as ID Software.
+There were 3d games before, but none were Wolfenstein.
+Duke was great, but it never got the never-ending popularity of Quake.
+It may have been a better game, but it was not as fast.&lt;/p&gt;
+&lt;p&gt;For a long time, PC became the FPS machines.
+There was no better platform for it, and there was not better input device than keyboard.
+Console may have had better platformers, but it was the PC where angry, stinky teens shot rockets up each other&amp;rsquo;s asses.
+This changed, as I stated at the begging.&lt;/p&gt;
+&lt;p&gt;Meanwhile, RPS list names mostly games which DNA is rooted in modern unification of gaming as best PC games.
+Yakuza?
+Witcher?
+Resident Evil?
+Nier?
+God of War?
+Those are as different from what PC gaming was it gets.
+They may be great, but they are action oriented spins on the old ideas.
+They don&amp;rsquo;t represent what PC gaming was and can be.&lt;/p&gt;
+&lt;p&gt;In fact, the only few games from the list that are &lt;em&gt;trully&lt;/em&gt; PC are Crusader Kings, Factorio, Dwarf Fortess, Monkey Island, Fallout, and Deus Ex.
+They were designed for PC, they are complex and slow - up to fault.
+They not only &lt;em&gt;allow&lt;/em&gt; playing on keyboard and mouse, but mandate it.&lt;/p&gt;
+&lt;p&gt;Yes, Doom and Quake were a PC games primary, but only because consoles of the time were unable to process data fast enough.
+If they were, they would be a great place for them.&lt;/p&gt;
+&lt;p&gt;And where the hell is Nethack!?&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Sun, 17 Nov 2024 22:14:00 +0100</pubDate>
+ <guid>700db788557f670d8ab53270882a972d</guid>
+ </item>
+ <item>
+ <title>Hackers (1995)</title>
+ <link>https://crys.site/reviews/movies/hacker-1995/</link>
+ <description>
+ &lt;p&gt;There are movies which I absolutely despised when I first saw them.
+They were loud, obnoxious, made little sense.
+Some of them, with passing time, grew on me.&lt;/p&gt;
+&lt;p&gt;Hackers is a 1995 movie about, well, hackers.
+We start with Dade, an 11 year old geek, being arrested for hacking and crashing over 1,5k computer systems.
+He is sentenced to the worst imaginable sentence - an judge imposed mandated ban on using computer system till he reaches 18 years of age.
+Somehow we don&amp;rsquo;t care what happened during those years, as we jump 7 years in the future (which seem to be undefined &amp;ldquo;now&amp;rdquo; of 1990s).
+Dade is hacking once again, and as a result he joins a group of hackers and becomes part of an conspiracy.&lt;/p&gt;
+&lt;p&gt;Say what you will, &lt;em&gt;Hackers&lt;/em&gt; takes the hacker ethos pretty seriously and this is what escaped my teenage understanding.
+All of the main characters (who are using simply amazing handles, like Zero Cool or Cereal Killer) break into system for the fun of it.
+They are prosecuted by the government and media portrays them as dangerous individuals, but they are anything but maleficent.&lt;/p&gt;
+&lt;p&gt;Now, there is a plot where the entire group is messing with an FBI agent by hacking IT systems and modifying data related to him.
+That&amp;rsquo;s the closest where they come to having bad intentions, but it&amp;rsquo;s presented as a cool game.
+They don&amp;rsquo;t want to destroy him, just to mess with him.&lt;/p&gt;
+&lt;p&gt;The hacking scenes make close to zero sense - but that&amp;rsquo;s Hollywood for you.
+We haven&amp;rsquo;t seen serious attempt at showing it before &lt;em&gt;Mr Robot&lt;/em&gt;.
+Therefore, we can see past it.&lt;/p&gt;
+&lt;p&gt;The authors did made some research.
+In one scene, Dade is tested from hacker knowledge.
+A series of famous (and existing!) books is presented to him, and he names them with cure (also real!) nicknames like &amp;ldquo;Orange Book&amp;rdquo;.&lt;/p&gt;
+
+
+
+
+
+
+
+
+&lt;figure
+ class=&quot;centered&quot;
+&gt;
+ &lt;a href=&quot;https://crys.site/reviews/screenshots/hackers-1_hu17246721049555444689.jpg&quot;&gt;
+ &lt;img
+ alt=&quot;Group of youg man sitting at a table, covered in coloroful ligting. They are talking and holding and orange book.&quot;
+ src=&quot;https://crys.site/reviews/screenshots/hackers-1_hu3804141175295036484.png&quot;
+ srcset=&quot;
+ https://crys.site/reviews/screenshots/hackers-1_hu3804141175295036484.png 1x,
+ https://crys.site/reviews/screenshots/hackers-1_hu17887416857160986498.png 2x
+ &quot;
+ width=&quot;720&quot;
+ height=&quot;310&quot;
+ loading=&quot;lazy&quot;
+ &gt;
+ &lt;/a&gt;
+
+ &lt;figcaption&gt;
+
+Orange book in person
+ &lt;a href=&quot;https://medium.com/@atroche/my-favourite-visuals-in-hackers-1995-79b3292d7475&quot; target=&quot;_blank&quot; title=&quot;source&quot;&gt;[source]&lt;/a&gt;
+
+ &lt;/figcaption&gt;
+
+&lt;/figure&gt;
+
+&lt;p&gt;But we can&amp;rsquo;t see past the fashion.
+I have no idea &lt;em&gt;how&lt;/em&gt; anyone came with what we see here, but it&amp;rsquo;s simply glorious.
+Just look!
+I refuse to believe, that this was not the official fashion of New York in the 90s.&lt;/p&gt;
+&lt;p&gt;Also, the quotes.
+If there is a infinitely quotable movie, it is Hackers.
+&lt;em&gt;Hack the Planet&lt;/em&gt; or &lt;em&gt;&amp;ldquo;There is no right and wrong. There&amp;rsquo;s only fun and boring&lt;/em&gt; should be recognized by anyone working in IT.
+I may be wrong, but I think there are questions about &lt;em&gt;Hackers&lt;/em&gt; on CompTIA Security+&lt;/p&gt;
+&lt;p&gt;What the movies makes in its heart, it lacks in brains.
+The main villain is trying to get rich and put the blame on our hackers.
+The plan makes very little sense, as the &lt;em&gt;twist&lt;/em&gt; (which I will not reveal) would be very quickly discovered.
+This removes some of the tension, as it&amp;rsquo;s not stopping the evil guy, but about who will go jail.&lt;/p&gt;
+
+
+
+
+
+
+
+
+&lt;figure
+ class=&quot;centered&quot;
+&gt;
+ &lt;a href=&quot;https://crys.site/reviews/screenshots/hackers-2_hu14743483835221931353.jpg&quot;&gt;
+ &lt;img
+ alt=&quot;An white man is sitting in the center, back to us. In front of him is a huge screen with blue city-scape is in front of him.&quot;
+ src=&quot;https://crys.site/reviews/screenshots/hackers-2_hu13875702352800290153.png&quot;
+ srcset=&quot;
+ https://crys.site/reviews/screenshots/hackers-2_hu13875702352800290153.png 1x,
+ https://crys.site/reviews/screenshots/hackers-2_hu2545831334866828960.png 2x
+ &quot;
+ width=&quot;765&quot;
+ height=&quot;329&quot;
+ loading=&quot;lazy&quot;
+ &gt;
+ &lt;/a&gt;
+
+ &lt;figcaption&gt;
+
+A typical data center
+ &lt;a href=&quot;https://medium.com/@atroche/my-favourite-visuals-in-hackers-1995-79b3292d7475&quot; target=&quot;_blank&quot; title=&quot;source&quot;&gt;[source]&lt;/a&gt;
+
+ &lt;/figcaption&gt;
+
+&lt;/figure&gt;
+
+&lt;p&gt;The antagonist character is also weak.
+He has the most over the top quotes and reactions - even if he has the only hacker-worthy keyboard to be seen here.
+The acting is great, as no one busted out laughing, but no points here.&lt;/p&gt;
+&lt;p&gt;&lt;em&gt;Hackers&lt;/em&gt; is a fun little movie, with a huge soul.
+It&amp;rsquo;s dumb, loud and over-stylized.
+By any means I would not call it &amp;ldquo;good&amp;rdquo;.
+But it&amp;rsquo;s also one the few movies which show the soul of a hacker.
+I think everyone should see it at least once.
+It&amp;rsquo;s not longer a bad thriller, it&amp;rsquo;s a now a fun and cool cult movie.&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;p&gt;You wage wars, murder, cheat, lie to us and try to make us believe it&amp;rsquo;s for our own good, yet we&amp;rsquo;re the criminals. Yes, I am a criminal. My crime is that of curiosity.&lt;/p&gt;
+&lt;/blockquote&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Sun, 17 Nov 2024 20:26:00 +0100</pubDate>
+ <guid>a94a7add1a1217ff4c0d65f1a8fe4319</guid>
+ </item>
+ <item>
+ <title>Migration complete</title>
+ <link>https://crys.site/blog/2024/migration-complete/</link>
+ <description>
+ &lt;p&gt;I finally finished migrating &lt;code&gt;brain-rot&lt;/code&gt; back here.
+Now, the &lt;a href=&quot;/reviews/&quot;&gt;reviews&lt;/a&gt; section contains all of that, which is nice.
+This also marks the first moment, when I am content with its structure.&lt;/p&gt;
+&lt;p&gt;I have crossed this task on the &lt;a href=&quot;/now&quot;&gt;Now|Finger&lt;/a&gt; page.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Fri, 15 Nov 2024 23:13:00 +0100</pubDate>
+ <guid>f5ed008b27bc4ccd491e3ef31339c6ce</guid>
+ </item>
+ <item>
+ <title>My old computer books</title>
+ <link>https://crys.site/blog/2024/my-old-comp-books/</link>
+ <description>
+ &lt;p&gt;Recently, I&amp;rsquo;ve been to my family home and there, behind other books, were them:
+my old computer books.
+I read them on repeat when I was a little kid, just learning about &lt;code&gt;nc&lt;/code&gt; and how to break my machine via &lt;code&gt;autoexec.bat&lt;/code&gt;.&lt;/p&gt;
+
+
+
+
+
+
+
+
+&lt;figure
+ class=&quot;centered&quot;
+&gt;
+ &lt;a href=&quot;https://crys.site/blog/images/sam-na-sam-z-jezykiem-c_hu17421297023129144655.jpg&quot;&gt;
+ &lt;img
+ alt=&quot;an two color book. Most of it&amp;#39;s white, with some black accents.&quot;
+ src=&quot;https://crys.site/blog/images/sam-na-sam-z-jezykiem-c_hu2657164179822278116.png&quot;
+ srcset=&quot;
+ https://crys.site/blog/images/sam-na-sam-z-jezykiem-c_hu2657164179822278116.png 1x,
+ https://crys.site/blog/images/sam-na-sam-z-jezykiem-c_hu6990897562552442550.png 2x
+ &quot;
+ width=&quot;600&quot;
+ height=&quot;820&quot;
+ loading=&quot;lazy&quot;
+ &gt;
+ &lt;/a&gt;
+
+ &lt;figcaption&gt;
+
+Jan Bielicki&#39;s &quot;Alone with the C language&quot;.
+This one&#39;s actually belonged to my mother.
+ &lt;/figcaption&gt;
+
+&lt;/figure&gt;
+
+
+
+
+
+
+
+
+
+&lt;figure
+ class=&quot;centered&quot;
+&gt;
+ &lt;a href=&quot;https://crys.site/blog/images/z-dosem-w-domu_hu7431265151434675509.jpg&quot;&gt;
+ &lt;img
+ alt=&quot;Cover of an horizontal book. A big title in red occupies most of it. A clipart-style house is on the left.&quot;
+ src=&quot;https://crys.site/blog/images/z-dosem-w-domu_hu13852537065065031601.png&quot;
+ srcset=&quot;
+ https://crys.site/blog/images/z-dosem-w-domu_hu13852537065065031601.png 1x,
+ https://crys.site/blog/images/z-dosem-w-domu_hu14692783081613460512.png 2x
+ &quot;
+ width=&quot;600&quot;
+ height=&quot;458&quot;
+ loading=&quot;lazy&quot;
+ &gt;
+ &lt;/a&gt;
+
+ &lt;figcaption&gt;
+
+Paul McFedries&#39; &quot;At home with MS-DOS&quot;
+ &lt;/figcaption&gt;
+
+&lt;/figure&gt;
+
+
+
+
+
+
+
+
+
+&lt;figure
+ class=&quot;centered&quot;
+&gt;
+ &lt;a href=&quot;https://crys.site/blog/images/norton-commander-wiecznie-mlody_hu7167011442086856796.jpg&quot;&gt;
+ &lt;img
+ alt=&quot;a yellow book cover. An old CRT sceen with Norton Commander can be seen on it&quot;
+ src=&quot;https://crys.site/blog/images/norton-commander-wiecznie-mlody_hu13845109250310577002.png&quot;
+ srcset=&quot;
+ https://crys.site/blog/images/norton-commander-wiecznie-mlody_hu13845109250310577002.png 1x,
+ https://crys.site/blog/images/norton-commander-wiecznie-mlody_hu2126782855573238201.png 2x
+ &quot;
+ width=&quot;600&quot;
+ height=&quot;777&quot;
+ loading=&quot;lazy&quot;
+ &gt;
+ &lt;/a&gt;
+
+ &lt;figcaption&gt;
+
+Piotr Kustra&#39;s &quot;Norton Commander 4.0: Forever young&quot;
+ &lt;/figcaption&gt;
+
+&lt;/figure&gt;
+
+&lt;p&gt;None of them are advanced, as they were to introduce me &lt;em&gt;into&lt;/em&gt; computers.
+My mother was the only adult person with any computer literacy around me, if we don&amp;rsquo;t count my &amp;ldquo;Informatics&amp;rdquo; teacher.
+They sure did their job pretty well if you ask me.&lt;/p&gt;
+&lt;p&gt;The first one was too advanced for little me, but the other two were very welcoming.
+Authors aimed at Poles in the 90s, who lived in post-USSR country, and were finally able to experience freedom.
+One of it&amp;rsquo;s aspect were the first PC computers which, though crazy expensive, started to be present in most homes.&lt;/p&gt;
+&lt;p&gt;That&amp;rsquo;s one the reasons I&amp;rsquo;ve never seen a Macintosh.
+Most of us had either, a PC or Commodore.
+Lucky ones had Amigas.
+And with them, a new wave of computer related press and books flooded the market.&lt;/p&gt;
+&lt;p&gt;&lt;em&gt;Member when your knowledge didn&amp;rsquo;t become outdated even before you finished learning anything?&lt;/em&gt;&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Thu, 14 Nov 2024 23:09:00 +0100</pubDate>
+ <guid>27651e5f687d666978b598efa382725f</guid>
+ </item>
+ <item>
+ <title>Joshua Stein&#39;s website</title>
+ <link>https://crys.site/blog/2024/jcs-org/</link>
+ <description>
+ &lt;p&gt;Recently, I&amp;rsquo;ve re-stumbled upon &lt;a href=&quot;https://jcs.org&quot;&gt;Joshua Stein&amp;rsquo;s website&lt;/a&gt; and I simply had to share it.&lt;/p&gt;
+&lt;p&gt;Joshua&amp;rsquo;s hobbies include:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;running OpenBSD on everything (which is very cool)&lt;/li&gt;
+&lt;li&gt;writing software for classic Macintoshes (which is extremely cool).&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;I&amp;rsquo;ve never used an old Macintosh, as the first Mac I was able to afford was a 2013 MacBook Air (currently in use by my mother).
+But even not having those pink-stained glasses, I marveled at his programs &amp;amp; vlogs.&lt;/p&gt;
+&lt;p&gt;Vlogs, yes.
+And they come with a great twist - not being hosted on Google Youtube.
+Well, you see, Joshua (like me) host his entire website from his house (which is absolutely cool).&lt;/p&gt;
+&lt;p&gt;Don&amp;rsquo;t miss his other &lt;a href=&quot;https://jcs.org/projects&quot;&gt;other projects&lt;/a&gt;, as as lot of them is - at the very least - interesting.&lt;/p&gt;
+
+
+
+
+
+
+
+
+&lt;figure
+ class=&quot;centered&quot;
+&gt;
+ &lt;a href=&quot;https://crys.site/blog/images/joshua-stein_hu959500810778078255.jpg&quot;&gt;
+ &lt;img
+ alt=&quot;a webpage with an image covering most of the screen. On it an email compose window from Macintosh is presented. On top-right, a white male is shown.&quot;
+ src=&quot;https://crys.site/blog/images/joshua-stein_hu5756605707660882459.png&quot;
+ srcset=&quot;
+ https://crys.site/blog/images/joshua-stein_hu5756605707660882459.png 1x,
+ https://crys.site/blog/images/joshua-stein_hu11615370080932111190.png 2x
+ &quot;
+ width=&quot;600&quot;
+ height=&quot;498&quot;
+ loading=&quot;lazy&quot;
+ &gt;
+ &lt;/a&gt;
+
+&lt;/figure&gt;
+
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Wed, 13 Nov 2024 22:10:00 +0100</pubDate>
+ <guid>101e49ebb95e39f964b770e0b97523dd</guid>
+ </item>
+ <item>
+ <title>Digipacks</title>
+ <link>https://crys.site/blog/2024/digipacks/</link>
+ <description>
+ &lt;p&gt;With the resurgence of CDs, something had to break.
+We could not simply get a &lt;strong&gt;great&lt;/strong&gt; format, they had to break it.
+My guess it went like this:&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;p&gt;You know what people loved about vinyl?
+Paper sleeves.
+Let&amp;rsquo;s put them everywhere&lt;/p&gt;
+&lt;p&gt;&amp;ndash; some random CEO&lt;/p&gt;
+&lt;/blockquote&gt;
+&lt;p&gt;And so we got the digipack.
+They are not new, we had them back in the day.
+But now they are &lt;em&gt;in&lt;/em&gt;.
+New CD releases seems to abandon that old, boring jewel-case in favor of paper.
+But even that was not enough!
+Yes, they may shred any minute but wait.
+What if, and this is very important, the would damagey the disc?
+Brilliant!&lt;/p&gt;
+&lt;p&gt;Case in point, a &lt;em&gt;good&lt;/em&gt; digipack (as much as a digipack can be good):&lt;/p&gt;
+
+
+
+
+
+
+
+
+&lt;figure
+ class=&quot;Centered&quot;
+&gt;
+ &lt;a href=&quot;https://crys.site/blog/images/jazz-sabbath_hu7117697115930712516.jpg&quot;&gt;
+ &lt;img
+ alt=&quot;Orange paper case for CD. The CD is locked in a plastic container.&quot;
+ src=&quot;https://crys.site/blog/images/jazz-sabbath_hu1367959681968504186.png&quot;
+ srcset=&quot;
+ https://crys.site/blog/images/jazz-sabbath_hu1367959681968504186.png 1x,
+ https://crys.site/blog/images/jazz-sabbath_hu13946205593797558920.png 2x
+ &quot;
+ width=&quot;600&quot;
+ height=&quot;304&quot;
+ loading=&quot;lazy&quot;
+ &gt;
+ &lt;/a&gt;
+
+ &lt;figcaption&gt;
+
+Jazz Sabath - Vol I
+ &lt;/figcaption&gt;
+
+&lt;/figure&gt;
+
+&lt;p&gt;CD cases were designed to protect the disc.
+And the one containing &lt;em&gt;Jazz Sabbath&lt;/em&gt; does this.
+We&amp;rsquo;ve got a plastic inlay making sure the disc:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;can be removed easily, without touching the bottom&lt;/li&gt;
+&lt;li&gt;never touches the case with their backs, even if rotated like crazy.&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;But here have we have a terrible one:&lt;/p&gt;
+
+
+
+
+
+
+
+
+&lt;figure
+ class=&quot;Centered&quot;
+&gt;
+ &lt;a href=&quot;https://crys.site/blog/images/the-cure-songs-odw_hu7533876547538265571.jpg&quot;&gt;
+ &lt;img
+ alt=&quot;A blurry image of a long, paper envelope on cds. The discs are hidden inside the envelope.&quot;
+ src=&quot;https://crys.site/blog/images/the-cure-songs-odw_hu4162661619166432611.png&quot;
+ srcset=&quot;
+ https://crys.site/blog/images/the-cure-songs-odw_hu4162661619166432611.png 1x,
+ https://crys.site/blog/images/the-cure-songs-odw_hu7774392596873212843.png 2x
+ &quot;
+ width=&quot;600&quot;
+ height=&quot;172&quot;
+ loading=&quot;lazy&quot;
+ &gt;
+ &lt;/a&gt;
+
+ &lt;figcaption&gt;
+
+The Cure - Songs of a Lost World
+(yes, it is blurry. I have noticed)
+ &lt;/figcaption&gt;
+
+&lt;/figure&gt;
+
+&lt;p&gt;You will notice, that the disc needs to be picked with two fingers even after pushing it to eject from the envelope.
+Not only is any dust in the envelope scratching the disc, right after it escapes the (much to narrow) case, it needs to be cleaned as there is no way not to grease its bottom.
+And the bottom is what is important!
+That&amp;rsquo;s where the laser goes lalalala!
+That&amp;rsquo;s also where the finger grease and sand scratches will go.&lt;/p&gt;
+&lt;p&gt;Argh.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Wed, 13 Nov 2024 21:15:00 +0100</pubDate>
+ <guid>b4275d03fcdd7272ad5c96e2cba5eafe</guid>
+ </item>
+ <item>
+ <title>Chotto 0.0.1 Released</title>
+ <link>https://crys.site/projects/chotto/0_0_1/</link>
+ <description>
+ &lt;p&gt;&lt;a href=&quot;/projects/chotto/&quot;&gt;Chotto&lt;/a&gt; 0.0.1 has been released:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;Basic filtering DSL&lt;/li&gt;
+&lt;li&gt;Tags management for messages&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;Git tag: &lt;a href=&quot;https://cgit.crys.site/chotto/tag/?h=0.0.1&quot;&gt;0.0.1&lt;/a&gt;&lt;/p&gt;
+&lt;p&gt;I would wait for later release before using it where it matters.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Wed, 13 Nov 2024 00:13:00 +0100</pubDate>
+ <guid>379c4279436b81386e3e8c53aaa44f36</guid>
+ </item>
+ <item>
+ <title>Back to Evil Mode</title>
+ <link>https://crys.site/blog/2024/back-to-evil/</link>
+ <description>
+ &lt;p&gt;It&amp;rsquo;s been half a year on &lt;a href=&quot;http://xahlee.info/emacs/misc/xah-fly-keys.html&quot;&gt;Xah&amp;rsquo;s Fly Keys&lt;/a&gt; and it&amp;rsquo;s a wonderful bindings system.
+A lot of the ideas there are amazing: shortcuts for inserting all the brackets, great case change, bookmark support, to name just a few.
+It was also very &lt;em&gt;comfy&lt;/em&gt; to use with &lt;code&gt;jkli&lt;/code&gt; instead of &lt;code&gt;hjkl&lt;/code&gt;.&lt;/p&gt;
+
+
+
+
+
+
+
+
+
+&lt;figure
+ class=&quot;pull-right&quot;
+&gt;
+ &lt;a href=&quot;https://crys.site/blog/images/evilmode_hu14044110276892439856.jpg&quot;&gt;
+ &lt;img
+ alt=&quot;Black and white logo &amp;amp;quot;evil&amp;amp;quot;&quot;
+ src=&quot;https://crys.site/blog/images/evilmode_hu1850146357252259741.png&quot;
+ srcset=&quot;
+ https://crys.site/blog/images/evilmode_hu1850146357252259741.png 1x,
+ https://crys.site/blog/images/evilmode_hu2779763027040894514.png 2x
+ &quot;
+ width=&quot;150&quot;
+ height=&quot;59&quot;
+ loading=&quot;lazy&quot;
+ &gt;
+ &lt;/a&gt;
+
+&lt;/figure&gt;
+
+&lt;p&gt;But now I&amp;rsquo;m back at Evil.
+First of all, I am (once again) watching old Luke Smith&amp;rsquo;s videos and became very nostalgic for the keys I&amp;rsquo;ve spent years learning.
+Secondly, I got what I wanted out of Fly Keys - Emacs mindset.
+It kinda like BSD - for the untrained eye it&amp;rsquo;s Linux, but the differences go deep.&lt;/p&gt;
+&lt;p&gt;The biggest problem with FK however is that I needed to adjust every freaking thing to it, as I am not smart enough to use two similar key bindings at the same time.
+Ed is everywhere - terminal, browser, remote connection and so on.
+I was fighting with my muscle memory all the time, while &lt;code&gt;hjkl&lt;/code&gt; were just &lt;em&gt;there&lt;/em&gt;.
+At the same time, Fly Keys are open-sourced Xah&amp;rsquo;s workflow.
+It&amp;rsquo;s not a general use case, and I didn&amp;rsquo;t use most od the provided functionality.
+But those which I used, I &lt;em&gt;loved&lt;/em&gt;.
+Guess I&amp;rsquo;ll need to port them to my new Evil setup.&lt;/p&gt;
+&lt;p&gt;Currently, my brain is readjsuting and I can barely control the cursor :-)
+I sure missed some of Vim quality of life improvements, like &lt;code&gt;:sort&lt;/code&gt; or the amazing macro system.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Mon, 04 Nov 2024 20:53:00 +0100</pubDate>
+ <guid>30f2e7af21b073f383161fa4d6679917</guid>
+ </item>
+ <item>
+ <title>MacOS X 2001-2024</title>
+ <link>https://crys.site/blog/2024/end-of-osx/</link>
+ <description>
+ &lt;blockquote&gt;
+&lt;p&gt;Apple is eliminating the option to Control-click to open Mac software that is not correctly signed or notarized in macOS Sequoia. To install apps that Gatekeeper blocks, users will need to open up System Settings and go to the Privacy and Security section to &amp;ldquo;review security information&amp;rdquo; before being able to run the software.&lt;/p&gt;
+&lt;p&gt;&amp;ndash; &lt;a href=&quot;https://forums.macrumors.com/threads/macos-sequoia-makes-it-harder-to-override-gatekeeper-security.2433066/&quot;&gt;MacRumors&lt;/a&gt;&lt;/p&gt;
+&lt;/blockquote&gt;
+&lt;p&gt;At this point, effectively you can not develop for MacOS without paying Apple.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Sun, 03 Nov 2024 09:42:00 +0100</pubDate>
+ <guid>7ee6db98ca13830409de8f670c4f137b</guid>
+ </item>
+ <item>
+ <title>AI radio was straight out of a nightmare</title>
+ <link>https://crys.site/blog/2024/was-ai-radio/</link>
+ <description>
+ &lt;p&gt;We, at Crys Jurnal are happy to report&amp;hellip; no, I&amp;rsquo;m not doing such scary Halloween.&lt;/p&gt;
+&lt;p&gt;A few days ago, I wrote &lt;a href=&quot;/blog/2024/ai-radio/&quot;&gt;about AI radio&lt;/a&gt;.
+Well, we can now talk about it in past tense as they gave up.
+The response was so negative, that they are no longer doing it.
+This is the happy part.&lt;/p&gt;
+&lt;p&gt;But they are not the only ones doing such &amp;ldquo;experiments&amp;rdquo;.
+LLMs may have proven themselves to be unreliable doing anything, but this won&amp;rsquo;t stop evil people from using it everywhere.
+We can only oppose.&lt;/p&gt;
+&lt;p&gt;In a completely unrelated story&amp;hellip;&lt;/p&gt;
+&lt;p&gt;Recently, at my day job I was tasked with converting some Scala code to Ruby.
+I tried to do it manually, to actually understand what the hell am I committing.
+But at two occasions, I gave up and asked Chat GPT to rewrite a method 1:1.
+It did it poorly, but after some back and forth accompanied by cursing, it worked.
+I&amp;rsquo;ve been told, that even for Scala devs the code was convoluted.
+But at a result, the Ruby code was convoluted.
+It looked like they hired a Java guy to write Ruby.
+It works, technically it&amp;rsquo;s correct&amp;hellip; but it&amp;rsquo;s not Ruby.
+Therefore, I added a comment&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;p&gt;Warning. This method was converted from Scala code by LLM&lt;/p&gt;
+&lt;/blockquote&gt;
+&lt;p&gt;I may have played with the devil, but this allowed me to feel better about it.
+I even had to explain myself during patch review.
+One thing I didn&amp;rsquo;t do, was to normalize its usage.
+But, in the end, I noticed that it didn&amp;rsquo;t saved me any time.
+I still needed to refactor it, understand what the original code did, and test it.
+All it did was adding uncertainty.&lt;/p&gt;
+&lt;p&gt;So, in my book, one of things LLMs can&amp;rsquo;t do reliably is helping in coding.
+This was the first time I&amp;rsquo;ve tried to use Altman to help me in work, and it was a failure.
+Just like AI Radio.
+This is the sad part.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Thu, 31 Oct 2024 22:09:00 +0100</pubDate>
+ <guid>6c6590c01006f7d9ab903378905bf356</guid>
+ </item>
+ <item>
+ <title>Upcoming books by Michael Lucas</title>
+ <link>https://crys.site/blog/2024/upcoming-mwl/</link>
+ <description>
+ &lt;p&gt;Our favorite footnote writer is currently preparing two technical books, which you can pre-order:&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;&lt;em&gt;Dead Abyss: TheFreeBSD Journal Letters&lt;/em&gt; on &lt;a href=&quot;https://www.kickstarter.com/projects/mwlucas/dear-abyss-the-freebsd-journal-letters-column-years-1-6&quot;&gt;Kickstarter&lt;/a&gt;,&lt;/li&gt;
+&lt;li&gt;&lt;em&gt;Networking for Systems Administrators, 2nd Edition&lt;/em&gt; on &lt;a href=&quot;https://www.tiltedwindmillpress.com/product/n4sa2e-sponsor/&quot;&gt;his Tilted Windmill Press store.&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;
+&lt;p&gt;I pre-ordered the second one some time ago, even though I still haven&amp;rsquo;t got around to reading the first edition.
+I got it as a bonus for backing &lt;a href=&quot;https://www.tiltedwindmillpress.com/product/ryoms-ebook/&quot;&gt;Run Your Own Mail Server&lt;/a&gt;, which I also haven&amp;rsquo;t started yet.
+I have to write less here and read more &lt;em&gt;there&lt;/em&gt;.&lt;/p&gt;
+&lt;p&gt;Have I mentioned that Michael is one the reasons BSD is so amazing?
+&lt;a href=&quot;/bsd/why-bsd/#community-and-culture&quot;&gt;Oh, I have&lt;/a&gt;.
+Good.&lt;/p&gt;
+
+ &lt;hr&gt;&lt;p style=&quot;font-style:italic&quot;&gt;Reply via &lt;a href=&quot;https://michal.sapka.me/me/contact/&quot;&gt;email&lt;/a&gt;&lt;/p&gt;
+ </description>
+ <author>mms</author>
+ <pubDate>Wed, 30 Oct 2024 22:21:00 +0100</pubDate>
+ <guid>d28cd5aab5d54448d8fda4702113e29e</guid>
+ </item>
+ <generator>Hugo -- gohugo.io</generator>
+ </channel>
+</rss> \ No newline at end of file
diff --git a/new/splash/output/logo.png b/new/splash/output/logo.png
new file mode 100644
index 0000000..8242224
--- /dev/null
+++ b/new/splash/output/logo.png
Binary files differ
diff --git a/new/splash/pages/index.html.erb b/new/splash/pages/index.html.erb
index e5ee6f6..75264d3 100644
--- a/new/splash/pages/index.html.erb
+++ b/new/splash/pages/index.html.erb
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
@@ -10,12 +11,12 @@
<meta property="og:type" content="website">
<meta property="og:url" content="https://crys.site">
<meta property="og:description" content="Michal's personal website">
-
<meta name="fediverse:creator" content="@mms@bsd.cafe">
<link rel="me" href="https://mastodon.bsd.cafe/@mms" title="@mms on bsd.cafe">
-
<style>
body {
+ margin-top: 20px;
+ margin-bottom: 20px;
text-align: center;
background-color: #c2c2c2;
background-image: url("<%= process_image(file: "background.png").relative_path %>");
@@ -24,6 +25,7 @@
a {
color: #000;
+
}
ol {
padding: 0;
@@ -37,7 +39,7 @@
border: 0;
text-decoration: none;
color: #c2c2c2;
- margin: 10px;
+ padding: 10px;
}
</style>
@@ -45,11 +47,13 @@
</head>
<body>
- <h1>Crys SITE</h1>
+ <img alt="Crys Site" src="<%= process_image(file: "logo.png").relative_path %>">
+
+
<p>
Hi!
- I'm Michal and this is my personal webpage.
+ I'm Michal and this is my personal website.
</p>
<p>
diff --git a/new/splash/pages/index.xml.rb b/new/splash/pages/index.xml.rb
new file mode 100644
index 0000000..309cb00
--- /dev/null
+++ b/new/splash/pages/index.xml.rb
@@ -0,0 +1,29 @@
+module Crys
+ module Splash
+ module Page
+ class IndexRss
+ include CommonFunctions
+ def initialize(processor:)
+ @main_rss = fetch_rss(name: :main)
+ @processor = processor
+ end
+
+ def content
+ main_rss
+ end
+
+ def filename
+ "index.xml"
+
+ end
+
+ private
+
+ attr_reader :main_rss
+
+ end
+ end
+ end
+end
+
+@rss = Crys::Splash::Page::IndexRss.new(processor: self)