xkapastel has quit [Quit: Connection closed for inactivity]
ubLIX has quit [Quit: *cackles*]
orivej has quit [Ping timeout: 244 seconds]
_whitelogger has joined #picolisp
_whitelogger has joined #picolisp
rob_w has joined #picolisp
orivej has joined #picolisp
alexshendi has quit [Ping timeout: 246 seconds]
jibanes has quit [Ping timeout: 250 seconds]
jibanes has joined #picolisp
xkapastel has joined #picolisp
_whitelogger has joined #picolisp
ubLIX has joined #picolisp
alexshendi has joined #picolisp
orivej has quit [Ping timeout: 250 seconds]
alexshendi has quit [Ping timeout: 250 seconds]
ubLIX has quit [Quit: *cackles*]
orivej has joined #picolisp
freemint has joined #picolisp
<freemint>
Fröhliche Weihnachten
<freemint>
Merry Christmas
<Regenaxer>
Same to you freemint!
<freemint>
\me reads up on the logs
<freemint>
I came across an interesting DB problem, got some spare time Regenaxer ?
<Regenaxer>
Depends on how much ;)
<freemint>
15 min max
<freemint>
hehe min max
<Regenaxer>
OK :)
<beneroth>
Fröhliche Weihnachten :)
<Regenaxer>
Hi beneroth, same! :)
<freemint>
1. You got a database which you acces via a broad set of custom functions. 2. You want each "function call attempt" to be logged in Database indexed by user, time, functions, return code .... 3. Functions may roll back
<freemint>
beneroth: Einen schönen heiligen Abend.
<freemint>
Müsst Ihr eigentlich auch Geschenke kaufen/verschenken?
<beneroth>
"müssen" ?
<Regenaxer>
Wir hatten schon vorgestern heilig Abend, weil eine Tochter nach Kanada fliegt
<Regenaxer>
irgendwie deplaziert ;)
<beneroth>
Gute Reise an Deine Tochter, und liebe Gruesse an die ganze Familie :)
<Regenaxer>
Danke! :)
<Regenaxer>
freemint, what is the problem?
<beneroth>
easy to do :)
orivej has quit [Ping timeout: 246 seconds]
<freemint>
The logging might be undone by the rollback?
<Regenaxer>
You commit the log first in the "custom" functions
<beneroth>
to it before you do something else, or send it to another process
<freemint>
or calling ! functions commits stuff you do noz want to commit
<freemint>
the log depends on the return value.
<Regenaxer>
If you want to rollback, you won't call the ! funs anyway
<Regenaxer>
(dbSync) ... (commit 'upd)
<beneroth>
(tell *LoggerProcess (log-db-action User 'function 'result))
<freemint>
That is one way ;)
<Regenaxer>
yes, a separate DB for the logs is even better
<beneroth>
or you write the log anyway after the action, as you want to store the result.
<Regenaxer>
Or, just log to flat text files, and import (perhaps later or if needed) into a separate indexed DB
<Regenaxer>
So the main app is not slowed down at all
<beneroth>
T
<beneroth>
or separate DB which gets the messages to log via PLIO in a pipe or http
<beneroth>
bbl
<Regenaxer>
cu
<freemint>
what would it take to implement a "db commit scope"? (change1) (dbscope (dbSync) (change2) (commit)) (rolllback) would just result in change2 being done
<Regenaxer>
In fact originally (in pil32) there were nested transactions
<Regenaxer>
but I removed them
<Regenaxer>
Not useful I found
<Regenaxer>
You can find it in the old sources
<Regenaxer>
I think making such complications is not good
<Regenaxer>
It is not needed in praxis
<Regenaxer>
Ex
<Regenaxer>
cept for huge imports, transactions are very short anyway
<freemint>
once you need them you might as well have a micro service running which does the job?
<Regenaxer>
very atomic so to say
<Regenaxer>
yeah
<Regenaxer>
And the question is *where* or *when* you need them
<Regenaxer>
For your above use case they are not needed
<freemint>
i wished i had them several times.
<Regenaxer>
For what?
<freemint>
i do not remember
<Regenaxer>
Why would you roll back?
<Regenaxer>
Normally you *check* before you start the transaction
<Regenaxer>
I have only one app which does rollbacks
<Regenaxer>
during DATEV export generation
<Regenaxer>
There it is sufficient to rollback if an error is detected
<Regenaxer>
I don' see a case where more is needed at the moment
<freemint>
i did it the other way. Start, calculate something and put the results in to external symbols directly, then try to increase a counter then rollback
<Regenaxer>
Better separate the calculation
<Regenaxer>
it is expensive to do useless transactions
<Regenaxer>
You can also use volatile values in external syms
<Regenaxer>
ie the NIL property
alexshendi has joined #picolisp
<freemint>
i've seen an interesting fexpr in some other list
<freemint>
(in (-> 80 port listen) (do stufff))
<freemint>
is the same as (in (listen (port 80)) (do stuff))
<Regenaxer>
It is a matter of taste, getting rid of parens
<freemint>
i thought about a similar fexpr before which would have looked like (o listen port 80)
<Regenaxer>
for me it looks confusing
<Regenaxer>
yet another concept
<freemint>
o is a symbol in math for concatination (verkoppelung)
<Regenaxer>
The beauty of Lisp is its simple syntax
<freemint>
What is syntax?
<freemint>
(in Lisp)
<Regenaxer>
Lisp has almost none at all
<freemint>
does ->, o
<Regenaxer>
Parens and chars in symbols and numbers
<freemint>
add syntax?
<Regenaxer>
The above adds a new concept
<Regenaxer>
Not syntax, right
<Regenaxer>
semantics
<freemint>
How many objects can create add per second?
<Regenaxer>
(-> 80 port listen) has no advantage
<Regenaxer>
same size as (-> 80 port listen)
<Regenaxer>
4 cells
<Regenaxer>
(listen (port 80)) I mean
<Regenaxer>
'create' speed depends on the model
<Regenaxer>
The simple case in the ref imports 100 million in 50 minutes
<freemint>
Regenaxer it has with longer chains, but often you have to pass some little arguement somewhere and there begins the trouble
<Regenaxer>
T
<Regenaxer>
The objects take about half the time
<Regenaxer>
then the indexes are built
<freemint>
are there use cases where you would say: PicoLisp's DB is not right for this usecase. Just use someohther DB?
<Regenaxer>
I think there surely are, but I don't know
<Regenaxer>
I never did measurements with other DBs
<Regenaxer>
A relational DB is a PITA to use withe complicated models
<Regenaxer>
+Link and +Joint
<freemint>
why did you go for processes for parallel execution and not threads?
<Regenaxer>
So convenient with many objects linked to each other
<Regenaxer>
Processes are the natural way
<freemint>
ok
<Regenaxer>
Pil does not support threads
<Regenaxer>
cannot
<freemint>
it is either threads or processes because they do not mix well
<Regenaxer>
this is true, but even if I wanted I could not implement threads for PicoLisp
<Regenaxer>
would not work as threads share too much memory
<Regenaxer>
Processes are better isolated from each other
<freemint>
or you would need a global interpreter log so the name space is not messed up?
<Regenaxer>
not name space
<Regenaxer>
the whole heap
<Regenaxer>
The way dynamic binding works
<freemint>
right
<freemint>
Regenaxer: have you written symbolic AI in picolisp (or had contact with people who do
<Regenaxer>
Neither, except back in the 1980s when chess was still regarded as AI
<Regenaxer>
And that was not symbolic
<freemint>
if that era of ai very interesting.
<freemint>
And i think there might be small revival of it in the nearer future.
<Regenaxer>
yes, indeed interesting. A pity it is rather dead
<Regenaxer>
The approach with stupid neural learning has its limits
<Regenaxer>
No understanding
<freemint>
well it can approximate understanding supprisingly well but we are at be brain power with our super computers today.
<Regenaxer>
I see no understanding, neither by the machine, nor the humans using it
<freemint>
the problem is not. "No understanding" but "we do not understand what it understands, really and do not know how we must modify it if it wants to improce"
<Regenaxer>
Hard to see how results arise
<freemint>
exactly
<Regenaxer>
Hmm, I see no understanding at all
<Regenaxer>
You can just try to explain unexpected results
<Regenaxer>
A purely symbolic reasoning is better in this regard
<Regenaxer>
but harder to implement
<freemint>
I think we ask neural networks very dumb questions. But that are the only one we can formulate mathematically
<freemint>
There was a story which detected dog races. It a huskey correctly one when snow was in the background.
<Regenaxer>
yes, I heard of that one
<freemint>
The fact that it spotted snow => Huskey suggests that they understand something about huskeys. It is the same mistake a 3 year old would make it is shown the same collection of pictures before hand
<freemint>
it is a very "human" error.
<freemint>
the problem is that we do not know how to communicate certain symmetries of the world. "a dog stays the same race no matter where the picute is taken. We can tell that to a child and let it look at huskys again and it won't repeat the same mistake over again"
<freemint>
Regenaxer: Do you know some interesing problems for symbolic ai?
<Regenaxer>
Perhaps improved medical expert systems?
<Regenaxer>
Or some text-based virtual reality?
<Regenaxer>
Being called, must go
<Regenaxer>
back later ;)
<Regenaxer>
afp
<freemint>
Perhaps improved medical expert systems? <- to much effort, can't pay doctors ;)
<freemint>
but text-based virtual reality souns great allthough you might want to make it "multi-media"
orivej has joined #picolisp
<razzy>
Merry christmass to all :]
orivej_ has joined #picolisp
orivej has quit [Read error: Connection reset by peer]
orivej_ has quit [Ping timeout: 245 seconds]
orivej has joined #picolisp
<Regenaxer>
ret
<Regenaxer>
Merry christmas razzy
<Regenaxer>
I'd like a pure text system, as a kind of literate reality
<Regenaxer>
More than a simple text adventure
<Regenaxer>
Like a self-living book
<razzy>
Regenaxer: like lisp OS? or self living story book?
<Regenaxer>
Yes, the latter
<razzy>
for example, story of fisherman hut in 1800?
<Regenaxer>
What story is that?
<razzy>
story of the hut and fisherman family living in it :]
<freemint>
what symbolic ai try to do in ths virutal world?
<freemint>
razzy: i alone now 3 stories which fit that description.
<Regenaxer>
Intelligent individual objects
<razzy>
small quasi-stable world, could be simulated
<freemint>
Regenaxer: huh?
<Regenaxer>
Agents
<Regenaxer>
a virtual world
<razzy>
and you allow player to do small changes to the "world" and let the story roll
<Regenaxer>
text based, you read it like a book, but interact with it and it eves on its own
<razzy>
point is, the world should not fall of some quasi-stable event plato
<freemint>
PLATO?
<Regenaxer>
Plateau
<DKordic>
"I see no understanding, neither by the machine, nor the humans using [ANN]." Exactly! ANN is a Digesting Duck.
<freemint>
So the world 1. Should contain interarctive agents which depend on their environment and you can interact with them by manipulating the environment (or just talk with them).
<freemint>
2. be able to grow and change based on the actions of the player.
<Regenaxer>
yep
<razzy>
freemint: 3. there should be expensive to reach boundaries to limit simulated area
<Regenaxer>
or it could be the real world, e.g. OpenStreetMap data
<Regenaxer>
The reality should be zoomable
<freemint>
what is a boundry? Is not being able to carve a letter in to a tree a boundry?
<razzy>
limits like speed of light
<razzy>
or not very sharp tools
<razzy>
to naturaly limit possibility of actions agents can perform
<freemint>
i find not having knives dubious.
<Regenaxer>
T
<razzy>
so the agents feel not restrained
<freemint>
Human agents are fundamentally restrained when interacting with non human agent.
<razzy>
i mean: to human user objects feels unrestrained by simulation
<freemint>
what the hell are human user objects?
<razzy>
sorry. human observer from outside should have feeling, that agents inside are not restrained by simulation
<razzy>
hence, you do not put sharp tools into simulation, to limit action space and limit dificulty of simulation
<freemint>
that is a 5 years of work bar
<freemint>
a hard problem
<Regenaxer>
All AI is
<razzy>
4. This world should be build bottom-up. all emerged behaviour from simple rules. to avoid hell of many contradicting rules.
<razzy>
it could be simple world with small number active objects, could be like ant colony, or 2d like rimworld https://en.wikipedia.org/wiki/RimWorld or dwarf fortress.
rob_w has quit [Read error: Connection reset by peer]
<freemint>
small number active objects and dwarf fortress do never belong in one sentence
_whitelogger has joined #picolisp
<razzy>
freemint: T, noted. i hope idea was transferred.