Тёмный
The Lisper
The Lisper
The Lisper
Подписаться
Hi 👋, I'm Alberto, if you are curious about applying the old Lisp art in the modern cloud, you are in the right place!

Here, web dev, DevOps and security meet macros and interactive programming. You should expect to find videos about languages like Common Lisp or Clojure, but also Unix and Emacs-related stuff.
Building a Webapp in Clojure with Ring
8:24
2 месяца назад
ABCL (Common Lisp) Installation
7:10
3 месяца назад
Common Lisp: defvar vs defparameter
5:37
5 месяцев назад
Tail Recursion With Common Lisp, Do or Don't?
5:01
5 месяцев назад
Myth: Lisp Is Slow
4:31
5 месяцев назад
Build A Countdown Using Phoenix Liveview
5:35
5 месяцев назад
Closures in Common Lisp, when CLOS Is Too Much
7:39
6 месяцев назад
Lisp 1 vs Lisp 2
6:25
6 месяцев назад
Dynamic Page With HTMX and Common Lisp
4:41
6 месяцев назад
What is Lisp used for?
4:56
7 месяцев назад
Exploring Datomic with the Clojure REPL
7:34
7 месяцев назад
Комментарии
@haroldostenger5160
@haroldostenger5160 3 дня назад
Do you know of anything like flet for multiplatform (gtk / web/ mobile) implementations usable and integrateable like this from CL ?
@the-lisper
@the-lisper 3 дня назад
No, sorry... The CL ecosystem provides a lot of building blocks, but integration with many platform is a lot of works and requires a bigger community... I think that the best chance is to integrate CL as a shared library (ECL or sbcl-librarian) into some other products outside the CL ecosystem... (or buy LispWorks)
@marknaylor7322
@marknaylor7322 10 дней назад
I like how emacs org-mode is used to drive the presentation.
@the-lisper
@the-lisper 8 дней назад
Org-mode is convenient everywhere! :P
@40Ants
@40Ants 14 дней назад
Really useful video. I heard about py4cl but didn't use for anything practical yet.
@the-lisper
@the-lisper 13 дней назад
I also really like the idea, Lisp has to find ways to talk to the outside world. This way it can be used to write the core logic and take advantage of libraries that receive a lot of development!
@user-xo3jc6ih6p
@user-xo3jc6ih6p 19 дней назад
Informative! I was aware of those libraries, but as a CL beginner I needed some perspective. These videos are a public service.
@the-lisper
@the-lisper 19 дней назад
Yes, I also think that some context is important when choosing a library!
@amorphousblob2721
@amorphousblob2721 Месяц назад
With the _closer-mop_ library in most Common Lisp implementations, you can deny access to a slot by defining the SLOT-VALUE-USING-CLASS method. Your method would check if it's being called by an approved caller (using a special variable that either does or doesn't have the correct sentinel variable, and a macro to define approved accessor functions in such a way that the special variable has the sentinel value), and it would signal an error if it wasn't. A metaclass that uses a custom slot type would give you a place to store the visibility of each slot.
@the-lisper
@the-lisper 28 дней назад
Thanks for the tip! I think that one should have strong reason to build such a construction, most of the time I would provide the "public interface" and discourage the usage of the "internal interface". The user may mess up at its own risk. Nevertheless, yeah, it is interesting the one can do whatever he wants!
@PixelOutlaw
@PixelOutlaw Месяц назад
I think the CLOS is a very good OOP system. It's unfortunate that C++ and Java have implemented such schizophrenic notions of classes souring an entire generation on what OOP can be. I used functions quite heavily, but for stateful components in a system (especially when I want dispatch) CLOS is excellent. There are quite a few CLOS books too!
@the-lisper
@the-lisper 28 дней назад
Yes, "Object-Oriented Programming in COMMON LISP: A Programmer's Guide to CLOS" and "The Art of the Metaobject Protocol" is the way to learn CLOS!
@vinapocalypse
@vinapocalypse Месяц назад
Do you think its possible to use CFFI to interface with the Unreal Engine APIs? I understand it has its own GC...
@the-lisper
@the-lisper 28 дней назад
Sorry, I cannot say because I really don't know its APIs...
@user-xo3jc6ih6p
@user-xo3jc6ih6p Месяц назад
Excellent approach to teaching! I will imitate it. Thank you!
@the-lisper
@the-lisper Месяц назад
Thanks!
@simonsaville9962
@simonsaville9962 Месяц назад
You're a mind reader, I was thinking about getting dirty with some CLOS earlier today. TFTV!
@the-lisper
@the-lisper Месяц назад
That’s awesome timing! CLOS is such a fascinating topic. Enjoy getting into it, and feel free to comment if you have some questions or interesting discovery!
@puduwatom
@puduwatom Месяц назад
I'm pretty surprised what CLisp is capable of, but is it safe for production environments ? I'm asking this as a newcomer in the language, because in my whole life I used java and golang for web apps
@the-lisper
@the-lisper Месяц назад
Yes, SBCL is production ready (see for example www.grammarly.com/blog/engineering/running-lisp-in-production/ )
@JasonSmith80513
@JasonSmith80513 Месяц назад
Also ABCL for Common Lisp on Java...
@the-lisper
@the-lisper Месяц назад
At the moment I have little experience with it...
@getpunned
@getpunned Месяц назад
I'm sure the video title sounds like silly nonsense words to non-programmers 😂 Anyway, good video
@the-lisper
@the-lisper Месяц назад
Thanks! :)
@anono71
@anono71 Месяц назад
How much math would one need to know in order to master lisp?
@the-lisper
@the-lisper Месяц назад
Probably knowing some math may help, it may make you see things in a different way. Nevertheless, it is really not required, one can learn by doing and there are no really prerequisites from math.
@RicardoBigEggs
@RicardoBigEggs Месяц назад
As someone currently starting with CL, this is very useful. Thanks a lot!
@the-lisper
@the-lisper Месяц назад
Thanks for the feedback!
@olegharput9988
@olegharput9988 Месяц назад
Will you make a video for before, after and around methods?
@the-lisper
@the-lisper Месяц назад
Yes, in the future I may discuss MOP more in details! I wouldn't say "soon"
@piotrkozbial8753
@piotrkozbial8753 Месяц назад
I think more properly it's a Hindley-Milner type system, used by the whole ML language family, notably OCaml, F# and Haskell.
@the-lisper
@the-lisper Месяц назад
True, but I thought it was too much for a title, maybe comparing it to OCaml would have been even better since it is not lazy
@RicardoBigEggs
@RicardoBigEggs Месяц назад
Very interesting
@the-lisper
@the-lisper Месяц назад
Thanks!
@jacekjacenty
@jacekjacenty Месяц назад
Did types beat Lisp? Or did Lisp manage to swallow a typed language?
@the-lisper
@the-lisper Месяц назад
I think that it is not really about win or lose, it is more about freedom (and being able to do everything with macros!)
@jarbihc2714
@jarbihc2714 Месяц назад
too quiet, even at max volume..
@the-lisper
@the-lisper Месяц назад
Thanks for the feedback!
@user-ir6yc9me2t
@user-ir6yc9me2t 2 месяца назад
とても良い動画ですね。 Doug HoyteのLetOverLambdaのチャプター2(和訳だと第一章) letoverlambda.com/index.cl/guest/chap2.html#sec_7 の、 まとめを読んだ様な気分。古き良きletとlambdaだけでOOモドキが簡単に 出来て楽しい。特にmake-personのリターンが値の一覧では無くてlambdaの 一覧なのが、なんかファンクショナルで良いですね。ところで、 外側のdefunと内側のlambdaの役割分担は、 ・外側のdefun - インスタンスの作成(new) ・内側のlambda - アクセサとかセッター という風に考えて良いのでしょうか? また宣言した*person*を削除(delete-person)する様に改変するなら どの様にしますか? OOとしては足らない機能は何ですか?
@simonsaville9962
@simonsaville9962 2 месяца назад
Now I understand! Thanks for saving my sanity.
@the-lisper
@the-lisper 2 месяца назад
The condition system has to be explored a little bit at a time!
@Lucas-md8gg
@Lucas-md8gg 2 месяца назад
Parabéns!
@the-lisper
@the-lisper 2 месяца назад
Thanks! :)
@40Ants
@40Ants 2 месяца назад
Why to write a special reader function and use SHELL syntax for config, when you can just LOAD a lisp file with any code holding config values? Usually I just use UIOP:GETENV in a place where confuration value is used and have (LOAD ".local.lisp") which SETF these variables if .local.lisp file exists. In production these env variables are configured in a dockerfile or in the systemd config.
@the-lisper
@the-lisper 2 месяца назад
.env file and environmental variables are almost the standard in webapp configuration, you can use the same config directly with your lisp implementation or passing it to docker without changing it
@ciaspo
@ciaspo 2 месяца назад
Grazie per l'utilissimo video. E che sorpresa vedere che l'autore è un omonimo Italiano! Un saluto dalla Scozia 👋😊
@the-lisper
@the-lisper 2 месяца назад
Grazie mille per il commento! 😊 Sono felice che il video ti sia stato utile! 👋🇮🇹
@Achy1les
@Achy1les 2 месяца назад
Very good examples using Portacle. Could you make more videos using Portacle? I am asking it because I know some people who uses Windows who might be interested in Emacs, but never heard about it... And it is a good way to start leading them into the Linux/OpenSource path... Apart from that, when you make new videos about Lisp/Emacs, could you use lighter themes and bigger fonts? Just think about people who are short-sighted and would like to follow your YT channel. Thx.
@the-lisper
@the-lisper 2 месяца назад
Thanks for the tips! I will think about them!
@MicahKillian
@MicahKillian 2 месяца назад
Is a series roughly equivalent to a Python generator?
@the-lisper
@the-lisper 2 месяца назад
They are both lazy, but the main features of the series package are the optimization the compiler is able to do to the code
@Muhd21
@Muhd21 2 месяца назад
Hello, where could I get a book or a manual for learning Lisp?
@the-lisper
@the-lisper 2 месяца назад
Hello, I would suggest looking at the resources in the various subreddits related to lisp, there is usually a section with tutorial and books. For example you could start from www.reddit.com/r/lisp/ and then looking at the one regarding the lisp you are interested in, for example common lisp ( www.reddit.com/r/Common_Lisp/ ) or clojure ( www.reddit.com/r/Clojure/ )!
@stefankamphausen6524
@stefankamphausen6524 2 месяца назад
If you're looking for Common Lisp, get yourself a copy of Peter Seibel's book. It's awesome and also available online. For Clojure, there are many high quality books out there.
@StEven-mv7xc
@StEven-mv7xc 2 месяца назад
This lisp/htmx combination seems uncommonly flexible, powerfull, simple and expressive!
@the-lisper
@the-lisper 2 месяца назад
Moreover, the number of dependencies is really small!
@oskarwerner2164
@oskarwerner2164 2 месяца назад
As I see over internet, most of time let is outside of defun, not inside. Is there any differencea between two approaches?
@the-lisper
@the-lisper 2 месяца назад
Let-over-lambda means define a function inside another lexical scope, when you call the function you are actually outside that scope but it was not freed because you are still using some references. The outer defun let you "parameterize" the closure, and create basically some "objects"
@oskarwerner2164
@oskarwerner2164 2 месяца назад
@the-lisper But you could create and parametrize objects with let inside, so I still don't understand difference between (let (defun ...) and (defun (let ...)
@oskarwerner2164
@oskarwerner2164 2 месяца назад
I think I understand now, you just made function to automate making of counters. Thank you for this video and every other, I love them
@the-lisper
@the-lisper 2 месяца назад
let-defun basically declare "global" variable, every call to that function share the same variable defun-let-lambda let's you create "parametrized" lexical scope Thanks! :)
@Muhd21
@Muhd21 3 месяца назад
I was so confused on the back tick operator cause of the accent, I thought it said bactic. Then I read the terminal error which said "Comma not in backquote" and realised lmao
@the-lisper
@the-lisper 3 месяца назад
Yeah, I said backtick, which is another name for backquote
@DanLoaiza
@DanLoaiza 3 месяца назад
Instead of using Cursive you give a try to clojure-lsp-intellij. Its a free license plugin.
@the-lisper
@the-lisper 3 месяца назад
Never used it, I will try it!
@Nerap528
@Nerap528 3 месяца назад
It would be a blessing if you could show an example of how to cache database queries with redis using lack.middleware.session.store.redis.
@the-lisper
@the-lisper 3 месяца назад
I put the idea in the backlog!
@luisalamo2658
@luisalamo2658 3 месяца назад
Thanks for your explanations! I had been considering to learn a Lisp dialect like Scheme or Racket just for fun because I had never met in person someone who knew what the hell Lisp is…
@the-lisper
@the-lisper 3 месяца назад
That's awesome! Learning a Lisp dialect like Scheme or Racket can be a rewarding adventure!
@lucamazzocco2349
@lucamazzocco2349 3 месяца назад
Thank you for this tutorial, It was very clear!
@the-lisper
@the-lisper 3 месяца назад
Glad to hear that! Thanks!
@xabixps
@xabixps 3 месяца назад
Thanks for the video!! [ Commenting for the algorithm 😉]
@the-lisper
@the-lisper 3 месяца назад
Thanks!
@FrancescoPischedda
@FrancescoPischedda 3 месяца назад
I like this format of practical and short videos, also very interesting to see a real world usage of the condition system, thanks for sharing!
@the-lisper
@the-lisper 3 месяца назад
Glad to hear, thanks! :)
@prateeksharma3817
@prateeksharma3817 3 месяца назад
Why are some functions names starts with % character?
@the-lisper
@the-lisper 3 месяца назад
They are implementation details, not meant to be called from the outside
@DnBComplex
@DnBComplex 3 месяца назад
Thanks man! I love you! My first ever programming language was Lisp, when i read SICP ( even though they use schema), but life made me a Java developer :/ ... Still using Lisp, tho.... And, dude, 3 yrs since i've been in love with Lisp. I hope to find a job that allows me to use it, i'm 20 yrs old, but i don't think the avarege Lisp dev-team would accept someone so young... But thx anyway!! Stay recursive! <3
@the-lisper
@the-lisper 3 месяца назад
Even if you don't use it in your daily job, I am sure that Lisp makes you a better developer! :)
@Nerap528
@Nerap528 3 месяца назад
How does streaming data work? For example when generating a png with vecto and using (vecto:save-png-stream <some-ubyte8-stream>).
@the-lisper
@the-lisper 3 месяца назад
I think flexi-streams is what you are looking for edicl.github.io/flexi-streams/ ! A function like `with-output-to-sequence`
@Nerap528
@Nerap528 3 месяца назад
@@the-lisper That's exactly what I was looking for. That was of great help. thanks. (flexi-streams:with-output-to-sequence (s :element-type '(unsigned-byte 8)) (gen-captcha s))
@xabixps
@xabixps 3 месяца назад
Great as always!! Tip for sqlite users: Replace the create-table id :type 'serial with id :type 'integer :autoincrement t
@the-lisper
@the-lisper 3 месяца назад
Thanks for the tip!
@HA-oq2nx
@HA-oq2nx 3 месяца назад
Yo i recently discovered this channel and it's really cool! I'm still new in lisp development so I'm really grateful for the information you're sharing. Hope you stick around and teach us some new stuff. Grazie mille
@the-lisper
@the-lisper 3 месяца назад
Thanks!
@ErikNorlander-go1zv
@ErikNorlander-go1zv 4 месяца назад
Happy I found your channel, great content on CL, thank you very much!
@the-lisper
@the-lisper 4 месяца назад
Thanks for the nice comment!
@user-zx3vp8mw7d
@user-zx3vp8mw7d 4 месяца назад
unable to understand the accent. My native is not English.
@the-lisper
@the-lisper 4 месяца назад
Sorry doing my best , but I'm not english either...
@adrien335
@adrien335 4 месяца назад
Just wanted to say thank you for your great videos. I use these tools often, and I would've loved this kind of content when I started out. Keep it up.
@the-lisper
@the-lisper 4 месяца назад
I was surprised that there is so little about Common Lisp on RU-vid!
@Nerap528
@Nerap528 3 месяца назад
@@the-lisper Eventually I'll also start to upload videos.
@the-lisper
@the-lisper 3 месяца назад
@@Nerap528 Awesome!
@andrewsocial9309
@andrewsocial9309 4 месяца назад
I was not able to combine lack middleware with Ningle as per the example shown
@the-lisper
@the-lisper 4 месяца назад
I will soon upload the code to GitHub, maybe it will help!
@andrewsocial9309
@andrewsocial9309 4 месяца назад
@@the-lisper I'm sure it will thank you
@the-lisper
@the-lisper 4 месяца назад
This is an example from another video in which the session middleware is used together with ningle! github.com/albertolerda/cl-experiments/tree/main/session
@andrewsocial9309
@andrewsocial9309 4 месяца назад
@@the-lisper thank you for following up! I will have a play with this.
@Ifrit_66
@Ifrit_66 4 месяца назад
I love clj but haven't tried datomic yet, thanks for this nice vid !
@the-lisper
@the-lisper 4 месяца назад
You're welcome!
@user-zx3vp8mw7d
@user-zx3vp8mw7d 4 месяца назад
any video on macros? with proper 4 to 5 examples? Most of the videos just read out definitions
@the-lisper
@the-lisper 4 месяца назад
Do you mean something like this ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-ehazNwdTZBE.html or this ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-N7abOnNPvi8.html ?
@GEBIRGE
@GEBIRGE 4 месяца назад
This is extremely helpful, thank you!
@the-lisper
@the-lisper 4 месяца назад
Glad to hear that!
@andrewsocial9309
@andrewsocial9309 4 месяца назад
Keep up the good work! What do you think of clog / reblocks / ningle+htmx? Where is the future of lisp web dev
@the-lisper
@the-lisper 4 месяца назад
At the moment I like web dev and prefer to keep it as simple and "bare metal" as possible, that is why I have chosen ningle+htmx, it is the least you need to write something proficiently.
@mistn
@mistn 4 месяца назад
It would be interesting to see the books stored in an SQLite database file
@the-lisper
@the-lisper 4 месяца назад
You can see a simple example for using SQLite here ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-n5URvYd0VT8.html In the future I plan to do a video also on cl-dbi!
@mistn
@mistn 4 месяца назад
@@the-lisper Wow! Perfect! I’ll check it out. Thanks