╭
𝟙𝟜·
coding Periodically, I tell myself I'm going to alternate exploratory coding (aka hacking) with a phase of refactoring toward a clear design (aka cleanup). The
┊
problem is the clear design phase may never happen - it's too easy to be satisfied with code that passes the current testing, however informal. On the other hand,
┊
it's easy to overcommit to a clear, elegant design, and if it doesn't meet some of the goals set for the project, it can be a major issue.
┊
┊
I'm here again, thinking my solo recreational coding would be more fun if I took time to consolidate what I've learned into a good design. Process options are plenty,
┊
but I probably can't master the discipline of most - e.g. separate branches for exploratory phases seems heavy handed on a solo project. Alternating priorities always
┊
feels like the best thing to try, but I usually can't stick to it - maybe that ADHD diagnosis isn't so far off...
┊
┊
Of course, AI assistance is becoming standard practice, and beyond quickly finding simple mistakes, it can refactor efficiently and even take part in a friendly chat
┊
about what the plan is. The increases in productivity, even if human programmers end up only in a code review role, is hard to resist in business.
┊
┊
But I'm programming because I enjoy it. Algorithmic assistance is great, as long as I could have a hope of understanding the algorithms being used. Maybe I could
┊
figure out how LLM's work, but the current systems are massive, remote black box servers - which isn't part of the fun for me. The fun is opening the black boxes and
┊
figuring out what's going on inside.
┊
┊
𝟙𝟘·
the-bonfire To better understand why I seemed to be getting so much wrong about AI, I turned to Wikipedia and found my own notions weren't that out of whack with at
┊
least one standard reference. The entry on Artificial General Intelligence is altogether different.
┊
┊
My understanding of AGI was a ‘universal problem solving’ ability without reference to human ability, when it really means ‘exceedinmg human ability on all or nearly
┊
all’ cognitive tasks. Live and learn.
┊
┊
An the other hand, AGI or "strong AI" implies consciousness for some, which I reject. The concept of mind - the collection of cognition and qualia that the phrase "I
┊
think therefore I am" refers to - captures what I mean by consciousness (perhaps sentience is a more helpful word, but consciousness is etched in my mind).
┊
┊
It is useful to keep consciousness distinct from intelligence. To date, there is no evidence or theory as to how consciousness would enhance intelligence, no
┊
computational model in which consciousness could act as an oracle, allowing the incomputable to be computed. This means there is no, as yet, reason to assume
𝔽
┊
consciousness becomes necessary at some level of intelligence. Nor, if we fully reject solipsism, does consciousness provide average human intelligence.
𝕖
┊
𝕓
┊
Passing the ‘Turing Test’ is not evidence of consciousness, it's a proposal to qualify a computer program as "intelligent". Because lesser abilities are often
𝕣
┊
described as intelligent, it defines a "general intelligence" in terms of human abilities. Perhaps we might call it a test for "Artificial General Intelligence". But
𝕦
┊
we cannot justify conflating it with consciousness.
𝕒
┊
𝕣
┊
𝟘𝟡·
the-bonfire I've posted online in a few forums about AI, and I wish I could just retract it all... I'm worried about two ways the current pursuit of AI could lead to
𝕪
┊
a global Depression in the relatively near term; it could fail and, between the bursting investment bubble and changes made on unfulfilled expectations could collapse
┊
the intertwined economic system; it could succeed, creating a shift that happens faster than we can adapt.
┊
┊
If AI succeeds in the long term, it will dramatically devalue human labor, both mental and physical - yes, I'm talking about robots. Fully automated assembly lines,
┊
with large stationary robots. Replacing support personnel with smaller mobile robots for repair resolving malfunctions makes fro a human-free factory. Broader
┊
defnitions include driverless cars which, operating in an uncontrolled environment, require more ‘intelligence.’ With minimal demands from AI, we can throw in washing
┊
machines, which have devalued any human effort scrubbing clothes in a nearby stream.
┊
┊
Protecting jobs is a band-aid to keep capitalism going, but, if we want to keep a decent quality of life for human beings in the long term, we should ensure AI is the
┊
light at the end of the capitalism tunnel, not a reason to predict a miraculous singularity where we merge our consciousness with machines.
┊
┊
𝟘𝟞·
coding Woof! Slow progress... ⟪Sapphire⟫ has both logic and domain variables - a named value which may be left unspecified, given a value as assertions are simplified
┊
and resolved. Both ‘x=3’ and ‘3=x’ mean the same thing - as an assertion it is resolved in ⟪Silver⟫ if ‘x’ evaluates to 3, but if something else, a contradiction is
┊
flagged. If x has no value, ⟪Silver⟫ resolves the assertion by assigning 3 to x. For finite problems, functions and relations can be treated as domain or logic
┊
variable spaces, respectively. To dig myself out from under earlier hacks, I'm rewriting things around what I'm calling ‘free order variables’ for now, which are just
┊
⟨key table⟩ pairs, replacing constrained expressions with, in theory at least, nested function calls...
┊
┊
𝟘𝟝·
the-bonfire Christian Nationalism is the new face of the KKK. Project 2025 is a Christian Nationalist plan to use Trump's narcissism and exploit The Constitution's
┊
failure against those without a modicum of dignity, or degree of self awareness rising to power in our Democracy. Trump is a child-like puppet of those who would,
┊
using the tyranny of the majority, ethnically cleanse America.
┊
┊
𝟘𝟛·
I just learned about the beautiful discovery of Pentagonal tilings by Marjorie Rice. Doris Schattsneider encouraged Rice to present her work at the MAA - notable only
┊
because I met her as part of The Visual Geometry Project. Maybe I can connect ⟪Sapphire⟫ back to my early life through geometry!
┊
┊
𝟘𝟙·
It might be my unfathomably old age of 57, but time flies like a peregrine falcon! Soon I'll get started on my plans for January... For now I'm still trundling along
┊
on first class constraints, and at this point, I'm not sure it's a good idea. It's probably time to read up on research and prior software (from the 1970's). At least
╰
I'm still living and learning.
╭
𝟚𝟡·
I left Stack Overflow because, like all social media-ish sites, it triggered PTSD from going to high school in the the 1980s. My eyes prefer ‘Dark Mode’ on emissive
┊
displays and the highest rated answer here shares a javascript one-liner in a bookmark that tweaks the pdf viewer object to invert the pdf image. I didn't even know
┊
‘bookmarklets’ were a thing!
┊
┊
𝟚𝟟·
logic In trying to add expressive set comprehensions to ⟪Sapphire⟫, it's hard to avoid Russell's Paradox. Expressed in ⟪Sapphire⟫ extended with unrestricted
┊
quantifiers it would be expressed as ‘∃x ∀y y∈x≡y¬∈y’. The restrictions I want to place on quantifiers complicate things, and with Python-like comprehensions as
┊
values, it get's even more complicated. Lots to think about.
┊
┊
𝟚𝟞·
puzzles Using summation for Slitherlink and Killer Sudoku is a natural choice, but Peano's Axioms are insufficient to define the integers using only first order
┊
logic. I want to dig into the theoretical concerns, but I'm going to defer them for now while I try to get some functionality working.
┊
┊
𝟚𝟝·
puzzles I'm a focused on solving logic pencil puzzles as Constraint Satisfaction Problems in part because I'd like to try my hand at a puzzle generator. Perhaps my
┊
ambition to share a monthly or even weekly sheet of puzzles at my local puzzle & game store is misguided, but for now it's on my hopes and dreams list.
┊
┊
𝟚𝟝·
coding Changes are settling and maybe my OCD will give me a chance to work on something else for a bit. Between making these changes too haphazardly and global
┊
distractions, everything else has been suffering neglect. A pause, then forward on Slitherlink puzzles and, hopefully, some graphics fun!
┊
┊
𝟚𝟛·
coding The transition to treating constraints as a class of ⟪Iron⟫ Interpreter internal values has been... slow. I make a mess when I'm exploring to find a solution
┊
or implementation that works and meets my design goals. Breaking changes are a time to consolidate the current design before going forward... I was too focused on
┊
getting to the next exploration - constraints as first class values, and, well, messed up.
┊
┊
𝟚𝟘·
logic By encoding logic pencil puzzles, rules and instances, in ⟪Sapphire⟫ I define a CSP (Constraint Satisfaction Problem) and ⟪Silver⟫ is my ad-hoc solver. My
┊
⟪Iron⟫ interpreter can, when an expression would be undefined with eager evaluation, return a meta-object, referencing the only partially evaluated expression. These
┊
can be interpreted as errors by the environment, but are used by Silver to find solutions: an assertion such as ‘x=5+7’ might not be evaluated past ‘x=12’ if ‘x’ is
┊
completely unkown, but can be fully resolved by commiting ‘x’ in the solution to be ‘12’. If ‘y’ is undefined, ‘y∈{3 12 15}’ won't be evaluated, but can be used as a
┊
constraint on ‘y’ in the solution. These, combined with an assertion that ‘x=y’ yields the solution ‘x=12 ∧ y=12’.
┊
┊
Previously, I didn't allow constraints to be passed around as a ‘first class’ meta-value with ⟪Silver⟫ relied almost on re-evaluating the current unresolved
┊
assertions with various ‘resolution’ steps that reconcile constraints. Now constraints can be passed as values, and carry, along with information what the domain
┊
value could be, but also information about the source of the constraint. As an example, given ‘x∈{1 2 3}’ and ‘y∈{3 4 5}’ as constraints, ‘x+y’ can be evaluated to
┊
the constraint ‘x+y∈{4⋯8}’ which, returned as a meta-value means ‘x+y<10’ can be evaluted to true.
┊
┊
This can't eliminate the need for specialized resolution steps, like my ⟪Silver⟫ pigeonholer, but the hope is that they can be kept simple and orthogonal to be used,
┊
along with extended evaluation, as primitive steps in a search.
┊
┊
Lazy evaluation, if I want to use it for optimization or expressiveness, will hopefully be follow as a relatively straightforward extension of all this.
┊
┊
𝟚𝟘·
the-bonfire The Trump Adminstration's demands for lists of Jewish Faculty from educational institutions is a not only a potential danger to those faculty members
┊
given past and recent history, but even a list for ‘special protection’ is unlawful: the use of Congressionally allocated funds to defend or support Jewish Faculty
┊
violates the 1st Amendment's establishment clause. LDS Members, Muslims, Sikhs, Buddhists, Hindus, Spiritualists, Atheists, Wiccans, Scientologists and more have
┊
experienced persecution on American campuses. Any government protection from religious persecution must defend all belief systems and not be biased by political
┊
motivation.
𝕁
┊
𝕒
┊
𝟙𝟡·
the-bonfire The title of Robert Wachter's recent article... (continued)
𝕟
┊
𝕦
┊
𝟙𝟠·
the-bonfire I was updating my rant about how Unicode is poorly suited for use as a character set in computing when I realized it is a real solid start to an open
𝕒
┊
standard in word processing. The addition of emoji makes communication so much clearer: 🇺🇸/🇬🇱=🙀
𝕣
┊
𝕪
┊
𝟙𝟠·
logic I've ‘discovered’ the field of Mathematics called Finite Model Theory! Model Theory includes, and is introduced with, a focus on infite structures, so I put it
┊
on the future pile - logic pencil puzzles are finite. But Finite Model Theory looks relevant - it is likely over my head, but I'll dig in a bit and see if I can
┊
connect any dots to my playground.
┊
┊
𝟙𝟞·
puzzles To even solve the trivial Slitherlink Puzzle (a 1×1 puzzle with a single ‘4’) semi-symbolically, I'm going to have to up my constraint handling. My plan was
┊
to support constraint expressions - special objects which give some information about an otherwise indeterminate value.
┊
┊
My choice was to wrap a logical formula (another expression) using the variable ‘_’ to represent the constraint expression. This could get unweildy, so in practice I
┊
have kept them simple enough to be useful for my current, puzzle-solving purposes.
┊
┊
As an example, if x is ‘_∈{1 2}’ and y is ‘_∈{2 7}’ we can deduce ‘x+y’ will satisfy the constraint ‘_∈{3 4 8 9}’and we could also deduce from ‘x=y’ that ‘x=y=2’. The
┊
pigeonholer I implemented to solve Sudoku puzzles in ⟪Silver⟫ starts with ‘_∈{1⋯9}’ for blank squares and 27 9-way not-equal expressions using an n-ary ‘¬=’ operator.
┊
The handling is not Sudoku specific - I'm hoping it will work for a few more puzzles before I tidy things up.
┊
┊
Which brings me back to the start - I didn't implement constraint expressions properly, and now that I'm counting the number of edges around a square that are on the
┊
path, I have to do at least some tidying.
┊
┊
𝟙𝟞·
Some online news source or other asked if AI could create anything original... (continued)
┊
┊
𝟙𝟝·
I don't know how to address the political situation here in the US... (continued)
┊
┊
puzzles with formulas defining 10 different puzzle types. Nikoli, the company that popularized “Number Place” puzzles under the Japanese trademark ‘Sudoku’, publishes
┊
collections in Japan and describes each on their website:
┊
┊
┊
As I get my ⟪Silver⟫ Solver working on each, I'll post my ⟪Sapphire⟫ definitions.
┊
┊
𝟘𝟡·
coding I often pass keyword parameters to a subroutine unchanged, and ended up with alot of ‘keyword=keyword’ code in Python function calls. Reserving ‘=’ for the
┊
equality predicate (I just replace ‘=’ with ‘==’ when generating Python or C) I instead use ‘→’ to pass keyword parameters - ‘keyword→7’. I added a postfix operator
┊
‘→←’ to pass the value of the variable as the keyword, so I can abbreviate ‘keyword→keyword’ ·as ‘keyword→←’.
┊
┊
𝟘𝟠·
logic I've added ‘comprehensions’ which support set and sequence expressions such as { _^3 ⋮ 1⋯2026} and ⟨ ⦗str _⦘ ⋮ x y z ⟩, where the variable ‘_’ (displayed as ◒
┊
in logical contexts, to satisfy my aesthic preferences) which is evaluated for each of the elements to the right of the ‘⋮’ symbol. I use ‘⋯’ as an inclusive, integer
┊
range operator, so ⟨1⋯3⟩ is the tuple ⟨1 2 3⟩. It meshes well with my implementation of sets of integers expressed as intervals.
┊
┊
𝟘𝟠·
coding I've been on a side trip to additional ‘rational’ code generation based on syntactic analysis rather than ad-hoc text manipulation. This next stage let me
┊
translate operators (‘⊗’ and ‘⊙’ for cross and dot-product) into calls to generic functions, but there's more work to make it remotely robust.
┊
┊
𝟘𝟝·
puzzles I started on a formulation of Slitherlink rules in ⟪Sapphire⟫. Connectivity, as a pairwise relation could be easily satisfied by being true for any vertices
┊
that are connected to anything. I ended up defining a distance function with a special value (rather than a distinct relation) for ‘not connected’. In the next day or
╰
two, I'll see how ⟪Silver⟫ does trying to find a satisfying model (aka solution).
╭
𝟛𝟘·
I've been bogged down by my bootstrapping ... coding
┊
┊
𝟚𝟠·
More language infrastructure progress - I've got code generating from the ⟪Violet⟫ language layer that bridges between ⟪Cobalt⟫ (aka C) and ⟪Midnight⟫ (aka Python). I
┊
generate code that uses Python's ‘ctypes’ module to call C from Python, making it easy to mix and match implementations.
┊
┊
𝟚𝟞·
I took a small step toward sensible language handling by generating a full parse tree for a small input file. Starting life as a no-op, my evolving ‘zypp’
┊
preprocessor converts ⟪Midnight⟫ and ⟪Cobalt⟫ to Python and C, respectively, in an entirely ad-hoc fashion. At least I know I can create an inviting bug hotel.
┊
Eventually, each language layer I use will share a unified parser, but different intermediate code generators which will perform first level semantic checks. The
┊
intermiedate language will support high level primitives that can be lowered to target subsets which can be used to emit code. My ⟪Sapphire⟫ project has a good deal
┊
of infrastructure to cope with.
┊
𝔻
┊
𝟚𝟝·
I finished implementing SDL ‘framebuffer’ objects which display a screen sized OpenGL texture. Framebuffer support is primarily for debugging, but also can be used
𝕖
┊
with small ‘gadget’ displays, like Pimoroni's Display Hat Mini, ePaper displays, also available from Pimoroni or from Waveshare, which I used to prototype a Raspberry
𝕔
┊
Pi based e-Reader.
𝕖
┊
𝕞
┊
𝟚𝟜·
I finally got around to watching Jordan Peele's documentary "Get Out" the other night. I have to say, the re-enactments were grisly, but well done.
𝕓
┊
𝕖
┊
𝟚𝟛·
I've added support for the Cartesian Product, represented by ‘×’ in Unicode (U+D7). What I call “tuple constrained quantification” (∀⟨x y⟩∈Z×Z) is accepted in
𝕣
┊
⟪Sapphire⟫ as well as set exponentiation by an integer (Z^4 ▷ Z×Z×Z×Z) ({1⋯3}^3 ▷ {1⋯3}×{1⋯3}×{1⋯3}). Finite expressions can be evaluated in calculator fashion (⟨1 2
┊
3⟩∈{1⋯3}^3 ▷ ✔) (∀⟨a b⟩∈{1⋯3}^2 a>3 ⇒ a+b>4 ▷ ✔) and can also be symbolically manipulated by ⟪Ag⟫, aka “The Silver Solver”. I've updated my Sudoku rules to use these
┊
new features
┊
┊
𝟚𝟚·
I'm using ‘⊙‘ for dot product and ‘⊗’ for cross product. My preprocessor translates these from binary operators into calls to ‘dot’ and ‘cross’, which are native in
┊
GLSL and implemented in Python to work on number sequences of equal length (dot) or only 3-tuples of numbers (cross).
┊
┊
𝟚𝟚·
While I use Unicode extensively and appreciate its near universal adoption and support, I object to any description of it as a "character set". ... coding
┊
┊
𝟚𝟙·
I updated my color text routines that I use in all my Python tools to proceess faster when read into Emacs. One day, I may create an IDE for my ‘neo-retro’
┊
logic-puzzle computing environment, but Emacs is still the best tool for me.
┊
╰
𝟘𝟞·
I now have a somewhat general "pigeonhole solver" ... logic