Skip to content

Instantly share code, notes, and snippets.

ERROR in ./app/javascript/stylesheets/application.scss (./node_modules/css-loader/dist/cjs.js??ref--6-1!./node_modules/postcss-loader/src??ref--6-2!./node_modules/sass-loader/dist/cjs.js??ref--6-3!./app/javascript/stylesheets/application.scss)
Module build failed (from ./node_modules/postcss-loader/src/index.js):
ParserError: Syntax Error at line: 1, column 29
at /Users/kbennett/code/bbs-website/app/javascript/stylesheets/application.scss:5:44227
at Parser.error (/Users/kbennett/code/bbs-website/node_modules/postcss-values-parser/lib/parser.js:127:11)
at Parser.operator (/Users/kbennett/code/bbs-website/node_modules/postcss-values-parser/lib/parser.js:162:20)
at Parser.parseTokens (/Users/kbennett/code/bbs-website/node_modules/postcss-values-parser/lib/parser.js:245:14)
at Parser.loop (/Users/kbennett/code/bbs-website/node_modules/postcss-values-parser/lib/parser.js:132:12)
at Parser.parse (/Users/kbennett/code/bbs-website/node_modules/postcss-values-parser/lib/parser.js:51:17)
keithrbennett / chg-screenshot-filenames
Created February 18, 2024 13:49
Renames Mac screenshot files using a more command line friendly format.
#!/usr/bin/env python3
# This script reads the filespecs in the current directory, collects names of files
# in the default screenshot file name format, converts the names to lower case
# with spaces converted to hyphens, and removes the "at" to produce a command line friendly filespec;
# for example, "Screenshot 2024-02-18 at 21.06.31.pdf" becomes "screenshot-2024-02-18--21.06.31.pdf".
# It ignores but preserves the extensions, so if you have changed the screenshot file type with, e.g.:
# defaults write type pdf && killall SystemUIServer
# then it will rename those PDF files too.
keithrbennett /
Last active December 10, 2023 05:45
2023-12-09 Chiang Mai AI Meeting Notes
def modules_including_module(target_module)
ObjectSpace.each_object(Module).select do |object|
# All Class'es are modules, but we are not interested in them, so we exclude them.
!object.is_a?(Class) \
&& \
object.ancestors.include?(target_module) \
&& \
# Any module (not class) that includes SemanticLogger::Loggable must also implement an
# `included` method that gets the including class to also include SemanticLogger::Loggable.
# This is because the module's instance method `logger`, when it becomes part of the including
# class, will look for `self.class.logger` when called, and `self` will evaluate to the instance
# of the class and not the module. Having the class include `Loggable` will cause a class method
# `logger` to be created so that this will work.
# This method returns the modules that have included Loggable but do not have an `included`
# method implementation. This is an imperfect test since we are not testing the content of that
# implementation, but I don't know a better way.
keithrbennett / module-method-doesnt-override-class-instance-method.rb
Last active September 18, 2022 07:54
Shows that a module instance method will not overwrite a class instance method of the same name if `include` is used, but *will* if `prepend` is used.
#!/usr/bin/env ruby
module M
def foo
puts 'I am a module instance method.'
# Class whose foo instance method is defined *after* the include.
class C1
keithrbennett / force_class_inclusion_of_module.rb
Last active September 15, 2022 15:01
Illustrates forcing inclusion of a module by another included module in Ruby.
#!/usr/bin/env ruby
# From solution at
module M1
def m1; puts 'M1 was included by M2.'; end
module M2
def self.included(including_class)
#!/usr/bin/env ruby
# Illustrates cycling through the SemanticLogger log levels with signals.
# For reference by
require 'semantic_logger'
# Redefine add_signal_handler to output to STDERR (omit TTIN behavior for brevity):
module SemanticLogger
def self.add_signal_handler(log_level_signal = "USR2", thread_dump_signal = "TTIN", gc_log_microseconds = 100_000)
keithrbennett / trap_user_signals.rb
Created July 28, 2022 04:56
Illustrates the use of 'trap' in Ruby for crude interprocess communication
#!/usr/bin/env ruby
# Author: @keithrbennett (Github)
# Illustrates how to respond to Unix signals in a Ruby program, using SIGUSR1 and SIGUSR2
# for user-defined signals, and SIGINT for trapping Ctrl-C.
require 'awesome_print'
require 'json'
require 'yaml'
#!/usr/bin/env ruby
require 'nokogiri'
def process_example(message, xml_text, use_noblanks_option)
puts message
puts "XML text: #{xml_text.inspect}"
doc = Nokogiri::XML(xml_text) { |config| use_noblanks_option ? config.noblanks : config }
puts 'Resulting XML document:'
puts doc.inspect; puts; puts