ChanServ changed the topic of #picolisp to: PicoLisp language | Channel Log: | Check also for more information
xkapastel has quit [Quit: Connection closed for inactivity]
freemint__ has quit [Ping timeout: 250 seconds]
aw- has joined #picolisp
orivej has quit [Ping timeout: 246 seconds]
inara has quit [Quit: Leaving]
inara has joined #picolisp
aw- has quit [Quit: Leaving.]
karswell has joined #picolisp
jkj has joined #picolisp
jkj has quit [Client Quit]
tankf33der has joined #picolisp
<tankf33der> o/
<Regenaxer> Hi tankf33der!
mtsd has joined #picolisp
<mtsd> Good morning!
<Regenaxer> Good morning mtsd!
<mtsd> Hello Regenaxer! How are things?
<Regenaxer> Everything green :)
<mtsd> Great :)
<mtsd> I have been experimenting a bit lately. Separating the user accounts from the applications. I now have one app handling the users and permissions. The other apps authenticate against the user database.
<mtsd> Wanted to see if I could pursue this idea
<Regenaxer> Good idea for multiple apps with the same user base
<mtsd> Exactly, that is the situation here.
<mtsd> I first made one, huge app, with all functionality and the users baked in. But that quickly became unwieldy and rather ugly..
<Regenaxer> So you made a separate login server?
<mtsd> I took a very simple route first. There is a separate user db. AppN opens that one when viewing the login page. Then logs in, and if that is successful closes the userDB (by calling (pool)) and switches to the app database. Using a "normal" call to pool, with the right arguments.
<Regenaxer> I see
<mtsd> Permissions are stored as a list in a global var, also populated when logging in
<Regenaxer> Problem then is how to handle 'may' and 'must' checks perhaps?
<Regenaxer> Ah, I see
<Regenaxer> good
<mtsd> I did a redef of those, letting them check permissions in the global instead of (; *Login role perms)
<Regenaxer> Another way would be to access the other DB with 'blk'
<Regenaxer> I do that a lot in my current app
<mtsd> Ok, good. I will look into that. Thanks!
<mtsd> It did not take that long to write this, I was a bit surprised, again, at how clear everything was
<Regenaxer> using a '+Remote' class as extension of '+Entity'
<Regenaxer> Lets you *read* other DBs just the normal way
<Regenaxer> 'db', Pilog and all
<mtsd> Nice. Very nice.
<Regenaxer> also norma search dialogs
<Regenaxer> normal
<mtsd> That sounds like a good next step for this project, I think
<Regenaxer> yeah
<Regenaxer> My current app will consist of up to 40 DBs in the end
<Regenaxer> distributed on mobile devices
<Regenaxer> (PilBox)
<mtsd> A new client, or the fire brigade in Spain?
<Regenaxer> A very old client, rewriting the system to a completely new version
<Regenaxer> The fire stuff in Spain is a lot simpler
<Regenaxer> but also uses 'blk', yes
<mtsd> Sounds exciting
<Regenaxer> indeed
<Regenaxer> and extremely complicated
<Regenaxer> had to invent new stuff, like distributed DB garbage collection
<mtsd> I will study blk and +Remote. I need to study the database parts in detail more, generally speaking
<Regenaxer> as objects are refered to from other DBs
<Regenaxer> +Remote is not public yet
<Regenaxer> only in that app so far
<mtsd> Ok. But blk is available?
<Regenaxer> yes
<Regenaxer> built-in
<mtsd> I will start there then. Perhaps a good way to start looking at things. I am very curious about *Ext and the distributed db parts. I just have not had the time to dig into that yet
<Regenaxer> yes
<Regenaxer> +Remote is very simple in fact
<Regenaxer> just making things read-only
<Regenaxer> the point are the indexes
<mtsd> Hey, this is what amazes me about Picolisp. The pace of invention going on here is simply amazing. You always seem to be working on something new, and each new thing is a great thing :)
<Regenaxer> they are seen as +Hook's
<Regenaxer> Thanks! :)
<mtsd> How do you do this? Honestly? There should be a Nobel prize or similar waiting, haha
<Regenaxer> huh, noo ;)
<Regenaxer> Nothing dramatic I think. Just exploring what is doable with what we have
<mtsd> Yes, but what we have is your invention, and that invention seems to be highly flexible and adaptable to all kinds of things
<Regenaxer> yes, cause the base (ie. pil) is so simple and general
<Regenaxer> I could not do that in other systems
<mtsd> Me neither. Every other system I encounter appears rigid, primitive and limiting
<mtsd> I am going to make changes to a web app at work, written in Python/ Django. I spent yesterday swearing over the amount of code needed and how clunky things are. And this is supposed to be a "easy" language and framework
<Regenaxer> yeah, observed this too
<mtsd> Same thing happend earlier this year, and that time I had written the original code :)
<Regenaxer> Some people are proud to make complicated things it seems
<Regenaxer> oh :)
<mtsd> I notice that as well. There may be an ego element involved. -"See, I made this highly complicated thing. Look how smart I must be!!"
<Regenaxer> right
<Regenaxer> and most people cannot imagine that things could be easier
<mtsd> I am considering starting my own company and try to make my current employer my first client.
<Regenaxer> Cool!
<Regenaxer> Alone, or do you have partners?
<mtsd> They would save money, and don't have to worry about all this "weird Lisp stuff" being produced by me. It would be maintained and handled by me
<mtsd> It would be just me
<Regenaxer> ok
<mtsd> The thing is, I am not sure they will let me stay here after the year end's. I could perhaps keep doing what I do as a consultant instead
<Regenaxer> Too bad that world economy seems to go down currently
<mtsd> Yes, that is a worrying element
<Regenaxer> There are chances too, though
<Regenaxer> new technologies evolving
<mtsd> Picolisp usually results in software being done quicker, and able to run on smaller, cheaper machines. That would be an argument in favour of what we do, especially when the economy slows down
<Regenaxer> Very true
<mtsd> There is a project here that has been dragging on for 5 years now. Still no result delivered. The cost is at around 600 000 euros by now, and counting.
<mtsd> A true IT project disaster.
<Regenaxer> It all depends also on how stable and reliable the customer and the project are
<Regenaxer> yes
<Regenaxer> You think they will allow a restart?
<mtsd> Haha, they already did. I was dragged into a 3 hour meeting about this yesterday.
<Regenaxer> Perfect!
<Regenaxer> So looks good indeed
<mtsd> I suggested a new take on this, but they seem to be set on continuing on the same path. But, there are other things that need to be done as well. Other apps that are perfect candidates for a Pil conversion
<mtsd> The failed project will most likely fail once more, since the code base, programming language, processes and people are involved once more. But, perhaps I can demonstrate better ways of writing software by converting everything else.
<Regenaxer> T
<mtsd> But it is a very clear example of the state that mainstream software development is in.
<Regenaxer> sadly yes
<mtsd> Interesting to view after being exposed to Pil. Makes you see things you might not have noticed otherwise
<mtsd> The famous Lisp experience that makes every other language appear clumsy, primitive and overly complicated maybe? ;)
<Regenaxer> On the large view yes. But on the micro-view, Lisp looks frightening to many people
<Regenaxer> They never get over this hurdle
<Regenaxer> It is too foreign
<mtsd> I remember the feeling from when I first saw Lisp.
<mtsd> That was Common Lisp, in my case. It seemed so strange, mysterious. But also intriguing, fascinating
<mtsd> The only other language giving me the same feeling, so far, has been Forth
<Regenaxer> same for me
<Regenaxer> BTW, I'm now investigating Pil21 :)
<Regenaxer> Pil for the 21th century, or ready in 2021 ;)
<Regenaxer> I won't tell details yet
<tankf33der> :)
<Regenaxer> Only this: I'm investigating LLVM
<Regenaxer> LLVM-IR to be precise
<Regenaxer> But no guarantee that it will work out
<tankf33der> do you want LLVM books ?
<Regenaxer> You know any?
<tankf33der> yeap
<Regenaxer> I have only the online docs so far
<tankf33der> i will send you.
<Regenaxer> Great, thans!!
<Regenaxer> k
<tankf33der> i have 4.
<Regenaxer> wow
<Regenaxer> I dont need CLang etc
<Regenaxer> only LLVM-IR
<tankf33der> try this one.
<Regenaxer> Downloaded. Thanks a lot!
<mtsd> Wow
<Regenaxer> uh, Haskell. tough
<mtsd> So pil will possibly go from MacOS (?) --> Unix --> DOS --> Linux(C)/ Linux (64-bit assembler)/ Posix systems --> LLVM ?
<Regenaxer> haha, well, no guarantee yey
<mtsd> Amazing journey. Fantastic portability. Oh, I forgot ARM64... haha
<Regenaxer> yet
<Regenaxer> llvm has linmitations
<Regenaxer> not sure if they can be solved
<Regenaxer> it is less powerful than assembly
<Regenaxer> though better than C
<mtsd> I like how you always look forward and improve it
<mtsd> The computing world changes, Pil stays :)
<Regenaxer> *if* it works out, pil21 will replace all (pil32, ersatz, pil64)
<Regenaxer> :)
<mtsd> Meaning "stays around". Not stays as in "stagnates"
<Regenaxer> Exactly!
<mtsd> So, only one version to maintain, possibly?
<Regenaxer> the world changes too
<Regenaxer> yes, hope so
<Regenaxer> not sure about mini
<Regenaxer> it is special
<mtsd> Is it 4 or 5 versions you have now?
<Regenaxer> not sure ;)
<Regenaxer> 4 it seems
<Regenaxer> (as emu is a special case of pil64)
<mtsd> Ok, let's count emu with pil64. So, just 4 versions? ;)
<mtsd> haha
<Regenaxer> yep
<Regenaxer> pil32, mini, ersatz, pil64
<Regenaxer> different in features
<mtsd> I downloaded the books on llvm as well. I'm afraid I will not understand them, but I will give it a try anyway
<Regenaxer> I need to rename them first ;)
<Regenaxer> horrible file names
<mtsd> haha, yes
<Regenaxer> Not manageable on my phone screen in Termux
<tankf33der> FYI
<Regenaxer> yes?
<Regenaxer> hmm, the piint of llvm is that it is widespread
<Regenaxer> hmm, I think llvm is preferrable
beneroth has joined #picolisp
iuno has joined #picolisp
freemint__ has joined #picolisp
orivej has joined #picolisp
xkapastel has joined #picolisp
freemint__ has quit [Ping timeout: 264 seconds]
freemint__ has joined #picolisp
mtsd has quit [Quit: Leaving]
rick42_ has left #picolisp [#picolisp]
rick42 has joined #picolisp
<rick42> hi pil folks! I hope all is well with you
<rick42> Regenaxer: Pil21 ftw!
<Regenaxer> Hi rick42! :)
<beneroth> hey rick42 o/
<beneroth> Hi Regenaxer :)
<Regenaxer> Hi beneroth!
orivej has quit [Ping timeout: 245 seconds]
f8l has quit [Remote host closed the connection]
stultulo has joined #picolisp
stultulo is now known as f8l
freeemint has joined #picolisp
freemint__ has quit [Read error: Connection reset by peer]
freeemint has quit [Remote host closed the connection]
freeemint has joined #picolisp
_whitelogger has joined #picolisp
iuno has quit [Quit: Leaving]
freeemint has quit [Remote host closed the connection]
freeemint has joined #picolisp
<rick42> beneroth: \o
DerGuteMoritz has quit [Ping timeout: 244 seconds]
DerGuteMoritz has joined #picolisp
freemint__ has joined #picolisp
freeemint has quit [Read error: Connection reset by peer]
ubLIX has joined #picolisp
xkapastel has quit [Quit: Connection closed for inactivity]
orivej has joined #picolisp
<Regenaxer> tankf33der: I scanned the books now. I think they are not useful for me, I already understood (and built) almost everything I need
<Regenaxer> Perhaps just some optimizations postponed for later, specific target flags etc.
<tankf33der> Regenaxer: yea.
<Regenaxer> Lets see :)
<Regenaxer> Anyway, to generate LLVM-IR, I don't need any llvm libraries, only pil cross compiler
<tankf33der> i knew it.
<Regenaxer> The problems are in other places
<Regenaxer> dont know yet if solvable
<Regenaxer> eg. 'native' implementation
<Regenaxer> Also bignums (no carry flag in llvm)
<tankf33der> current is so perfect. why spend time on reimplementation. i dont like llvm anyway
<tankf33der> i can imagine how fun all this is
<tankf33der> afk.
<Regenaxer> yes
<Regenaxer> Reason is that llvm is portable
<Regenaxer> in fact, I wanted to port pil64 to RISC-V
<Regenaxer> but can't, it has *no* status flags at all
<Regenaxer> so I got fed up
<Regenaxer> Leave all that platform stuff to llvm
<Regenaxer> And llvm is virtually everywhere now
<Regenaxer> So lets just investigate a little
<Regenaxer> If it does not work out, we forget about it :)
<rick42> targeting IR sounds like the window to portability. thanks for looking into this Regenaxer
<Regenaxer> ok :)
<Regenaxer> I have some test code snippets running. Generated assembly looks very good
<Regenaxer> Perhaps a very tiny bit less efficient than pil asm
<rick42> <thumbs-up />
<rick42> from one the books( LLVM Essentials)'s example code, it looks as if you should be able to write C++ code with llvm api calls to convert pil asm (?) to IR. is that the idea? if so, the code in those examples don't look like fun coding. ugh :(
<rick42> either that or i missed the whole point. lol
<Regenaxer> No, much much simpler
<Regenaxer> I generate LLVM directly from Lisp
<rick42> fwew! ok, that's good
<rick42> generate IR from lisp code
ubLIX has quit [Quit: ubLIX]
<rick42> that's sounds good
<Regenaxer> yes, and is extremely simple
<rick42> that's sound MUCH more fun! lol
<Regenaxer> T
ubLIX has joined #picolisp
xkapastel has joined #picolisp
orivej has quit [Ping timeout: 264 seconds]
orivej has joined #picolisp
freemint__ has quit [Remote host closed the connection]
freemint__ has joined #picolisp