phoe changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <http://cliki.net/> <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | SBCL 1.4.14, CMUCL 21b, ECL 16.1.3, CCL 1.11.5, ABCL 1.5.0
<solrize> _death thanks and oh man that's confusing
<sjl> obligatory overengineered iterate version https://github.com/sjl/euler/blob/master/src/utils.lisp#L573-L588 :)
<solrize> lolwut
Kundry_Wag has quit [Ping timeout: 246 seconds]
<solrize> oh i see
<solrize> :in-collatz
<solrize> heh
<solrize> (define (collatz n)
<solrize> (define (go n a)
<solrize> (define (step) (if (odd? n) (+ (* 3 n) 1) (quotient n 2)))
<solrize> (if (= n 1) (reverse! a) (go (step) (cons n a))))
<solrize> (go n '()))
<solrize> (scheme) seems more natural
robotoad has quit [Quit: robotoad]
zotan has quit [Ping timeout: 250 seconds]
zotan has joined #lisp
janders223 has quit [Ping timeout: 250 seconds]
zotan has quit [Ping timeout: 252 seconds]
zotan has joined #lisp
<_death> sjl: your .plan for 2019 thinks it's january 2018 :)
<thrig> off by one is common computing error
Kaisyu has joined #lisp
froggey has quit [Quit: Reconnecting]
froggey has joined #lisp
zotan has quit [Ping timeout: 252 seconds]
zotan has joined #lisp
<wglb> hjudt: Thanks for your input.
pierpal has joined #lisp
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #lisp
<sjl> whops
<sjl> the other headings are right because I gen them with a keybind... it's just the one that my idiot self typed by hand that's hosed
zotan has quit [Ping timeout: 252 seconds]
zotan has joined #lisp
robotoad has joined #lisp
Bike has joined #lisp
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #lisp
JetJej has quit [Read error: Connection reset by peer]
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #lisp
janders223 has joined #lisp
dale has quit [Quit: dale]
serichsen has quit [Ping timeout: 252 seconds]
eschatologist has quit [Ping timeout: 264 seconds]
bexx2 has quit [Read error: Connection reset by peer]
bexx has joined #lisp
<no-defun-allowed> can rule 110 be implemented in FORMAT?
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 250 seconds]
mathrick has quit [Ping timeout: 264 seconds]
mathrick has joined #lisp
ahungry has joined #lisp
nirved is now known as Guest3774
nirved has joined #lisp
Guest3774 has quit [Ping timeout: 252 seconds]
Kundry_Wag has joined #lisp
Oladon has joined #lisp
Kundry_Wag has quit [Ping timeout: 250 seconds]
xrash has quit [Ping timeout: 240 seconds]
dale has joined #lisp
pjb has quit [Ping timeout: 252 seconds]
janders223 has left #lisp [#lisp]
<ahungry> Does scheme have something similar to a plist in CL or a map in Clojure? A simple way to get a field out like (getf '(:x 1 :y 2) :x) => 1 - I know of assoc - I guess I could write a wrapper to get the cadr of one
dddddd has quit [Remote host closed the connection]
<ahungry> Seems that wouldn't really solve my want of having a simple literal format for the data though, so I'd probably just have to make something that walks a list 2 atoms at a time and stops if the first matches my lookup
Kundry_Wag has joined #lisp
undiscovered has quit [Ping timeout: 256 seconds]
<ahungry> thanks
Kundry_Wag has quit [Ping timeout: 240 seconds]
<p_l> I think some old versions of scheme had symbol property lists as well
pjb has joined #lisp
khisanth_ has quit [Ping timeout: 245 seconds]
shifty has quit [Ping timeout: 246 seconds]
robotoad has quit [Quit: robotoad]
bexx2 has joined #lisp
<solrize> ahungry, there's some srfi's for all kinds of stuff like that... #scheme would know more
Essadon has quit [Quit: Qutting]
bexx2 has quit [Read error: Connection reset by peer]
bexx2 has joined #lisp
bexx has quit [Ping timeout: 245 seconds]
<aeth> specifically, jcowan will know more about Scheme implementation support of $feature in #scheme
khisanth_ has joined #lisp
Lycurgus has joined #lisp
robotoad has joined #lisp
moei has joined #lisp
<ahungry> Thanks guys!
Kundry_Wag has joined #lisp
nowhere_man has joined #lisp
creat has quit [Ping timeout: 250 seconds]
creat has joined #lisp
Kundry_Wag has quit [Ping timeout: 272 seconds]
pjb has quit [Ping timeout: 252 seconds]
xkapastel has quit [Quit: Connection closed for inactivity]
space_otter has joined #lisp
nanoz has joined #lisp
ldb has joined #lisp
<ldb> good aftermmom
four has joined #lisp
* pillton applies a rotation to ldb's right hand.
* ldb failed
Kundry_Wag has joined #lisp
space_otter has quit [Remote host closed the connection]
space_otter has joined #lisp
Kundry_Wag has quit [Ping timeout: 250 seconds]
Lord_of_Life has quit [Ping timeout: 272 seconds]
nanoz has quit [Read error: Connection timed out]
nanoz has joined #lisp
Lord_of_Life has joined #lisp
xkapastel has joined #lisp
<ldb> se ya in 20 hours
ldb has left #lisp [#lisp]
<fiddlerwoaroof> In terms of LOOP alternatives, there's also https://github.com/Shinmera/for, which I prefer to iterate, if I'm going to use a library
<fiddlerwoaroof> Shinmera's libraries are generally well-documented and have nice APIs
* fiddlerwoaroof points to https://github.com/Shinmera/lquery
nowhere_man has quit [Ping timeout: 252 seconds]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 272 seconds]
Lycurgus has quit [Quit: Exeunt]
shifty has joined #lisp
<beach> Good morning everyone!
KingRiver has joined #lisp
Bike has quit [Quit: Lost terminal]
nanoz has quit [Ping timeout: 240 seconds]
eschatologist has joined #lisp
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 250 seconds]
vms14 has joined #lisp
pjb has joined #lisp
slyrus1 has joined #lisp
slyrus1 has quit [Client Quit]
<aeth> I could probably write a DO/DO*-like macro once I finalize my with-bindings macro
impulse has quit [Ping timeout: 250 seconds]
Kundry_Wag has joined #lisp
ahungry has quit [Remote host closed the connection]
Kundry_Wag has quit [Ping timeout: 246 seconds]
Oladon has quit [Quit: Leaving.]
dale has quit [Quit: dale]
msb has joined #lisp
nowhere_man has joined #lisp
malm has quit [Remote host closed the connection]
slyrus_ has joined #lisp
<fiddlerwoaroof> morning beach
KingRiver has quit [Ping timeout: 268 seconds]
KingRiver has joined #lisp
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 258 seconds]
esrse has joined #lisp
anewuser has quit [Quit: anewuser]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 272 seconds]
nowhere_man has quit [Ping timeout: 252 seconds]
amerlyq has joined #lisp
iovec has quit [Quit: Connection closed for inactivity]
xkapastel has quit [Quit: Connection closed for inactivity]
shrdlu68 has joined #lisp
Inline has quit [Quit: Leaving]
verisimilitude has quit [Remote host closed the connection]
vms14 has quit [Quit: meh...]
malm has joined #lisp
karlosz has quit [Quit: karlosz]
scymtym has quit [Ping timeout: 268 seconds]
Kundry_Wag has joined #lisp
nowolfer has quit [Quit: leaving]
Kundry_Wag has quit [Ping timeout: 252 seconds]
makomo has joined #lisp
<makomo> morning
<beach> Hello makomo.
<makomo> \o
<shrdlu68> Hehe: https://www.lisp4.net/
<solrize> what, sheesh
<shrdlu68> Acronym exhaustion?
makomo has quit [Ping timeout: 245 seconds]
makomo has joined #lisp
Kundry_Wag has joined #lisp
<hjudt> wglb: welcome.
<solrize> shrdlu68, more like trolling
edgar-rft has quit [Quit: Leaving]
Kundry_Wag has quit [Ping timeout: 250 seconds]
sauvin has quit [Ping timeout: 240 seconds]
Necktwi has quit [Ping timeout: 240 seconds]
Necktwi has joined #lisp
scymtym has joined #lisp
angavrilov has joined #lisp
sauvin has joined #lisp
Kundry_Wag has joined #lisp
space_otter has quit [Remote host closed the connection]
pierpal has quit [Quit: Poof]
pierpal has joined #lisp
Kundry_Wag has quit [Ping timeout: 268 seconds]
yvy has joined #lisp
schweers has joined #lisp
darthlukan has quit [Ping timeout: 252 seconds]
undiscovered has joined #lisp
darthlukan has joined #lisp
iovec has joined #lisp
nowhere_man has joined #lisp
hhdave has joined #lisp
heisig has joined #lisp
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 246 seconds]
beach has quit [Ping timeout: 252 seconds]
beach has joined #lisp
varjag has joined #lisp
<ogamita> shrdlu68: I dare you write an implementation of LISP in Common Lisp. Call it (ql:quickload "lisp²")
jochens has joined #lisp
spoeplau has joined #lisp
Kundry_Wag has joined #lisp
<loke> ogamita: There is one already
<loke> I think pjb wrote one
<no-defun-allowed> ogamita is pjb
<loke> Oh
<loke> well then
Kundry_Wag has quit [Ping timeout: 244 seconds]
<ogamita> No, I didn't implement the LISP, it's not a very sexy protocol.
<ogamita> I did telnet.
<loke> Oh, I thinkt you were talking about LISP. The programming language from the 50's
<loke> thought
v0|d has quit [Remote host closed the connection]
spoeplau has quit [Ping timeout: 272 seconds]
Kaisyu has quit [Quit: Connection closed for inactivity]
<d4ryus> hi, is there a way to create a in memory stream? I would like to pass one 'end' to a thread running uiop/run-programm and the other 'end' to a thread which reads from it.
<lieven> two-way-stream with string-streams. there's an example in the hyperspec.
dddddd has joined #lisp
kajo has quit [Ping timeout: 252 seconds]
orivej has quit [Ping timeout: 272 seconds]
Kundry_Wag has joined #lisp
yvy has quit [Read error: Connection reset by peer]
yvy has joined #lisp
Kundry_Wag has quit [Ping timeout: 240 seconds]
glv has joined #lisp
undiscovered has quit [Ping timeout: 256 seconds]
KingRiver has quit [Ping timeout: 240 seconds]
shifty has quit [Ping timeout: 245 seconds]
<d4ryus> lieven: thank you!
<solrize> that has locks and stuff for inter thread messaging? hmm
igemnace has joined #lisp
<lieven> the standard doesn't describe threads so adding those would be an exercise for the reader
<d4ryus> yep, thought so
<d4ryus> but sadly uiop/run-programm does not write into the stream until the programm has finished :(
<lieven> a good match for that problem is the mailbox API. it's native in lispworks and there are ports to other lisps
<lieven> you might have to hand uiop/run-program a stream with buffering off
orivej has joined #lisp
<jackdaniel> lieven: ecl has native mailbox
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 244 seconds]
atgreen has quit [Ping timeout: 250 seconds]
atgreen has joined #lisp
gxt has quit [Ping timeout: 268 seconds]
Kundry_Wag has joined #lisp
m00natic has joined #lisp
orivej has quit [Ping timeout: 246 seconds]
Kundry_Wag has quit [Ping timeout: 246 seconds]
SqREL has joined #lisp
SqREL has quit [Remote host closed the connection]
gxt has joined #lisp
vms14 has joined #lisp
status402 has joined #lisp
lnostdal has quit [Ping timeout: 246 seconds]
lnostdal has joined #lisp
edgar-rft has joined #lisp
lnostdal has quit [Ping timeout: 245 seconds]
X-Scale` has joined #lisp
vms14 has quit [Ping timeout: 245 seconds]
X-Scale has quit [Ping timeout: 268 seconds]
X-Scale` is now known as X-Scale
milanj has joined #lisp
Zaab1t has joined #lisp
yvy has quit [Read error: Connection reset by peer]
TonCherAmi has quit [Quit: Quit]
esrse has quit [Ping timeout: 246 seconds]
amerlyq has quit [Ping timeout: 258 seconds]
notzmv has quit [Ping timeout: 240 seconds]
amerlyq has joined #lisp
notzmv has joined #lisp
jmercouris has joined #lisp
status402 has quit [Read error: Connection reset by peer]
status402 has joined #lisp
<jmercouris> suggestons for ORM for CL? I'm already experienced with Crane but am open to other solutions
atgreen has quit [Ping timeout: 258 seconds]
bexx2 has quit [Ping timeout: 246 seconds]
nowhere_man has quit [Ping timeout: 252 seconds]
bexx has joined #lisp
hjudt has quit [Quit: leaving]
milanj has quit [Quit: This computer has gone to sleep]
hjudt has joined #lisp
<jackdaniel> I gather saying: don't use ORM won't be helpful?
<jmercouris> maybe if you explain your reasoning it will be helpful
<jackdaniel> s/don/"don/ s/ORM/ORM"/
<jmercouris> I've gone with and without ORMs before
<jmercouris> I've used cl-sql directly instead of an ORM, and sometimes just plain SQL
<jackdaniel> well, imho it is a broken abstraction concept
<jmercouris> at least in the world of CL, in other platforms/languages I've also done both
<jmercouris> The problem that I have with ORMs is centered around issues with forein key relationships
<jackdaniel> updating db deserves its own application-specific api but mixing it with object access isn't a fine idea (conceptually speaking)
<jmercouris> s/forein/foreign
<jmercouris> so what do you do to synchronize your schema to your codebase?
<jmercouris> do you have some sort of SQL directory where you write scripts that get executed manually to udpate the schema as necessary?
<jmercouris> aka, how do you handle migrations, without an ORM that will generate them for you automatically
<jackdaniel> keeping object relations and database relations model consistent is a hard (and unnecessary) thing.
<jackdaniel> as I said, having abstraction to *access* database is fine, just mixing it with your objects is not
kajo has joined #lisp
<jackdaniel> as of keeping sql scripts in a directory: it is a fine idea like any other, but writing dsl for updating your relation and using this dsl in your migration functions is fine as well
<jackdaniel> In other words you ask me how would I handle a problem without ORM which is introduced by ORM itself (automatic migration of class relations)
<jmercouris> well actually I'm asking a different question
<jmercouris> let's say we are not using an ORM
<jmercouris> and we are just using raw SQL to access different columns and rows from a database
<jmercouris> What if we add another column that we now want to use in our new code
<jmercouris> we'll change the code and change the query to also use the new column, however we have to ensure that when the new code is run, the database also has the new column
<jmercouris> how do you maintain that parity? what is your strategy?
spoeplau has joined #lisp
<jmercouris> ok ok ok, so I re-read your message, and let me see if I understand what you are suggesting
<jmercouris> you are suggesting that a SQL dir to update things is fine, and what-not, but you'd have something like a "DB-Access" package or something that you'd use to abstract getting data from the database
<jmercouris> am I understanding you correctly?
janders223 has joined #lisp
<jmercouris> and you are saying that maintaining parity between the database structure and this DB-Access abstraction is not a huge issue since the code is all in one place, or what?
<jackdaniel> I'm saying that your persistent data model is a separate thing than your runtime class hierarchy. When you change database schema, you need to write migration function (which calls dsl or loads hand-written scripts) which: a) updates schema, b) bumps databa schema version number
<jackdaniel> so you may have set of function: migrate-1.1->1.2, migrate-1.2->1.3 etc
<jmercouris> so, on the start of program execution, you make sure that these hand written scripts are run?
<jmercouris> aka you check that the schema version number is as expected, and if not, you traverse your functions to get to your current version
<jackdaniel> yes
<jmercouris> do you maintain a separate table in your database for this? something like "schema-version"? that has an int or something?
<jackdaniel> that's the way to do it. it may be a bit more general, like next-meta-information ;-)
<jmercouris> have you found yourself doing this a few times? is there a library for this? do you think a library to do this would be useful?
<jackdaniel> I'm working with a codebase which manages database that way and I find this abstraction very convincing. as of library: migration (if we skip dsl and actual migration script body) is a dozen of lines or so – such library wouldn't be useful
<jackdaniel> unless you are into left-pad library thing
<jmercouris> lol
xkapastel has joined #lisp
<jackdaniel> sorry, I need to drop (a lot of errands to do in a short time)
<jmercouris> I don't think we're in any danger of turning QL into NPM anytime soon
<jmercouris> ok, no problem, thanks for advice, I will ponder it
glv has quit [Quit: Leaving]
jochens has quit [Remote host closed the connection]
<ogamita> jmercouris: ORM = impedence mismatch. Basically the problem is that to do it conveniently, you need to introduce a cache in the client host, and when each client has its own cache, then things break apart.
jochens has joined #lisp
<ogamita> jmercouris: you could have caches on the clients if they were integrated in a OO database, ie. synchronized with the other clients. But then, what do you think will occur when your OODB software needs to synchronise hundreds of clients!?!?
<jmercouris> well, I have only one client
<jmercouris> and that will probably not change for the forseeable future
<jmercouris> however Daniels argument was pretty convincing
<ogamita> Then you don't need a RDBMS :-)
<jmercouris> and since you seem to be against ORMs as well..
<jmercouris> you are right, I actually want an object database, but none of them are mature enough to use
<ogamita> Well, EOF-1 was not that bad, but it has been dropped by Apple, so it must have had some problem that I didn't see…
undiscovered has joined #lisp
<jmercouris> Allegrolisp has some ORM db project
<jmercouris> but I have no idea how to use or download it
<jmercouris> so I gave up on it
<lieven> you could always resurrect Statice
<jmercouris> there was nothing enlightening in their marketing materials about how to obtain a copy
Bike has joined #lisp
<jmercouris> sure, and there are other projects as well
<jmercouris> however I'm not interested in writing a CL object database at this time, I have enough on my plate
<jmercouris> I just want to be a user
<ogamita> jmercouris: Allegro also have pure OO db, better use that.
<jmercouris> so I will stick with a RDBMS even though it is not the ideal abstraction
<jmercouris> right, I mentioned that above, but it costs money and I don't even know how to buy it
<dlowe> I've found through experience that the best DB abstraction is treating the whole DB like the backend for a very capable abstract collection.
milanj has joined #lisp
<ogamita> jmercouris: note that your objects can still know how to save and load themselves in a sql database!
<dlowe> anything more granular and your abstractions will leak all over the place and you'll be writing bare SQL and cursing
<jmercouris> and so they shall, I will write an abstraction layer in between
<jmercouris> a couple of defmethods :D
<jmercouris> serialize-to-database to generate some SQL
<jmercouris> and then maybe load-from-database to instantiate an object
<jmercouris> sure it won't past the eq test, but I don't care
<jmercouris> however these defmethods will be within the db abstraction package and probably only used locally in functions
<dlowe> I used Rucksack for a while and it didn't pass the eq test either
<jmercouris> like "get-users-with-name-fish"
<dlowe> but you had to treat its objects like you didn't own them anyway
<jmercouris> and it would return objects for all users with the name fish or something
JetJej has joined #lisp
<jmercouris> yeah, I just had a look at rucksack
<jmercouris> interesting idea
<jmercouris> almost the same idea
<dlowe> yeah, I wish it hadn't been abandoned.
vasu has joined #lisp
kajo has quit [Ping timeout: 252 seconds]
atgreen has joined #lisp
Essadon has joined #lisp
anewuser has joined #lisp
orivej has joined #lisp
<vasu> hello
LiamH has joined #lisp
<beach> Hello vasu.
warweasle has joined #lisp
<beach> vasu: Are you new here? I don't recognize your nick.
status402 has quit [Quit: status402]
lnostdal has joined #lisp
status402 has joined #lisp
<vasu> beach: Yup
<beach> What brings you to #lisp?
<fe[nl]ix> phoe: I'm back from vacation and I'll take a look at the split-sequence issues sometime soon
<vasu> beach: Lisp seems interesting
<beach> It is.
orivej has quit [Ping timeout: 246 seconds]
jochens has quit [Remote host closed the connection]
<vasu> I can chat here from weechat-matrix without any difficulty. But my riot app says "You do not have permission to post in this room". Weird
jprajzne has quit [Quit: Leaving.]
jstypo has quit [Read error: Connection reset by peer]
<beach> vasu: Feel free to ask questions. Notice that this channel is dedicated to Common Lisp. For other dialects or comparisons between them, there is ##lisp. And for really trivial language questions, there is #clschool. Either way, you will be told if you are too much off topic so don't worry about it.
jstypo has joined #lisp
<vasu> beach: Thanks
<beach> Sure.
status402 has quit [Quit: status402]
status402 has joined #lisp
<beach> vasu: Oh, and Common Lisp has several implementations, so it is a good idea to consult us before you choose your environment. It is easy to get it wrong.
<dlowe> They don't have to be trivial questions to be asked in #clschool :)
KingRiver has joined #lisp
<beach> dlowe: Would you like to debate that issue? :)
orivej has joined #lisp
status402 has quit [Client Quit]
status402 has joined #lisp
dtornabene has joined #lisp
<dlowe> Not here and now.
shrdlu68 has quit [Quit: WeeChat 2.3]
<beach> Whew!
lnostdal has quit [Ping timeout: 258 seconds]
<jmercouris> I'll answer any trivial questions, its a speciality of mine :D
<jmercouris> while we are on this off-topic train, I have a problem I am trying to solve with ironclad, unfortunately it is not trivial
<jmercouris> I want to store passwords in a database, encrypted, such that if someone were to get access to the database they could not figure out *what* the passwords are
<jmercouris> there is a catch though
<jmercouris> I, as the administrator, want to be able to view the passwords in cleartext and know what they are
<jmercouris> the only thing that comes to mind is encrypting the passwords using my public key
<dtornabene> hey all, quick survey question: I've got a relatively simple web app, with postgres, written in CL using SBCL and I'm wondering what people use for hosting a site like that. Like, VPS, Cloud, something else? No wrong answers just trying to figure out where I want to head
<jmercouris> dtornabene: I use digital ocean, their tools are very developer friendly
<Xach> dtornabene: i use ovh and a dedicated server.
<dtornabene> jmercouris: sweet! and thanks for the reply!
<dlowe> I use linode, but I use it for a lot of different things already
<jmercouris> so, to answer you rquestion literally, VPS, it gives you the most control, which can make a huge difference
<jmercouris> and it allows you to be agnostic of learning some stupid cloud provider UI
<dtornabene> Xach: whats ovh?
<Xach> dtornabene: it is a hosting company.
<dtornabene> Xach: thank you! checking it out now
<jmercouris> you could also purchase a computer and run it in your house, but your VPS probably won't like that, Xach's solution is the closest you can realistically get to that without purchasing a business line
bexx has quit [Remote host closed the connection]
<jmercouris> I know shinmera uses some swiss company who is apparently really good as well, I can't remember the name though
<dtornabene> yeah, its a really small site, ultimately
<jmercouris> a VPS will suffice
<Xach> i had a website that processed tens of thousands of images per day on modest dedicated hardware with sbcl and it worked well for several years.
<dtornabene> awesome
<jmercouris> you can probably run it on the smallest tier of linode/digital ocean
bexx has joined #lisp
<Xach> (then i sold the website so i don't know what it uses now)
<dtornabene> i'm leaning more toward at least checking out digital ocean given the secrutiy issues linode has had over the recent years
<jmercouris> Xach: it's probably using a combination of drupal and wordpress running php 5.1
<dtornabene> at least if I don't go with a vps
<jmercouris> it has been completely rewritten by offshore contractors :D
<jmercouris> using nothing but wordpress plugins
orivej has quit [Ping timeout: 258 seconds]
<dtornabene> thanks y'all for the speedy replies, i'll send a link when its up if anyone is interested
<Xach> it looks like it is still plugging away on common lisp. when i was running it, the only real maintenance needed was periodically cleaning up temporary files.
<jmercouris> anyone have any better ideas than the one I came-up with, above?
<dtornabene> Xach: ovh is super reasonable in terms of cost, how has there service been?
<dlowe> jmercouris: force pw resets like the rest of the world and don't peek at your users' passwords
<jmercouris> s/there/their
<jmercouris> dlowe: I'm not peeking at them for my enjoyment, it is necessary to have a confidential string
<Xach> dtornabene: well, i signed up many years ago, and am grandfathered in on some very cheap hardware. it has been very cheap and very reliable for years. i am not 100% sure what a new person signing up today would experience, but i have been very happy with my stable happy service.
<jmercouris> that the administrator of the website I'm developing can peek at to do their job
<dtornabene> Xach: fair enough
<dlowe> jmercouris: I think you're stuck with public key encryption. Use a salt.
<jmercouris> ok, so the solution I came up with above, I just wanted to make sure there wasn't a smarter way then
<jmercouris> I mean, I don't plan on the database being compromised or anything lol, but it would be nice for the data not to leak since it will be encrypted
<jmercouris> now if the administrator's private key is compromised *AND* the database is compromised, then we have a shit show on our hands
<dlowe> that's going to be true anyway
lnostdal has joined #lisp
<Xach> another failure mode is the administrator is malicious and tries user passwords on other sites.
<dlowe> though you're going to have to figure out a way to bring them together somehow in order to use them
<dlowe> Xach: well, that was my thought
<jmercouris> the administrator is an owner/operator of the business
<jmercouris> if they were being malicious with this information, they would quickly go out of business
<Xach> sure. but the threat is not to the owner of the business, but to the customers.
<jmercouris> yeah I get that, I'm just saying, the admin will not be malicious, as it would be destroying their own business
<Xach> not worth it to me as a customer.
<jmercouris> I wouldn't do it either, but there is no way around this
<jmercouris> it is a project requirement
<Xach> sure. i have the luxury of not advising or working with someone who sets requirements like that.
<jmercouris> dlowe: What did you mean by "you're going to have to figure out a way to bring them together somehow in order to use them"?
<Xach> i apppreciate that not everyone has that luxry
<Xach> luxury, even.
kajo has joined #lisp
<dlowe> jmercouris: if you are providing an interface to the secrets, then the interface must have access to both the private key and the db
janders223 has quit [Read error: Connection reset by peer]
bexx has quit [Ping timeout: 252 seconds]
<jmercouris> I see
<ogamita> It's more a question of default assumption on the public, between #lisp and #clschool; In the later, it's assumed questioners don't know anything. In the former, it's assumed they already know CL, and a mere clhs reference is enough to answer their question… Plus in #lisp we have highly technical discussions about implementation of CL.
<jmercouris> well, the admin will have to provide the private key whenever they wish to look
bexx has joined #lisp
<jmercouris> but again, it is not for their amusement or enjoyment or anything, it is so that they can do their job
<jmercouris> kind of how you give a key to a repairman to come in and do some repair on your house while you are away from home
<jmercouris> sure they could destroy your kitchen, make copies of your key, run a string of burgularies down the road etc, however if they want to stay in business, they won't do that...
xrash has joined #lisp
<wglb> dtornabene: Friends don't let friends use linode. I use digital ocean for simple mostly static web sites, and price is certainly reasonable.
<jmercouris> anyone who has access to private information could extort you, your doctor could extort you as well using your private medical information they have access to, nevertheless they need that information to do their job
<jmercouris> and if they did extort you, they would lose their job, its the exact same scenario here
Selwyn has joined #lisp
FreeBirdLjj has joined #lisp
dale_ has joined #lisp
dale_ is now known as dale
heisig has quit [Quit: Leaving]
<scymtym> #clim encourages me to share these demos of the work-in-progress inspector rewrite with you: https://techfak.de/~jmoringe/new-inspector-1.ogv https://techfak.de/~jmoringe/new-inspector-2.ogv
<beach> Very impressive!
pierpal has quit [Remote host closed the connection]
<Xach> cool
<phoe> fe[nl]ix: welcome back! There are still some things to be done there (some refactoring remarks from beach et al) - I'm waiting for my sickness to let go of me so I can properly focus and finish them.
<Xach> I wish there was some audio narration - in some cases I don't understand what is happening on screen
thrig has left #lisp [#lisp]
rippa has joined #lisp
<beach> And it could be slowed down a bit so I have time to see the different options in the menus.
<scymtym> Xach: sorry. these were originally meant for #clim participants who know clim's interaction model as well as the current inspector
<beach> scymtym: He is right though. That would make it even more impressive.
lnostdal has quit [Ping timeout: 246 seconds]
<jackdaniel> I third that, verbal commentary is yet another channel of cognition :)
<scymtym> thanks for the feedback. maybe i can make a better demo when i'm further along. but the code will probably be available as a mcclim branch soon-ish anyway
Necktwi has quit [Quit: leaving]
lnostdal has joined #lisp
KingRiver has quit [Read error: Connection reset by peer]
akoana has joined #lisp
shifty has joined #lisp
Selwyn has quit [Remote host closed the connection]
<shka__> scymtym: what happend to the font rendering?
<shka__> it looks somewhat different
<jackdaniel> do you mean kerning and all that jazz?
<shka__> well, now when you mentioned kerning i see it as well, but what struck me is how smooth fonts look
Selwyn has joined #lisp
<shka__> there was a lot of work on font rendering lately?
<jackdaniel> that would be my doing (or loke's if scymtym uses freetype bindings)
<jackdaniel> yes, a lot is an understatement
jmercouris has quit [Ping timeout: 245 seconds]
<wglb> scymtym: cool!
<scymtym> shka__: jackdaniel: i'm using the default backend so all improvements must be due to changes in mcclim
<shka__> it was worth it, this looks vastly better
<jackdaniel> thanks
<jackdaniel> missing features (for volunteers): right-to-left rendering and font shaping
<scymtym> shka__: the default font size changed (increased) at some point. that may make other improvements more noticable
<scymtym> wglb: thanks
<shka__> scymtym: it was needed i think
<shka__> oddly enough, if not by those old school scrollbars it would look like modern-ish minimalistic design
<jackdaniel> they are there to have a retro look, all is modern in mcclim ;-)
status402 has quit [Quit: status402]
jmercouris has joined #lisp
<shka__> fair enough
lnostdal has quit [Ping timeout: 250 seconds]
amerlyq has quit [Quit: amerlyq]
Lord_of_Life has quit [Ping timeout: 268 seconds]
jmercouris has quit [Remote host closed the connection]
Lord_of_Life has joined #lisp
karlosz has joined #lisp
lnostdal has joined #lisp
lnostdal has quit [Ping timeout: 258 seconds]
Inline has joined #lisp
nsrahmad has joined #lisp
lnostdal has joined #lisp
vasu has left #lisp ["User left"]
TonCherAmi has joined #lisp
vasu has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
<dtornabene> wglb: 100% agree
lnostdal has quit [Ping timeout: 244 seconds]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
shifty has quit [Ping timeout: 258 seconds]
vasu has left #lisp ["User left"]
FreeBirdLjj has joined #lisp
<hjudt> i need to catch errors at the top-level in a script that is called by sbcl --load. however, when i put e.g. (load ...) or (uiop:run-program ...) inside a handler-bind, then it errors out with "package uiop does not exist." what can i do about this?
<Inline> load asdf
<Inline> uiop is part of asdf library
<Inline> load asdf and then load your file
<hjudt> Inline: if i do not enclose it inside handler-bind, it works without loading.
varjag has quit [Quit: ERC (IRC client for Emacs 25.2.2)]
<hjudt> so what is the difference?
<hjudt> also (load "quicklisp.lisp") works stand-alone, but not inside handler-bind.
<sjl_> hjudt: it would be easier for us to debug if you can paste the code (or a minimal example) somewhere
<sjl_> this is the file you're sbcl --load'ing?
<hjudt> yes
<sjl_> What does the handler-bind form you're trying to add look like?
<hjudt> in short: (handler-bind ((error #'(lambda (condition) (format ...) (sb-ext:exit :code 1)))) forms...)
<hjudt> i hope i didn't miss any parens
<sjl_> where forms... is line 3 of that file?
<sjl_> (also you don't need handler-bind if you're just going to bail entirely, handler-case would be plenty, but that's orthogonal)
<hjudt> actually i though about wrapping the whole file in it
<hjudt> ok, goal: try to execute all forms, if there are any errors exit with error code. the original error should be printed to give a clue what happened.
<sjl_> Well if you wrap the whole file in it, then lisp will need to finish reading the entire form before it can start executing it
<hjudt> i see
<sjl_> Part of reading that entire form will involve reading the symbols in the UIOP package
nsrahmad has left #lisp ["Leaving"]
<sjl_> which might not have been created yet, if it's the job of one of the forms to load it
<hjudt> i actually started defining a function exit-with-error to wrap single statements in it, that should help.
<hjudt> but thanks for explaining, now i believe to understand what's happening.
<hjudt> sbcl doesn't seem to quit to the os with an error code when something fails, but i need it to do that, otherwise the build will be reported successful.
<sjl_> I mean, you might be able to get away with just using `sbcl --disable-debugger --load ...`
<sjl_> but it's good to understand the problem too
<sjl_> --disable-debugger will make SBCL exit with an error code like you want
jack_rabbit has quit [Ping timeout: 252 seconds]
<hjudt> ok, that would be much easier then. will it exit on warnings too?
<sjl_> nope
<hjudt> good. i do not want it to error out on warnings ;-)
<sjl_> e.g. sbcl --disable-debugger --eval '(warn "foo")' --quit
<hjudt> great, thanks a lot
micro_ has quit [Ping timeout: 246 seconds]
micro has joined #lisp
khisanth__ has joined #lisp
nowhere_man has joined #lisp
anewuser has quit [Ping timeout: 250 seconds]
orivej has joined #lisp
JetJej has quit [Quit: [Quit]]
khisanth_ has quit [Ping timeout: 268 seconds]
anewuser has joined #lisp
mrcom has quit [Read error: Connection reset by peer]
mrcom has joined #lisp
eddof13 has joined #lisp
nanoz has joined #lisp
hhdave has quit [Quit: hhdave]
orivej has quit [Ping timeout: 250 seconds]
jstypo has quit [Ping timeout: 252 seconds]
notzmv has quit [Ping timeout: 272 seconds]
m00natic has quit [Remote host closed the connection]
Lycurgus has joined #lisp
orivej has joined #lisp
TonCherAmi has left #lisp ["Using Circe, the loveliest of all IRC clients"]
schweers has quit [Quit: ERC (IRC client for Emacs 26.1)]
Selwyn has quit [Remote host closed the connection]
khisanth__ is now known as Khisanth
Lycurgus has quit [Quit: Exeunt]
atgreen has quit [Read error: Connection reset by peer]
atgreen has joined #lisp
<LdBeth> Good morning
nanoz has quit [Read error: Connection timed out]
nanoz has joined #lisp
hiroaki has joined #lisp
spoeplau has quit [Ping timeout: 250 seconds]
JetJej has joined #lisp
emaczen has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
scymtym has quit [Ping timeout: 268 seconds]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 240 seconds]
<flip214> minion: pcl
<minion> pcl: pcl-book: "Practical Common Lisp", an introduction to Common Lisp by Peter Seibel, available at http://www.gigamonkeys.com/book/ and in dead-tree form from Apress (as of 11 April 2005).
anewuser has quit [Quit: anewuser]
Josh_2 has joined #lisp
hiroaki has quit [Ping timeout: 252 seconds]
hiroaki has joined #lisp
orivej has quit [Ping timeout: 246 seconds]
bexx2 has joined #lisp
bexx2 has quit [Read error: Connection reset by peer]
bexx2 has joined #lisp
bexx has quit [Ping timeout: 250 seconds]
Bike has quit [Ping timeout: 256 seconds]
Bike has joined #lisp
orivej has joined #lisp
Mr-Potter has joined #lisp
tomaw has quit [Read error: Connection reset by peer]
tomaw has joined #lisp
nanoz has quit [Ping timeout: 245 seconds]
orivej has quit [Ping timeout: 258 seconds]
kajo has quit [Ping timeout: 268 seconds]
mrcom has quit [Read error: Connection reset by peer]
undiscovered has quit [Remote host closed the connection]
gxt has quit [Quit: WeeChat 2.3]
mrcom has joined #lisp
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
Bike_ has joined #lisp
Bike has quit [Ping timeout: 256 seconds]
X-Scale` has joined #lisp
X-Scale has quit [Ping timeout: 244 seconds]
X-Scale` is now known as X-Scale
Bike_ is now known as Bike
jack_rabbit has joined #lisp
krrrcks has quit [Ping timeout: 244 seconds]
milanj has quit [Quit: This computer has gone to sleep]
Zaab1t has quit [Quit: bye bye friends]
karlosz has quit [Quit: karlosz]
gxt has joined #lisp
karlosz has joined #lisp
kajo has joined #lisp
orivej has joined #lisp
scymtym has joined #lisp
yvy has joined #lisp
JetJej has quit [Read error: Connection reset by peer]
solrize has quit [Ping timeout: 250 seconds]
warweasle has quit [Quit: rcirc on GNU Emacs 24.4.1]
eschatologist has quit [Excess Flood]
eschatologist has joined #lisp
xkapastel has quit [Quit: Connection closed for inactivity]
lnostdal has joined #lisp
bexx has joined #lisp
bexx2 has quit [Ping timeout: 246 seconds]
notzmv has joined #lisp
karlosz has quit [Quit: karlosz]
robdog has quit [Ping timeout: 252 seconds]
igemnace has quit [Quit: WeeChat 2.3]
angavrilov has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 272 seconds]
robdog has joined #lisp
<jackdaniel> without peeking into repl: (let ((x 3)) (loop as x = x then 4 do (print x) (return)) ; what is printed?
slyrus has quit [Quit: slyrus]
<no-defun-allowed> NIL then 4?
<no-defun-allowed> aaah! there's a return! NIL i think
<Bike> "as x = x"? is that legal?
<jackdaniel> I don't know, I've treated it as a no-brainer to initialize a variable (and shadow it lexially)
<jackdaniel> but indeed x = x gives me NIL (to my astonishment)
<jackdaniel> no-defun-allowed: are you sure you didn't peek in the repl? otherwise, what is your reasoning behind getting NIL first?
stux|RC has joined #lisp
pent has quit [Ping timeout: 252 seconds]
fowlduck has quit [Ping timeout: 252 seconds]
<LdBeth> jackdaniel: and CCL says unused lexical variable X
tripty has quit [Ping timeout: 252 seconds]
pent has joined #lisp
fowlduck has joined #lisp
<aeth> jackdaniel: I noticed this because I use :of-type a lot in my loops, which catches that.
<Bike> well, for a "for x = x" binding i would expect nil, yes, because i've done it before and got some bullshit like that
<aeth> yeah
asarch has joined #lisp
<Bike> clhs loop
tripty has joined #lisp
<asarch> One stupid question: Can CLIM do OpenGL operations?
<Bike> "he for and as keywords are synonyms; they can be used interchangeably." oh, alright then
<Bike> *the
slyrus has joined #lisp
<aeth> lol in this particular case in SBCL, of-type doesn't catch the NIL not being an integer it turns it to 0: (loop as x of-type integer = x then 4 do (print x) (return))
<jackdaniel> asarch: you can write CLIM backend which does OpenGL operations
<jackdaniel> but there is nothing in clim specification which would mention opengl
<no-defun-allowed> jackdaniel: no, i did think about that one, since i've been bitten by that before
<no-defun-allowed> LOOP binds new variables to NIL, so `(loop for foo = foo ...)` binds foo to NIL
phoe has quit [Ping timeout: 252 seconds]
<no-defun-allowed> something like (let ((foo 42)) (loop for foo = foo then (next foo) ...)) doesn't work, since foo gets bound in the LOOP first
<aeth> no-defun-allowed: except if you add "of-type integer" to the example code jackdaniel posted you get 0 in SBCL!
<aeth> Now *that* surprised me
<aeth> same with CCL.
<no-defun-allowed> didn't know that though, probably needs to get the uninitialized type right
<no-defun-allowed> i don't want to read through MIT loop but it's probably in there, since the "uninitialized" value has to have an appropriate type
<aeth> Well, I guess SBCL and CCL do the same thing that they do for array default values here.
<aeth> as in, NIL unless it can't be NIL, in which case it's the appropriate type's 0 (e.g. 0 or 0f0 or 0d0) or #\Nul
<aeth> lol actually it's #\x in SBCL if I make it of-type character
<aeth> It's #\Null as I would expect in CCL
xkapastel has joined #lisp
dtornabene has quit [Remote host closed the connection]
yvy has quit [Read error: Connection reset by peer]
pjb has quit [Ping timeout: 252 seconds]
Bike has quit [Ping timeout: 256 seconds]
emaczen has quit [Ping timeout: 264 seconds]
pjb has joined #lisp
<asarch> Thank you jackdaniel
<asarch> Thank you very much :-)
marvin2 has joined #lisp
<pillton> clhs 6.1.2.2
<specbot> Local Variable Initializations: http://www.lispworks.com/reference/HyperSpec/Body/06_abb.htm
<pillton> "If the optional type-spec argument is supplied for the variable var, but there is no related expression to be evaluated, var is initialized to an appropriate default value for its type."
<aeth> This doesn't work for every type because not every type has a default value. e.g. string (surprised it wasn't an empty string) or (integer 3 4)
* pillton ponders the definition of appropriate.
<aeth> Actually, I think (integer 3 4) should have an appropriate default value: the number closest to 0 (so in this case, 3) since 0 itself is off limits but would otherwise be the default
<pillton> For standard classes it could use the prototype.
<aeth> SBCL seems to think 0 is the reasonable default for (integer 3 4) here, though
<aeth> It would be nice to have a standard default value and a way to retrieve it given a type specification. So (type-default-value 'integer) would be 0 and (type-default-value '(integer 3 4)) would be 3 (closest to 0) etc. Then you could define your own. Obviously would have to rely on some portability library.
wusticality has joined #lisp
<aeth> Even better if it handled types like '(or null foo) and was able to detect that NIL is preferable there even if foo has a default. Would be hard for something like '(or integer character) though.
<no-defun-allowed> probably could just do the first one in an OR. AND would be fun though
<aeth> Well, you would want to prefer NIL when NIL was possible. You'd also want to prefer the simplest 0 possible (probably 0 then 0f0 then 0d0 or something) for numbers.
Kundry_Wag has joined #lisp
<aeth> You'd probably want to prioritize empty sequences, or sequences of default values of the minimum length if 0 is not allowed. Sequence hierarchy would probably be NIL before vector (i.e. #() if empty) before specialized vector (like string's "")
<aeth> I can see why this wasn't standardized even though there are several places that rely on default values
<aeth> s/if 0 is not allowed/if length 0 is not allowed/
Kundry_Wag has quit [Ping timeout: 272 seconds]
<pjb> aeth: sbcl probably uses the class prototype for initialization.
<pjb> Note: *class*, not *type*.
wusticality has quit [Ping timeout: 250 seconds]
<aeth> pjb: Type rules would be the hard part to solve, but imo would be worth solving. It would mostly be AND/OR combinations as well as numbers and sequences that would be tricky. Hard, but a finite problem.
wusticality has joined #lisp
<aeth> Well, AND might be pretty hard to solve.
<pjb> as long as you don't use satisfies…
iovec has quit [Quit: Connection closed for inactivity]
<aeth> Satisfies would be impossible to solve here afaik. Would probably just be best to extend deftype at that point.
<pjb> or just let the user specifies an :initial-element.
LiamH has quit [Quit: Leaving.]
jmercouris has joined #lisp
phoe has joined #lisp
wusticality has quit [Ping timeout: 258 seconds]
shifty has joined #lisp
phoe has quit [Ping timeout: 252 seconds]
<aeth> pjb: well, having a method that could override the default for a class would be preferable to a specified initial-element every time imo
<aeth> Types are trickier. "Closest to 0 in a range and of the simplest type" probably makes the most sense for numbers. "Closest to length 0 and if not length 0 filled with elements of the default" makes the most sense for a sequence type. AND, OR, SATISFIES, etc., might be too hard, although I'd really like to see (or null foo) work at the very least.
orivej has joined #lisp
atgreen has quit [Ping timeout: 258 seconds]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 250 seconds]
<pillton> I'm not sure all of this complexity is worth it. What is appropriate depends on the context as is illustrated by finding the maximum element of an empty sequence.
Kaisyu has joined #lisp
Mr-Potter has quit [Quit: Leaving]
<aeth> pillton: But it would be very useful for custom defstructs/defclasses where you provide a type and get a reasonable default value from that automatically, even if no implementation uses it for LOOP, MAKE-ARRAY, and wherever else the standard uses defaults.
<aeth> Right now the only easy automatic default value is NIL, which requires the type to be (or null ...) or one of the handful of types that supports NIL (list, sequence, symbol, boolean, T, etc.)
mrcom has quit [Read error: Connection reset by peer]
<aeth> You also see default values in gethash and a few other places (in the function calls themselves), which other macros/functions might want to override in a somewhat smart way.
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 250 seconds]
<pillton> For that case you could use the prototype object specified by MOP. (What I and pjb said before).
<pillton> Structs would be tricky since you can specify storage.
Bike has joined #lisp
bexx has quit [Read error: Connection reset by peer]
Kundry_Wag has joined #lisp
bexx2 has joined #lisp
metallicus has joined #lisp
mrcom has joined #lisp
metallicus has quit [Client Quit]
Kundry_Wag has quit [Ping timeout: 258 seconds]
sjl_ has quit [Ping timeout: 260 seconds]
atgreen has joined #lisp