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
ubLX has quit [Ping timeout: 246 seconds]
ubLIX has joined #picolisp
ubLIX has left #picolisp [#picolisp]
ubLIX has joined #picolisp
xkapastel has quit [Quit: Connection closed for inactivity]
ubLIX has quit [Ping timeout: 250 seconds]
yunfan_ has left #picolisp [#picolisp]
<beneroth> Good morning
<beneroth> What a weird log read from yesterday
<beneroth> <freemint> i read a comment section about SQL (on news.ycombinator.com) today. I am impressed with SQL. A SQL DMS at pilDB are not comparable at all.
<Regenaxer> Hi beneroth
<beneroth> Of course they're comparable. Everything which can be judged the same criteria can be compared....
* beneroth is confused
<beneroth> Hi Regenaxer :)
<Regenaxer> Yeah, I also did not understand freemint's statement
<beneroth> well we don't know what the hell he did read. But I'm surprised he didn't practice with SQL DBs in his study course.
* beneroth knows both SQL DBMS and pilDB.
<beneroth> I think pilDB is the more powerful model than traditional relational/SQL.
<Regenaxer> At least more easy and direct in my view
<Regenaxer> It is a PITA to interface SQL with application code
<beneroth> In theory an additional layer of optimization (that is the concept of SQL in practice, in a way) could bring some benefits in some cases. But in practice they're more overhead than meaningful in common sized databases.
<Regenaxer> (at least it was when I had to use it in the 1990s)
<beneroth> it still is
<Regenaxer> ok
<beneroth> applications these days are all OOP and SQL is relational. Object-Relational-Mapping is not elegant.
<Regenaxer> yep
<beneroth> they're frameworks to automate such things, but they only work in the easy cases.
<Regenaxer> and generate tons of bloat I suspect
<Regenaxer> glue code
orivej has quit [Ping timeout: 240 seconds]
<beneroth> another factor is that most programmers (in my experience), even when they know SQL well and are experienced/senior database programmers, have just a small or no understanding of relational theory (e.g. like 3d normal form (3NF)
<beneroth> often they don't even know about transactions :(
<beneroth> <Regenaxer> and generate tons of bloat I suspect
<beneroth> absolutely
<beneroth> so in "best" practice / recommended way you have like 3 or more representations of the same object: table in SQL, OOP class in data access layer, another class (values copied from/to the data access object) on (business) logic layer.
<beneroth> so straight the other direction than your "one single technical object to represent one logical object"
<Regenaxer> Plus the pain to have that interact with the application (GUI)
<beneroth> when something hits limits/restrictions, the common way is to just add another layer.
<Regenaxer> ie trigger updates on changes etc
<beneroth> yep
<beneroth> bbl
orivej has joined #picolisp
<Regenaxer> cu
orivej has quit [Ping timeout: 268 seconds]
orivej_ has joined #picolisp
rob_w has joined #picolisp
rob_w has quit [Changing host]
rob_w has joined #picolisp
xkapastel has joined #picolisp
xkapastel has quit [Quit: Connection closed for inactivity]
<beneroth> back
orivej_ has quit [Ping timeout: 246 seconds]
rob_w has quit [Read error: Connection reset by peer]
orivej has joined #picolisp
xkapastel has joined #picolisp
ubLIX has joined #picolisp
freemint has joined #picolisp
<freemint> Regenaxer What i ment by that was: SQL includes many high-level features that PilDB does not. For example functions in the database. even when you compare PicoLisp + PilDB the comparison is unfair because SQL includes a query-plan and performs optimization based on that.
<freemint> It is the same level of not compareable as Haskell and C are not comparable.
<freemint> If you hav a random haskel implementation and a random C implementation you could not say how good the implementation is because Haskel and C are to far apart.
<Regenaxer> I never cared to compare. What counts for me is usability, how much the life is a programmer is eased
<freemint> I was just impressed by the complexity of SQL
<Regenaxer> And under that aspect SQL is a horror
<Regenaxer> Such relational DBs need to do optimizations under the hood
<Regenaxer> which are not even needed in pil as you can do these things directly
<freemint> In PicoLisp we do not do the optimizations since we are programming assembly basicly.
<Regenaxer> No, this is not the point
<freemint> ok?
<Regenaxer> You dont need normalizations and joining tables
<Regenaxer> as objects are linked directly
<Regenaxer> This is not possible in the plain tabular modell
<Regenaxer> SQL is more primitive on the low level
<freemint> I think PicoLisp is more primitive, SQL looses features because of abstraction away from underlying reality
<freemint> well that debate is completely philosophical
<freemint> no bearing on reality
<Regenaxer> Nope. In SQL every DB model has to be pressed into 2-dim tables, and then the system has to figure out how to get things back together
<Regenaxer> No
<Regenaxer> SQL uses a very primitive model
<Regenaxer> only tables
<Regenaxer> Good for academic purposes as you can prove things
<Regenaxer> but for practical use it is stupiy
<Regenaxer> stupid
<Regenaxer> Makes everything *very* complicated
<Regenaxer> In pil you express directly how the model is, a big advantage in my view
<freemint> absolutely
<freemint> SQL is a old Mediterranean temple. Big, built by the hard work of many, impressive, but uses one of many slightly incompatible (compared the other SQL implementation) belief.
<Regenaxer> yeah
<freemint> It is impressive, you can learn a lot from looking at it, it manifests the social order, knowing how to get the most out of the temple is an arcane but very sought after skill
<Regenaxer> The Haskell comparison does not match. It is rather if you have a plain Turing machine and insist to compile everything for that machine
<freemint> I think the Haskell comparison works well. You loose pointers (between objects) and if you want to have your own pointers you need to implement your own loiter following scheme.
<freemint> pointer
<freemint> (aka folding over special indexes)
<Regenaxer> maybe
<Regenaxer> As I said, I don't care. What counts is what is use- and powerful in expression
<freemint> again it is pure philosophy
<Regenaxer> About Haskell I don't know enough
<freemint> a Metapher can excell in some ways and fail in others
<freemint> I found it insightfull.
<freemint> and i was baffled by the marvel (compiler magic) everywhere
<freemint> *marble
<freemint> Regenaxer did that clear out your confusion?
<Regenaxer> I had no confusion
<Regenaxer> Why should I be confused?
<freemint> Yeah, I also did not understand freemint's statement 
<freemint> that is why i thought you were
<Regenaxer> haha :)
<Regenaxer> Makes sense indeed
<freemint> how are you doing?
<Regenaxer> Just recovering from a cold
<Regenaxer> ok now
<freemint> Heiße Zitrone helps
<Regenaxer> Yes, in the early stage
<Regenaxer> I slept three days + two nights and was better then :)
<Regenaxer> Now did some project work, and continued also with the browser
<freemint> the browser?
<Regenaxer> I wrote my own browser. Fed up with Firefox (too heavy) and Chrome (too restrictive)
<Regenaxer> I very simple PilBox app
<Regenaxer> Does almost everything I need
<Regenaxer> Almost finished. Still missing is bookmarks, will do tomorrow
<beneroth> hi all
<Regenaxer> Hi beneroth!
<beneroth> freemint, you are aware that the academic inventor of the relational model is absolutely unhappy with how it turned out to be implemented, and especially hates SQL ?
<freemint> so you browser is secretly a chrome/android web view?
<beneroth> which browser isn't
<freemint> beneroth no i am not
* beneroth searching the source
<freemint> w3m
<Regenaxer> freemint, exactly
<Regenaxer> Android WebView is the main GUI of PilBox anyway
<Regenaxer> So just added a little glue and a DB
<Regenaxer> w3m would be even better, but does not support images in Termux
<Regenaxer> on Linux w3m is fine
<freemint> Regenaxer unless you need to use a website with js.
<Regenaxer> right
<Regenaxer> I first just read in w3m, then open another browser if needed only
<Regenaxer> eg Twitter I get the timeline here in this IRC client, then copy/paste to w3m
<Regenaxer> But Twitter runs also fine in the PilBox browser
<Regenaxer> lightweighe "mobile" twitter site
<freemint> what browser features do you have?
<Regenaxer> Hmm, some ;)
<Regenaxer> File downloads, form auto-fill, clear cookies and cache
<Regenaxer> Next will be simple bookmarks DB
<freemint> i see. No tabs.
<Regenaxer> Now watching news and then "Heute Show" - the highlight of the week :)
<freemint> I know
<Regenaxer> Yes, this is the biggest drawback
<Regenaxer> no browser tabs
<freemint> although Extra3 is great too
<Regenaxer> yep
<freemint> Could i track how much time i spent on certain web sites by modifying app?
<Regenaxer> yes, but you probably must go deeper into the Java part
<Regenaxer> onPageFinished()
<freemint> mhh interesting. I assume it can close windows/hide windows under my nose too.
<Regenaxer> Problem is it is not known when the page is *left*
<beneroth> Regenaxer, when did create the first version of pilDB (with same/comparable concepts as today) ?
<Regenaxer> I think it was around 1997
<beneroth> ok, so not before the third manifesto of 1995 ?
<beneroth> though I guess you didn't know about it, did you
<beneroth> ?
<Regenaxer> right, never heard
<beneroth> The theme of the manifestos is how to avoid the "object-relational impedance mismatch" between object-oriented programming languages and relational database management systems.
<Regenaxer> impedance?
<beneroth> In my view this is still unsolved. ORM frameworks are a bad and failed attempt at solving this.
<Regenaxer> My problem always was that I never cared much what other people were doing. A bit egoistic, sorry
<beneroth> impedance in that sentence means as much as "obstacle/resistance/hurdle"
<Regenaxer> ok
<beneroth> Regenaxer, was it ever your problem?
<beneroth> I think it's a bliss :)
<beneroth> I say pil DB solves this issue.
<Regenaxer> Not that I know of, but perhaps not the most efficient way
Regenaxer has left #picolisp [#picolisp]
Regenaxer has joined #picolisp
<Regenaxer> oops
<Regenaxer> (not studying what already exists)
<beneroth> your last sentence referred to your lone wolf style, not about me saying that I find that "pilDB solves the object-relational mismatch" ?
<Regenaxer> righy
<Regenaxer> right
<beneroth> freemint, pilDB supports same type of schema / data modelling as mainstream relational databases (and more).
<Regenaxer> re-inventing the wheel perhaps
<Regenaxer> but I'm happy with it :)
<beneroth> well you oriented yourself on Knuth and RFCs and other essential basics, that's not a not-invented-here-issue
<Regenaxer> true
<beneroth> while you re-invented the wheel a bit the rest of non-academic IT (and of academia too) re-invent whole classes of wheels again and again. and they're still rolling bumpy
<Regenaxer> haha, yeah
<beneroth> just look at the web. horrible.
<freemint> Regenaxer i like to hear your thoughts on a matter
<beneroth> now they seriously start to do DNS via HTTP + JSON. what the actual fuck.
* beneroth rants on
* beneroth is interested what freemint has to say
<Regenaxer> :)
<freemint> sql is a quiet easy language. So easy that even non programmers like Bibliothekare, payroll staff ... can use it.
<Regenaxer> at least it was intended so
<Regenaxer> like Cobol
<beneroth> didn't work
<beneroth> "We wanted the language
<beneroth> to be simple enough th
<beneroth> of training. "
<beneroth> could ‘‘walk up and use it’’ with a minimum
<beneroth> at ordinary people
<freemint> I know people working in Libraries which talk with DB directly
<beneroth> "I am pleased to see the language used in a vari-
<beneroth> ety of environments, even though it has not
<beneroth> proved to be as accessible to untrained users
<beneroth> as Ray and I originally hoped."
<freemint> the sql language is also quiet isolated and small
<beneroth> freemint, the problem is, in most cases this may happen but is often very risky. people just have to copy a DROP TABLE; statement from somewhere (e.g. when they searched for something unrelated on the internet) and you got a bit problem.
<freemint> SHUTUP
<beneroth> it is not.
<beneroth> wut?
orivej has quit [Ping timeout: 258 seconds]
<freemint> My question is: is talking to the PicoLispDB just "reserved" for programmers and all others are limited to the GUI which might not enable to view/edit all the data?
<beneroth> dude I'm not wanting to destroy your nice view, but I'm not (only) talking here from pilDB fan perspective, I've 10 years experience with SQL and big relation databases and saw and see how they are used in many companies.
<beneroth> freemint, pilDB without form.l is merely a framework to create a DBMS, it's not a finished DBMS and it's not a stand-alone product, granted.
<freemint> Regenaxer Is PilDB something that common people can interact with realistically?
<Regenaxer> freemint, the DB is deep in the language, so it cannot be used by non-pil-programmers
<Regenaxer> But you can type in Lisp statements just as you can SQL
<freemint> that is a brave assertion to make. My solution is not for this use case. Great so much honesty
<beneroth> but those are not conceptual issues. one could argue that this is missing implementation/features, but you must also compare the small pilDB and how much time/money went into it with those relationa dbs.
<beneroth> this is a valid critic point, but has nothing to do with the power of the concept!
<Regenaxer> (select nm str plz ort +CuSu nr (1 . 99))
<Regenaxer> ok, I'm off now, Heute Show
<Regenaxer> see you soon :)
<beneroth> have fun. good night Regenaxer :)
<Regenaxer> :)
<freemint> SQL has features like users layered below, which we would need layer on top of pilDB. making pilDB more ugly to use.
<beneroth> if you make pilDB more ugly to use while doing that, then you make it wrong.
<beneroth> also about which SQL implementation are you talking?
<beneroth> SQL is a standard, but the real-world implementations vary A LOT
<freemint> back to you beneroth i was trying to carefully formulate a question, while you kept spamming quotes and other stuff. That just ticked me off. Never bothered to read them. I will catch up with your posts now
<beneroth> ok. it was not intended to annoy you or make you angry.
<freemint> In a proper SQL Server you have access control which is tied to User accounts.
<freemint> I have never said anything about the power of the concept
<freemint> I agree that it is not obvious how we could add access control when (setq {4-2} 5) is part of the language
<freemint> I think i am talking about PostgresSQL and i would be surprised if there was any popular sql database engine which does not support users
<freemint> I am not dumb! I know that writing cross engine SQL is like praying to 3 conflicting gods.
<freemint> beneroth you did annoy me effectively though. I am sorry i gave you no warning that you were spamming me but that would have worked much better
lodsw has quit [Ping timeout: 268 seconds]
<beneroth> you could also just have ignored it and re-read it later, don't feel pressured please.
<beneroth> "What i ment by that was: SQL includes many high-level features that PilDB does not. For example functions in the database."
<beneroth> I see now what you mean. but initially it looked like a frontal attack on conceptual level. also it is not correct - you can easily save functions as data in the database.
<beneroth> and class definitions (+Entity etc) are a part of pilDB. they're full of functions.
lodsw has joined #picolisp
<beneroth> freemint, nobody here claims that pilDB is the right tool for everything and everyone. it's not even intended to be that.
<beneroth> it's meant to be used as part of an application, and highly fitted to the specific application and use case. and it's very powerful for that.
<freemint> T
<beneroth> in terms of database design is pilDB clearly more powerful and easier than SQL. it supports the relational model, but also OOP, and also graph. I can speak from experience here, I can compare them.
<freemint> *are easier for the projects i work on
<beneroth> also stuff like e.g. custom user-defined types..they're not possible in SQL databases, there usually strings are abused for such cases.
<freemint> some sql databases have types
<beneroth> (maybe they are in postgresql, I'm not sure, I consider postgresql the most powerful of the leading relational databases)
<beneroth> they have types. but you cannot easily create a new type.
<beneroth> that postgresql supports ENUM, and stuff like IP-addresses and uuid as possible field types is something very special, no chance for that in the other commonly used relational databases.
<freemint> oh and they have a type for json values i think
<beneroth> yeah they have, after MongoDB made this famous.
<beneroth> in oracle and MSSQL (and afaik also in MySQL/MariaDB and SQLite) usually big strings are abused for that.
<beneroth> and I consider json data types pretty bad, all in all. they don't even have integer, only double.
<beneroth> can be an issue when you need precise big numbers.
<freemint> obviously
<beneroth> for you. not so obvious for programmers who don't have an understanding of how floating-point numbers are represented in binary.
<beneroth> the additional abstraction layer of SQL vs. direct low level access can be nice advantage as you said, as DBMS devs can add more and more sophisticated optimization work on this "translation from SQL to actual database operations"
<beneroth> but it is also a curse, because those optimizations might be sometimes (depending on the nature of the data and query usage) work with wrong assumptions. they might suddenly change their behaviour because of a few non-typical queries which happened.
<beneroth> SQL should be a declarative language (it technically is): you state the intended result, not how it is achieved, the software should figure this out itself.
<beneroth> but in that it is less powerful and elegant than prolog. uncertainties can accumulate to pretty problematic searches.
<beneroth> and while many things are very nice in theory, the practice (outside of academia) is mostly very ugly. and nobody cares as long the pain doesn't reach too high levels. or people don't get the time/money to care.
<freemint> T
<beneroth> a lot of good functionality present in DBMSes are not used in practice (e.g. user permissions). others like transactions are rather unsafe in the (rarely changed) default settings.
<freemint> thats why SQL needs high priests
<beneroth> and in recent years (5-10 or more or so) programmers tend to put more and more logic and checks into application (doing them bad themselves) instead of properly using the database features.
<freemint> which is an acceptable social solution
<freemint> (the high priests)
<beneroth> legitimate point/strategy.
<beneroth> though I would argue (and I guess this is Regenaxer viewpoint too), that this way you still often end up with bad results, so why not go the full way and get people to understand what they are doing and being responsible for it.
<freemint> that is a good strategy but i have not fully bought it yet.
<beneroth> but yeah, that is at odds both with economic/social incentives and with laziness.
<beneroth> yeah, it has it's disadvantages, especially in scalability
<beneroth> and scalability is an absolutely legitimate factor for bigger firms :)
<freemint> I think PicoLisp is advertised completely wrongly. It is advertised as small language.
<beneroth> on the other side... I think it's really not about biological possibilities, inert talent or master-genius-thing (what people often believe and tell themselves about seemingly complicated things) but laziness.
<freemint> I think it should be advertised as small solution to small problems. Where small problems means <1000 users or so.
<beneroth> freemint, haha, yeah, I agree PicoLisp is not well advertised.
<beneroth> no
<beneroth> it can solve bigger problems.
<freemint> But it can solve small problems in a short way.
<beneroth> and the maintainability is just mind-blowing.
<beneroth> haha, good point, yes
<freemint> That is what makes it special in my opinion
<beneroth> a lot of the "solutions" meant for big problems are very bad at solving small problems efficiently, good point!
<freemint> and if somebody asks: How large can you go? We can only say we did X and it still performed well. Try and find out.
<beneroth> this I see as a big fallacy with distributed databases. and also cloud scale whatnot hype. it's not needed and its not the right tool for the majority of needs.
<beneroth> freemint, T. and I believe that is what we're doing :)
<beneroth> you must also see that there is no company who wants to sell PicoLisp. and I think we as a community surely would like to have more people, but most of us are busy with other things and all in all we value purity (of picolisp) much much higher than popularity.
<beneroth> principles over populism.
<freemint> beneroth i think my slogan would better express the audaciousness and humbleness that is PicoLisp at the same time
<beneroth> which slogan, you just had multiple good ones.
<freemint> *i find mine nice.
<beneroth> yeah which one, you just had written multiple great ones!
<beneroth> "it can solve small problems in a short way"
<beneroth> "How large can you go? We can only say we did X and it still performed well. Try and find out."
<beneroth> "small solution to small problems" ?
<freemint> the 1 or 3
<freemint> I like 3 best
xkapastel has quit [Quit: Connection closed for inactivity]
<beneroth> the thing is, nobody is selling PicoLisp (or picolisp services) really
<beneroth> Regenaxer is selling custom software solutions.
<beneroth> I'm selling custom software solutions, and services which I run with the help of picolisp tools.
<beneroth> aw- is selling deployment/distribution/configuration services as far as I understood it
<beneroth> I don't really have an idea what tankf33der is doing for a living, but it seems he uses picolisp for his personal training and for rapid prototyping and testing of algorithm/crypto development
<beneroth> and I don't know who else here is using picolisp as part of their work life.
<beneroth> I think we have some teachers on the mailing list using picolisp to teach programming.
<beneroth> but yeah, nobody is selling picolisp directly, just using it as a tool to build things which can be built using other ways but we believe (from experience, it's not just dreaming, the people here are rather pragmatic) that we can achieve this faster, easier and cheaper with picolisp stack
<beneroth> Because of these reasons picolisp marketing is pretty unoptimized, because that part is a side-project at best.
<beneroth> and in a way it serves as a good filter to keep the people away who are not really interested in understanding programming stuff, who would probably attempt to pollute picolisp with comfort. many things that are painful for people new to picolisp are intentionally painful, because here those painful things are visible and feelingly in the open. those painful things are absolutely also present in the other languages (because they're just hard), just hidden
<beneroth> from view but still an issue. maybe not at beginning there, but then even more so in the long-run. or so I believe :)
orivej has joined #picolisp
<beneroth> I more and more believe that it was and is an mistake to make programming/database/software-design so seemingly easy. Yes it means that more actual stuff is made and used (and only when a software is used to do something, to achieve something in the actual world it has meaning! else it's just play.), but I start to doubt if this is negativ the grave risks and long-term costs of being dependent on systems with messed-up quality, bugs, harmful side-effects a
<beneroth> nd even more so when we now connect and centralise more and more all those systems, so accumulation and spreading of problems might be enhanced a lot.
<beneroth> s/negativ/negating
<beneroth> gn8
ubLIX has quit [Quit: ubLIX]
freemint has quit [Ping timeout: 244 seconds]