Lord_Nightmare has quit [Remote host closed the connection]
Lord_Nightmare has joined #commonlisp
robin_ has joined #commonlisp
robin has quit [Ping timeout: 260 seconds]
zoravur has joined #commonlisp
robin_ is now known as robin
ec has joined #commonlisp
robin has quit [Remote host closed the connection]
robin has joined #commonlisp
robin_ has joined #commonlisp
robin has quit [Ping timeout: 276 seconds]
amb007 has joined #commonlisp
waleee has quit [Ping timeout: 246 seconds]
robin_ is now known as robin
amb007 has quit [Ping timeout: 246 seconds]
st_aldini has quit [Read error: Connection reset by peer]
st_aldini has joined #commonlisp
mwnaylor has quit [Ping timeout: 245 seconds]
istewart has joined #commonlisp
bilegeek has joined #commonlisp
bjorkint0sh has quit [Quit: "Every day, computers are making people easier to use." David Temkin]
bjorkintosh has joined #commonlisp
bjorkintosh has joined #commonlisp
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 252 seconds]
Lord_of_Life has joined #commonlisp
amb007 has quit [Ping timeout: 245 seconds]
robin has quit [Ping timeout: 255 seconds]
istewart has quit [Quit: Konversation terminated!]
robin has joined #commonlisp
rtypo has quit [Ping timeout: 276 seconds]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
laravelnewbie has joined #commonlisp
laravelnewbie has quit [Client Quit]
decweb has quit [Ping timeout: 252 seconds]
amb007 has quit [Ping timeout: 246 seconds]
bilegeek has quit [Quit: Leaving]
amb007 has joined #commonlisp
jonatack has quit [Ping timeout: 246 seconds]
jonatack has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
oneeyedalien has joined #commonlisp
oneeyedalien has quit [Client Quit]
ebrasca has quit [Remote host closed the connection]
wacki has joined #commonlisp
shka has joined #commonlisp
alcor has joined #commonlisp
awlygj has joined #commonlisp
Pixel_Outlaw is now known as Pisel_Outlaw
Pisel_Outlaw is now known as Portable_Outhous
mgl has joined #commonlisp
mgl has quit [Ping timeout: 272 seconds]
Cymew has joined #commonlisp
pve has joined #commonlisp
attila_lendvai has joined #commonlisp
Portable_Outhous has quit [Quit: Leaving]
mgl has joined #commonlisp
cercopith has joined #commonlisp
danse-nr3 has joined #commonlisp
attila_lendvai has quit [Ping timeout: 252 seconds]
cage has joined #commonlisp
cage has quit [Excess Flood]
cage has joined #commonlisp
akoana has joined #commonlisp
akoana has quit [Quit: leaving]
alternateved has joined #commonlisp
danse-nr3 has quit [Quit: on the move]
mgl_ has joined #commonlisp
mgl has quit [Ping timeout: 265 seconds]
danse-nr3 has joined #commonlisp
szkl has quit [Quit: Connection closed for inactivity]
zxcvz has joined #commonlisp
zxcvz has quit [Client Quit]
rozenglass has quit [Ping timeout: 276 seconds]
zoravur has quit [Quit: Client closed]
rozenglass has joined #commonlisp
Cymew has quit [Quit: Konversation terminated!]
Cymew has joined #commonlisp
danse-nr3 has quit [Read error: Connection reset by peer]
danse-nr3 has joined #commonlisp
wacki has quit [Read error: Connection reset by peer]
wacki has joined #commonlisp
Th30n has joined #commonlisp
danse-nr3 has quit []
Cymew has quit [Quit: Konversation terminated!]
Cymew has joined #commonlisp
pillton has quit [Remote host closed the connection]
decweb has joined #commonlisp
edgar-rft_ has joined #commonlisp
yitzi has joined #commonlisp
edgar-rft has quit [Ping timeout: 260 seconds]
Cymew has quit [Quit: Konversation terminated!]
Cymew has joined #commonlisp
Cymew has quit [Quit: Konversation terminated!]
Cymew has joined #commonlisp
rtypo has joined #commonlisp
X-Scale has joined #commonlisp
X-Scale has quit [Ping timeout: 256 seconds]
edgar-rft_ is now known as edgar-rft
JuanDaugherty has joined #commonlisp
rozenglass has quit [Ping timeout: 252 seconds]
rozenglass has joined #commonlisp
Cymew has quit [Quit: Konversation terminated!]
Cymew has joined #commonlisp
Cymew has quit [Quit: Konversation terminated!]
Cymew has joined #commonlisp
danse-nr3 has joined #commonlisp
jonatack has quit [Ping timeout: 246 seconds]
Cymew has quit [Quit: Konversation terminated!]
Cymew has joined #commonlisp
<paulapatience>
I'm working on a plotting library where each plot element is a class. For example, the LINE class would have the data source, mark shapes, etc., as slots. The LAYER class would hold a list of plot-element objects. Then the RENDER function takes the outermost plot element as argument and plots it. The only issue with this is that repeatedly writing MAKE-INSTANCE seems overly verbose.
<paulapatience>
For example, to make an object representing a layered plot of lines would be something like (make-instance 'layer :layers (list (make-instance 'line ...) (make-instance 'line ...))). What I've settled for doing is to define a function for each plot-element class which calls MAKE-INSTANCE, possibly taking some required parameters corresponding to required slots. That might give
<paulapatience>
something like (layer (line ...) (line ...)) for the previous example. Does anybody have any better ideas for how to represent this plot-description DSL?
<beach>
Looks good to me.
Th30n has quit [Quit: going off]
ec has quit [Remote host closed the connection]
ec has joined #commonlisp
<scymtym>
paulapatience: if i remember correctly, jackdaniel has a CLIM-based plotting library that is based on the "The Grammar of Graphics". maybe you could compare notes
prokhor has quit [Remote host closed the connection]
<paulapatience>
beach: Thanks. scymtym: Ah, that's true, I had forgotten about that. Thanks.
lucasta has joined #commonlisp
mwnaylor has joined #commonlisp
dans21526 has joined #commonlisp
danse-nr3 has quit [Ping timeout: 245 seconds]
thuna`` has joined #commonlisp
Cymew has quit [Quit: Konversation terminated!]
Cymew has joined #commonlisp
amb007 has joined #commonlisp
cage has quit [Quit: rcirc on GNU Emacs 29.4]
Cymew has quit [Ping timeout: 248 seconds]
Cymew has joined #commonlisp
amb007 has quit [Ping timeout: 252 seconds]
spdegabrielle has joined #commonlisp
Cymew has quit [Quit: Konversation terminated!]
dans21526 has quit [Ping timeout: 246 seconds]
_cymew_ has joined #commonlisp
rainthree has joined #commonlisp
cage has joined #commonlisp
cage has quit [Excess Flood]
cage has joined #commonlisp
pkal has quit [Remote host closed the connection]
danse-nr3 has joined #commonlisp
_cymew_ has quit [Ping timeout: 272 seconds]
JuanDaugherty has quit [Quit: JuanDaugherty]
rahmanlar has quit [Remote host closed the connection]
rainthree has quit [Ping timeout: 244 seconds]
rahmanlar has joined #commonlisp
rainthree has joined #commonlisp
Akbar-Birbal has left #commonlisp [#commonlisp]
thuna`` has quit [Read error: Connection reset by peer]
thuna`` has joined #commonlisp
<aadcg>
is the following idiom acceptable? (defun foo (arg) (let ((arg (1+ arg))) arg))
yitzi has quit [Ping timeout: 246 seconds]
<beach>
It is not ideal to use the same name for two different things.
yitzi has joined #commonlisp
<beach>
In this case, you also don't need the additional variable.
<aadcg>
so it would be wiser to say: (defun foo (arg) (let ((%arg (1+ arg))) %arg))
<beach>
That's no better.
<aadcg>
beach: correct, indeed. it's a bad example to absctract the question I wanted to ask
<aadcg>
why not?
<beach>
Clearly there is a distinction between the argument passed to the function and one plus that argument, so they probably should have different names.
amb007 has joined #commonlisp
<beach>
But since your example has been abstracted, that is hard to determine.
amb007 has quit [Read error: Connection reset by peer]
<aadcg>
ok so let me specific about the case at hand. one second
<beach>
Like you wouldn't say (defun foo (person) (let ((person (name person))) person))
<beach>
But we don't know whether 1+ is an abstraction here as well.
<beach>
aadcg: My (admittedly small) family just announced that dinner is served. I hope someone else can help.
amb007 has joined #commonlisp
<aadcg>
say you have a fn that ensures that the return value is of type quri:uri
<aadcg>
and then you may define a fn as follows: (defun foo-url (url) (let ((url (url url))) ...))
<aadcg>
the question: is this idiom acceptable? or would you rather rename the url fn to somethating else (say ensure-quri-url) and rename the variable inside the let clause to smth else too (say quri-url)?
<thuna``>
aadcg: In a situation like that I would do something like (defun foo (url-designator) (let ((url (coerce-to-url url-designator)))...)) or (defun foo (url) (setf url (coerce-to-url url))...) or have it so that all functions directly working on QURI:URL objects also work with URL-DESIGNATORs and just pass the degisnator around in FOO as URL.
<paulapatience>
aadcg: In my opinion that is a good use of shadowing.
<thuna``>
s/degisnator/designator/
<aadcg>
thuna``: I see your line of thought, thanks
<paulapatience>
Your specific example might be better served like thuna`` described, but I routinely reuse names in similar situations
<aadcg>
paulapatience: I see. it may come down to matter of personal preference, but I wanted to listen to your thoughts.
<thuna``>
It's not horrible to do (defun foo (thing) (let ((thing <do something to thing>))...)), I myself use that pattern often, but the <...> being (url url) is the reason this is standing out so much in this instance
<aadcg>
thuna``: that's precisely what strikes me about it too!
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
yitzi has quit [Remote host closed the connection]
amb007 has quit [Ping timeout: 255 seconds]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
danse-nr3 has quit []
amb007 has quit [Ping timeout: 246 seconds]
amb007 has joined #commonlisp
awlygj has quit [Quit: leaving]
amb007 has quit [Ping timeout: 244 seconds]
McParen has joined #commonlisp
amb007 has joined #commonlisp
rainthree has quit [Read error: Connection reset by peer]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
_cymew_ has joined #commonlisp
mgl_ has quit [Ping timeout: 252 seconds]
ym has joined #commonlisp
robin has quit [Ping timeout: 246 seconds]
robin has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
<ixelp>
Yukari Hafner | Creating Open Source Software, Art and Games | Patreon
<Shinmera>
Also to be clear this has been a thing that's been in the works on and off since 2022.
<Shinmera>
and we're unfortunately still quite a step from done
<Shinmera>
the current stumbling block is callbacks being busted when elfination and aslr are involved
paardenslager has quit [Quit: Client closed]
<aeth>
seems a bit late since the Switch 2 is rumored to be around the corner?
<Shinmera>
cool man thanks real useful comment
<Shinmera>
but also no, the challenges will be much the same
<Shinmera>
and solving them now will also solve them for switch 2 and similar envs
<Pixel_Outlaw>
So, the idea would be to make games we purchase your SDK then onbtain the dev license/kit from Nintendo?
<Shinmera>
there's no "idea"
<Pixel_Outlaw>
Oh, so you're tinkering for now?
<Shinmera>
you sign the ninty NDA and if you're cool and ask me nice I'll give you access to the code base
varjag has joined #commonlisp
<Shinmera>
there's no way in heck anyone else is going to pay me anything to put lisp on the switch
<Shinmera>
there's no business here
<Pixel_Outlaw>
It would be amusing to just have a superficial game that you can stop and enter the Lisp REPL to program on there. Just to get past Nintenda. :)
<Shinmera>
you can't do that, you will get banned and your game removed
<Pixel_Outlaw>
Make personal games without their kit by downloading your trojan Lisp REPL.
<Shinmera>
the dragonruby folks tried this "joke" and exactly that happened
<Pixel_Outlaw>
And I bet an "update" went out uninstalling the software too.
<Shinmera>
Iunno about that
<Shinmera>
All I know is that if you're thinking of being cheeky you're wasting your time and the predictable thing will happen
<Pixel_Outlaw>
Generally I wait until my Nintendo consoles are "eDead" before I do.
<Pixel_Outlaw>
They're pretty good about "fixing" exploits.
<Shinmera>
you can already do homebrew on the switch and have been able to for many years if that's what you're into
<Pixel_Outlaw>
I thought they patched that.
<Pixel_Outlaw>
Yeah, ideally I'd like to do homebrew.
<Shinmera>
my work isn't for homebrew because comparatively nobody runs homebrew
<Pixel_Outlaw>
So this is to facilitate your next game then, and if people want to tag along then they can?
<Shinmera>
this is to port kandria
<Pixel_Outlaw>
Ah ok.
<Shinmera>
my next game won't be out for years
<aeth>
Pixel_Outlaw: there's also the Steam Deck, which is completely unlocked and already runs SBCL if you just want a handheld SBCL. Or the many Windows or emulation-oriented handhelds in the same sort of form factor.
<Shinmera>
and probably won't run on the potato that is the switch (or rather, I can't be bothered to optimise until it would)
<aeth>
Though the lack of a keyboard would make the REPL not very fun unless you used a bluetooth keyboard
<Pixel_Outlaw>
For some time I've wanted to make a couch-op version of Qix.
<aeth>
JPEG is a paywalled standard from the Joint Photographic Experts Group of the ISO published in 7 sold-separately parts that combine to what looks like 800 CHF. https://en.wikipedia.org/wiki/JPEG#JPEG_standard
<aeth>
I'm not sure how new implementations of JPG/JPEG get around this issue (maybe they just study existing implementations?)
<aeth>
JPEG XL is similar... 4 parts combining to about 400 CHF, with backwards compatibility to JPEG that may or may not be included in those.
<aeth>
oooh it's just bindings... that's not like pngload at all, then... pngload is native.
<aeth>
I don't think there's a way around raising about 1300 USD/EUR for native CL JPEG and JPEG XL support, then, for access to the standards alone.
<aeth>
GIF, PNG, WebP, and AVIF don't have this barrier. Wait, no, AVIF uses HEIF, which it cites as a 216 CHF (so, roughly 200 USD/EUR) ISO standard.
<Noisytoot>
can you get the final drafts without the paywall?
<aeth>
I'm not sure.
<Noisytoot>
who actually pays for standards?
<edgar-rft>
you can pay on my *STANDARD-INPUT* if you really want
<aeth>
Noisytoot: afaik, implementers are expected to pay for such standards, which for FOSS basically means they eat the loss since it's not like they can sell it
<aeth>
it funds the standard bodies
skeemer has joined #commonlisp
<Noisytoot>
it funds the standard bodies who just publish the standards, not the people who actually make the standards
<aeth>
the alternative model is open access to the standard itself, but not to the standards bodies, where afaik you have to be a paid member, e.g. W3C
<aeth>
either way, the standards are generally made by people employed by companies like Google because nobody else can navigate the patent/legal minefield
<Noisytoot>
unauthorized copying is an option
<aeth>
since there are probably like 20 independent implementations (maybe more for JPEG and only JPEG) they can probably tell who you are because you didn't buy it... and they probably have a paper trail and stuff and lots of lawyers
<aeth>
unless you found a second-hand copy in a binder somewhere I guess
<aeth>
print copy
<aeth>
the way to go is probably to get as far as possible from reverse-engineering existing FOSS implementations and public descriptions of how it works on the internet, and then fundraise the money when it's clear that it's an almost-ready implementation
<aeth>
though the standard is probably the easy part since files in the wild may not match what the standard says
<zyd>
aeth: By "like pngload" I simply meant the functionality which is useful for loading textures in OpenGL. Flipping the y axis and the dumping of the raw bytes to an array (and, particularly nice a static array). I'm not particularly concerned with whether or not texture loading is native lisp so long as its "lispy enough". So, cl-turbojpeg will do.
<Noisytoot>
they can't prove that you didn't get a second-hand copy, or use the final draft (if it's available) and have someone tell you the differences between the final draft and the actual standard, or base it on existing free implementations and public descriptions