ChanServ changed the topic of #picolisp to: PicoLisp language | Channel Log: https://irclog.whitequark.org/picolisp/ | Check also http://www.picolisp.com for more information
ubLIX has quit [Quit: ubLIX]
razzy has quit [Ping timeout: 272 seconds]
xkapastel has quit [Quit: Connection closed for inactivity]
freemint has quit [Ping timeout: 272 seconds]
xkapastel has joined #picolisp
_whitelogger has joined #picolisp
xkapastel has quit [Quit: Connection closed for inactivity]
_whitelogger has joined #picolisp
aw- has joined #picolisp
<aw-> Regenaxer: i'll be completely at the other end of the country when you're here
yunfan has left #picolisp ["leave for finding the question of 42"]
<Regenaxer> Hi aw-! Oh :) Where?
<Regenaxer> Okinawa?
<aw-> Okinawa
<Regenaxer> hehe
<aw-> hahaha
<Regenaxer> I should go there too. My wife's brother lives there :)
<aw-> although Sapporo must be nice in summer
<Regenaxer> yes, indeed, not so hot
<Regenaxer> So no problem. Next time perhaps.
<aw-> sorry
xkapastel has joined #picolisp
<Regenaxer> No problem. I'm only a week in Japan, so not really much time left
rob_w has joined #picolisp
rob_w has quit [Client Quit]
rob_w has joined #picolisp
<aw-> oh i see
<Nistur> mornin'
<Regenaxer> Hi Nistur
<Nistur> greetings :)
xkapastel has quit [Quit: Connection closed for inactivity]
freemint has joined #picolisp
razzy has joined #picolisp
orivej has quit [Ping timeout: 245 seconds]
<aw-> Regenaxer: another big earthquake in Hokkaido just now
<Regenaxer> oh!
<tankf33der> how users get alerts? mobile apps?
<aw-> seems like shindo 6-
<tankf33der> or just breaking news?
<Regenaxer> Masako also just heard from a friend in Hokkaido
<aw-> tankf33der: i get SMS
<tankf33der> ok
<aw-> 「この地震による津波の心配はありません。」good.
<aw-> this is always my big worry :\ tsunami after earthquake
freemint has quit [Ping timeout: 250 seconds]
ubLIX has joined #picolisp
freemint has joined #picolisp
freemint has quit [Ping timeout: 268 seconds]
freemint has joined #picolisp
ubLIX has quit [Quit: ubLIX]
orivej has joined #picolisp
aw- has quit [Quit: Leaving.]
rob_w has quit [Remote host closed the connection]
<razzy> eh, i hope everyone important is ok :]
<Regenaxer> I don't know if the important ones are, but I am OK
<razzy> i guess planet has its mood swings
xkapastel has joined #picolisp
freemint has quit [Remote host closed the connection]
ubLIX has joined #picolisp
* razzy is trying picolisp database
<Regenaxer> 👍
* razzy cannot read weird utf symbols
<Regenaxer> oh
<Regenaxer> Sorry
<Regenaxer> It is probably an issue of your terminal or OS setup
freemint has joined #picolisp
<Regenaxer> Nowadays everything should be utf8
<Regenaxer> I have the opposite problem if beneroth writes umlauts, I see only garbage
<Regenaxer> razzy, what do you see if you look with a browser at this channel's log?
<razzy> Regenaxer: yes, mine problem propably. i do not care enough to try fix it. when somebody important write something unreadable, i ask for meaning to be sure.
<razzy> Regenaxer: OS problem.
<freemint> Regenaxer: How many hours do you code per day to reach your 15 lines per day?
<Regenaxer> Perhaps 12
<freemint> 12 hours?
<Regenaxer> well, no
<razzy> every browser has this problem
<Regenaxer> 12 h at the tablet, not coding all the time
<freemint> Obviously, since you are chatting too
<Regenaxer> Thats only a few minutes per day
<Regenaxer> writing to chat
<Regenaxer> reading with half an eye perhaps
<Regenaxer> Anyway, no rules
<razzy> only goals :]
<Regenaxer> I do a lot of coding when walking the fields
<Regenaxer> in head only
<freemint> Ah
<razzy> fields?
<freemint> outdoors
<freemint> I am asking for several reasons:
xkapastel has quit [Quit: Connection closed for inactivity]
<freemint> 1. To learn how many hours of intellectual work you found sustainable
<freemint> 2. To find out how many lines of code are fair to produce when i do 6 hours of leisure coding
<freemint> 3. To estimate that if you were the world bests PicoLisp programmer, if that would be more effective (meassured in features per time) than programming in another language which is less dense
<freemint> So i would be greatfull for an answer.
<Regenaxer> All this has no definite answers I think
<Regenaxer> Sorry, was away
<freemint> no problem
<Regenaxer> I don't concentrate on work all day
<Regenaxer> Doing lots of other things
<freemint> We all do and have to.
<Regenaxer> I think you will find out what matches for yourself
<razzy> imho interesting question would be ratio time-spend-thinking/time-spend-writing code
<freemint> You are asking quiet a commitnent. Polishing my PicoLisp to reach a commercially viable level at the exclusion of other skills.
<freemint> razzy: Time spent thinking/total time would be more interesting
<razzy> or that
<Regenaxer> Such questions don't work
<freemint> What do you mean by that?
<Regenaxer> You can't separate that
<Regenaxer> writing, thinking, maintaining
<beneroth> <Regenaxer> I think you will find out what matches for yourself
<beneroth> this.
<beneroth> <freemint> You are asking quiet a commitnent. Polishing my PicoLisp to reach a commercially viable level at the exclusion of other skills.
<razzy> ok i put it differently. how much time you spend just sitting/staring at code proportionate to actively engageing REPL
<Regenaxer> Also no definte answer. It varies for each situation
<razzy> this should be good metrics for programming language.
<Regenaxer> I really can% say
<Regenaxer> I dont think so
<freemint> mhh, so it seems i was trying to take a shortcut/heuristic but you old wise gurus (beneroth and Regenaxer) won't let me.
<Regenaxer> No relation to time
<beneroth> freemint, nobody is asking you of that. and anyway... picolisp probably might help yourself to be a "commercially viable" developer.. but viably with picolisp alone you will most probably not achieve so easily. well maybe if you make your own product, but unlike otherwise. commercial incentives don't have much to do with technical brilliance or even technical usefulness. best paid IT consulting jobs now and since years is SAP consulting, and that is stuff
<beneroth> of nightmares.
<Regenaxer> yeah, no short way :)
<razzy> it shows if bottleneck is in your head or in computer
<Regenaxer> For example, I code in Java sometimes (Ersatz, PilBox, Penti) or C (pil32, mini)
<beneroth> I'm still very happy with the density of picolisp code. at the beginning it might look too dense, but with some routine it gets pretty easy to read it fluently. and there is less to read.
<Regenaxer> I dont need more time at all than when writing in pil
<Regenaxer> Time is no issue
<freemint> Regenaxer: How is time no issue?
<freemint> Today where time = money, time seems to be the only issue
<Regenaxer> I just can say that I dont feel "faster" in pil. I feel "easier".
<Regenaxer> The time depends on *what* you are doing
<Regenaxer> When creating something, time does not count for me. It takes as much time as it needs
<beneroth> I need often more time doing something in C# than in picolisp, unless its something very specific where C# has a ready-made library which is not available on linux. but changing an existing c# application takes me a in general more time than picolisp (so much overhead with additional classes, extra code/logic needed because of the static typing, and testing is slower because the upstart time is so bad)
<Regenaxer> You cant compare, each situation is differen
<Regenaxer> t
<beneroth> I agree, very time-specific.
<beneroth> I became a better software designer (also in C#) through my picolisp experience, I believe.
<Regenaxer> Most time is spent searching I believe
<freemint> What % of your effective coding time do you feel like you are figthing the language you are writing in when using {ASM, PicoLisp, C, Java}?
<razzy> Regenaxer: searching?
<Regenaxer> I have to "fight" none of these langs
<Regenaxer> I have to fight Android
<beneroth> :)
<Regenaxer> razzy, yes, eg Android references
<Regenaxer> find out *if* there is a way at all
<freemint> What % of your effective coding time do you feel like you are overcomming resistance from the language you are writing in when using {ASM, PicoLisp, C, Java}?
<Regenaxer> the actual coding is tiny
<Regenaxer> as I said, the LANG is no issue
<freemint> Ok
<freemint> that supprises me a lot. What drove you to make PicoLisp then?
<Regenaxer> It is the concepts of the system and the problem
<Regenaxer> As I said: "easier"
<freemint> How is coding PicoLisp easier?
<Regenaxer> in this regard, ASM is also easier than C
<Regenaxer> Try it
<Regenaxer> don't theorize
<freemint> I did yesterday and i produced 10 lines
<Regenaxer> good
<freemint> I was curious how it is easier for you.
<freemint> Sometimes you have to talk about feelings - my mother
<Regenaxer> Perhaps you can see if you look at rosettacode
<Regenaxer> Solving tasks there is easier in pil than in Java
<Regenaxer> (in my feeling)
<freemint> mhh i might take a day to study solutions
<razzy> i spend most of the time exploring picolisp. and finding ways to write what i want easily.
<Regenaxer> I should also have listened to what my mother said!
<razzy> ?
<Regenaxer> I *should*
<razzy> how do we know what your mother said?
<Regenaxer> I also don't know
<Regenaxer> Cause I did not listen :)
<razzy> nice joke :]. is it paraell to what you are saying?
<Regenaxer> parallel?
<razzy> i mean, that you are more experienced like "mother"?
<Regenaxer> Good question. Different experiences
<Regenaxer> We are doing lots of comparisons today
<razzy> i think i am killing the joke :] my apologies
<Regenaxer> no problem
<Regenaxer> I stole the joke from Hitchhiker's Guide to the Universe iirc
<Regenaxer> Did you hear it?
<razzy> yop
<razzy> several times
<Regenaxer> I just know the book. Very good anyway
<razzy> i mean, even if i read the book, i imagine this voiceover
<Regenaxer> :)
xkapastel has joined #picolisp
<razzy> maybe there is better, but not easily free :]
<freemint> Regenaxer: were are attempting to do comparisons
<razzy> https://www.youtube.com/results?search_query=dune+audiobook dune is also awesome. jewel of literature
<Regenaxer> freemint: more experienced like "mother"
<razzy> sorry for off topic.
<Regenaxer> No real topic here, except comparisons
<freemint> ?
<Regenaxer> You asked a lot such things
<Regenaxer> percentages, better langs etc.
<Regenaxer> I said "You cant compare, each situation is different"
<freemint> mhh, if we can't compare how can we know what is good/meaningfull for us then?
<Regenaxer> It all depends. There is no absoluteness
<razzy> there are good rules of thumb
<razzy> um, are there more examples of picolisp database and how to use it without GUI?
<freemint> Yes , PilBox is full of them
<Regenaxer> T
<Regenaxer> there are some in the distro, and some on picolisp.com
<Regenaxer> the wiki source perhaps too
<freemint> razzy why without GUI?
<Regenaxer> ah
<Regenaxer> did not see the "without"
<Regenaxer> You can use all these DBs without GUI
<Regenaxer> Just omit the -go
<Regenaxer> $ ./pil app/main.l lib/too.l -main +
<Regenaxer> :
<razzy> the gui code is making distractions that does not help learning and using picoDB
<Regenaxer> true
<Regenaxer> freemint, concerning your comparison (!) of pilDB and SQL: I think SQL has no garbage collection
<razzy> do i need to run server and access picoDB through network interface?
<Regenaxer> no, just locally as above
<Regenaxer> no network involved
<Regenaxer> $ ./pil app/main.l lib/too.l -main +
<freemint> Depends on what you mean by access. You can just explorere by repl
<freemint> If you want to access the interface, there is no command line app i know that uses PilDB and is not Vip
<Regenaxer> Also Vip does not use the DB
<Regenaxer> I think also locally I have no GUI-less script using the DB
<Regenaxer> But of course possible
<freemint> razzy: What are your main questions?
<razzy> freemint: goal is: use +Joint relational database to represent relations between symbols. question: is there some written code that save to DB read from DB, save DB to file.
<razzy> save to DB,read from DB, saveDB to file.
<Regenaxer> See 'dump' in @lib/too.l
<Regenaxer> "save" DB
<razzy> loadDB seem also usefull thx
<Regenaxer> loadDB is not needed
<Regenaxer> it is normal 'load'
<razzy> seems i can create entity. with some relations. how can i read something from DB? how can i put something to DB?
<Regenaxer> See the tutorial
<Regenaxer> doc/tut.html
<razzy> found something
<freemint> razzy: here some nuggets: All objects you want to create in the DB are entities, They are created with 'new and the T flag set
<freemint> They are accessed later via indexes
<Regenaxer> freemint, T flag is after "lose"
<Regenaxer> you mean the T message is sent
<freemint> When you make new classes inheriting from +Entity make sure to understand 'super or do not overwrite the constructor otherwise there are dragons
<freemint> Regenaxer: i mean like (new T '(+Address))
<Regenaxer> ah, ok, yes
<Regenaxer> typically a number
<freemint> without T they are created in the heap (temporary) to create Objects in the Database use (new T '(class1 classs2))
<Regenaxer> (new (db: +MyClass) '(+MyClass) ...
<Regenaxer> correct
<Regenaxer> T or a number
<Regenaxer> historically
<Regenaxer> T is 1
<razzy> hmm, so far, i cannot use it yet.
<freemint> It is important that class1, class2 inherit from +Entity as it handles basic relation processing, indexing and co
<freemint> razzy: You need to load the definitions of (the classes of( objects stored)) when you want interact with them in that way. I load the class definitions before loading the database
<freemint> The file of classes you want to store in the db are traditionally stored in er.l
<freemint> Regenaxer: when in (new 3 '(+Something)) a object of class something is created in file 3?
<freemint> *When i
<Regenaxer> yes
<freemint> Indepent of the dbs mappings?
<Regenaxer> The dbs are used for that internally
<Regenaxer> (new! '(+Something)) does it
orivej has quit [Ping timeout: 268 seconds]
<Regenaxer> or (new (db: +Something) ...
<freemint> Do i ignore dbs if i use new and provide my own number?
<Regenaxer> You can do that
<Regenaxer> Also, if you change *Dbs, existing objects remain where they are
<Regenaxer> no problem, only new objects from now on go there
<freemint> Does all the indexing work then? (Does the index contain references to other files then)?
<Regenaxer> yes
<freemint> magic
<freemint> T is 1?
<Regenaxer> also only new indexes are concerneed
<Regenaxer> No
<Regenaxer> only for 'new'
<Regenaxer> Historically there was only one file
<Regenaxer> so T was used
<Regenaxer> later we have many files
<Regenaxer> up to 65535
<freemint> if i (new T ..) all objects go in the first file?
<Regenaxer> yes
<freemint> i never knew that
<Regenaxer> just like (new 1
<Regenaxer> got nice
<freemint> the docs mislead me .
<Regenaxer> it was to stay compatible
<freemint> mhh when there is no shell only sample app in a few months (after exams are over) i might write one.
<freemint> I guess i need 2 days to do that, (more than 15 lines needed?)
<Regenaxer> something like that :)
<freemint> Regenaxer: I watched an interesting talk about programming recently
<freemint> One of it's interesting question was:
<freemint> Why when i open a project can i read from the directory structure what engine/framework was used but not what the app does
<razzy> i must laugh at my impatience and inability to grasp new concepts :D
<Regenaxer> T
<freemint> razzy: i took years to take the time and sit down and try to understand the database
<freemint> no shame in that
freemint has quit [Ping timeout: 256 seconds]
<razzy> DB should be easy. create pattern. save/load sub-pattern. done :D. where am i wrong :D
<razzy> (no offence, problem at my side)
<Regenaxer> No, you are right
<Regenaxer> easy
<Regenaxer> Not even save/load
<Regenaxer> just create
<Regenaxer> The pil DB is transparent to read access
<Regenaxer> just use the data
<Regenaxer> only "write" is explicit (commit)
<razzy> ok, i have external symbols.
<razzy> *i get external symbols
<Regenaxer> correct
ubLIX has quit [Quit: ubLIX]
<razzy> i had no need for external symbols because i stored them in text/code file.
mtsd has joined #picolisp
<razzy> hmm, {Num} is fixed notation, right?
<Regenaxer> fixed?
<Regenaxer> The part between { and } consists of two items
<Regenaxer> a file number in hax notation (A - O)
<Regenaxer> and a block ofset in octal (0 - 7)
<razzy> hmm hmm, thx
freemint has joined #picolisp
<freemint> Regenaxer, when do i need +Dep?
<Regenaxer> When a relation "Dep"ends on another
<Regenaxer> it fires upon 'lose>'
<freemint> I did not understand what depends on the +Pos example
<freemint> (in @app
<freemint> can you explain briefly?
<Regenaxer> ok
<Regenaxer> (rel ord (+Dep +Joint) # Order
<Regenaxer> (itm)
<Regenaxer> pos (+Ord) )
<Regenaxer> the position is joint'ed to the order
<freemint> It is an N-to-1 relationship?
<Regenaxer> when this joint is cut off, because the position is deleted
<freemint> (One order has N positions but each position is in one order?)
<Regenaxer> then the +Ref +Link to the item must be removed
<Regenaxer> otherwise the pos is never garbage
<Regenaxer> yes, N-to-1
<Regenaxer> list of positions in order
<Regenaxer> and pos links to the item
<Regenaxer> you can find order via positions via the ref to item
<Regenaxer> choOrd
<Regenaxer> (nm +Item @Item (itm +Pos) ord)
<freemint> The purpose is that if you call lose> on the PositionA1 that the PositionA1 is dropped from OrderA?
<Regenaxer> yes, this is anyway
<Regenaxer> but we want to cut the ref from item
<Regenaxer> the ref link
<freemint> i do not understand
<Regenaxer> otherwise the position is always ref'd by this item
<freemint> let me reread
<Regenaxer> and gets never garbage
<Regenaxer> This is the reason for +Dep
<Regenaxer> pos <-> ord is handled anyway by lose>
<Regenaxer> lose> removes all references *to* an object
<Regenaxer> so it becomes garbage if not referred to from other places
<freemint> +Item does not refer to a Position am i tight?
<Regenaxer> right
<Regenaxer> no +Link or +Joint
<Regenaxer> but an index
<Regenaxer> +Ref
<freemint> (rel itm (+Ref +Link) NIL (+Item)) ?
<freemint> What does that line mean?
<Regenaxer> This defines the relation
<Regenaxer> is this in +Pos ?
<freemint> yes
<Regenaxer> ok, so pos "has" an item
<Regenaxer> it points to an item
orivej has joined #picolisp
<Regenaxer> and can be found from an item via an index, +Ref
<freemint> Ahhh there is a index taking the "address" of the item which resolves to this Position.
<freemint> address == {A8}
<Regenaxer> I would not say the (nm +Item @Item (itm +Pos) ord)
<Regenaxer> yes
<Regenaxer> the object
<freemint> @Item?
<Regenaxer> Oops, I wanted to say: I would not say the "address"
<Regenaxer> copy/paste error
<Regenaxer> Paste buffer in Penti
<mtsd> Good evening :)
<Regenaxer> contained the last one
<Regenaxer> Hi mtsd!
<freemint> yet a another use of @ or is that just a Pattern?
<mtsd> Studying the demo app, freemint?
<freemint> a little
<Regenaxer> It was my last paste
<Regenaxer> from choOrd
<Regenaxer> see above
<Regenaxer> I wanted to paste "address", but forgot to copy
<Regenaxer> nevermind
<mtsd> It is a good demo, it really got me started
<Regenaxer> good to know :)
<Regenaxer> it is minimal but has many typical constellations
<Regenaxer> typical for an ERP
<freemint> (rel itm (+Ref +Link) NIL (+Item)) why the lin?
<freemint> NIL?
<Regenaxer> The NIL is the argument to +Ref for a hook
<Regenaxer> +Hook
<freemint> As Hook for ref?
<Regenaxer> yep
<Regenaxer> Can be another relation here
<Regenaxer> then the index is not global but relative to some other object
<Regenaxer> the index tree
<freemint> Regenaxer, we need to have a dialog about this sometime.
<Regenaxer> NIL means *DB
<freemint> ohh
<Regenaxer> by default indexes are global
<Regenaxer> hanging in *DB
<freemint> Are you ready for 30-45 min of questions?
<Regenaxer> But any object can be specified as a sub-DB
<Regenaxer> Not now
<freemint> ok
<Regenaxer> Had wine and whiskey already, rather sleepy now
<freemint> mhh ok
<Regenaxer> So only simple questions please :)
<freemint> What is a index?
<Regenaxer> a b-tree
<Regenaxer> just like in an SQL DB
<Regenaxer> index to look up things
<Regenaxer> in the above case, look up all positions which "use" this item
<freemint> A b-tree made out of objects in the database
<freemint> ?
<Regenaxer> made out of external symbols
<freemint> way better
<Regenaxer> "object" is more someting with a type (list of classes)
<Regenaxer> one external symbol is one node in the tree
<freemint> What is the realtion between indexes and classes? (Why do things seem to be indexed by class)
<Regenaxer> the value of that symbol
<Regenaxer> This does not need to be
<Regenaxer> An index can be any key-value structure
<mtsd> Wine and whiskey. Makes me a bit jealous :)
<Regenaxer> :)
<Regenaxer> Wine was only 4 cl left
<mtsd> I had swedish knäckebröd
<Regenaxer> So I poured some Chivas Regal
<Regenaxer> I *love* knäckebröd!!
<mtsd> Yes, I remember :)
<Regenaxer> I have one from Ikea!
<Regenaxer> the best
<Regenaxer> We have Wasa in Germany, but it is not good
<Regenaxer> The Ikea one is perfect
<mtsd> There was a sale at a shop today. My wife came home with 7 large packets :)
<freemint> Regenaxer, where can i study the implemenation of indexes?
<Regenaxer> (probably you have better one in Sweden)
<Regenaxer> freemint, it is all in @lib/btree.l
<mtsd> So, we are well equipped with knäckebröd now. Yes, the Ikea one is good. Wasa is good here, I think
<Regenaxer> basically the 'fetch' and 'store' functions
<Regenaxer> ok
<Regenaxer> You also have big ones
<mtsd> Wasa makes many different kinds
<Regenaxer> the Ikea has only 12 cm or so
<Regenaxer> diameter
<mtsd> The round ones, yes. Like big wheels
<Regenaxer> T
<Regenaxer> I ate when I was in Sweden
<mtsd> I should send you a selection
<Regenaxer> :)
<mtsd> The least I can do :)
<Regenaxer> Thanks for the offer! But please don't worry
<Regenaxer> Not necessary :)
<mtsd> Maybe not necessary. But fun! :)
<Regenaxer> hmm ;)
<mtsd> We'll see, haha
<Regenaxer> No worry! We don't starve! :D
<mtsd> I'm sure you don't :)
<Regenaxer> :)
<mtsd> Does your wife still give sushi courses, by the way?
<Regenaxer> yes, about once a week
<Regenaxer> Tomorrow again
<mtsd> Nice. I like sushi
<mtsd> Tried making some a few years ago
<Regenaxer> Sushi is more difficult to send than knäckebröd
<mtsd> hahaha, yes, indeed!
<Regenaxer> So you must come here and take the lesson
<mtsd> I would love to!
<Regenaxer> (I never did, I can't make sushi)
<freemint> (rel ord (+Dep +Joint) (itm) pos (+Ord) ) would be (rel ord (+Dep +Joint) (NIL) pos (+Ord) ) if it used a global index?
<Regenaxer> no, this is no index at all
<mtsd> It would be really nice to come visit you some day, Regenaxer. I have been thinking about it for some time
<freemint> Same
<Regenaxer> Great
<Regenaxer> yep
<Regenaxer> Can be another relation here
<Regenaxer> the index tree
<Regenaxer> then the index is not global but relative to some other object
<Regenaxer> 22:11 <freemint> Regenaxer, we need to have a dialog about this
<Regenaxer> sometime.
<Regenaxer> NIL means *DB
Regenaxer has quit [Excess Flood]
Regenaxer has joined #picolisp
<freemint> We should make some meetup again - maybe i have time then
<Regenaxer> oops
<Regenaxer> sorrt!
<Regenaxer> sorry
<Regenaxer> what did I hit?
<freemint> maybe you tried to paste a file?
<Regenaxer> No
<freemint> Excess Flood
<Regenaxer> I wanted to paste this
<Regenaxer> (rel itm (+Ref +Link) NIL (+Item))
<Regenaxer> here NIL means global index
<Regenaxer> (rel itm (+Ref +Link) foo (+Item))
<Regenaxer> this is a hook in the relation 'foo'
<Regenaxer> So the inhex hangs on this object
<freemint> So the foo attribute of the current class contains a index?
<freemint> at the property foo
<mtsd> freemint, are you far from Langweid?
<freemint> let me google that
<freemint> am Lech?
<mtsd> Yes
<Regenaxer> Consider this:
<Regenaxer> (class +Artikel +Entity)
<Regenaxer> (rel Kd (+Hook +Link) (+Kunde))
<Regenaxer> (rel nr (+Key +Number) Kd)
<Regenaxer> (rel bez (+Ref +String) Kd)
<Regenaxer> Kd is a hook
<Regenaxer> Kunde
<freemint> 5-6 hours by train
<Regenaxer> so the indexes for nr and bez (Nummer and Bezeichnung) are unique Keys, but only for this Kunde
<Regenaxer> Kunde is a sub-DB
<freemint> Kunde or kd?
<freemint> *Kd
<Regenaxer> kd is the relation for "Kunde"
<Regenaxer> the Artikelstamm for this Kunde
<mtsd> Ah, I see! Database within the database, sort of?
<Regenaxer> right
<Regenaxer> Searches can be very efficient
<freemint> I do not get that example yet
<Regenaxer> Think you have many suppliers
<mtsd> Very interesting!
<Regenaxer> (here "Kunde" is actually a supplier)
<Regenaxer> each supplier has his own *unique* item numbers, right?
<freemint> i do not see that yet
<Regenaxer> So if you have them all in an db, you must do
<Regenaxer> (rel nr (+Ref +Number))
<Regenaxer> the +Ref is becaus one item number may be in several item sets for different suppliers
<Regenaxer> with hook we can do (rel nr (+Key +Number) Kd)
<Regenaxer> +Key
<Regenaxer> for each supplier the number is unique
<mtsd> Giving you a more efficient search, since each number is unique?
<Regenaxer> right
<freemint> nr from Artikel is the Artikelnummer?
<Regenaxer> yes
<freemint> bez ist die Artikelbezeichung
<Regenaxer> A hook is simply the place where the index tree is stored
<Regenaxer> by default it is *DB
<mtsd> Regenaxer, you always come up with these great ideas! I don't think I will ever cease to be amazed
<mtsd> And, I willingly admit, a bit jealous, haha
<freemint> So each Artikel has it's own sub database which resolves ? to ?
<Regenaxer> no reason
<Regenaxer> no big thing, it is a natural consequnce
<mtsd> Since I wish I could invent such things, of course
<freemint> an sub database/index maps some key to some value.
<Regenaxer> freemint, no, each Kunde has
<Regenaxer> the index tree is stored in the Kunde object
<freemint> where in the Kunde exactly?
<Regenaxer> You begin the search for a number in this specific Kunde
<mtsd> Thanks for the discussion, been great talking to you! Time for me to sleep!
<mtsd> Or I'll be here all night..
<Regenaxer> yeah, me too
<Regenaxer> Kids are all right?
<freemint> (For Joint we provide an end-point?)
<freemint> (for +Hook we provide no endpoint in kunde)
<mtsd> Unfortunately not. The flu has arrived, they came down with fevers today...
<Regenaxer> You could inspect with show
<freemint> T
<Regenaxer> oh, same here
<Regenaxer> flu everybody
<Regenaxer> freemint, it has the same base objects as those stored in *DB
<mtsd> Hope it is not too bad this year.
<Regenaxer> ie one external symbol per class
<Regenaxer> the properties of that symbol hold the index trees
<Regenaxer> eg under 'nr'
<freemint> so the objects stored in val of {1} ?
<Regenaxer> not the val but the properties
<freemint> oh ... ok
<mtsd> Just one more thing, I will see if I can find some time and come see you, Regenaxer. Maybe this summer, or early autumn
<Regenaxer> (get *DB '+Artikel)
<Regenaxer> ok, lets see
<mtsd> Not sure yet, but I will try to work something out. Let's see!
<Regenaxer> Would be nice :)
<freemint> mtsd, maybe we should make a big meeting out of this
<mtsd> Yes, I think so too. Promise to take the sushi lesson :)
<mtsd> freemint, yes, good idea!
<Regenaxer> we should, right
<Regenaxer> :)
<mtsd> It's been years since I went to Germany, too. It is time again :)
<Regenaxer> then yes, sure!
<Regenaxer> ok, lets stop for today, ok?
<freemint> yes
<mtsd> Yes, have a good night, everyone!
<freemint> Good Night mtsd
<Regenaxer> good night all!
<Regenaxer> :)
<mtsd> Good night!
<Regenaxer> afp
mtsd has quit [Quit: WeeChat 1.6]
ubLIX has joined #picolisp
orivej has quit [Ping timeout: 272 seconds]