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
freeemint has joined #picolisp
freemint has quit [Ping timeout: 244 seconds]
freemint has joined #picolisp
freeemint has quit [Ping timeout: 245 seconds]
ubLIX has quit [Quit: ubLIX]
freemint has quit [Remote host closed the connection]
alexshendi has quit [Read error: Connection reset by peer]
freemint has joined #picolisp
freemint has quit [Ping timeout: 240 seconds]
orivej has quit [Ping timeout: 240 seconds]
xkapastel has quit [Quit: Connection closed for inactivity]
anjaa has quit [Ping timeout: 252 seconds]
freemint has joined #picolisp
<freemint> Guten Morgen
<Regenaxer> Salve freemint
<freemint> Ave Regenaxer
<Regenaxer> :)
<freemint> ;)
<freemint> I thought about buying an already in use domain from somebody so i can gift a subdomains + administration to a school friend. He wanted 670€ whf? Is that normal?
<freemint> wtf
<beneroth> well the owner of a domain can sell it for whatever they wish
<razzy> freemint: he might do not want to sell and he might factored in migrating to new domain
<freemint> yeah but he does not even use it.
<beneroth> you sure?
<beneroth> you can use a domain for other things than just a website
<razzy> it might me not public use
<freemint> yes... i could not find subdomains in the dns record
<freemint> using Subdomain enumeration methods. There are no SSL certificates either
<beneroth> also domain grabbing (registering domains in hope to sell it for high price) is big business. not much you can do about it, unless you can go to court over trademark
<beneroth> you cannot enumerate all possible subdomains. did you check for MX entries?
<razzy> or be inpolite and terror him into submission
<freemint> Beneroth i did check for MX. He also has an email setup, but it is the same as on his other servers.
<freemint> razzy how would that work?
<beneroth> so he uses that domain for email...
<beneroth> so it's wrong to say it is not in use.
<razzy> freemint: you say that his behaviour is wrong and you will punish him for it :]
<razzy> and than you start a war
<razzy> which is rude and inpolite
<razzy> and cost way more than 1000EUR
<razzy> but hey, punishing is always costly
<freemint> beneroth i won't say he uses it for email. It is the same config as on every of his servers. all pointing to the same IP.
<freemint> he is likely a domain grabber
<beneroth> could well be. on the other hand, multiple domains pointing to the same e-mail server is not uncommon.
<beneroth> I have the same e-mail MX entries for all my customer who uses my e-mail services. Spamfilter server.
<beneroth> you people (I include razzy :P) should learn some calmness and good faith when you don't understand something. when something doesn't work immediately it doesn't mean that it is broken or someone means you bad.
<beneroth> though in all probability freemint is right about domain grabber. but then you lost, unless you can wage a trademark court battle. personal harassment will not have any effect, or get yourself into trouble at worst.
<freemint> i wrote him two counter offers, including me renting a Subdomain from him and i see if he reacts. I've also looked into other domains and tried to contact there owner.
alexshendi has joined #picolisp
Nistur has joined #picolisp
<freemint> Hi alexshendi
<beneroth> you could place a "domain backorder" with multiple domain registrars, then they will try to register it for you as soon as it becomes available. Some backorder services only cost when it's successful, some you have to pay in any cast.
<beneroth> s/cast/case
<alexshendi> Hi freemint!
<beneroth> freemint, good strategy!
<beneroth> freemint, very good
<beneroth> hi alexshendi !
<alexshendi> Hi beneroth!
<freemint> beneroth it as "fun idea as birthday gift for old school friend" not "important"
<beneroth> then don't threat with war so lightly, else nobody will believe you when you mean it for real :P
<beneroth> I can understand you ;)
<freemint> I never endorsed razzy's idea
<Nistur> mornin'
<beneroth> Morning Nistur ! :)
<freemint> Hi Nistur
<freemint> Nistur what are you up to recently?
<Nistur> I've been traipsing around eastern europe
<freemint> nice, spreading the word of PicoLisp?
orivej has joined #picolisp
<Nistur> hah, let's say yes :P
<razzy> freemint: beneroth i consider personal harasment the worst idea. but sometimes enough is enough :]
<freemint> razzy i am not sure about that
<freemint> Nistur nice
<Nistur> to be honest, very few people I talked to had anything to do with computers, so not much I could do in that arena
<razzy> well, statistics say, that somebody has to deal with bad guys. i do not want to do it.
<beneroth> rule of law says we have government for that (if we are lucky enough to live in a country with rule of law)
<razzy> law provide most basics guidelines for human interaction.
<razzy> even in developed countries
<razzy> you nees positive and negative feedback to fine tune human interactions
<razzy> domaingrabbing is ok from law perspective. it is inefficient from society perspective
<freemint> razzy is it more inefficient that the structure which would be needed to prevent domain grabbing?
<razzy> people who do that should be teached a lesson. (emai-spam-bombardment and such)
<razzy> freemint: yes, there domain-grabbing cannot solve state
<razzy> *these domain-grabbing
<freemint> I found a nice article about LUA, sadly not very w3m compatible: https://m-cacm.acm.org/magazines/2018/11/232214-a-look-at-the-design-of-lua/fulltext
<freemint> razzy what you say i can not parse, still
<razzy> freemint: i was not clear. state structures to prevent domain grabbing are more inefficient than problems from domain grabbing.
<razzy> that is why domain-grabbing should be solved on personal lvl. like wild west
<freemint> i do not see how sending bullets through the internet makes the situation more efficient
<beneroth> LUA is a nice scripting language afaik. its used a lot in gamedev. Nistur can maybe say more about it.
<razzy> domain grabbers provided value in early internet age. now they are just pests
<freemint> lua enlightened me about the fact that programming languages are differently powerful
<Nistur> I've used quite a lot of lua, it's a great language, decent performance...
<freemint> and very simple
<razzy> freemint: do you really did not understood what i am saying?
<freemint> i do not understand what you by domain grabbers provide value
<freemint> I do not understand how you think the wild west provides value
<razzy> freemint: domain grabbers worked like door to door domain salesman, preaching wonders of internet
jibanes has quit [Ping timeout: 245 seconds]
jibanes has joined #picolisp
<razzy> making local moral law has its benefits
razzy has quit [Remote host closed the connection]
razzy has joined #picolisp
<beneroth> how old are you razzy, if I might ask?
razzy` has joined #picolisp
razzy has quit [Ping timeout: 252 seconds]
freeemint has joined #picolisp
freeemint has quit [Client Quit]
freemint2 has joined #picolisp
freemint2 has quit [Client Quit]
freemint2 has joined #picolisp
freemint2 has quit [Client Quit]
freemint has quit [Ping timeout: 252 seconds]
razzy` has quit [Quit: ERC (IRC client for Emacs 26.1)]
razzy has joined #picolisp
<razzy> beneroth: biology age? or intelectual age
freemint has joined #picolisp
<beneroth> calendar
<freemint> well if there is a significant you might as well list both
<freemint> *significant difference
<beneroth> ah nice one. a wisdom point for freemint :)
<razzy> beneroth: 28-ish earth revelations around sun :]
<razzy> beneroth: do i remind you of some old coworker?
xkapastel has joined #picolisp
<beneroth> no, you remind me of a teenager tbh.
<razzy> beneroth: in which way?
<beneroth> overconfident in your pov
<beneroth> kind of disparaging of others.
<razzy> ah :] i would not say it is characteristic for teenagers
<beneroth> T. it is not. though I would say its a typical phase people go through during their teenage years. some take longer to get out of it. some do never.
<razzy> beneroth: over-disparaging others, under-disparaging others both are not healthy.
<razzy> when i am saying something causually in pub-talk i mean over 68% confidence of what i say.
<razzy> when i am stating something strongly, i mean over 95% confidence if not said otherwise
<beneroth> I believe you. therefore I diagnose overconfidence, if you find so easily high confidence e.g. in finding bugs in picolisp.
razzy has quit [Remote host closed the connection]
razzy has joined #picolisp
<freemint> welcome back razzy
<razzy> dammed, working on network and sawing branch i sit on :]
<freemint> well my network breaks all the time and there is nothing i can do about it
<razzy> beneroth: how confident are you in your diagnosis?
* razzy is trying to circumvent unreliable parts
razzy has quit [Ping timeout: 244 seconds]
razzy has joined #picolisp
* razzy have half of his equipment unrealiable and not healthy :(
orivej has quit [Ping timeout: 272 seconds]
freemint2 has joined #picolisp
freemint has quit [Ping timeout: 244 seconds]
orivej has joined #picolisp
freemint has joined #picolisp
freemint2 has quit [Ping timeout: 272 seconds]
freemint has quit [Ping timeout: 272 seconds]
freemint has joined #picolisp
jibanes has quit [Ping timeout: 244 seconds]
jibanes has joined #picolisp
<freemint> i got cron to send emails
<freemint> juhu
<freemint> enough computering for today
<Regenaxer> perfect :)
<freemint> i now need to figure what to send
<Regenaxer> Pipe something to stdin
<freemint> raid status is a good one
<Regenaxer> T
<freemint> i think when i got my Webserver i write a !selftest routine curl the output of that one
<freemint> Also i think i got on idea how i can do !functions from dB without having to rewrite your webserver
<Regenaxer> For what would rewriting be necessary?
<razzy> why is cron written as separate scheduler is beyond me
<Regenaxer> Separate?
<razzy> i take that back :]
<freemint> @rewrite: fun, understanding, bugging you and have !fun map to a function stored in the directly rather than !call?f=fun
<freemint> afk
alexshendi has quit [Ping timeout: 245 seconds]
<beneroth> freemint, don't rewrite it unless you have a really big long-term reason/requirement for it
<Regenaxer> Hmm, you allow 'call' in the URL?
<Regenaxer> suicide?
<beneroth> there are already enough alternative webserver implementations around.
<beneroth> Regenaxer, I think you read to much into it.
freemint has quit [Ping timeout: 272 seconds]
<Regenaxer> The question is what "fun" means here
<beneroth> T
<beneroth> hm
<beneroth> I got an "not enough context" exception when trying to parse the message.
<Regenaxer> Is "directory" meant instead of "directly"?
<Regenaxer> mysterious ;)
<Regenaxer> freemint is talking in riddles
<beneroth> I suspect a misunderstanding on his site introduced some requirements which led to that statement which now confuses you? dunno :D
<beneroth> not enough context.
<Regenaxer> :)
<Regenaxer> He spoke, then vanished
<Regenaxer> np
<beneroth> like a true prophet :)
<Regenaxer> yep :)
freemint has joined #picolisp
<Regenaxer> freemint, read the logs!
<razzy> :]
<freemint> will look into them time critical?
<Regenaxer> yes or no
freemint has quit [Ping timeout: 250 seconds]
freemint has joined #picolisp
freemint2 has joined #picolisp
freemint has quit [Ping timeout: 244 seconds]
freemint2 has quit [Ping timeout: 240 seconds]
freemint has joined #picolisp
<razzy> where is the example of parael somputing
<razzy> *computing pls
<razzy> with later function and computing squares
<Regenaxer> Ah
<Regenaxer> RosettaCode "Parallel calculations"
<Regenaxer> no squares though, but factorization
grp has joined #picolisp
<razzy> thx
freemint2 has joined #picolisp
freemint has quit [Ping timeout: 246 seconds]
freemint has joined #picolisp
freemint2 has quit [Ping timeout: 252 seconds]
freemint has quit [Ping timeout: 252 seconds]
freemint has joined #picolisp
freemint2 has joined #picolisp
freemint has quit [Ping timeout: 250 seconds]
freemint2 has quit [Ping timeout: 240 seconds]
freemint has joined #picolisp
freemint has quit [Ping timeout: 250 seconds]
freemint has joined #picolisp
orivej has quit [Ping timeout: 250 seconds]
freemint2 has joined #picolisp
freemint has quit [Ping timeout: 244 seconds]
freemint has joined #picolisp
freemint2 has quit [Ping timeout: 272 seconds]
grp has quit [Quit: box shutting down...]
<freemint> Regenaxer i had this put the code in a database idea and i finally had an idea how it could be useful.
<Regenaxer> ok, you want to call a fun in the DB
<freemint> yes ...
<Regenaxer> Does this make sense?
<freemint> Yes. I can version control these functions in PicoLisp and roll them out to some users only. I can built several variants and can A/B test which works best for the users.
<freemint> best of all i can make the "dispatch" dependent on parameter, cookies, server state and whatever i want
<Regenaxer> But the same can be doen easier with source files in some control system
<Regenaxer> Dispatching too is easier in memory
<freemint> But how can reliably get a function in to memory?
<Regenaxer> A DB makes sense perhaps if you cave gigabytes of code
<freemint> i think it makes sense before that
<Regenaxer> Both from a source and from a DB you read them somehow
<Regenaxer> 'load' is so very fast
<Regenaxer> you can load a million functions into the heap
<freemint> Ok i wouldn't have thought that
<Regenaxer> then operate on them
<Regenaxer> In the Lisp heap it is most flexible
<Regenaxer> list and symbol functions etc
<freemint> but then i need to version stuff on the hard disk and the database would give me that for free
<Regenaxer> yes, perhaps
<Regenaxer> but versions could also be directories
<Regenaxer> The DB is also only a set of files after all
<freemint> but it does some mapping behind my back.
<Regenaxer> You could organize the functions in memory in Pilog rules
<Regenaxer> The DB is good for data that don't fit into heap
<Regenaxer> and searched by index trees
<Regenaxer> the rest is Pilog
<Regenaxer> which works by itself too
<Regenaxer> You could try both ways perhaps
* freemint is looking for a pizza to order
<Regenaxer> Bon apetite!
orivej has joined #picolisp
<razzy> i like you guys :]
<Regenaxer> Thanks razzy!
freemint has quit [Ping timeout: 245 seconds]
freemint has joined #picolisp
<beneroth> freemint, use +Blob properties and store the source code in files, not in +List properties or thelike
<freemint> why?
<beneroth> believe me, its better. I used (and still partially do) store code in +List properties in DB objects.. but..
<beneroth> e.g. namespace compatibility
<beneroth> the parser (R in REPL) translations the code into cells and pointers. storing this in DB translates them again.
<freemint> mhhh i am not using namespaces but i get what you are saying
<beneroth> in some cases some information gets lost during the parse translation
<beneroth> (e.g. comments, which might be very useful)
<beneroth> (load) is very fast
<beneroth> and you can still do version control and everything else with blob properties.
<beneroth> though storing version history in git is probably saving more space, and good enough for the few moments where you need to get history back / do diffs / whatever
<Regenaxer> I think I would store the code in b~trees
<beneroth> how do you mean, Regenaxer
<beneroth> ?
* beneroth is still looking for the optimal solution
<Regenaxer> trees are key/value
<Regenaxer> the value is the function
<Regenaxer> This is the most efficient I believe
<beneroth> and the code as list in memory, instead of script file to be load'ed ?
<Regenaxer> T
<Regenaxer> on disk in the tree it is plio of course
<beneroth> of course.
<Regenaxer> Blobs are also good
<Regenaxer> especially if the functions are large
<Regenaxer> But then better also in plio form
<beneroth> in my use case I don't want (can) do sacrifice flexibility/power for efficiency. after having experimented with storing function code in +List I think I will go back to put all code bodies into script files (blobs)
<beneroth> yeah plio would save some space. but you loose comments and namespaces and other stuff
<beneroth> well comments and namespaces. and maybe transient scoping
<Regenaxer> right
<Regenaxer> So normal source files as blobs ...
<Regenaxer> yes
<Regenaxer> most general and flexible
<freemint> well dropping those features is something that goes along with my vision of PicoLisp
<freemint> *for
<beneroth> of picolisp, or of your own whatever-system ;-)
<beneroth> important distinction
<Regenaxer> First must be decided what exactly is needed, then the format
<beneroth> aye
<freemint> i try to explore "my own system" with PicoLisp before i reinvent it.
<freemint> so it is in my vision for PicoLisp
<xkapastel> if i'm understanding this correctly, you can get comments still
<xkapastel> `(define foo.comment "...")` could be recognized
<beneroth> I was not conscious that parsing is a one-way step for some things
<beneroth> xkapastel, I mean a source comment with #
<xkapastel> yeah, you would comment objects, not just source locations
<beneroth> which also has an implicit location, e.g. on top or on same line of some code it is related to
<freemint> what an restive view of comments
<xkapastel> so instead of being near some code you want to comment
<xkapastel> you would literally comment the code
<xkapastel> i think http://oscoin.io/radicle.html does it like this
<beneroth> naturally you can always store string values as a form of comment. but its not the same thing.
<Regenaxer> The reader must handle this
<freemint> xkapastel Hi I've never seen you around
<xkapastel> yeah, it's not the same, but it's not clear to me that you lose anything important
<xkapastel> hi freemint
<Regenaxer> get # comments, and store them with the corresponding cell in properties
<beneroth> T
<Regenaxer> I never found that useful enough for the trouble
<Regenaxer> You just (vi 'foo) and see the comments
NB0X-Matt-CA is now known as nonlinear
<xkapastel> you could have a kind of lightweight type system if pilog rules operated over code stored in the database
<Regenaxer> T
<beneroth> picolisp has a strong type system (list, symbol, number) and on top of this a very lightweight duck-type system.
<xkapastel> yeah, and you could have a more conventional type system with pilog
<freemint> true that i was thinking about denoting replaceability of functions that way
<xkapastel> where you literally can say this is a function `Int -> Int` and get a warning if pilog decides that's not true
<freemint> That would be interesting but i think going for a little more into multiple dispatch might be interesting too
<Regenaxer> You want to call Pilog at runtime on every function call?
<Regenaxer> The types are dynamic in pil
<beneroth> it's easy to think something up. but traps are everywhere. the other languages and stacks didn't fell in all this traps because its designer were stupid (well beside PHP), they fell in it despite the designers being very smart and clever
<razzy> he he , it is always dangerous when computer starts to have ideas about what is true
<xkapastel> Regenaxer: no
<xkapastel> you can do it statically
<beneroth> either you introduce runtime overhead, or you end up with a kind of compiling (code with alerts/checks, code without checks)
<Regenaxer> Then you lose all the power of the language
<xkapastel> if there are rules attached to functions in the database, you can just examine those to make sure things line up
<freemint> so finding the right function is a read macro?
<xkapastel> you don't "lose" the power, you have additional power
<xkapastel> this setup is not like, preventing you from doing anything
<beneroth> everything comes at a cost
<xkapastel> are you familiar with typed racket or typed clojure?
<xkapastel> or clojure.spec really
<xkapastel> is closer to the idea
<beneroth> we generally aren't :)
<xkapastel> you just get additional analytics about your code
<xkapastel> it's not like it'll stop you from calling a function
<Regenaxer> A great mayority of pil functions acceps arguments of any type
<Regenaxer> and code bodies
<xkapastel> sure, and you would craft rules in recognition of this fact
<Regenaxer> you can't check them statically
<xkapastel> i'm sure you can in many cases
<xkapastel> i guess it's hard to see without examples though
<beneroth> so I would guess the picolisp-style argument against that is: such a system does not stop a stupid programmer from being stupid, and the benefit for a non-stupid programmer are likely not big, or only during the learning-phase
<Regenaxer> It might make sense in some DSL
<xkapastel> anyway, if you're interested i would recommend taking a look at https://clojure.org/about/spec
<beneroth> and if you remove the pain of being stupid in the learning phase, than you increase the probability of the programmer becoming stupid (see java)
<xkapastel> it *is* a DSL!
<beneroth> xkapastel, thanks :)
<xkapastel> it's a DSL for analyzing other programs
<xkapastel> it's not like, changing the way you write code
<beneroth> static analysis for DLSs makes certainly sense
<beneroth> but ideally a DSL is then not turing-complete
<xkapastel> you can do analysis without being total
<xkapastel> that's not really necessary
<Regenaxer> I would not focus on type then, but higher-level calling patterns
<freemint> that depends on what you want as result. If you want proof of termination then ofcourse but otherwise?
<Regenaxer> Types are rather low-level, perhaps only one like numbers
<xkapastel> clojure.spec generalizes the idea of types to predicates, which is more in line with a dynamic language like picolisp
<beneroth> without being total, which would allow turing-completeness, the programmer has again to be aware of what guarantees that checker gives and which it doesn't. that set is probably not much smaller than the set of things to be aware of in the language itself without a checker.
<xkapastel> the programmer always had to be aware of the capabilities of the checker
<xkapastel> it's not like being total makes the checker infallible
<freemint> beneroth well one could also go the "unsafe" style
<Regenaxer> I would prefer a runtime monitor instead of static checks
<Regenaxer> monitor the behavior
<beneroth> hm. in that light, the picolisp linter is a checker.
<Regenaxer> yes
<xkapastel> yes, linting is static analysis
<Regenaxer> static in fact ;)
<Regenaxer> it checks mainly conventions
<beneroth> aye
<beneroth> naming conventions :)
<Regenaxer> naming conventions, bindings
<beneroth> they protect from stupid mistakes
<Regenaxer> T
<freemint> It is hard to balance stuff in the end and the devil is in the detail and the run-time overhead.
<beneroth> aye
<Regenaxer> T
<beneroth> don't underestimate the sweet spot that picolisp holds in that spectrum
<beneroth> it's easy to underestimate it. a lot of benefits are hidden at first sight.
<beneroth> well not hidden, but just not obvious.
<freemint> The best way to find what you are missing is to go somewhere you do lack just that.
<freemint> i guess
<razzy> beneroth: pain from being stupid is very good thing
<razzy> should not be hard breaking pain, but steady gringing itchy pain
<razzy> code statistics could be default off, and in special library, i have no problem with that
<razzy> also i love analysing code in AST.
<freemint> american pizza is a crime - for and against humanity at the same time
<beneroth> I agree
<beneroth> well, it just should not be named pizza
<beneroth> I ate two times at dominos - never again. too fat, too sugary, too much everything
<beneroth> and too thick bottom
<beneroth> base?
<beneroth> dough?
<razzy> it is closer to meat pie and you should not eat whole pizzapie.
<beneroth> not really.
freemint2 has joined #picolisp
freemint has quit [Ping timeout: 240 seconds]
ubLIX has joined #picolisp
freemint has joined #picolisp
freemint2 has quit [Ping timeout: 268 seconds]
freemint2 has joined #picolisp
freemint has quit [Ping timeout: 252 seconds]
xkapastel has quit [Quit: Connection closed for inactivity]