xkapastel has quit [Quit: Connection closed for inactivity]
_whitelogger has joined #picolisp
orivej_ has quit [Ping timeout: 250 seconds]
ubLIX has quit [Quit: *cackles*]
jibanes has quit [*.net *.split]
jibanes has joined #picolisp
orivej has joined #picolisp
orivej has quit [Ping timeout: 272 seconds]
orivej has joined #picolisp
xkapastel has joined #picolisp
<beneroth>
hi all
<Regenaxer>
Hi beneroth
mtsd has joined #picolisp
<mtsd>
Hello everyone
<Regenaxer>
Hello mtsd!
<mtsd>
Hi Regenaxer, everything alright?
<Regenaxer>
Yes, very good! :)
<Regenaxer>
Did you get well into the new year?
<mtsd>
Good to hear that :)
<mtsd>
Yes, it has started well
<mtsd>
I have some ideas I would like to pursue this year :)
<Regenaxer>
Good :)
<mtsd>
A friend of mine, Fredrik (who sent patches for Penti), wants to learn Pil more
<mtsd>
I have started making a small tutorial application
<mtsd>
Based on my work projects
<Regenaxer>
Yes, I communicated with Fredrik too (only about Penti)
<Regenaxer>
A tutorial would be cool. The existing one is very old meanwhile
<mtsd>
I could always try to write a wiki article?
<Regenaxer>
yes, that too
<beneroth>
hello mtsd :)
<beneroth>
mtsd, is Fredrik new to lisp/picolisp or new to programming in general?
<mtsd>
I changed the GUI for my work stuff, could perhaps be a way to demonstrate the flexibility of the app framework
<mtsd>
Hello beneroth!
<mtsd>
No, he has worked with quite a few of the "common/ main stream" languages
<mtsd>
And not unfamiliar to lisp too. Good Emacs lisp user :)
<beneroth>
I'm thinking about writing two tutorials (haha, no idea when I will have the time), one for programmers (who I think would have some minimal knowledge in OOP and functional programming) and one for total programming beginners
<beneroth>
oh okay
<beneroth>
maybe lispers need again another tutorial than non-lisp-programmers
<mtsd>
haha, time is the chief problem here too
<beneroth>
so many different backgrounds (and different biases)
<mtsd>
Yes, something to help the past the fear of parenthesis ;)
<beneroth>
time is the ever only problem in a way :)
<beneroth>
oh yes
<mtsd>
I may end up having to introduce some non-lispers as well. I don't know yet
<mtsd>
Would give valuable information
<beneroth>
in the train from Frankfurt to Leipzig (to the hacker congress) we travelled with two other guys who also went to the congress. both programmers. they're talking about new versions of java and other languages and how great some new features are and how it would be nice if X would be possible (in programming languages in general).. I was always like "well picolisp has this for decades..." and they're like "but parenthesis!!11!"
<mtsd>
yes, I have similar experiences.
<Regenaxer>
sigh
<beneroth>
maybe we should stress the ]-feature of picolisp (afaik its picolisp and not a general lisp feature, right?) a bit more to non-lispers. though I'm personally not a big fan of it.
<mtsd>
People just shying away at first sight of a syntax unfamiliar to them
<beneroth>
(I mean closing of all open parenthesis)
<beneroth>
aye
<beneroth>
well I do the same, e.g. looking at Haskell.
<Regenaxer>
In any case, the total number of parens is not more than in C or Java
<Regenaxer>
especially in pil, eg (let A (foo) ...
<beneroth>
but its a bit hard to compute that using a big number of special characters and always-changing indirections and contexts should be less frightening than some high use of ( and )
<Regenaxer>
other Lisps require a full (let ((A (foo))) ...
<mtsd>
I was a bit flustered at first, too. But that passes, sooner than you think
<beneroth>
good point Regenaxer !
<beneroth>
mtsd, well picolisp looks a bit like regex in the beginning, I mean like write-only code. but it definitely really absolutely is not.
<mtsd>
With some things, you just have to push on and move through some uncomfortable points at first.
<mtsd>
To gain even bigger advantages later
<mtsd>
Just like running. No one likes the first few miles
<beneroth>
and I really feel that the tutorial for programming newbies should include a bold disclaimer at the beginning "learning picolisp might make you be frustrated by mainstream languages and thus hamper your employability/job satisfaction" :P
<beneroth>
just this days I really suffer from this :P
<mtsd>
Me too
<Regenaxer>
I'd also like to write up something
<Regenaxer>
about the Layers of PicoLisp
<Regenaxer>
We always claim that pil is simple, but this is true only for each layer
<Regenaxer>
The total system looks complicated to a newbie
<Regenaxer>
So we should document how the layers are located relatively to each other
<Regenaxer>
ie the VM (cells, then sym, num, pair), and then some branches
<Regenaxer>
one branch might be externals -> objects, btrees -> E/R
<mtsd>
Very good idea, Regenaxer!
<beneroth>
Regenaxer, T, good angle to look at it. I look at it this way too
<Regenaxer>
another branch could be HTML -> form, js
<Regenaxer>
the branches join again
<Regenaxer>
eg GUI + E/R
<beneroth>
the form.l layer is a quite complex one compared to the other layers, I found
<mtsd>
This is something I am missing. I can put applications together, fairly ok. But I lack knowledge of the whole system
<Regenaxer>
right
<Regenaxer>
It is in fact a very vertical system
<beneroth>
well many/most layers build upon each other.
<beneroth>
T
<Regenaxer>
right
<mtsd>
So, in that way, I am just like every other Python/ Ruby/ Java guy out there :/
<Regenaxer>
But we can put a new branch at each layer
<Regenaxer>
like beneroth did for the DB
<Regenaxer>
mtsd, perhaps not, as these are rather black boxes
<Regenaxer>
in pil there is no "hiding"
<Regenaxer>
all open
<Regenaxer>
and each layer is indeed simple
<Regenaxer>
(well, except form perhaps)
<mtsd>
T. I hope to wrap my head around it, in the not too distand future, at least
<mtsd>
With Pil, you can hope to do that. Since things are there for you to see. Accessible, at least
<Regenaxer>
T
<beneroth>
the essential design principle (which I use more strongly now in other work than before I was into picolisp) is that an implementation should minimize its requirements/conditions as much as possible, so only restrict usage when the restriction is required for the purpose, try really to minimize (unintended) unnecessary restrictions. this results in unforeseeable re-usability of components and this is the essence behind the emergent behaviour of the picoli
<beneroth>
sp systems/layers, I think.
<Regenaxer>
agreed
<tankf33der>
my archlinux is dead after systemd update, now moved to voidlinux. lets see
<Regenaxer>
Uh
ubLIX has joined #picolisp
<beneroth>
that's quite typical for archlinux afaik, no? (it follows the "move fast and break things"-strategy afaik)
<mtsd>
That is what I have heard. Never tried archlinux myself
<aw->
the only good thing about ArchLinux is their wiki
<Regenaxer>
I like the idea, but don't want to invest so much time
f8l has quit [Remote host closed the connection]
stultulo has joined #picolisp
stultulo is now known as f8l
mtsd has quit [Quit: WeeChat 1.6]
ubLIX has quit [Quit: ubLIX]
<razzy>
Regenaxer: i stand by that every one component is simple. but their interlockig in picolisp is very complex
<Regenaxer>
yeah
<Regenaxer>
In fact I was not really aware of that, as all grew slowly so it seemed natural to me
<Regenaxer>
afp
<razzy>
Regenaxer: also picolisp do not shy away from exeptions, which makes it hard to understand features from ouside perspective
<razzy>
you need to read inner lisp and asm
<beneroth>
what are you talking about, what do you mean with exception? exceptions in the sense of the programming language concept/feature (throw/catch) ? or in the sense that picolisp deviates from both programming mainstream and (common) lisp mainstream?
<beneroth>
you don't have to read picolisp internals nor asm to successfully program with picolisp.
<beneroth>
it's just an nice feature that with picolisp you can actually easily read and understand the internals.
<beneroth>
would do good if more mainstream programmers would know the internals of their languages.. e.g. PHP, Java.. but well those people often don't want to know. (well looking at PHP implementation mainly shows that its author have not understood C++, so its depressing anyway)
<beneroth>
still, "<razzy> you need to read inner lisp and asm" (to what? assuming "to program with picolisp") is certainly fake news.
<razzy>
beneroth: picolisp do rule-exeptions from typical languages, lisp languages, even picolisp rules.
<razzy>
beneroth: you are right you do not need inner lisp or asm, if you want to do typical 9-5 cubical programming.
<razzy>
but you still need corporate-master or someone like Regenaxer to tell you "this is safe way to do this"
<beneroth>
I disagree
<beneroth>
on the safeness remark.
<razzy>
i feel that way. i am unsure from all exeptions
<beneroth>
examples?
<beneroth>
also, do you have any examples where picolisp clearly violates its own core rules? (well beside the acknowledged naming convention violation with NIL)
<razzy>
i remember last one. (pretty (list 'setq '*Undo *Undo)) pretty prints variables for later (load) from file. do what i want. (list 'setq '*Undo (pretty *Undo)) does not work, i suspect because (pretty) prints ")" at the end. which makes (pretty) unusable in the middle of code imho
<razzy>
beneroth: it is imho violation of rule "you can reuse functions everywhere"
<razzy>
beneroth: do not get me wrong, i still think, picolisp is best out there :]
<razzy>
beneroth: Regenaxer recommendation is (pretty (list 'setq '*Undo (lit *Undo))) as safe option, which i still do not understand properly
<Regenaxer>
ret
<Regenaxer>
razzy, you still don't understand the REPL. (pretty) does *not* print ")" at the end!
<Regenaxer>
beneroth, btw, funny thing: Meanwhile NIL does not violate the naming conventions (any longer ;)
<beneroth>
yeah sorry razzy, the mistake is on your side, and you would very likely have the exact same problem with any other lisp or any other repl. the ")" is the return value of (pretty).
<Regenaxer>
There is now the convention "Global constants may be written all-uppercase"
<Regenaxer>
like in C
<Regenaxer>
also lint obeys it
<Regenaxer>
This was not introduced for T and NIL actually
<Regenaxer>
rather for numeric constants (C style) as in @lib/openGl.l
<beneroth>
I see
<beneroth>
thanks for the hint, I didn't got that memo :)
<Regenaxer>
It is relatively new, though the use cases as in openGl.l existed for a while
<beneroth>
what speaks against making ALL_CAPS the naming convention for globales always, getting rid of *Prefix ? beside legacy code?
<Regenaxer>
Luckily, NIL is a constant ;)
<Regenaxer>
Well, *Name is normally a *variable*
<razzy>
Regenaxer: thx, i will look into it :]
<beneroth>
hm. point.
<Regenaxer>
all upper denotes constants
<beneroth>
T is "normally" a constant, agreed ;-P
<Regenaxer>
Most often I used them in read macros `(+ FOO 7)
<Regenaxer>
So lint never saw them
<Regenaxer>
yeah
<Regenaxer>
T is a borderline, as it is also a local variable in this naming
<razzy>
beneroth: i agree i would have propably more problems in other languages. and i said what i wanted to say.
<Regenaxer>
Locally bound symbols *start* with upper, and are then mixed
<Regenaxer>
So 'A' and 'C' are good, but 'T' is still not a good idea to use in 'let' ;)
<Regenaxer>
Again, (lint) will complain in most cases
<beneroth>
alright
jibanes has quit [Ping timeout: 244 seconds]
jibanes has joined #picolisp
alexshendi has joined #picolisp
ubLIX has joined #picolisp
<alexshendi>
Good evening!
<Regenaxer>
Hi alexshendi!
<beneroth>
hey alexshendi, good evening!
<alexshendi>
Hi, Regenaxer, beneroth
<tankf33der>
alexshendi: did you tried tree copy?
<alexshendi>
tankf33der: yes from Rosetta Code, but didn't need it so far.
<tankf33der>
ok
<alexshendi>
Thanks for the hint.
mtsd has joined #picolisp
<beneroth>
you're working on something, alexshendi ?
<tankf33der>
does anyone have treema messenger?
<beneroth>
I do
<tankf33der>
what the price, i cant understand
<tankf33der>
pay one time or monthly?
<beneroth>
one time
<beneroth>
bound to your google account
<tankf33der>
one time, ok
<beneroth>
be aware you can chose if if you like to be discoverable (by hash of the phone number by people who have your phone number & threema) or not
<beneroth>
you can add someone by meeting them in person and scanning their QR-code in threema (best option)
<beneroth>
or they can give you their threema id (short code)
<tankf33der>
yea, ok
<beneroth>
or you can discover them by their phone number, if you happen to have theirs, afaik (maybe I mixing something up with other messengers... well the good thing with threema is, its optional)
<beneroth>
source code is proprietary, but its end2end by default, and so far I found no (bad) critic of it (unlike e.g. with telegram, which is not e2e by default, and got heavily (but not really substantiated afaik/imho) criticized by moxy (the guy behind Signal messenger, and whoms crypto scheme got licensed/put into whatsapp and others)
ubLIX has quit [Quit: ubLIX]
<beneroth>
(and telegram is legally banned in russia, but it works anyway...)
<beneroth>
threema is based in switzerland, which used to have good legal privacy protections and has not really aggressive gov (unless you leak banking data). but current trend is not so good as it used to be, legal privacy protections are already weaker than in EU law. gov/secret service behaves (afaik) for now, but they also misunderstood the snowden papers as a wishlist...
<tankf33der>
:)
<alexshendi>
beneroth: I wrote a program to scale netpbm pixmap images. I initially used a list of lists representation for the bitmap data, but now use a tree.
<beneroth>
nice
orivej has quit [Remote host closed the connection]
<beneroth>
you should think about publishing it, that's something that is certainly useful to others
orivej has joined #picolisp
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #picolisp
mtsd has quit [Quit: WeeChat 1.6]
orivej has quit [Remote host closed the connection]
orivej has joined #picolisp
andyjpb has joined #picolisp
ubLIX has joined #picolisp
alexshendi has quit [Read error: Connection reset by peer]