<psilord>
Hello all. I have some news that may be of interest. m fiano and I stopped collaborating and a hard fork occurred for the Virality Game Engine. He took a copy of the source and the name and went his own way. The rest of us developers formed Colony Game Engine and are continuing development.
<ixelp>
GitHub - colonyengine/colony: A Common Lisp Game Engine
<psilord>
The engine is still in the early stages of development, but there are commits going into it on a fairly regular basis which are evolving the source and adding features.
<psilord>
Thank you!
<psilord>
(Oh! If oyu ever want to hang out with the devs or help out with the source, documentation, or making examples, we hang out in #colony on libera.chat.)
Shmill has joined #commonlisp
akoana has joined #commonlisp
jonatack has joined #commonlisp
<random-nick>
the readme says "Colony Engine was hard forked from Virality Engine on 2024-03-14." is the 03 a typo?
<psilord>
March 14th, 2024. I know dates are so confusing among international people....
<ixelp>
2.4 Standard Macro Characters | Common Lisp Nova Spec
<nij->
(get-macro-character #\:) ; => NIL
<nij->
Why? If not, how does a symbol A:B gets read?
<Pixel_Outlaw>
What is a "nova" spec?
<bike>
colon is not a macro character, it's part of the symbol syntax
<bike>
the reader algorithm is explained in exhaustive detail in 2.2 and interpretation of tokens is 2.3. symbols (and numbers) are tokens, made of constituent characters as opposed to macro characters
<ixelp>
2.3 Interpretation of Tokens | Common Lisp Nova Spec
<nij->
Oh here.
<nij->
However, nothing prevents (set-macro-character #\: (lambda (...)))
<nij->
So one can change how A:B:C is parsed!
<bike>
i mean. sorta. not in any reasonable way
<bike>
if : is made into a macro character, it's no longer a constituent, so you have to handle everything yourself
<bike>
but even then, if you actually write a:b:c, that would read "a" as a token, and then after that hit the : macro
<nij->
One has to do it very carefully then :|
<nij->
!
<bike>
so you'd end up reading two objects, the "a" symbol and whatever the macro makes out of :b:c
<nij->
No...
<bike>
yes
<nij->
The notion of unnested package is so deeply baked into CL standard :(
<bike>
well, yeah
<bike>
wait until you hear that package names aren't symbols
<nij->
Ooops.. another question.
<nij->
"If the first non-atomic top level form in the file is not an in-package form, then the current package at the time load is called must be a package with the same name as the package that was the current package at the time compile-file was called." https://novaspec.org/cl/3_2_Compilation
<ixelp>
3.2 Compilation | Common Lisp Nova Spec
<nij->
So first, this severely suggests we put (in-package ..) as the first non-atomic top level form in files.
<nij->
Second.. the file compiler is mandated by the standard to respect in-package... how about in-readtable?
<nij->
Yep! There's no in-readtable in the standard. But how would one even implement one, without hacking the compiler of the CL implementation?
<nij->
Hmm but if in-readtable is implemented as this: > (eval-when (:compile-toplevel :load-toplevel :execute) (setf *readtable* whatever))
terrorjack has joined #commonlisp
<nij->
That means the following file, if it wants to use the standard readtable, has to remember to add another (in-readtable) form in the top of the file?
<beach>
No, COMPILE-FILE binds *READTABLE* to itself during compilation.
<beach>
So by the time the compilation is finished, the value of *READTABLE* is back to what it was before compilation was started.
<nij->
(I'll have to read what eval-when again. Thanks!)
<nij->
(Good. I need to learn this in 1 day or 2. Thank you both!)
synchrom1 has quit [Read error: Connection reset by peer]
<beach>
Sure.
synchromesh has joined #commonlisp
<nij->
What does (let ((*X* *X*)) ..) mean? *X* is already dynamic. Why should we rebind it again?
<beach>
It creates a new binding for the duration of the body of the LET. The initial value of the new binding is the current value of the special variable.
<beach>
It is no different from (LET ((*X* 234)) ...)
<beach>
In a LET binding, the initialization form is evaluated first. Then the variable is bound, then the body is evaluated.
<nij->
I understand this example. But isn't it better to write (let ((x *x*)) (setf x 345) x) instead?
<beach>
But what won't work if the body of a let calls a function that uses *X* rather than X, as is the case when a file is compiled and the code uses *PACKAGE* and *READTABLE*.
<jmercouris1>
beach: are you ALREADY AWAKE?
<jmercouris1>
what time do you wake up?
<nij->
Oh, I see. Thanks.
<beach>
jmercouris1: Around this time is normal for me.
<jmercouris1>
that's incredible, today I woke up at around 11AM and it was tough
<beach>
Heh.
<nij->
Everyone's different. I like waking up at 5 or 6. It's very rare for me to wake up after 8:30. And 11am? Only when I'm very sick of heavily jetlagged.
* nij-
wakes up at 6am almost everyday yet remains a noob :-)
poplin has quit [Read error: Connection reset by peer]
poplin has joined #commonlisp
X-Scale has quit [Quit: Client closed]
pfdietz has joined #commonlisp
waleee has joined #commonlisp
mesuutt has joined #commonlisp
mesuutt has quit [Ping timeout: 268 seconds]
istewart_ has quit [Quit: Konversation terminated!]
mgl_ has joined #commonlisp
mm007emko has quit [Read error: Connection reset by peer]
mm007emko has joined #commonlisp
tedwing has quit [Ping timeout: 264 seconds]
nickiminjaj|2 has joined #commonlisp
nickiminjaj has quit [Ping timeout: 252 seconds]
nickiminjaj has joined #commonlisp
mesuutt has joined #commonlisp
ldb has joined #commonlisp
nickiminjaj|2 has quit [Ping timeout: 256 seconds]
ldb has quit [Client Quit]
mesuutt has quit [Ping timeout: 256 seconds]
donleo has quit [Quit: Leaving]
green_ has joined #commonlisp
ronald has quit [Read error: Connection reset by peer]
cage has quit [Quit: rcirc on GNU Emacs 29.2]
ronald has joined #commonlisp
tedwing has joined #commonlisp
nickiminjaj has quit [Read error: Connection reset by peer]
tedwing has quit [Client Quit]
ronald has quit [Remote host closed the connection]
ronald has joined #commonlisp
green_ has quit [Ping timeout: 255 seconds]
waleee has quit [Ping timeout: 252 seconds]
ronald_ has joined #commonlisp
ronald has quit [Ping timeout: 268 seconds]
green_ has joined #commonlisp
waleee has joined #commonlisp
trannus_aran has joined #commonlisp
mesuutt has joined #commonlisp
mesuutt has quit [Ping timeout: 252 seconds]
oneeyedalien has quit [Quit: Leaving]
attila_lendvai has joined #commonlisp
mgl_ has quit [Ping timeout: 255 seconds]
akoana has joined #commonlisp
ronald_ has quit [Ping timeout: 240 seconds]
X-Scale has joined #commonlisp
ronald has joined #commonlisp
trannus_aran has quit [Quit: trannus_aran]
phadthai has quit [Read error: Connection reset by peer]
wacki has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
green_ has quit [Ping timeout: 272 seconds]
phadthai has joined #commonlisp
mesuutt has joined #commonlisp
mesuutt has quit [Ping timeout: 256 seconds]
palter has joined #commonlisp
green_ has joined #commonlisp
amb007 has quit [Ping timeout: 260 seconds]
bigbookofbug has joined #commonlisp
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
mgl_ has joined #commonlisp
ec has quit [Ping timeout: 260 seconds]
ec has joined #commonlisp
pve has quit [Quit: leaving]
reb has joined #commonlisp
attila_lendvai has quit [Ping timeout: 246 seconds]
mesuutt has joined #commonlisp
mesuutt has quit [Ping timeout: 252 seconds]
mesuutt has joined #commonlisp
mesuutt has quit [Ping timeout: 272 seconds]
lucasta has joined #commonlisp
rgherdt has quit [Remote host closed the connection]
<yottabyte>
I thought lem was not just an editor, but an emacs mode... is that not right?
bitmapper_ has joined #commonlisp
dino_tutter has quit [Ping timeout: 272 seconds]
<holycow>
incorrect
<holycow>
lem is just an editor
<yottabyte>
ah
<yottabyte>
do you like it?
<holycow>
it replicates a bunch of emacs features philosophically
<holycow>
but it seeks to not replace emacs
<yottabyte>
oh?
<holycow>
instead, while different devs have their own interests, there is a general trend for Lem to become / do it's own thing
<holycow>
emacs will always be emacs and Lem will do it's own thing
<holycow>
i love it. i only use Lem, i stopped using Emacs. Purely because I like the idea of dogfooding common lisp end to end. My window manager is Stumpwm for example.
<holycow>
Lem is also a very young project that has come a long way in a short period of time. It's not perfect nor is there any claim for any such thing
bitmapper_ is now known as bitmapper
amb007 has quit [Ping timeout: 256 seconds]
<yottabyte>
what is dogfooding?
<holycow>
use your own product
<yottabyte>
oh, do you work on elm or stumped?
<yottabyte>
stumpwm*... auto correct
<yottabyte>
and lem*
<holycow>
none of the above
<holycow>
i am a pure noob i cannot code
<holycow>
i'm just learning
<holycow>
but i am a sysadmin and a fan of various projecgts
amb007 has joined #commonlisp
<yottabyte>
neat!
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
<bjorkintosh>
holycow, surely, you've written one or two scripts, however short?
shka has quit [Ping timeout: 246 seconds]
<holycow>
well yes, but my touching any line of code is a disgrace to programmers all over the world. i will never reach that height :)
poplin has quit [Read error: Connection reset by peer]
dom2 has quit [Remote host closed the connection]
poplin has joined #commonlisp
<bjorkintosh>
don't sell yourself un-tall :-)
<bjorkintosh>
the only people born programming will never exist. everyone learns.
x4d6165 has joined #commonlisp
mesuutt has joined #commonlisp
alcor has quit [Ping timeout: 256 seconds]
mesuutt has quit [Ping timeout: 264 seconds]
<dbotton>
<bjorkintosh> I started with binary when born - cry / not cry
<bjorkintosh>
hahaha. congratulations dbotton.
<holycow>
dbotton: were you one of those that typed in the machine code programs from magazines into a c64?
<holycow>
:)
<holycow>
i'm placing a $20 bet the answer is yes
<dbotton>
Actually I was doing that but on TRS-80 level 1s
<dbotton>
pre-c64
<holycow>
machine code programs? hehe
<dbotton>
yes, had a table of 8080 assembly instructions would look up the machine codes and put them in DATA statements, then poke them in memory and execute the programs
<bjorkintosh>
see holycow? dbotton is a trash programmer.
<bjorkintosh>
if dbotton can do it, any one can do it!
<holycow>
rofl!
<dbotton>
agreed if a guy with my spelling and grammar can do it anyone can
<bjorkintosh>
I've never used a trash 80. only ever seen them.
<dbotton>
it is funny to imagine that today my ear phones are more powerful than they were
<holycow>
we live in a stupid time
<holycow>
my workstation is fully virtualized with hardware passthrough
tibfulv has quit [Ping timeout: 260 seconds]
<holycow>
my local hardware array is managed by a virtualized truenas vm evn
<holycow>
explaining that to someone back then, you wouldn't have the language
<holycow>
dbotton: you mentioned the other week that clog on mobile can do push notifications on ios / android. did i understand that right?
<dbotton>
correct
<holycow>
huh
<dbotton>
there are tons of JS libs that let you do that
<dbotton>
someday when have the time (in this case a sponsor as I have no need for it) I will create template apps for that.
<bjorkintosh>
holycow, the ancient ibm 360 mainframes had arguably far better virtualization than you get with your PC
<holycow>
can it access all native resources just like a native app? camera, finger print scanner, apple pay ... all that stuff?
<dbotton>
there are cross platform JS libs for all of it
<holycow>
bjorkintosh: good point, not familiar but watched a bunch of videos
<holycow>
dbotton: really?
<holycow>
huh
<bjorkintosh>
yeah.
<holycow>
how do the js libraries get out of the vitual machine? they speak to some intermediary layer? is that somehow something clog includes on mobile? i have to read up on that again
<dbotton>
search writing html / java script apps for ios and android
<holycow>
fair enough, i will do that. thanks.
<dbotton>
your clog code becomes part of that "bundle" controlling the JS and telling it what to do etc
<dbotton>
just like on your local machine
<holycow>
oh i see, clog uses a websocket-server. huh.
<holycow>
bjorkintosh: *nod* i've done a bit of a dive on computer history, and by 50s/60s, the vast majority of waht we use today was invented, it seems to me anyway. minus the wireless, mobile and a few other niche things.
<holycow>
dbotton: aha, intersting reading.
<holycow>
bjorkintosh: bookmarking that link, thx.
<bjorkintosh>
they did have wireless. Started in Hawaii with aloha net.
<holycow>
what? lol, well of course. why would we in the future invent anything at all, heh
<dbotton>
my goal at the moment is solid dev environment but at some point will get to it, btw the other way is to use ECQ (ECL + qt and the qt browser) it is already being done
<dbotton>
then you just access the C APIs native
<holycow>
dbotton: btw, your upgrade to the dev environment, including look and feel is terrific
<holycow>
you really made it look and feel great
<dbotton>
there is a link to that ECL project in the readme of clog
<holycow>
oh interesting, okay. well i'm almost done my first silly clog app, looking forward to learning more about the mobile side of things, that is really important.
<bjorkintosh>
holycow, this will make you go "holy cow". they *even* had lisp!
<bjorkintosh>
in '59!!
amb007 has quit [Ping timeout: 255 seconds]
<holycow>
bjorkintosh: that part i am aware of :)
<holycow>
also apl which boggles my imagination really
<dbotton>
honestly less then you think, you can run a CLOG server on the internet and do and installable html page and looks and works for 95% all use cases for mobile
<holycow>
it's why i asked dbotton the other day about how he foudn lisp, was curious how he ended up here considering how comfortable he is with algol style syntax
<dbotton>
you just don't get the app store
<dbotton>
at this point I have fallen very much in love with the lisp syntax
<dbotton>
so
<holycow>
dbotton: interesting. funny ou mention that, i have a wordpress project that may end up being deployed that way. there are vendors that actually provide the app for you and do integration work and help with publishing through store
<holycow>
clog could be done that way as well ... or go the traditional way through the app dev account process i guess
<holycow>
dbotton: i have a long and painful theory about syntax as it relates to the universe as a giant computation device :)
<holycow>
i was just working with sql queries and figuring out how to nest sql queries and realized that prefix notation allows for infinite nesting without guessing for free
tibfulv has joined #commonlisp
<holycow>
allright, now i have to dig into apache cordova, that looks interesting. thx for the linkage
mgl_ has quit [Ping timeout: 260 seconds]
mesuutt has joined #commonlisp
lagash has quit [Remote host closed the connection]
lagash has joined #commonlisp
<holycow>
bjorkintosh: that is a GREAT article. thx. that filled in a lot of details for me.