summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormms <git@sapka.me>2025-01-08 21:24:33 +0100
committermms <git@sapka.me>2025-01-08 21:24:33 +0100
commit4004a55b0e324c35cbc7d58b831e49efd484ab93 (patch)
tree3ff4c68c28165b6d08c1a49532e8421193433d65
parent2781360c7c25404c5a1fd03ed3472d43367ed8c6 (diff)
feat: rubocopHEADmaster
l---------new/.#.rubocop1
l---------new/.#.rubocop_todo.yml1
-rw-r--r--new/.rubocop.yml15
-rw-r--r--new/Gemfile12
-rw-r--r--new/Gemfile.lock29
-rw-r--r--new/bin/builder.rb20
-rw-r--r--new/bin/deployer.rb17
-rw-r--r--new/bin/mixins/splash.rb140
-rwxr-xr-xnew/bin/server.rb26
-rw-r--r--new/lib/crys.rb21
-rw-r--r--new/lib/crys/batch_builder.rb37
-rw-r--r--new/lib/crys/builder.rb14
-rw-r--r--new/lib/crys/deployer.rb38
-rw-r--r--new/lib/crys/image_processor.rb12
-rw-r--r--new/lib/crys/pages_db_manager.rb26
-rw-r--r--new/lib/crys/processors/common_functions.rb11
-rw-r--r--new/lib/crys/processors/common_parts.rb14
-rw-r--r--new/lib/crys/processors/html_processor.rb13
-rw-r--r--new/lib/crys/processors/rss_processor.rb8
-rw-r--r--new/lib/crys/server.rb16
l---------new/splash/bin/.#build.rb1
-rwxr-xr-xnew/splash/bin/build.rb6
-rwxr-xr-xnew/splash/bin/deploy.rb10
-rw-r--r--new/splash/db/pages.yaml4
-rw-r--r--new/splash/lib/splash/batch_builder.rb23
-rw-r--r--new/splash/lib/splash/builder.rb3
-rw-r--r--new/splash/lib/splash/pages_db_manager.rb2
-rw-r--r--new/splash/lib/splash/processors/splash_processor.rb78
-rw-r--r--new/splash/output/index.xml319
-rw-r--r--new/splash/pages/index.html.erb2
-rw-r--r--new/splash/pages/index.xml.rb6
31 files changed, 529 insertions, 396 deletions
diff --git a/new/.#.rubocop b/new/.#.rubocop
new file mode 120000
index 0000000..0f72703
--- /dev/null
+++ b/new/.#.rubocop
@@ -0,0 +1 @@
+mms@voyager.local.6355:1735980208 \ No newline at end of file
diff --git a/new/.#.rubocop_todo.yml b/new/.#.rubocop_todo.yml
new file mode 120000
index 0000000..0f72703
--- /dev/null
+++ b/new/.#.rubocop_todo.yml
@@ -0,0 +1 @@
+mms@voyager.local.6355:1735980208 \ No newline at end of file
diff --git a/new/.rubocop.yml b/new/.rubocop.yml
new file mode 100644
index 0000000..9975492
--- /dev/null
+++ b/new/.rubocop.yml
@@ -0,0 +1,15 @@
+AllCops:
+ NewCops: enable
+
+Metrics/MethodLength:
+ Max: 30
+
+Metrics/ParameterLists:
+ Enabled: false
+
+Naming/HeredocDelimiterNaming:
+ Enabled: false
+
+Style/Documentation:
+ Enabled: false
+
diff --git a/new/Gemfile b/new/Gemfile
index 547b868..a4206aa 100644
--- a/new/Gemfile
+++ b/new/Gemfile
@@ -1,8 +1,10 @@
# frozen_string_literal: true
-source "https://rubygems.org"
+source 'https://rubygems.org'
-gem "erb"
-gem "rspec"
-gem "rss"
-gem "webrick"
+gem 'erb'
+gem 'rspec'
+gem 'rss'
+gem 'rsync'
+gem 'rubocop'
+gem 'webrick'
diff --git a/new/Gemfile.lock b/new/Gemfile.lock
index d610cfd..74b8aa8 100644
--- a/new/Gemfile.lock
+++ b/new/Gemfile.lock
@@ -1,10 +1,20 @@
GEM
remote: https://rubygems.org/
specs:
+ ast (2.4.2)
cgi (0.4.1)
diff-lcs (1.5.1)
erb (4.0.4)
cgi (>= 0.3.3)
+ json (2.9.1)
+ language_server-protocol (3.17.0.3)
+ parallel (1.26.3)
+ parser (3.3.6.0)
+ ast (~> 2.4.1)
+ racc
+ racc (1.8.1)
+ rainbow (3.1.1)
+ regexp_parser (2.10.0)
rexml (3.4.0)
rspec (3.13.0)
rspec-core (~> 3.13.0)
@@ -21,6 +31,23 @@ GEM
rspec-support (3.13.2)
rss (0.3.1)
rexml
+ rsync (1.0.9)
+ rubocop (1.69.2)
+ json (~> 2.3)
+ language_server-protocol (>= 3.17.0)
+ parallel (~> 1.10)
+ parser (>= 3.3.0.2)
+ rainbow (>= 2.2.2, < 4.0)
+ regexp_parser (>= 2.9.3, < 3.0)
+ rubocop-ast (>= 1.36.2, < 2.0)
+ ruby-progressbar (~> 1.7)
+ unicode-display_width (>= 2.4.0, < 4.0)
+ rubocop-ast (1.37.0)
+ parser (>= 3.3.1.0)
+ ruby-progressbar (1.13.0)
+ unicode-display_width (3.1.3)
+ unicode-emoji (~> 4.0, >= 4.0.4)
+ unicode-emoji (4.0.4)
webrick (1.9.1)
PLATFORMS
@@ -31,6 +58,8 @@ DEPENDENCIES
erb
rspec
rss
+ rsync
+ rubocop
webrick
BUNDLED WITH
diff --git a/new/bin/builder.rb b/new/bin/builder.rb
index d3a273a..7172cf8 100644
--- a/new/bin/builder.rb
+++ b/new/bin/builder.rb
@@ -1,7 +1,9 @@
+# frozen_string_literal: true
+
require 'optparse'
-require_relative "../lib/crys"
-require_relative "mixins/splash.rb"
+require_relative '../lib/crys'
+require_relative 'mixins/splash'
Options = Struct.new(:filepath)
@options = Options.new
@@ -13,32 +15,34 @@ OptionParser.new do |opts|
@options[:filepath] = n
end
- opts.on('-a', '--all', 'Process all files') do |v|
+ 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:, batch_builder_class:)
+ def initialize(file_path:, image_dir:, output_dir:, builder_class:, batch_builder_class:, theme_dir:, pages_db:)
@file_path = file_path
@output_dir = output_dir
@builder_class = builder_class
@batch_builder_class = batch_builder_class
@image_dir = image_dir
+ @theme_dir = theme_dir
+ @pages_db = pages_db
end
def run
if file_path == :all
- batch_builder_class.new.build
+ batch_builder_class.new(pages_db: pages_db, output_dir: output_dir, image_dir: image_dir,
+ builder_class: builder_class).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, :batch_builder_class
+
+ attr_reader :builder_class, :file_path, :output_dir, :image_dir, :batch_builder_class, :theme_dir, :pages_db
end
end
diff --git a/new/bin/deployer.rb b/new/bin/deployer.rb
new file mode 100644
index 0000000..4b6610c
--- /dev/null
+++ b/new/bin/deployer.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+require_relative '../lib/crys'
+require_relative 'mixins/splash'
+
+module Crys
+ class DeployerRunner
+ def initialize(source:, dest:)
+ @source = source
+ @dest = dest
+ end
+
+ def run
+ Crys::Deployer.new(source: @source, dest: @dest).run
+ end
+ end
+end
diff --git a/new/bin/mixins/splash.rb b/new/bin/mixins/splash.rb
index 04cdaca..ad73f0f 100644
--- a/new/bin/mixins/splash.rb
+++ b/new/bin/mixins/splash.rb
@@ -1,80 +1,81 @@
+# frozen_string_literal: true
+
module Crys
module Splash
- SPLASH_1 = <<-HEREDOC
- ▄████▄ ██▀███ ▓██ ██▓ ██████ ██████ ██▓▄▄▄█████▓▓█████
-▒██▀ ▀█ ▓██ ▒ ██▒ ▒██ ██▒▒██ ▒ ▒██ ▒ ▓██▒▓ ██▒ ▓▒▓█ ▀
-▒▓█ ▄ ▓██ ░▄█ ▒ ▒██ ██░░ ▓██▄ ░ ▓██▄ ▒██▒▒ ▓██░ ▒░▒███
-▒▓▓▄ ▄██▒▒██▀▀█▄ ░ ▐██▓░ ▒ ██▒ ▒ ██▒░██░░ ▓██▓ ░ ▒▓█ ▄
-▒ ▓███▀ ░░██▓ ▒██▒ ░ ██▒▓░▒██████▒▒▒██████▒▒░██░ ▒██▒ ░ ░▒████▒
-░ ░▒ ▒ ░░ ▒▓ ░▒▓░ ██▒▒▒ ▒ ▒▓▒ ▒ ░▒ ▒▓▒ ▒ ░░▓ ▒ ░░ ░░ ▒░ ░
- ░ ▒ ░▒ ░ ▒░ ▓██ ░▒░ ░ ░▒ ░ ░░ ░▒ ░ ░ ▒ ░ ░ ░ ░ ░
-░ ░░ ░ ▒ ▒ ░░ ░ ░ ░ ░ ░ ░ ▒ ░ ░ ░
-░ ░ ░ ░ ░ ░ ░ ░ ░ ░
-░ ░ ░
-HEREDOC
+ SPLASH_1 = <<~HEREDOC
+ ▄████▄ ██▀███ ▓██ ██▓ ██████ ██████ ██▓▄▄▄█████▓▓█████#{' '}
+ ▒██▀ ▀█ ▓██ ▒ ██▒ ▒██ ██▒▒██ ▒ ▒██ ▒ ▓██▒▓ ██▒ ▓▒▓█ ▀#{' '}
+ ▒▓█ ▄ ▓██ ░▄█ ▒ ▒██ ██░░ ▓██▄ ░ ▓██▄ ▒██▒▒ ▓██░ ▒░▒███#{' '}
+ ▒▓▓▄ ▄██▒▒██▀▀█▄ ░ ▐██▓░ ▒ ██▒ ▒ ██▒░██░░ ▓██▓ ░ ▒▓█ ▄#{' '}
+ ▒ ▓███▀ ░░██▓ ▒██▒ ░ ██▒▓░▒██████▒▒▒██████▒▒░██░ ▒██▒ ░ ░▒████▒
+ ░ ░▒ ▒ ░░ ▒▓ ░▒▓░ ██▒▒▒ ▒ ▒▓▒ ▒ ░▒ ▒▓▒ ▒ ░░▓ ▒ ░░ ░░ ▒░ ░
+ ░ ▒ ░▒ ░ ▒░ ▓██ ░▒░ ░ ░▒ ░ ░░ ░▒ ░ ░ ▒ ░ ░ ░ ░ ░
+ ░ ░░ ░ ▒ ▒ ░░ ░ ░ ░ ░ ░ ░ ▒ ░ ░ ░#{' '}
+ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
+ ░ ░ ░#{' '}
+ HEREDOC
+
+ SPLASH_2 = <<~HEREDOC
+ _/_/_/ _/_/_/ _/ _/#{' '}
+ _/ _/ _/_/ _/ _/ _/_/_/ _/ _/_/_/_/ _/_/#{' '}
+ _/ _/_/ _/ _/ _/_/ _/_/ _/ _/ _/_/_/_/#{' '}
+ _/ _/ _/ _/ _/_/ _/ _/ _/ _/#{' '}
+ _/_/_/ _/ _/_/_/ _/_/_/ _/_/_/ _/ _/_/ _/_/_/#{' '}
+ _/#{' '}
+ _/_/#{' '}
+ HEREDOC
- SPLASH_2 = <<-HEREDOC
- _/_/_/ _/_/_/ _/ _/
- _/ _/ _/_/ _/ _/ _/_/_/ _/ _/_/_/_/ _/_/
- _/ _/_/ _/ _/ _/_/ _/_/ _/ _/ _/_/_/_/
-_/ _/ _/ _/ _/_/ _/ _/ _/ _/
- _/_/_/ _/ _/_/_/ _/_/_/ _/_/_/ _/ _/_/ _/_/_/
- _/
- _/_/
-HEREDOC
-
SPLASH_3 = <<-HEREDOC
@@@@@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@@@@ @@@ @@@@@@@ @@@@@@@@
- !@@ @@! @@@ @@! !@@ !@@ !@@ @@! @@! @@!
- !@! @!@!!@! !@!@! !@@!! !@@!! !!@ @!! @!!!:!
- :!! !!: :!! !!: !:! !:! !!: !!: !!:
+ !@@ @@! @@@ @@! !@@ !@@ !@@ @@! @@! @@!#{' '}
+ !@! @!@!!@! !@!@! !@@!! !@@!! !!@ @!! @!!!:!#{' '}
+ :!! !!: :!! !!: !:! !:! !!: !!: !!:#{' '}
:: :: : : : : .: ::.: : ::.: : : : : :: :::
-HEREDOC
+ HEREDOC
- SPLASH_4 = <<-HEREDOC
- ██████╗██████╗ ██╗ ██╗███████╗███████╗██╗████████╗███████╗
-██╔════╝██╔══██╗╚██╗ ██╔╝██╔════╝██╔════╝██║╚══██╔══╝██╔════╝
-██║ ██████╔╝ ╚████╔╝ ███████╗███████╗██║ ██║ █████╗
-██║ ██╔══██╗ ╚██╔╝ ╚════██║╚════██║██║ ██║ ██╔══╝
-╚██████╗██║ ██║ ██║ ███████║███████║██║ ██║ ███████╗
- ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚══════╝
-HEREDOC
+ SPLASH_4 = <<~HEREDOC
+ ██████╗██████╗ ██╗ ██╗███████╗███████╗██╗████████╗███████╗
+ ██╔════╝██╔══██╗╚██╗ ██╔╝██╔════╝██╔════╝██║╚══██╔══╝██╔════╝
+ ██║ ██████╔╝ ╚████╔╝ ███████╗███████╗██║ ██║ █████╗#{' '}
+ ██║ ██╔══██╗ ╚██╔╝ ╚════██║╚════██║██║ ██║ ██╔══╝#{' '}
+ ╚██████╗██║ ██║ ██║ ███████║███████║██║ ██║ ███████╗
+ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚══════╝
+ HEREDOC
- SPLASH_5 = <<-HEREDOC
- █████████ █████████ ███ █████
- ███░░░░░███ ███░░░░░███ ░░░ ░░███
- ███ ░░░ ████████ █████ ████ █████ ░███ ░░░ ████ ███████ ██████
-░███ ░░███░░███░░███ ░███ ███░░ ░░█████████ ░░███ ░░░███░ ███░░███
-░███ ░███ ░░░ ░███ ░███ ░░█████ ░░░░░░░░███ ░███ ░███ ░███████
-░░███ ███ ░███ ░███ ░███ ░░░░███ ███ ░███ ░███ ░███ ███░███░░░
- ░░█████████ █████ ░░███████ ██████ ░░█████████ █████ ░░█████ ░░██████
- ░░░░░░░░░ ░░░░░ ░░░░░███ ░░░░░░ ░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░
- ███ ░███
- ░░██████
- ░░░░░░
-HEREDOC
+ SPLASH_5 = <<~HEREDOC
+ █████████ █████████ ███ █████#{' '}
+ ███░░░░░███ ███░░░░░███ ░░░ ░░███#{' '}
+ ███ ░░░ ████████ █████ ████ █████ ░███ ░░░ ████ ███████ ██████#{' '}
+ ░███ ░░███░░███░░███ ░███ ███░░ ░░█████████ ░░███ ░░░███░ ███░░███
+ ░███ ░███ ░░░ ░███ ░███ ░░█████ ░░░░░░░░███ ░███ ░███ ░███████#{' '}
+ ░░███ ███ ░███ ░███ ░███ ░░░░███ ███ ░███ ░███ ░███ ███░███░░░#{' '}
+ ░░█████████ █████ ░░███████ ██████ ░░█████████ █████ ░░█████ ░░██████#{' '}
+ ░░░░░░░░░ ░░░░░ ░░░░░███ ░░░░░░ ░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░#{' '}
+ ███ ░███#{' '}
+ ░░██████#{' '}
+ ░░░░░░#{' '}
+ HEREDOC
- SPLASH_6 = <<-HEREDOC
- ▄▀▄▄▄▄ ▄▀▀▄▀▀▀▄ ▄▀▀▄ ▀▀▄ ▄▀▀▀▀▄ ▄▀▀▀▀▄ ▄▀▀█▀▄ ▄▀▀▀█▀▀▄ ▄▀▀█▄▄▄▄
-█ █ ▌ █ █ █ █ ▀▄ ▄▀ █ █ ▐ █ █ ▐ █ █ █ █ █ ▐ ▐ ▄▀ ▐
-▐ █ ▐ █▀▀█▀ ▐ █ ▀▄ ▀▄ ▐ █ ▐ ▐ █ █▄▄▄▄▄
- █ ▄▀ █ █ ▀▄ █ ▀▄ █ █ █ █ ▌
- ▄▀▄▄▄▄▀ █ █ ▄▀ █▀▀▀ █▀▀▀ ▄▀▀▀▀▀▄ ▄▀ ▄▀▄▄▄▄
-█ ▐ ▐ ▐ █ ▐ ▐ █ █ █ █ ▐
-▐ ▐ ▐ ▐ ▐ ▐
-HEREDOC
-
- SPLASH_7 = <<-HEREDOC
-:'######::'########::'##:::'##::'######:::'######::'####:'########:'########:
-'##... ##: ##.... ##:. ##:'##::'##... ##:'##... ##:. ##::... ##..:: ##.....::
- ##:::..:: ##:::: ##::. ####::: ##:::..:: ##:::..::: ##::::: ##:::: ##:::::::
- ##::::::: ########::::. ##::::. ######::. ######::: ##::::: ##:::: ######:::
- ##::::::: ##.. ##:::::: ##:::::..... ##::..... ##:: ##::::: ##:::: ##...::::
- ##::: ##: ##::. ##::::: ##::::'##::: ##:'##::: ##:: ##::::: ##:::: ##:::::::
-. ######:: ##:::. ##:::: ##::::. ######::. ######::'####:::: ##:::: ########:
-:......:::..:::::..:::::..::::::......::::......:::....:::::..:::::........::
-HEREDOC
+ SPLASH_6 = <<~HEREDOC
+ ▄▀▄▄▄▄ ▄▀▀▄▀▀▀▄ ▄▀▀▄ ▀▀▄ ▄▀▀▀▀▄ ▄▀▀▀▀▄ ▄▀▀█▀▄ ▄▀▀▀█▀▀▄ ▄▀▀█▄▄▄▄#{' '}
+ █ █ ▌ █ █ █ █ ▀▄ ▄▀ █ █ ▐ █ █ ▐ █ █ █ █ █ ▐ ▐ ▄▀ ▐#{' '}
+ ▐ █ ▐ █▀▀█▀ ▐ █ ▀▄ ▀▄ ▐ █ ▐ ▐ █ █▄▄▄▄▄#{' '}
+ █ ▄▀ █ █ ▀▄ █ ▀▄ █ █ █ █ ▌#{' '}
+ ▄▀▄▄▄▄▀ █ █ ▄▀ █▀▀▀ █▀▀▀ ▄▀▀▀▀▀▄ ▄▀ ▄▀▄▄▄▄#{' '}
+ █ ▐ ▐ ▐ █ ▐ ▐ █ █ █ █ ▐#{' '}
+ ▐ ▐ ▐ ▐ ▐ ▐#{' '}
+ HEREDOC
+ SPLASH_7 = <<~HEREDOC
+ :'######::'########::'##:::'##::'######:::'######::'####:'########:'########:
+ '##... ##: ##.... ##:. ##:'##::'##... ##:'##... ##:. ##::... ##..:: ##.....::
+ ##:::..:: ##:::: ##::. ####::: ##:::..:: ##:::..::: ##::::: ##:::: ##:::::::
+ ##::::::: ########::::. ##::::. ######::. ######::: ##::::: ##:::: ######:::
+ ##::::::: ##.. ##:::::: ##:::::..... ##::..... ##:: ##::::: ##:::: ##...::::
+ ##::: ##: ##::. ##::::: ##::::'##::: ##:'##::: ##:: ##::::: ##:::: ##:::::::
+ . ######:: ##:::. ##:::: ##::::. ######::. ######::'####:::: ##:::: ########:
+ :......:::..:::::..:::::..::::::......::::......:::....:::::..:::::........::
+ HEREDOC
SPLASH = [
SPLASH_1,
@@ -83,12 +84,11 @@ HEREDOC
SPLASH_4,
SPLASH_5,
SPLASH_6,
- SPLASH_7,
- ]
+ SPLASH_7
+ ].freeze
def print_splash
puts SPLASH.sample
end
-
end
end
diff --git a/new/bin/server.rb b/new/bin/server.rb
index 8133623..d1e85dd 100755
--- a/new/bin/server.rb
+++ b/new/bin/server.rb
@@ -1,31 +1,31 @@
-require "launchy"
+# frozen_string_literal: true
-require_relative "../lib/crys"
-require_relative "mixins/splash.rb"
+require 'launchy'
+require_relative '../lib/crys'
+require_relative 'mixins/splash'
module Crys
class ServerRunner
-
include Splash
-
+
def initialize(server_class:, root:, section:)
@root = File.expand_path root
@server = server_class.new(root: root)
@section = section
end
- def serve
- puts ""
- print_splash
- puts "Hello mms to \e[1m" + section + "\e[22m"
- puts "Serving from: " + root
- puts ""
- server.start
+ def serve
+ puts ''
+ print_splash
+ puts "Hello mms to \e[1m#{section}\e[22m"
+ puts "Serving from: #{root}"
+ puts ''
+ server.start
end
private
attr_reader :root, :server, :section
end
-end
+end
diff --git a/new/lib/crys.rb b/new/lib/crys.rb
index bd0d298..eea74fa 100644
--- a/new/lib/crys.rb
+++ b/new/lib/crys.rb
@@ -1,15 +1,16 @@
-require 'erb'
-require 'rss'
+# frozen_string_literal: true
-require_relative "crys/processors/html_processor.rb"
-require_relative "crys/processors/rss_processor.rb"
+require 'bundler/setup'
-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"
+require_relative 'crys/processors/html_processor'
+require_relative 'crys/processors/rss_processor'
+
+require_relative 'crys/server'
+require_relative 'crys/builder'
+require_relative 'crys/batch_builder'
+require_relative 'crys/image_processor'
+require_relative 'crys/pages_db_manager'
+require_relative 'crys/deployer'
module Crys
end
-
diff --git a/new/lib/crys/batch_builder.rb b/new/lib/crys/batch_builder.rb
index 61fdcf2..43dbec6 100644
--- a/new/lib/crys/batch_builder.rb
+++ b/new/lib/crys/batch_builder.rb
@@ -1,34 +1,31 @@
+# frozen_string_literal: true
+
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"
+ def initialize(pages_db:, output_dir:, image_dir:, builder_class:)
+ @pages_db = pages_db
+ @output_dir = output_dir
+ @image_dir = image_dir
+ @builder_class = builder_class
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,
+ image_dir: image_dir
).build
- puts "processed: " + page.filename
+ puts "processed: #{page.filename}"
end
end
+
+ private
+
+ attr_reader :pages_db, :output_dir, :image_dir, :builder_class
+
+ def db
+ pages_db.new
+ end
end
end
diff --git a/new/lib/crys/builder.rb b/new/lib/crys/builder.rb
index b8135c7..3b1ed38 100644
--- a/new/lib/crys/builder.rb
+++ b/new/lib/crys/builder.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Crys
class Builder
def initialize(file_path:, output_dir:, image_dir:)
@@ -20,20 +22,20 @@ module Crys
def pages_db_manager
Crys::PagesDbManager.new
end
-
+
def process_assets
processor.assets.each do |asset|
- output_path = output_dir + "/" + asset.relative_path
- File.open(output_path, 'w') { |file| file.write(asset.processed_asset) }
+ output_path = "#{output_dir}/#{asset.relative_path}"
+ File.write(output_path, asset.processed_asset)
end
end
def process_content
content = processor.parsed_content
filename = processor.filename
- output_path = output_dir + "/" + filename
+ output_path = "#{output_dir}/#{filename}"
- File.open(output_path, 'w') { |file| file.write(content) }
+ File.write(output_path, content)
end
def processor_class
@@ -43,7 +45,7 @@ module Crys
when /xml.rb$/
rss_processor
else
- raise StandardError.new("No processor for #{file_path}")
+ raise StandardError, "No processor for #{file_path}"
end
end
diff --git a/new/lib/crys/deployer.rb b/new/lib/crys/deployer.rb
new file mode 100644
index 0000000..501ea04
--- /dev/null
+++ b/new/lib/crys/deployer.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+require 'rsync'
+
+module Crys
+ class Deployer
+ DEST_PREFIX = '/usr/local/sites/'
+
+ def initialize(dest:, source:)
+ @dest = dest
+ @source = source
+
+ Rsync.configure do |config|
+ config.host = 'mms@10.0.7.0'
+ end
+ end
+
+ def run
+ puts "source: #{source}"
+ full_dest = DEST_PREFIX + dest
+ puts "dest: #{full_dest}"
+
+ Rsync.run(source, full_dest, ['-rtz']) do |result|
+ if result.success?
+ result.changes.each do |change|
+ puts "#{change.filename} (#{change.summary})"
+ end
+ else
+ puts result.error
+ end
+ end
+ end
+
+ private
+
+ attr_reader :dest, :source
+ end
+end
diff --git a/new/lib/crys/image_processor.rb b/new/lib/crys/image_processor.rb
index b7e2fd6..306c076 100644
--- a/new/lib/crys/image_processor.rb
+++ b/new/lib/crys/image_processor.rb
@@ -1,26 +1,24 @@
+# frozen_string_literal: true
+
module Crys
class ImageProcessor
def initialize(path:, filename:, width: :auto)
@path = path
@filename = filename
@file = File.read(path)
+ @width = width
end
def relative_path
filename
end
- def filename
- filename
- end
-
def processed_asset
file.to_s
end
- private
+ private
- attr_reader :path, :filename, :file
-
+ attr_reader :path, :filename, :file
end
end
diff --git a/new/lib/crys/pages_db_manager.rb b/new/lib/crys/pages_db_manager.rb
index 6a5e71c..029b035 100644
--- a/new/lib/crys/pages_db_manager.rb
+++ b/new/lib/crys/pages_db_manager.rb
@@ -1,10 +1,11 @@
+# frozen_string_literal: true
+
module Crys
class PagesDbManager
PAGES_KEY = :pages
- PAGE = Struct.new(:filename, :file_path, :last_update, :in_rss, keyword_init: true)
+ PAGE = Struct.new(:filename, :file_path, :last_update, :in_rss, keyword_init: true)
- def db_path
- end
+ def db_path; end
def add_page(processor)
@processor = processor
@@ -16,7 +17,7 @@ module Crys
end
def pages
- db.fetch(:pages).map do | _, data|
+ db.fetch(:pages).map do |_, data|
PAGE.new(data)
end
end
@@ -25,7 +26,6 @@ module Crys
attr_reader :hash, :processor
-
def db
@db ||= YAML.load_file(
db_path,
@@ -34,15 +34,9 @@ module Crys
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 = PAGE.new(known_page || { filename: processor.filename,
+ file_path: processor.file_path,
+ in_rss: true })
record.last_update = Time.now
@@ -50,9 +44,7 @@ module Crys
end
def save_db
- File.open(db_path, 'w') do |f|
- f.write db.to_yaml
- end
+ File.write(db_path, db.to_yaml)
end
def known_page(hash)
diff --git a/new/lib/crys/processors/common_functions.rb b/new/lib/crys/processors/common_functions.rb
index f33c768..9cf5669 100644
--- a/new/lib/crys/processors/common_functions.rb
+++ b/new/lib/crys/processors/common_functions.rb
@@ -1,13 +1,15 @@
+# frozen_string_literal: true
+
require 'rss'
module Crys
module CommonFunctions
def project_root
- "#{File.dirname(File.dirname(File.dirname(File.dirname(File.dirname(File.expand_path(__FILE__))))))}"
+ File.dirname(File.dirname(File.dirname(File.dirname(File.dirname(File.expand_path(__FILE__)))))).to_s
end
def process_image(file:, width: :auto)
- full_path = image_dir + "/" + file
+ full_path = "#{image_dir}/#{file}"
image = ::Crys::ImageProcessor.new(path: full_path, filename: file, width: width)
assets << image
@@ -19,10 +21,13 @@ module Crys
if name
path = case name
when :main
- "/public/index.xml"
+ '/public/index.xml'
end
rss = File.read(project_root + path)
+ else
+ puts url
+
end
RSS::Parser.parse(rss)
diff --git a/new/lib/crys/processors/common_parts.rb b/new/lib/crys/processors/common_parts.rb
index 4e1dae5..a6c2dc1 100644
--- a/new/lib/crys/processors/common_parts.rb
+++ b/new/lib/crys/processors/common_parts.rb
@@ -1,18 +1,18 @@
+# frozen_string_literal: true
+
module Crys
module CommonParts
def webbutton(file:, url:, alt:)
- full_path = image_dir + "/buttons/" + file
-
+ full_path = "#{image_dir}/buttons/#{file}"
+
image = ::Crys::ImageProcessor.new(path: full_path, filename: file, width: 88)
assets << image
- code = ERB.new <<-EOF
-<a href="<%=url%>"><img src="<%=image.relative_path%>" width="88" height="31" class="webbutton" alt="<%=alt%>"></a>
-EOF
+ code = ERB.new <<~EOF
+ <a href="<%=url%>"><img src="<%=image.relative_path%>" width="88" height="31" class="webbutton" alt="<%=alt%>"></a>
+ EOF
code.result(binding)
-
end
-
end
end
diff --git a/new/lib/crys/processors/html_processor.rb b/new/lib/crys/processors/html_processor.rb
index bcc9768..33116ce 100644
--- a/new/lib/crys/processors/html_processor.rb
+++ b/new/lib/crys/processors/html_processor.rb
@@ -1,13 +1,14 @@
+# frozen_string_literal: true
+
require 'erb'
-require_relative "common_functions"
-require_relative "common_parts"
+require_relative 'common_functions'
+require_relative 'common_parts'
module Crys
class HtmlProcessor
-
include CommonFunctions
include CommonParts
-
+
def initialize(file_path:, image_dir:)
@file_path = file_path
@image_dir = image_dir
@@ -20,7 +21,7 @@ module Crys
end
def filename
- file_path.scan(/.*\/(.*)\.erb/).flatten.first
+ file_path.scan(%r{.*/(.*)\.erb}).flatten.first
end
attr_reader :assets, :file_path
@@ -31,7 +32,7 @@ module Crys
attr_writer :assets
def local_binding
- local_binding ||= binding.clone
+ @local_binding ||= binding.clone
end
end
end
diff --git a/new/lib/crys/processors/rss_processor.rb b/new/lib/crys/processors/rss_processor.rb
index bce48ad..de79f11 100644
--- a/new/lib/crys/processors/rss_processor.rb
+++ b/new/lib/crys/processors/rss_processor.rb
@@ -1,5 +1,7 @@
-require_relative "common_functions"
-require_relative "common_parts"
+# frozen_string_literal: true
+
+require_relative 'common_functions'
+require_relative 'common_parts'
module Crys
class RssProcessor
@@ -8,6 +10,7 @@ module Crys
rss_file = File.read(file_path)
instance_eval(rss_file)
@assets = []
+ @image_dir = image_dir # just for api consistency
end
def parsed_content
@@ -23,6 +26,5 @@ module Crys
private
attr_reader :rss
-
end
end
diff --git a/new/lib/crys/server.rb b/new/lib/crys/server.rb
index aa0c19c..cc43b39 100644
--- a/new/lib/crys/server.rb
+++ b/new/lib/crys/server.rb
@@ -1,4 +1,6 @@
-require 'webrick'
+# frozen_string_literal: true
+
+require 'webrick'
module Crys
class Server
def initialize(root:)
@@ -6,16 +8,16 @@ module Crys
end
def start
- server = WEBrick::HTTPServer.new :Port => 8000, :DocumentRoot => root
- trap 'INT' do server.shutdown end
+ server = WEBrick::HTTPServer.new Port: 8000, DocumentRoot: root
+ trap 'INT' do
+ server.shutdown
+ end
server.start
end
- private
-
- attr_reader :root
+ private
+ attr_reader :root
end
end
-
diff --git a/new/splash/bin/.#build.rb b/new/splash/bin/.#build.rb
new file mode 120000
index 0000000..0f72703
--- /dev/null
+++ b/new/splash/bin/.#build.rb
@@ -0,0 +1 @@
+mms@voyager.local.6355:1735980208 \ No newline at end of file
diff --git a/new/splash/bin/build.rb b/new/splash/bin/build.rb
index 36da3ec..7f5ac93 100755
--- a/new/splash/bin/build.rb
+++ b/new/splash/bin/build.rb
@@ -8,8 +8,10 @@ builder_class = Crys::Splash::Builder
batch_builder_class = Crys::Splash::BatchBuilder
output_dir = "#{File.dirname(File.dirname(__FILE__))}/output"
image_dir = "#{File.dirname(File.dirname(File.expand_path(__FILE__)))}/assets/images"
+theme_dir = "#{File.dirname(File.dirname(__FILE__))}/theme"
+pages_db = Crys::Splash::PagesDbManager
-file_path=@options[:filepath]
+file_path = @options[:filepath]
Crys::BuilderRunner.new(
file_path: file_path,
@@ -17,4 +19,6 @@ Crys::BuilderRunner.new(
builder_class: builder_class,
image_dir: image_dir,
batch_builder_class: batch_builder_class,
+ theme_dir: theme_dir,
+ pages_db: pages_db
).run
diff --git a/new/splash/bin/deploy.rb b/new/splash/bin/deploy.rb
new file mode 100755
index 0000000..b763905
--- /dev/null
+++ b/new/splash/bin/deploy.rb
@@ -0,0 +1,10 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require_relative '../lib/splash'
+require_relative '../../bin/deployer'
+
+source = "#{File.dirname(File.dirname(File.expand_path(__FILE__)))}/output/"
+dest = 'site-crys-splash'
+
+Crys::DeployerRunner.new(source: source, dest: dest).run
diff --git a/new/splash/db/pages.yaml b/new/splash/db/pages.yaml
index f3fa181..a0d5165 100644
--- a/new/splash/db/pages.yaml
+++ b/new/splash/db/pages.yaml
@@ -3,10 +3,10 @@
d5d3594a0e43df11c58fad58073dc288:
:filename: index.html
:file_path: "/home/mms/ghq/michal.sapka.me/mms/site/new/splash/pages/index.html.erb"
- :last_update: 2025-01-07 20:45:49.264116290 +01:00
+ :last_update: 2025-01-08 21:08:36.876579930 +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-07 20:44:10.927959876 +01:00
+ :last_update: 2025-01-08 21:08:36.895155483 +01:00
:in_rss: false
diff --git a/new/splash/lib/splash/batch_builder.rb b/new/splash/lib/splash/batch_builder.rb
index 1502a80..71f5594 100644
--- a/new/splash/lib/splash/batch_builder.rb
+++ b/new/splash/lib/splash/batch_builder.rb
@@ -1,25 +1,8 @@
+# frozen_string_literal: true
+
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
end
diff --git a/new/splash/lib/splash/builder.rb b/new/splash/lib/splash/builder.rb
index dc52d64..f886a0e 100644
--- a/new/splash/lib/splash/builder.rb
+++ b/new/splash/lib/splash/builder.rb
@@ -1,11 +1,10 @@
# frozen_string_literal: true
-require_relative "processors/splash_processor"
+require_relative 'processors/splash_processor'
module Crys
module Splash
class Builder < Crys::Builder
-
def html_processor
Crys::Splash::SplashProcessor
end
diff --git a/new/splash/lib/splash/pages_db_manager.rb b/new/splash/lib/splash/pages_db_manager.rb
index 11a8d6f..17658ea 100644
--- a/new/splash/lib/splash/pages_db_manager.rb
+++ b/new/splash/lib/splash/pages_db_manager.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Crys
module Splash
class PagesDbManager < Crys::PagesDbManager
diff --git a/new/splash/lib/splash/processors/splash_processor.rb b/new/splash/lib/splash/processors/splash_processor.rb
index eec2bab..1a1f2f2 100644
--- a/new/splash/lib/splash/processors/splash_processor.rb
+++ b/new/splash/lib/splash/processors/splash_processor.rb
@@ -1,70 +1,72 @@
-require "yaml"
+# frozen_string_literal: true
+
+require 'yaml'
module Crys
module Splash
class SplashProcessor < Crys::HtmlProcessor
def not_real
[
- "doctor",
- "starfleet officer",
- "magician",
- "hacker",
- "emperor of an evil galaxy",
- "replicant",
- "computer",
- "evil genius",
- "monster from another dimension",
- "Grim Ripper",
- "computer virus",
- "Leader of the Free World",
- "living legend",
- "sentient AI",
- "teenage pilot of a purple mech",
- "android",
- "last man on Earth",
- "time traveler",
- "pirate",
- "mayor of a vitual town",
+ 'doctor',
+ 'starfleet officer',
+ 'magician',
+ 'hacker',
+ 'emperor of an evil galaxy',
+ 'replicant',
+ 'computer',
+ 'evil genius',
+ 'monster from another dimension',
+ 'Grim Ripper',
+ 'computer virus',
+ 'Leader of the Free World',
+ 'living legend',
+ 'sentient AI',
+ 'teenage pilot of a purple mech',
+ 'android',
+ 'last man on Earth',
+ 'time traveler',
+ 'pirate',
+ 'mayor of a vitual town'
]
end
def update_badge(url_part)
@main_rss = fetch_rss(name: :main)
- if @main_rss.items.first(20).any? { |it| it.link.include? url_part }
- updated_badge
- end
+ return unless @main_rss.items.first(20).any? { |it| it.link.include? url_part }
+
+ updated_badge
end
def more_update_badge(name:)
path = case name
when :bookmarks
- "/assets/more/bookmarks.yml"
+ '/assets/more/bookmarks.yml'
when :links
- "/assets/more/links.yml"
+ '/assets/more/links.yml'
end
yaml = YAML.load_file(project_root + path)
_, vals = yaml.first
- last_added = Time.parse(vals.last.fetch("date"))
+ last_added = Time.parse(vals.last.fetch('date'))
+
+ return unless (Time.now - last_added) / (24 * 60 * 60) < 30
- if (Time.now - last_added) / (24 * 60* 60) < 30
- updated_badge
- end
+ updated_badge
end
def new_badge
- image = process_image(file: "new.gif")
- code = ERB.new <<-EOF
-<img src="<%=image.relative_path%>" width="32" height="22" class="new-badge" alt="NEW">
-EOF
+ image = process_image(file: 'new.gif')
+ code = ERB.new <<~EOF
+ <img src="<%=image.relative_path%>" width="32" height="22" class="new-badge" alt="NEW">
+ EOF
code.result(binding)
end
def updated_badge
- image = process_image(file: "updated.gif")
- code = ERB.new <<-EOF
-<img src="<%=image.relative_path%>" width="54" height="12" class="new-badge" alt="UPDATED">
-EOF
+ image = process_image(file: 'updated.gif')
+ code = ERB.new <<~EOF
+ <img src="<%=image.relative_path%>" width="54" height="12" class="new-badge" alt="UPDATED">
+ EOF
code.result(binding)
end
end
diff --git a/new/splash/output/index.xml b/new/splash/output/index.xml
index 4345d09..8649916 100644
--- a/new/splash/output/index.xml
+++ b/new/splash/output/index.xml
@@ -6,21 +6,96 @@
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<channel>
<title>Crys Site</title>
- <link>http://localhost:1313/</link>
+ <link>https://crys.site/</link>
<description>Recent content on Crys Site</description>
<webMaster>rss</webMaster>
- <lastBuildDate>Tue, 07 Jan 2025 20:43:00 +0100</lastBuildDate>
+ <lastBuildDate>Wed, 08 Jan 2025 19:48:00 +0100</lastBuildDate>
+ <item>
+ <title>Monday Begins on Saturday (Arkady and Boris Strugatsky, 1965)</title>
+ <link>https://crys.site/reviews/books/monday-begins-on-saturday-1965/</link>
+ <description>
+ &lt;p&gt;&lt;em&gt;Monday Begins on Saturday&lt;/em&gt; is yet another Science Fiction novel by Strugatsky Brothers I&amp;rsquo;ve read this year.
+It is also the weirdest one of those!&lt;/p&gt;
+&lt;p&gt;Aleksandr Ivanovich Privalov is a young programmer (warning: there no computers in the novel) on his way to his newly assigned position.
+His car breaks down, he meets strange fellows who recruit him to a nearby &amp;ldquo;Scientific Research Institute of Sorcery and Wizardry&amp;rdquo;.
+Yup - this is not run of the mill institute, as we&amp;rsquo;re not dealing with boring stuff, like physics.
+Instead we&amp;rsquo;ve got magic, magical beasts and the pursuit to define happiness.
+Nice combination, if you ask me.&lt;/p&gt;
+&lt;p&gt;Strugaccy stray from western tropes.
+Their adventure as writers started deep into praising socialism - we&amp;rsquo;ll go to space and show them all the nice things communism brings!
+With time, they&amp;rsquo;ve abandoned the hope.
+&lt;em&gt;Monday&amp;hellip;&lt;/em&gt; was released right after &lt;em&gt;&lt;a href=&quot;/reviews/books/hard-to-be-a-god-strugatsky-1964/&quot;&gt;Hard to be God&lt;/a&gt;&lt;/em&gt; and they show striking similarities.
+The latter was a grim tale about the terrible nature of man, where happiness does not exist.
+This book is a funny novel about the terrible nature of the world, where happiness is as real as a Baba Yaga.
+It&amp;rsquo;s also a great critical analysis of soviet ideas, but for that I much preferred &lt;em&gt;&lt;a href=&quot;/reviews/books/moscow-2042-1986/&quot;&gt;Moscow 2042&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
+&lt;p&gt;What the authors managed to achieve to make all the magic elements mundane.
+Not by weaknesses of the plot (it&amp;rsquo;s not a YA novel), but on purpose.
+It&amp;rsquo;s studied, it&amp;rsquo;s analyzed, it&amp;rsquo;s understood.
+The characters analyze it without any emotion, much like things are thougt in school.
+The idea is great, but it may be confusing for western audiences as it&amp;rsquo;s rooted in Russian folklore.
+I am Polish, so I&amp;rsquo;ve been subjected to it quite early on.
+But would reading some classic folk tales help?
+No, not really.
+The fantastic elements are not treated with any seriousness.
+They simply &lt;em&gt;are&lt;/em&gt; there to be studied.
+It&amp;rsquo;s the anti-Shrek where most of the jokes are based on you knowing who a magical beast is.&lt;/p&gt;
+&lt;p&gt;The &lt;strong&gt;actual&lt;/strong&gt; subject of the story is great, but it requires some knowledge about Marxism to be seen.
+Deep in the USSR Scientific communism was te norm.
+Everything could have been analyzed and understood; proletariat&amp;rsquo;s domination was to be scientific fact.
+Here we see it put the limit - magical beast are to be analyzed, equated and understood.
+&lt;em&gt;Monday&amp;hellip;&lt;/em&gt; is too smart of it&amp;rsquo;s own good, as it may be very easily misunderstood.&lt;/p&gt;
+&lt;p&gt;Sadly, I have more gripes with how the novel is constructed, as we&amp;rsquo;re seemingly without a plot.
+The Institute and Privalov (aka Sasha, don&amp;rsquo;t ask me how it&amp;rsquo;s his nickname) who is slowly learning about magic is the only element connecting individual pages.
+The actual story is presented as series of disjointed stories, each with it&amp;rsquo;s own begging and end.
+Sure, some stories may conclude much later, but they don&amp;rsquo;t build on each other.
+The novel consits of three parts, and each following is less and less guilty of that, but it&amp;rsquo;s never a &lt;em&gt;novel&lt;/em&gt; in a common sense.&lt;/p&gt;
+&lt;p&gt;The Institute is occupied by wonderfully mad characters, much like Invisible Institute from Discworld.
+We&amp;rsquo;ve got a former grand inquisitor in charge of the Department of Meaning of Life; a director who has two personalities which have no idea what the other one is doing.
+Some ideas are also amazingly creative - have you ever heard of using a genie as a a bomb?
+Each single part of the novel is great, but I had problem with the complete set.
+It&amp;rsquo;s a collection of short stories with overarching plot and nothing pushed me forward.
+Heck, I even incured a fine from the library, as it took me very long to get to reading and then (despite the small length) to finish.&lt;/p&gt;
+&lt;p&gt;Personally, I enjoyed the last part the most as the final mystery is revealed and it&amp;rsquo;s a very intriguing concept.&lt;/p&gt;
+&lt;p&gt;So, as I&amp;rsquo;ve praised and recommended all Strugasky Brothers novels up to this, I have a bit of problem here.
+As I&amp;rsquo;ve finished it a few months ago and had some time to digest it, I consider it another bullseye.
+But when I read it, I had much more problems, as the story-based structure is much less gripping that a full-on novel.
+I&amp;rsquo;m glad I&amp;rsquo;ve read it, but I will never re-read 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>Wed, 08 Jan 2025 19:48:00 +0100</pubDate>
+ <guid>bbc60dab9cf71ce5171b6d5af95bc58a</guid>
+ </item>
+ <item>
+ <title>Pixelated images for vintage inspired websites</title>
+ <link>https://crys.site/blog/2025/pixelated-render-css/</link>
+ <description>
+ &lt;p&gt;We don&amp;rsquo;t take kindly of modern, huge images here, at Crys.
+But modern browsers don&amp;rsquo;t care and they put a significant amount of grease over them.
+Images must be big or ugly, and therefore I have more grease over my web buttons than in my fries.&lt;/p&gt;
+&lt;p&gt;But CSS comes to save the day once again!
+We can force the amazing, pixelated rendering that we want.&lt;/p&gt;
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre tabindex=&quot;0&quot; style=&quot;background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&quot;&gt;&lt;code class=&quot;language-css&quot; data-lang=&quot;css&quot;&gt;&lt;span style=&quot;display:flex;&quot;&gt;&lt;span&gt;@&lt;span style=&quot;font-weight:bold&quot;&gt;media&lt;/span&gt; (&lt;span style=&quot;font-weight:bold&quot;&gt;min-resolution&lt;/span&gt;: &lt;span style=&quot;font-weight:bold&quot;&gt;192dpi&lt;/span&gt;) { * { image-rendering: &lt;span style=&quot;font-weight:bold&quot;&gt;pixelated&lt;/span&gt;; } }
+&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(I stole from min-resolution &lt;a href=&quot;http://retro.rubenerd.com&quot;&gt;Ruben&amp;rsquo;s retro site&lt;/a&gt;, like a lot of other things).&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, 08 Jan 2025 11:27:00 +0100</pubDate>
+ <guid>31636dcb174867762e1b0bd972d29776</guid>
+ </item>
<item>
<title>Star Trek: Voyager 06x03 - Barge of the Dead</title>
- <link>http://localhost:1313/star-trek/voy/06x03-barge-of-the-dead/</link>
+ <link>https://crys.site/star-trek/voy/06x03-barge-of-the-dead/</link>
<description>
- &lt;p&gt;B&amp;rsquo;Elanna starts having vissions where she is on the Barge of the Dead, where dishonored Klingon souls are placed.&lt;/p&gt;
+ &lt;p&gt;B&amp;rsquo;Elanna starts having visions where she is on the Barge of the Dead, where dishonored Klingon souls are placed on their way to hell.&lt;/p&gt;
&lt;h2 id=&quot;impressions&quot;&gt;Impressions&lt;/h2&gt;
-&lt;p&gt;I am rarely fond of B&amp;rsquo;Elanna&amp;rsquo;s plots, but this is one to be better ones.
+&lt;p&gt;I am rarely fond of B&amp;rsquo;Elanna&amp;rsquo;s plots, but this is one of the better ones.
We often see her struggle with her Klingon heritage, but rarely we see her so vulnerable.
-It&amp;rsquo;s not &lt;em&gt;her&lt;/em&gt; who is punished, but it&amp;rsquo;s her mother.
+It&amp;rsquo;s not &lt;em&gt;her&lt;/em&gt; who is punished for her sins, but it&amp;rsquo;s her mother.
A much bigger deal if you ask me.&lt;/p&gt;
-&lt;p&gt;Though he vision, we see twisted versions of the crew.
+&lt;p&gt;Though her visions, we see twisted versions of the crew.
Everyone is becoming her demon, making her feel alienated and vulnerable.
Seeing a Klingon in this position?
Amazing.&lt;/p&gt;
@@ -28,7 +103,7 @@ Amazing.&lt;/p&gt;
Maybe she is dead?
Maybe the entire Voyager was just a dream?
Well, this is episode 223 of &lt;em&gt;ST:V&lt;/em&gt; so of course it&amp;rsquo;s not.
-Such plot device make for an interesting story when you look at it though the lens of single episode, it doesn&amp;rsquo;t work in the context of the entire series.
+Such plot device make for an interesting story when you look at it though the lens of single episode, but it doesn&amp;rsquo;t work in the context of the entire series.
Finding B&amp;rsquo;Elanna confused was great, but this puts me in the viewer&amp;rsquo;s position.
I am not taking any part in the story, as I already know it how it will end.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Barge of the Dead&lt;/em&gt; marks the moment when Ronald Moore and Bryan Fuller gave up.
@@ -43,12 +118,12 @@ Moore created the great remake of &lt;em&gt;Battlestar Galactica&lt;/em&gt; and
&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, 07 Jan 2025 20:43:00 +0100</pubDate>
- <guid>e1ed907627023042d7e6c5bc93fb4cfc</guid>
+ <pubDate>Tue, 07 Jan 2025 20:47:00 +0100</pubDate>
+ <guid>306cc7d06d4bdbe0e07822c246206e19</guid>
</item>
<item>
<title>Bookmark dump for December 2024</title>
- <link>http://localhost:1313/blog/2025/bookmarks-dec/</link>
+ <link>https://crys.site/blog/2025/bookmarks-dec/</link>
<description>
@@ -64,6 +139,10 @@ Moore created the great remake of &lt;em&gt;Battlestar Galactica&lt;/em&gt; and
+
+
+
+
&lt;li&gt;
2024-12-23
-
@@ -552,7 +631,7 @@ Moore created the great remake of &lt;em&gt;Battlestar Galactica&lt;/em&gt; and
</item>
<item>
<title>2024 in retrospect</title>
- <link>http://localhost:1313/blog/2025/2024-in-retrospect/</link>
+ <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;
@@ -632,7 +711,7 @@ I look at future with growing distaste and huge amount of panic.
</item>
<item>
<title>Armitage III (1995)</title>
- <link>http://localhost:1313/reviews/anime_manga/armitage-iii-oav/</link>
+ <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.
@@ -670,13 +749,13 @@ This is not a philosophical anime.&lt;/p&gt;
&lt;figure
class=&quot;centered&quot;
&gt;
- &lt;a href=&quot;http://localhost:1313/reviews/screenshots/armitage-iii-oav-1_hu8799345633121022968.jpg&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;http://localhost:1313/reviews/screenshots/armitage-iii-oav-1_hu10753540985211866555.png&quot;
+ src=&quot;https://crys.site/reviews/screenshots/armitage-iii-oav-1_hu10753540985211866555.png&quot;
srcset=&quot;
- http://localhost:1313/reviews/screenshots/armitage-iii-oav-1_hu10753540985211866555.png 1x,
- http://localhost:1313/reviews/screenshots/armitage-iii-oav-1_hu6991387434335146988.png 2x
+ 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;
@@ -722,13 +801,13 @@ But that all plays second part.&lt;/p&gt;
&lt;figure
class=&quot;centered&quot;
&gt;
- &lt;a href=&quot;http://localhost:1313/reviews/screenshots/armitage-iii-oav-2_hu1172055006466100878.jpg&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;http://localhost:1313/reviews/screenshots/armitage-iii-oav-2_hu17367412055929525294.png&quot;
+ src=&quot;https://crys.site/reviews/screenshots/armitage-iii-oav-2_hu17367412055929525294.png&quot;
srcset=&quot;
- http://localhost:1313/reviews/screenshots/armitage-iii-oav-2_hu17367412055929525294.png 1x,
- http://localhost:1313/reviews/screenshots/armitage-iii-oav-2_hu17928384205759454475.png 2x
+ 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;
@@ -761,7 +840,7 @@ Just don&amp;rsquo;t come in expecting one of the greats.&lt;/p&gt;
</item>
<item>
<title>LLMs are everything that it wrong in the world of computing</title>
- <link>http://localhost:1313/blog/2024/llms-scare-me/</link>
+ <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.
@@ -854,7 +933,7 @@ And in few short years we will have Linux &amp;ldquo;administrators&amp;rdquo; w
</item>
<item>
<title>New license plate frame</title>
- <link>http://localhost:1313/blog/2024/frame/</link>
+ <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;
@@ -869,13 +948,13 @@ I could get a boring, all-black one&amp;hellip; or add a few &lt;em&gt;PLN&lt;/e
&lt;figure
class=&quot;centered&quot;
&gt;
- &lt;a href=&quot;http://localhost:1313/blog/images/license-frame_hu9942410596856573130.JPEG&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;http://localhost:1313/blog/images/license-frame_hu7901744941458084521.png&quot;
+ src=&quot;https://crys.site/blog/images/license-frame_hu7901744941458084521.png&quot;
srcset=&quot;
- http://localhost:1313/blog/images/license-frame_hu7901744941458084521.png 1x,
- http://localhost:1313/blog/images/license-frame_hu304296380706668907.png 2x
+ 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;
@@ -901,7 +980,7 @@ My new frame
</item>
<item>
<title>Hiatus due to Advent of Code</title>
- <link>http://localhost:1313/blog/2024/aoc-hiatus/</link>
+ <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!
@@ -917,7 +996,7 @@ See you!&lt;/p&gt;
</item>
<item>
<title>Things I care about: documentation</title>
- <link>http://localhost:1313/blog/2024/good-documentation/</link>
+ <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.
@@ -989,7 +1068,7 @@ as in `VMS guru&amp;rsquo; (via &lt;a href=&quot;https://latel.upf.edu/morgana/a
</item>
<item>
<title>Things I care about: stable APIs</title>
- <link>http://localhost:1313/blog/2024/stable-api/</link>
+ <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.
@@ -1044,7 +1123,7 @@ Somehow, after all those years, it is still &lt;em&gt;good enough&lt;/em&gt; for
</item>
<item>
<title>Bookmark dump for November 2024</title>
- <link>http://localhost:1313/blog/2024/bookmarks-nov/</link>
+ <link>https://crys.site/blog/2024/bookmarks-nov/</link>
<description>
@@ -1150,6 +1229,10 @@ Somehow, after all those years, it is still &lt;em&gt;good enough&lt;/em&gt; for
+
+
+
+
&lt;li&gt;
2024-11-28
-
@@ -1305,7 +1388,7 @@ Somehow, after all those years, it is still &lt;em&gt;good enough&lt;/em&gt; for
</item>
<item>
<title>GenAI dealers and self awareness</title>
- <link>http://localhost:1313/blog/2024/gen-ai-awerness/</link>
+ <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.
@@ -1332,7 +1415,7 @@ The third chapter of the movie tells how GenAI are still useless, so maybe they
</item>
<item>
<title>Moscow 2042 (Vladimir Voinovich, 1986)</title>
- <link>http://localhost:1313/reviews/books/moscow-2042-1986/</link>
+ <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.
@@ -1383,7 +1466,7 @@ A true marvel you owe yourself to experience.&lt;/p&gt;
</item>
<item>
<title>Chotto 0.1.1 Released</title>
- <link>http://localhost:1313/projects/chotto/0-1-1/</link>
+ <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;
@@ -1400,7 +1483,7 @@ Sha256: &lt;code&gt;adaa7bcc0ce817bcc148f8a7d0554fca5d4644133c22d396081318a3f050
</item>
<item>
<title>Chotto 0.1.0 Released</title>
- <link>http://localhost:1313/projects/chotto/0-1-0/</link>
+ <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;
@@ -1428,7 +1511,7 @@ Sha256: &lt;code&gt;88864df97129486435af0d0c6281a2187213d926066f91e973503ffc0c9b
<item>
<title> Useless things you may want to know: on the origin of &quot;vi&quot;
</title>
- <link>http://localhost:1313/blog/2024/origins-of-vi/</link>
+ <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;.
@@ -1452,7 +1535,7 @@ But we&amp;rsquo;re talking about naming here).&lt;/p&gt;
</item>
<item>
<title>RE: Self-Hosting Isn&#39;t a Solution; It&#39;s A Patch</title>
- <link>http://localhost:1313/blog/2024/re-self-hosting/</link>
+ <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.
@@ -1503,7 +1586,7 @@ We should have never needed it.&lt;/p&gt;
</item>
<item>
<title>Updated pages</title>
- <link>http://localhost:1313/blog/2024/updated-pages/</link>
+ <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;
@@ -1521,7 +1604,7 @@ We should have never needed it.&lt;/p&gt;
</item>
<item>
<title>Lost keys</title>
- <link>http://localhost:1313/blog/2024/lost-keys/</link>
+ <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;
@@ -1539,7 +1622,7 @@ I&amp;rsquo;ll re-upload a new one, but only after I come it with a fool-proof b
</item>
<item>
<title>Sir! We reinvent the wheel here!</title>
- <link>http://localhost:1313/blog/2024/reinventint-the-weel/</link>
+ <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.
@@ -1575,13 +1658,13 @@ When we had a small problem of performance, we solved it by covering in layers u
&lt;figure
class=&quot;pull-right&quot;
&gt;
- &lt;a href=&quot;http://localhost:1313/blog/images/how-youju-get-genai_hu4100722733616915020.jpg&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;http://localhost:1313/blog/images/how-youju-get-genai_hu479730418129302249.png&quot;
+ src=&quot;https://crys.site/blog/images/how-youju-get-genai_hu479730418129302249.png&quot;
srcset=&quot;
- http://localhost:1313/blog/images/how-youju-get-genai_hu479730418129302249.png 1x,
- http://localhost:1313/blog/images/how-youju-get-genai_hu17387822763370681905.png 2x
+ 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;
@@ -1627,7 +1710,7 @@ Just let me grep logs!&lt;/p&gt;
</item>
<item>
<title>This site now has an IRC channel</title>
- <link>http://localhost:1313/blog/2024/cryschan/</link>
+ <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?
@@ -1655,7 +1738,7 @@ But I&amp;rsquo;ve learned that now:&lt;/p&gt;
</item>
<item>
<title>The Rock Paper Shotgun 100 and PC gaming</title>
- <link>http://localhost:1313/blog/2024/rps-100/</link>
+ <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.
@@ -1725,7 +1808,7 @@ If they were, they would be a great place for them.&lt;/p&gt;
</item>
<item>
<title>Hackers (1995)</title>
- <link>http://localhost:1313/reviews/movies/hacker-1995/</link>
+ <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.
@@ -1758,13 +1841,13 @@ A series of famous (and existing!) books is presented to him, and he names them
&lt;figure
class=&quot;centered&quot;
&gt;
- &lt;a href=&quot;http://localhost:1313/reviews/screenshots/hackers-1_hu17246721049555444689.jpg&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;http://localhost:1313/reviews/screenshots/hackers-1_hu3804141175295036484.png&quot;
+ src=&quot;https://crys.site/reviews/screenshots/hackers-1_hu3804141175295036484.png&quot;
srcset=&quot;
- http://localhost:1313/reviews/screenshots/hackers-1_hu3804141175295036484.png 1x,
- http://localhost:1313/reviews/screenshots/hackers-1_hu17887416857160986498.png 2x
+ 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;
@@ -1804,13 +1887,13 @@ This removes some of the tension, as it&amp;rsquo;s not stopping the evil guy, b
&lt;figure
class=&quot;centered&quot;
&gt;
- &lt;a href=&quot;http://localhost:1313/reviews/screenshots/hackers-2_hu14743483835221931353.jpg&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;http://localhost:1313/reviews/screenshots/hackers-2_hu13875702352800290153.png&quot;
+ src=&quot;https://crys.site/reviews/screenshots/hackers-2_hu13875702352800290153.png&quot;
srcset=&quot;
- http://localhost:1313/reviews/screenshots/hackers-2_hu13875702352800290153.png 1x,
- http://localhost:1313/reviews/screenshots/hackers-2_hu2545831334866828960.png 2x
+ 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;
@@ -1848,7 +1931,7 @@ It&amp;rsquo;s not longer a bad thriller, it&amp;rsquo;s a now a fun and cool cu
</item>
<item>
<title>Migration complete</title>
- <link>http://localhost:1313/blog/2024/migration-complete/</link>
+ <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.
@@ -1863,7 +1946,7 @@ This also marks the first moment, when I am content with its structure.&lt;/p&gt
</item>
<item>
<title>My old computer books</title>
- <link>http://localhost:1313/blog/2024/my-old-comp-books/</link>
+ <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.
@@ -1879,13 +1962,13 @@ I read them on repeat when I was a little kid, just learning about &lt;code&gt;n
&lt;figure
class=&quot;centered&quot;
&gt;
- &lt;a href=&quot;http://localhost:1313/blog/images/sam-na-sam-z-jezykiem-c_hu17421297023129144655.jpg&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;http://localhost:1313/blog/images/sam-na-sam-z-jezykiem-c_hu2657164179822278116.png&quot;
+ src=&quot;https://crys.site/blog/images/sam-na-sam-z-jezykiem-c_hu2657164179822278116.png&quot;
srcset=&quot;
- http://localhost:1313/blog/images/sam-na-sam-z-jezykiem-c_hu2657164179822278116.png 1x,
- http://localhost:1313/blog/images/sam-na-sam-z-jezykiem-c_hu6990897562552442550.png 2x
+ 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;
@@ -1912,13 +1995,13 @@ This one&#39;s actually belonged to my mother.
&lt;figure
class=&quot;centered&quot;
&gt;
- &lt;a href=&quot;http://localhost:1313/blog/images/z-dosem-w-domu_hu7431265151434675509.jpg&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;http://localhost:1313/blog/images/z-dosem-w-domu_hu13852537065065031601.png&quot;
+ src=&quot;https://crys.site/blog/images/z-dosem-w-domu_hu13852537065065031601.png&quot;
srcset=&quot;
- http://localhost:1313/blog/images/z-dosem-w-domu_hu13852537065065031601.png 1x,
- http://localhost:1313/blog/images/z-dosem-w-domu_hu14692783081613460512.png 2x
+ 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;
@@ -1944,13 +2027,13 @@ Paul McFedries&#39; &quot;At home with MS-DOS&quot;
&lt;figure
class=&quot;centered&quot;
&gt;
- &lt;a href=&quot;http://localhost:1313/blog/images/norton-commander-wiecznie-mlody_hu7167011442086856796.jpg&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;http://localhost:1313/blog/images/norton-commander-wiecznie-mlody_hu13845109250310577002.png&quot;
+ src=&quot;https://crys.site/blog/images/norton-commander-wiecznie-mlody_hu13845109250310577002.png&quot;
srcset=&quot;
- http://localhost:1313/blog/images/norton-commander-wiecznie-mlody_hu13845109250310577002.png 1x,
- http://localhost:1313/blog/images/norton-commander-wiecznie-mlody_hu2126782855573238201.png 2x
+ 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;
@@ -1985,7 +2068,7 @@ And with them, a new wave of computer related press and books flooded the market
</item>
<item>
<title>Joshua Stein&#39;s website</title>
- <link>http://localhost:1313/blog/2024/jcs-org/</link>
+ <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;
@@ -2010,13 +2093,13 @@ Well, you see, Joshua (like me) host his entire website from his house (which is
&lt;figure
class=&quot;centered&quot;
&gt;
- &lt;a href=&quot;http://localhost:1313/blog/images/joshua-stein_hu959500810778078255.jpg&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;http://localhost:1313/blog/images/joshua-stein_hu5756605707660882459.png&quot;
+ src=&quot;https://crys.site/blog/images/joshua-stein_hu5756605707660882459.png&quot;
srcset=&quot;
- http://localhost:1313/blog/images/joshua-stein_hu5756605707660882459.png 1x,
- http://localhost:1313/blog/images/joshua-stein_hu11615370080932111190.png 2x
+ 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;
@@ -2035,7 +2118,7 @@ Well, you see, Joshua (like me) host his entire website from his house (which is
</item>
<item>
<title>Digipacks</title>
- <link>http://localhost:1313/blog/2024/digipacks/</link>
+ <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.
@@ -2066,13 +2149,13 @@ Brilliant!&lt;/p&gt;
&lt;figure
class=&quot;Centered&quot;
&gt;
- &lt;a href=&quot;http://localhost:1313/blog/images/jazz-sabbath_hu7117697115930712516.jpg&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;http://localhost:1313/blog/images/jazz-sabbath_hu1367959681968504186.png&quot;
+ src=&quot;https://crys.site/blog/images/jazz-sabbath_hu1367959681968504186.png&quot;
srcset=&quot;
- http://localhost:1313/blog/images/jazz-sabbath_hu1367959681968504186.png 1x,
- http://localhost:1313/blog/images/jazz-sabbath_hu13946205593797558920.png 2x
+ 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;
@@ -2106,13 +2189,13 @@ We&amp;rsquo;ve got a plastic inlay making sure the disc:&lt;/p&gt;
&lt;figure
class=&quot;Centered&quot;
&gt;
- &lt;a href=&quot;http://localhost:1313/blog/images/the-cure-songs-odw_hu7533876547538265571.jpg&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;http://localhost:1313/blog/images/the-cure-songs-odw_hu4162661619166432611.png&quot;
+ src=&quot;https://crys.site/blog/images/the-cure-songs-odw_hu4162661619166432611.png&quot;
srcset=&quot;
- http://localhost:1313/blog/images/the-cure-songs-odw_hu4162661619166432611.png 1x,
- http://localhost:1313/blog/images/the-cure-songs-odw_hu7774392596873212843.png 2x
+ 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;
@@ -2143,7 +2226,7 @@ That&amp;rsquo;s also where the finger grease and sand scratches will go.&lt;/p&
</item>
<item>
<title>Chotto 0.0.1 Released</title>
- <link>http://localhost:1313/projects/chotto/0_0_1/</link>
+ <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;
@@ -2161,7 +2244,7 @@ That&amp;rsquo;s also where the finger grease and sand scratches will go.&lt;/p&
</item>
<item>
<title>Back to Evil Mode</title>
- <link>http://localhost:1313/blog/2024/back-to-evil/</link>
+ <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.
@@ -2178,13 +2261,13 @@ It was also very &lt;em&gt;comfy&lt;/em&gt; to use with &lt;code&gt;jkli&lt;/cod
&lt;figure
class=&quot;pull-right&quot;
&gt;
- &lt;a href=&quot;http://localhost:1313/blog/images/evilmode_hu14044110276892439856.jpg&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;http://localhost:1313/blog/images/evilmode_hu1850146357252259741.png&quot;
+ src=&quot;https://crys.site/blog/images/evilmode_hu1850146357252259741.png&quot;
srcset=&quot;
- http://localhost:1313/blog/images/evilmode_hu1850146357252259741.png 1x,
- http://localhost:1313/blog/images/evilmode_hu2779763027040894514.png 2x
+ 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;
@@ -2214,64 +2297,6 @@ I sure missed some of Vim quality of life improvements, like &lt;code&gt;:sort&l
<pubDate>Mon, 04 Nov 2024 20:53:00 +0100</pubDate>
<guid>30f2e7af21b073f383161fa4d6679917</guid>
</item>
- <item>
- <title>MacOS X 2001-2024</title>
- <link>http://localhost:1313/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>http://localhost:1313/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>
<generator>Hugo -- gohugo.io</generator>
</channel>
</rss> \ No newline at end of file
diff --git a/new/splash/pages/index.html.erb b/new/splash/pages/index.html.erb
index 46e6927..a23c8ff 100644
--- a/new/splash/pages/index.html.erb
+++ b/new/splash/pages/index.html.erb
@@ -40,7 +40,7 @@
color: #c2c2c2;
padding: 10px;
}
-
+ @media (min-resolution: 192dpi) { * { image-rendering: pixelated; } }
</style>
</head>
diff --git a/new/splash/pages/index.xml.rb b/new/splash/pages/index.xml.rb
index 309cb00..01edf78 100644
--- a/new/splash/pages/index.xml.rb
+++ b/new/splash/pages/index.xml.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Crys
module Splash
module Page
@@ -13,14 +15,12 @@ module Crys
end
def filename
- "index.xml"
-
+ 'index.xml'
end
private
attr_reader :main_rss
-
end
end
end