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
jibanes has quit [Ping timeout: 268 seconds]
jibanes has joined #picolisp
lodsw has quit [Ping timeout: 268 seconds]
lodsw has joined #picolisp
_whitelogger has joined #picolisp
xkapastel has quit [Quit: Connection closed for inactivity]
razzy has quit [Read error: Connection reset by peer]
razzy has joined #picolisp
rob_w has joined #picolisp
xkapastel has joined #picolisp
<beneroth> hi all :)
<Regenaxer> Hi beneroth!
<beneroth> Regenaxer :)
<razzy> hi all
<Regenaxer> Hi razzy!
ubLIX has joined #picolisp
<beneroth> hi razzy
<Nistur> mornin'
<beneroth> Nistur !
<Nistur> beneroth !
<beneroth> Nistur !
<Regenaxer> Hi Nistur!
<Nistur> hi Regenaxer! :P
<Nistur> Everyone's very excitable today!
<beneroth> excitable!
<Regenaxer> yep
* beneroth is still booting up. brain not yet fully functional.
<Nistur> tell me about it :P
<razzy> excitable!
<DKordic> Good morning everyone.
<DKordic> Should we mention [[https://sites.google.com/site/e3editor/][e3]] in `` (doc 'edit) ''? It is a 10 KiB editor with both EMACS and vi key bindings.
<DKordic> Would "setq" and "object" Forms be more natural than "(=======)" pattern in "edit"? "repr", like in Python, returns an "object" Form for "eval"uation.
<DKordic> razzy: I don't like ``NIL'' at all. I prefer ``True'', ``False'' and ``Nothing'', ``(Just whatever)'' over ``NIL''. IMHO it is Natural to ``[require '(Relation Algebra)]'' ( https://en.wikipedia.org/wiki/Relation_algebra ).
<DKordic> First of all I don't like that _PicoLisp_ Functions are _PicoLisp_ Lists, whatever they are. IMHO Lexical Scope is fundamentaly related to Function. I don't like that ``='' compares names.
<DKordic> razzy: I agree, a Namespace Constructor is not exported. And the rest of Namespace API :) .
<DKordic> razzy: What do You think about using `` a-lib.l~private~a-sym ''?
<Regenaxer> Hi DKordic!
<DKordic> Greetings Regenaxer.
<Regenaxer> "Lexical Scope" is wrong here
<Regenaxer> Scope refers to visibility
<Regenaxer> namespaces etc
<Regenaxer> Nothing to do with functions
<DKordic> You are absolutely correct, sorry.
<Regenaxer> You mean "lexical *binding*" perhaps
* DKordic thinks...
<Regenaxer> So you are talking about a completely different language
<Regenaxer> The things you mentioned are the essence of PicoLisp
<Regenaxer> (things like NIL and dynamic bindings)
* razzy will drink tea and parse DKordic. in mean time Razzy thinks picolisp is too small for splitter groups
<Regenaxer> The behavior of NIL is an absolutely plus point of pil. I would never ever want to give up that huge flexibility
<Regenaxer> And what is a "Namespace Constructor" ?
<beneroth> I agree with Regenaxer. I was sceptical at the beginning too, but it really proves itself useful.
<Regenaxer> thx beneroth :)
<Regenaxer> 'setq' in edit would be fatal. It is usually used on anonymous or external symbols
<DKordic> A Form for defining Function Values, let's call it "defn", with Lexicaly Scoped Parameters. IMHO "apply"cation of Functions is fundamentaly Lexical Binding. I think I can implement Dynamic Binding can through Lexical Binding when needed, by passing the Scope (Bindings).
<DKordic> I understand that "NIL" is fundamental to PicoLisp. But I have problems "apply"ing it :3 .
<DKordic> Namespace Constructor would be Function called by Reader for Constructing Namepace. AFAIK it is just not exported.
<beneroth> I never heard about namespace constructors. constructors are initialization methods for objects in OOP. Namespaces can be modelled naively with scoping or also (ab)using OOP encapsulation. Henrik did an OOP namespace system with pil. But this approaches have quite some shortcomings.
<Regenaxer> DKordic, it is not a good idea to make functions special
<beneroth> about picolisp namespacing: do not use it and do not care about it unless you really require it. you usually don't require it.
<Regenaxer> it is a big power to have Data = Code
<Regenaxer> Why do you start with that lexical stuff again? It is less powerful
<Regenaxer> needed for compilers
<Regenaxer> 'apply' has nothing to do with binding
<Regenaxer> So it seems you are talking a lot of nonsense without understanding the implications
<beneroth> DKordic, homogeneity is the big core feature of lisp which makes lips languages different (and more powerful) than the other languages.
<DKordic> Yes, I am most likely wrong :3 .
<DKordic> Then a Form that is "eval"uated by "edit" rather than a new Reader? Would "object" be appropriate?
<beneroth> object might be what you want.
<DKordic> (= Data Code)?
<Regenaxer> Not sure if evaluating in 'edit' is a good idea
<beneroth> the point that you can handle source code of a software just as pure digital data which can manipulate.
<Regenaxer> What is the advantage?
<Regenaxer> 'edit' just modifies the value and properties of given symbols
<DKordic> Wouldn't (= Data Code) imply (= (/ -2 3) (/ 10 -15)) as well?
<beneroth> Regenaxer, I don't think this is about changing your edit. its about a completely new system with different properties, not similar to the current picolisp way of working.
<beneroth> DKordic, no
<beneroth> (= Data Code) means you can have (/ 10 -15) in source code, and you can have other code modifying that (/ 10 -15) into (/ -2 3). before running it, after running it, whenever.
<beneroth> self-modifying programs.
<Regenaxer> (= Data Code) is (def 'foo (list (list X 'Y) (list '* 3 X ...
<razzy> i like NIL as nothing value. i would prefer T and F logic in several functions to improve readability. but i think most of the problems are with programmers who write unclear code and overloading NIL instead introducing new variable. (like Regenaxer do for me)
ubLIX has quit [Quit: ubLIX]
<razzy> there is difference between power|flexibility and chaos/entropy, and the difference are simple rules that govern power|flexibility. and fuzzy|shifting rules that govern chaos. if Regenaxer wants to be only one who can use all power of language, he is doing good job :]
<DKordic> "NIL" is a rudimentray "Nothing", right? AFAIK it is trivial to reduce "Maybe" to "Bool".
<beneroth> you are rude.
<beneroth> razzy,
<beneroth> and "if Regenaxer wants to be only one who can use all power of language, he is doing good job" is bullshit.
<beneroth> try to think before you write and be less rude.
<DKordic> How to express "(Just Nothing)" with "NIL"?
<beneroth> NIL is just nothing.
<Regenaxer> T
<beneroth> NIL is the empty list. NIL is parent of all objects.
<Regenaxer> the ref:
<Regenaxer> • as an end-of-list marker
<Regenaxer> • to represent a string of length zero
<Regenaxer> • to represent the absolute minimum
<Regenaxer> • to represent the boolean value "false"
<Regenaxer> • to represent the empty list
<Regenaxer> • to represent the value "Not a Number"
<Regenaxer> • as the root of all class hierarchies
<Regenaxer> • as volatile property key
<Regenaxer> This is exactly what makes it so mighty
<beneroth> and EOF marker in picolisp source files :)
<Regenaxer> true
<Regenaxer> all I/O
<Regenaxer> musst add
<beneroth> not all, not binary :P
<beneroth> and that is good!
<Regenaxer> binary too
<beneroth> binary raw
<Regenaxer> (while (rd) ...
<Regenaxer> yes
<beneroth> (rd) is not raw
<Regenaxer> (while (rd 7) ...
<Regenaxer> a closed TCP connection too
<Regenaxer> BTW, JavaScript is going into the same direction
<Regenaxer> everything is false kind of
<beneroth> well its not a concept invented for/by picolisp :)
<Regenaxer> indeed
<beneroth> pretty common, especially in interpreted languages
<Regenaxer> yes, because it is so very very useful
<Regenaxer> only people theorizing about programming without practical experience stress formal limitations
<beneroth> useful things spread. thats the feature of everything which follows evolutionary processes.
<Regenaxer> and compiler builders
<Regenaxer> yep
<beneroth> well, to be fair for compiler builders its practical limitations :)
<Regenaxer> yes, makes it easier
<beneroth> well sometimes. not for clang people.
<Regenaxer> ore efficient
<beneroth> :P
<Regenaxer> :)
<beneroth> gotta go
<Regenaxer> cu!
<beneroth> don't let yourself be annoyed Regenaxer :)
<Regenaxer> no problem :)
<Regenaxer> Just sad to see how little people understand what PicoLisp is about
<beneroth> razzy, DKordic, RTFM. and just build something instead of theorizing all the time. some things need to be experienced, not just imagined.
<Regenaxer> Very true!
<DKordic> I find the distinction of "Nothing" and "False" to be a nice comment :3 .
<DKordic> AFAICU "NIL" as empty "list" and "NIL" as False is essentialy a Relational Algebra, where "list" is essentialy a Set.
<DKordic> s/Relational/Relation/
<Regenaxer> theorizing
<Regenaxer> DKordic, did you ever write *anything* substantial in pil?
<Regenaxer> or, any substantial practical application at all?
<DKordic> Not yet. trying to...
<DKordic> Correct, no application yet :3 .
<Regenaxer> OK, so the practical aspect was never important
<Regenaxer> I see it from the pragmatic side
<razzy> beneroth: rude, propably. i cannot think of more true statement that express my defence of overloading NIL :] notice *if* and *:]*. and more expressive could be "only one who can use full power of his code".
<DKordic> My 2 cents :3 . As far as I can understand (AFAICU) it.
<DKordic> Sorry that I was not clear about it :3 .
<DKordic> I feel that I would be more comfortable with a watered down PicoLisp. At least until I see the advantages.
orivej has quit [Ping timeout: 268 seconds]
<Regenaxer> Yeah, razzy had the same argument
<Regenaxer> I would say just ignore for now what you don't need initially
<DKordic> razzy: I also added "edit" to "See also" of "!".
<razzy> DKordic: if by "namespace constructor" you mean lisp function that create inner namespace space. some time in future i would use similiar functionality.
freemint has joined #picolisp
<Regenaxer> What the heck is an "inner namespace space"?
<freemint> Good Morning
<Regenaxer> Hi freemint!
<DKordic> Just as there is "list" that creates lists, there should be "Namespace" that "cons"tructs a Namespace from it's components. AFAIK that would be "(Namespace Sym Rest)".
<Regenaxer> You can nest namespaces in PicoLisp as deep as you like
<DKordic> Good morning freemint.
<razzy> Regenaxer: nothing precise yet :]
<Regenaxer> But no need to *construct* an namespace
<DKordic> Whith which Function to look-up a Symbol in a Namespace?
<freemint> Is there a better way to acomplish (out "good_websites.txt" (in "websites.txt" (until (eof) (let A (line T) (when (client A 80 "/" (from " ") (> "400" (till " " T))) (prinl A) (flush))))))
<Regenaxer> razzy, don't create terms you don't understand yourself ;)
<Regenaxer> freemint, looks good
<razzy> Regenaxer: sometimes you invent term, and than negotiate meaning :]
<Regenaxer> better in which way?
<Regenaxer> razzy, no, not me
<freemint> My problem is that there are no parrallel connections (so the thing is damn slow for >1000 sites) but later and fork would drown since there are two namy processes
<Regenaxer> something between
<Regenaxer> a limit to the forks
<Regenaxer> eg 100
<freemint> something like that would be good but i have no idea how i would go abot building it
<Regenaxer> Look at (kids), the length
<freemint> mhh so i should create a process per website i want to scan and just wait when all 100 are busy?
<Regenaxer> perhaps
<Regenaxer> or better make 100 processes
<Regenaxer> and give each a range to process sequentially
<Regenaxer> seems easier and more efficient
<freemint> another option i see is to have the parent maintain send ''tasks'' to worker processes and either the workers queue tasks or they tell the parent when they are done and get a new one or are deleted when there are no more tasks
<Regenaxer> right, just pipe to them
<freemint> Regenaxer the problem is that "all tasks take the same time" can be a very bad assumption
<Regenaxer> or better 'tell' with PID
<freemint> does tell queue?
<Regenaxer> yes
<Regenaxer> but we dont know which process is idle
<freemint> i am aware they need to tell the parent or you could use the DB for sync
<Regenaxer> optimal would be if each process could "pick" his next task
<Regenaxer> right, that's best
<Regenaxer> they use 'boss' to send their PID to the parent
<Regenaxer> the parent sends the next task per 'tell' then
<Regenaxer> or the parent does nothing, and the children take the next task from a file which is 'ctl'ed
<freemint> does something like (mapcar '((@Value PID) (tell (fill '(() (process '@Value))) PID) values '(pid1 pid2 .)) look ok to
<freemint> DB vs file with CTL what would you do?
<Regenaxer> DB needs no ctl
<Regenaxer> the above loop does no balancing
<Regenaxer> also 'mapcar' is not right
<Regenaxer> 'mapc' or 'for'
<freemint> (i am aware if no balancing)
<freemint> i see
<freemint> What would use? DB or file with ctl
<Regenaxer> DB is overkill
<freemint> on the other hand you get persistence for free
<Regenaxer> T, but a file is persistent too :)
<Regenaxer> DB is just a set of files. If the logic gets involved, a DB might be better
<freemint> are things malloced by the parent available to all childs under the same pointer?
<Regenaxer> yes, they get the same memory
<freemint> and if the child changes the malloced stuff does the parent see the change?
<Regenaxer> No, they have a local copy.Perhaps a named pipe works?
<Regenaxer> Not sure, needs experiment
<freemint> mhh then DB is simpler
<Regenaxer> parent writes to a pipe
<Regenaxer> children simply read
<Regenaxer> I think this is the easiest
<freemint> but pipe is more versatile since it can be used when the only DB is used for something else
<Regenaxer> yes
<freemint> so there is no golden bullet it seems
<Regenaxer> I hope so. Pipes are tricky sometimes
<Regenaxer> Needs experimentation
<freemint> it would be cool if you could have multiple databases in namespace style
<Regenaxer> PilBox does that
<freemint> how?
<Regenaxer> I have many apps with separate DBs in a single PilBox process
<Regenaxer> well, not many. 3 so far ;)
<freemint> 3 out of?
<Regenaxer> around 10
<Regenaxer> Published is only one with a DB: radio
<freemint> I will look at the source
<Regenaxer> yes
<Regenaxer> you know you can view directly inside PilBox?
<Regenaxer> in the PILs tab of Settings
<Regenaxer> click on a PIL, then on the file
<razzy> btw, can pilbox use multiple cores?
<Regenaxer> yes, by starting child processes
<Regenaxer> as normal pil
<Regenaxer> So all non-trivial PILs I made have their own namespace
<razzy> processes are BIOS thing?
<Regenaxer> razzy, no
<freemint> no an poisix thing
<freemint> posix
<Regenaxer> yes, or OS in general
<Regenaxer> BIOS is basic I/O
<freemint> Basic Input Output System
<razzy> imho are processes OS thing, and PilBOX is full OS right?
<Regenaxer> No, PilBox is an Android app
<razzy> sry
<Regenaxer> Android is the OS
<Regenaxer> you mean PilOS
<freemint> no they use the android processes which are posic since android runs linux under the hood
<freemint> posix
<freemint> Regenaxer how do namespaces allow me to work with serveral DBs at the same time?
<razzy> huge apology. can pilOS use multiple cores? i think not.
<freemint> the minimal viable example i would need is one process has two DBs open and copies from one to the other
<Regenaxer> The namespaces allow to define different E/R class hierarchies
<Regenaxer> The DBs and all other PIL-related stuff are handled in each PIL's 'start' and 'stop' bodies
<Regenaxer> Calling 'pool' for example
<freemint> i do not understand the implications
<Regenaxer> starting/stopping tasks and processes
<Regenaxer> It is running different programs (PILs) in the same PicoLisp process
<Regenaxer> but only one at a time
<Regenaxer> Look at 'radio' for a typical example
<Regenaxer> or fetch 'fifi' for a bigger example
<Regenaxer> (Fire Fighters)
<Regenaxer> you cannot run it without PIN though
<Regenaxer> just look at the sources
<freemint> Fifi where could i get that?
<Regenaxer> Like any PIL
<Regenaxer> you know?
<freemint> i do not have an droid with me
<Regenaxer> Start PilBox, go to settings
<Regenaxer> ok
<freemint> could'nt i just patch out the pin?
<Regenaxer> yes, but it tries to connect to the server and is rejected without
<freemint> found it by guessing the url
<freemint> ok and where could i see what i need now?
<Regenaxer> The start file is always App.l
<Regenaxer> minimum for a PIL
<Regenaxer> A minimal PIL is "hello" or "crash"
<freemint> my local picolisp is to old for 'needs
<Regenaxer> 'needs' is in the generic App.l
<Regenaxer> in the home of PilBox
<freemint> ahh
<freemint> what does it do?
<Regenaxer> It needs the whole infrastructure
<Regenaxer> 'needs' just checks the version and gives an error if the PilBox is too old
<freemint> ahh
<freemint> could other picolisp user also publish stuff via the pilbox download mechanism?
<Regenaxer> no, but you can just klick on your own ZIP the normal way
<Regenaxer> Click in a download side, or "share" from another app
<freemint> menno
<Regenaxer> side -> site I mean
<Regenaxer> or do 'termux-share ..' in Termux
<Regenaxer> thats how
<Regenaxer> I do my dev
<Regenaxer> termux-share -d my.zip
<Regenaxer> You can also debug your PIL in the REPL inside PilBox
<freemint> so you've made your own competitve advantage
<Regenaxer> I hope so :)
<freemint> that's unfair to the rest of us :(
<freemint> ;)
<Regenaxer> oh, why? ;)
<Regenaxer> You can use it too
<Regenaxer> all open :)
<Regenaxer> In some way PilBox is the easiest way to try PicoLisp
<freemint> i find highly complex
<freemint> find it
<Regenaxer> at least easy to install
<Regenaxer> and then hack around in the REPL
<freemint> if you donot have to build it yourself
<Regenaxer> yes
<Regenaxer> but you can start very simple, with "hello"
<Regenaxer> or no PIL at all, only REPL
<Regenaxer> The REPL is tedious to type in though
<Regenaxer> especially without Penti
<freemint> I think picolisp would profit from a code hosting platform a few years down the line.
<Regenaxer> T
<freemint> I do not get why it is hard to type on android ;)
<Regenaxer> The window is too small if the virtual keyboard pops up
<freemint> (I have a phone with a physicall keyboard)
<Regenaxer> ah, ok
<Regenaxer> Then much better
<freemint> (something you decried as wastefull)
<Regenaxer> yes, cause Penti is better
<Regenaxer> wasteful in terms of hardware resorces
<freemint> no my phone is better ;)
<Regenaxer> And you don't have all keys you need
<Regenaxer> Control, function keys?
<freemint> i got all i need for picolisp
<freemint> (if i pil in termux)
<Regenaxer> Surely tedious for full usage, eg Vi[mp]
<freemint> less tedious than on my laptop
<Regenaxer> But Vi is not needed in PilBox
<freemint> have to stretch less
<Regenaxer> You have a Control key?
<Regenaxer> and ESC?
<Regenaxer> Also I use all 12 function keys a lot
<freemint> with termux yes
<freemint> also controll on the keyboard as well
<Regenaxer> In Termux it is tedious, using the volume key
<freemint> can we agree to disagree?
<Regenaxer> sure
<Regenaxer> You are just too lazy to learn Penti ;)
<freemint> and i have no appropriate screen
<freemint> is there a windows/linux version?
<Regenaxer> Multi-touch?
<freemint> size wise
<Regenaxer> ah
<Regenaxer> I did have a Linux device driver, but don't support it any more
<Regenaxer> We had a discussion in #penti
<freemint> it is to small for me even on the note of my gf
<Regenaxer> yes, understand
<freemint> is penti whitequarked?
<Regenaxer> needs 5, better 6 inch
<Regenaxer> not yet
<freemint> and then you do not see what you type :D
<Regenaxer> Not much happening there
<freemint> I would say you need >8 inch
<Regenaxer> No, 6 is fine. I use it
<Regenaxer> why not see?
<freemint> i was assuming usage in landscape
<freemint> because the hand blocks half the scren
<Regenaxer> I use mostly portrait, but sometimes landscape
<Regenaxer> The same
<Regenaxer> but on tablet, 9 inch
<Regenaxer> on a phone difficult to place the fingers perhaps, yes
<freemint> have i showed you https://www.tapwithus.com/ yet
<Regenaxer> not yet
<Regenaxer> ah, think I saw it
<Regenaxer> I don't want to carry anything around
<Regenaxer> like an external keyboard
<Regenaxer> and mechanics which may break
<freemint> need to go
<Regenaxer> cu
freemint has quit [Ping timeout: 256 seconds]
xkapastel has quit [Quit: Connection closed for inactivity]
rob_w has quit [Quit: Leaving]
razzy has quit [Ping timeout: 245 seconds]
freemint has joined #picolisp
<freemint> I still do not get how name spaces allow multiple databases
<freemint> but the code is neat. "what nu" the self updating
<freemint> Regenaxer: you develop that for australian fire fighters?
<freemint> or military fire fighters?
alexshendi has joined #picolisp
<Regenaxer> ret
<freemint> welcome back
jibanes has quit [Ping timeout: 252 seconds]
<Regenaxer> Well, the databases are just openen and closed with 'pool' in start/stop. Namespaces are needed to keep the different data models in memory
<Regenaxer> E/R
<Regenaxer> Fifi is for Catalan firemen
<Regenaxer> hehe, I have a function 'watnu' in all such projects, where an application (mobile or not) must ask remote servers
jibanes has joined #picolisp
<freemint> ok i saw "ADF" and that are the fire fighters at the australian airforce
<freemint> Ah so there is just one DB open at any time.
<freemint> It seems that the complete app needs to be aware that there are multiple databases
<Regenaxer> It needs not further be aware
<Regenaxer> See fifi/er.l and radio/er.l
<Regenaxer> Similar classes like +Bulk
<Regenaxer> But other things like function names or globals might also conflict. So a namespace makes things easier
<Regenaxer> fifi and radio are very simple
<Regenaxer> But for example the BTG logistic app has 6 "er.l" files
<freemint> so i can open my own database in any app do stuff with it and after i am done it looks like nothing happend?
<Regenaxer> These 3 er.l alone have 1664 lines
<freemint> what happens when a tell happens in the family during i have opened the other db
<Regenaxer> in this early stage of the project
<Regenaxer> You must know what you are doing of course :)
<Regenaxer> See start/stop stuff
<Regenaxer> it is central
<freemint> 100 days of work for er.l
<Regenaxer> indeed! :)
<Regenaxer> So I took fragments from the existing old program
<Regenaxer> There is a single er.l with 2573 lines
<freemint> I just wanted to ask "what do i need to know to make thatnwoth for me?" then i realized : It's PicoLisp everything ofcourse
<Regenaxer> "PicoLisp everything" mean: It works from alone?
<Regenaxer> almost ;)
<freemint> i really need to dig each line of code in picolisp ... every line is important ... no one is irrelevant and my heuristics what does what are not very advanced.
<Regenaxer> Agreed, very dense code
<freemint> and that code has many "finge" or special purpose functions
<Regenaxer> right
<Regenaxer> also, it depends a lot on the central server
<freemint> *fringe
<Regenaxer> in fifi
<Regenaxer> most of fifi is central
<Regenaxer> what you see is only the fireman app
<freemint> i have good idea what it does though
<Regenaxer> great!
<freemint> just by seeing what actions can be done to chage the state
<freemint> and the local er.l does help to
<freemint> the auth digits seems to be 9 digit only i was thinking if i should attempt to guess one :)
<Regenaxer> You mean the PIN? It is 4 only
<freemint> laughable
<Regenaxer> But the operator on the server creates the app, and tells the member the PIN
<Regenaxer> it is valid only this short time
<freemint> why is it 9 in (gui '(+Focus +NumField) 9 "PIN")
<Regenaxer> right, can be larger
<Regenaxer> let me check
<freemint> in register.l
<Regenaxer> yes
<Regenaxer> Only 4 are needed:
<Regenaxer> (dm pin> ()
<Regenaxer> (fetch '(pin . +Pib)
<Regenaxer> (while
<Regenaxer> (use R
<Regenaxer> (setq R (% (in "/dev/urandom" (rd 2)) 10000)) ) )
<Regenaxer> (put> This 'pin R) ) )
<Regenaxer> Anyway no problem
<Regenaxer> if another person intercepts, they will notice immediately
<freemint> oh server side code
<Regenaxer> then the operater blocks it and makes a new pin
<Regenaxer> yes
<Regenaxer> And the app is of no use for non-ADF-members
<freemint> i would not say that
<Regenaxer> Data flow mainly from app to server
<Regenaxer> The guy would need the right QR codes on his helmet :)
<freemint> mhh
<Regenaxer> and then he is being tracked by his GPS position
<freemint> i see
<Regenaxer> It is a tool for tracking the firemen
<Regenaxer> how long they work, on which vehicles
<Regenaxer> where they are
<Regenaxer> it is all about wood fires
<freemint> i see
<Regenaxer> see above Agrupaci.. de Defensa Forestal
<freemint> i hope they use another api endpoint than picolisp.com
<Regenaxer> endpoint?
<Regenaxer> the server?
<freemint> the server
<Regenaxer> well, it is 7fach.de
<Regenaxer> I don't write the link here, but you can guess it :)
<freemint> oh yeah recalled wrongly
<freemint> *Hub (or (rc "Dbg" "fifi") "7fach.de"
<Regenaxer> haha
<Regenaxer> In debug mode I use my local server here
<freemint> Is your server sufficently redundant so it will fail over?
<Regenaxer> I'm afraid not
<Regenaxer> you mean "... not to fail"
<Regenaxer> It is hosted at DomainFactory which were quite stable over the years
<freemint> fail over i know as strategy to switsch servers when one is down
<Regenaxer> yes
<Regenaxer> It is mirrored here locally
<freemint> so the dev environment has a fail over but the production one not? Nice work ;)
<Regenaxer> ?
<Regenaxer> The production is mirrored with @bin/ssl
<Regenaxer> so an up to date copy exists with a lag of 20 seconds
<freemint> if your local dev server fails you can use fifi but fifi can can not access your local homenetwork server.
<Regenaxer> yes, the apps
<Regenaxer> only until DNS is updated
<Regenaxer> it takes an hour or so
<Regenaxer> up to 24
<Regenaxer> but usually faster
<Regenaxer> The whole server is mirrored
<freemint> in that way your development environment has a redundant running copy it *could* fail over at switch of a *Dbg but the production environement (on the field) has no fail over
<Regenaxer> I just need to change the DNS entry of 7fach.de
<Regenaxer> I dont understand "fail over"
<Regenaxer> moment
<Regenaxer> bbl
<freemint> A has a fail over <==> When A's primary server fails he can continue using another server.
<freemint> well anyway it is something i find funny so it is not that important
<freemint> *and in this case it is not
<freemint> afa
freemint has quit [Ping timeout: 256 seconds]
freemint has joined #picolisp
<freemint> back
orivej has joined #picolisp
<Regenaxer> ret
<Regenaxer> So, yes, I must switch DNS manually
<Regenaxer> after stopping the production server if still running
<Regenaxer> ADF is only one application of several on that machine
<Regenaxer> Concerning the fifi app, it continues running also when offline
<freemint> everything is good then
<Regenaxer> I hope so
<Regenaxer> btw, the ssl call in line 39 is the same mechanism as is used to mirror the production server
<Regenaxer> in fifi/App.l I mean
alexshendi has quit [Ping timeout: 252 seconds]
orivej_ has joined #picolisp
orivej has quit [Read error: Connection reset by peer]
freemint has quit [Ping timeout: 256 seconds]
xkapastel has joined #picolisp
ubLIX has joined #picolisp
Regenaxer has left #picolisp [#picolisp]
Regenaxer has joined #picolisp
groovy2shoes has quit [Quit: moritura te salutat]
freemint has joined #picolisp
<freemint> aw json.l does voodo with name spaces loading it results in 'de not found
<freemint> this happens in line 53 but it is not the first occurence of de.
alexshendi has joined #picolisp
<freemint> any idea how to best construct a family member as tell slave?
alexshendi has quit [Ping timeout: 252 seconds]
freemint has quit [Ping timeout: 256 seconds]
alexshendi has joined #picolisp