- Видео 67
- Просмотров 50 876
The Lisper
Добавлен 30 мар 2023
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.
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.
Видео
The Loop Macro in Common Lisp: Not Lispy but Convenient
Просмотров 17514 дней назад
The Loop Macro in Common Lisp: Not Lispy but Convenient
Verifiy JWT: OAuth Client From Scratch In Common Lisp [2/2]
Просмотров 12821 день назад
Verifiy JWT: OAuth Client From Scratch In Common Lisp [2/2]
How To Get A Access Token: OAuth Client From Scratch In Common Lisp [1/2]
Просмотров 235Месяц назад
How does the Authorization Code Grant with PKCE work? Let's build it from scratch in Common Lisp. Github Repo: github.com/albertolerda/htmx-with-cl/tree/main/oauth-intro Code we started with taken from: github.com/albertolerda/htmx-with-cl/blob/main/basic-htmx/basic-htmx.lisp Session with redis: ruclips.net/video/O2uIL_JKTHw/видео.html
CLOS: Introduction and usage of defclass
Просмотров 4765 месяцев назад
What is CLOS? What is a class and how to define one? All with the interactivity of Common Lisp!
Haskell-Like Type System In Common Lisp With Coalton
Просмотров 6735 месяцев назад
Algebraic Data Types in Common Lisp??? With Coalton it is possible!
Manage Cookies Securely With Clojure and Ring
Просмотров 966 месяцев назад
Manage Cookies Securely With Clojure and Ring
Series: A Functional Approach To Common Lisp
Просмотров 7036 месяцев назад
Series: A Functional Approach To Common Lisp
Building a Webapp in Clojure with Ring
Просмотров 2766 месяцев назад
Building a Webapp in Clojure with Ring
Common Lisp Installation With Roswell On Windows And Linux (with Tips For Troubleshooting)
Просмотров 2277 месяцев назад
How to install roswell? What to pay attention during the installation? How to choose the implementation we want?
Clojure installation on Windows and Intellij IDEA
Просмотров 4107 месяцев назад
Quick video on how to setup Clojure in Intellij IDEA
ABCL (Common Lisp) Installation
Просмотров 5807 месяцев назад
Let's see how to install ABCL and share some first sight impression. What about you, have you ever used ABCL?
.env (dotenv) in Common Lisp (+ Codition System bonus!)
Просмотров 5457 месяцев назад
What is a .env file? How to deal with them in Common Lisp? As a bonus we will see how to deal with error in an interactive environment! Commit described: github.com/ollelauribostrom/cl-dotenv/commit/a1f513c15d98e810e9de5732685a54c2ac407f70
Easy database with cl-dbi and sxql (Common Lisp)
Просмотров 4388 месяцев назад
Easy database with cl-dbi and sxql (Common Lisp)
Cookie and Session with Common Lisp (using Lack)
Просмотров 3158 месяцев назад
Cookie and Session with Common Lisp (using Lack)
Improving The Countdown with Forms in Phoenix Liveview [Elixir]
Просмотров 1838 месяцев назад
Improving The Countdown with Forms in Phoenix Liveview [Elixir]
From Clack to Ningle passing through Lack (Common Lisp)
Просмотров 7608 месяцев назад
From Clack to Ningle passing through Lack (Common Lisp)
HTMX with Common Lisp: Dynamic Tables and Advanced Forms
Просмотров 5828 месяцев назад
HTMX with Common Lisp: Dynamic Tables and Advanced Forms
Tail Recursion With Common Lisp, Do or Don't?
Просмотров 9079 месяцев назад
Tail Recursion With Common Lisp, Do or Don't?
Build A Countdown Using Phoenix Liveview
Просмотров 3359 месяцев назад
Build A Countdown Using Phoenix Liveview
Elixir For Lisper: Concurrency, Macros and Community
Просмотров 42110 месяцев назад
Elixir For Lisper: Concurrency, Macros and Community
Dynamic Forms and Tables with Common Lisp and HTMX
Просмотров 70310 месяцев назад
Dynamic Forms and Tables with Common Lisp and HTMX
Closures in Common Lisp, when CLOS Is Too Much
Просмотров 85810 месяцев назад
Closures in Common Lisp, when CLOS Is Too Much
Dynamic Page With HTMX and Common Lisp
Просмотров 2,2 тыс.11 месяцев назад
Dynamic Page With HTMX and Common Lisp
TDD with Datomic and Clojure using clojure.test
Просмотров 20411 месяцев назад
TDD with Datomic and Clojure using clojure.test
I think you do the best CL stuff on here, now
Nice to hear! Thanks!
updated finding: if you set *print-circle* t, and define a long list with repeating elements, you will see that the elements that repeat are not stored as individual elements, but are stored as pointers pointing to the original list item that it duplicated... I guess this changes when you update the element? Anyway, when you print the list in the repl, you will see items that are list as #1YourItem, #2AnotherItem, etc. When the printout gets to the repeating elements, instead of printing them it will show (for example) #1# (if the item is a repeat of the first list item). This really threw me when I stumbled over it. But if you take (nth somenumber yourlist) and somenumber is a repeat item, you will see the correct list item. just an FYI. cheers!
Yes! In the video we have shown how to use the reader macro #1# to create a recursive data structure (putting it in the tail), but it can actually be useful every time you want to see if two references are the same!
Mr. Lisper, what do you think about doing a series on Data Structures and Algorithms implementation in Common Lisp? I would love to watch that.
That is a nice idea! :)
@@the-lisper there is a great lack of such content for Lisp on RUclips. You would bring great value to the community :)
You're a mind-reader! I was just thinking earlier about using a circular list, and their dangers. Thank you, for the explainer.
lol, both of you are! I just implemented a couple of functions with circular lists over the weekend!
Happy to help! Circular lists are definitely interesting. Glad the timing worked out! Thanks for watching!
@@the-lisperThank you for your top-tier content, a true gift in this long lisp journey. I'm having a bit of trouble implementing lack-middleware-csrf with my djula templates. Could you please make a tutorial with an example of the same?
@@evanskarani7508 Never actually used it, I can put it in the backlog!
My favorite YT channel 🙂
Thanks! 😊
I'm personally a big fan of this macro. But I mostly use. the iterate library.
Yeah, I completely agree with you... Both do and loop are at times a little bit harsh
Great! Thank you! Could you also show do in more detail?
There was a small introduction in one of the first videos ruclips.net/video/aL1Sdjdo1MY/видео.html , but for sure do deserve a video by its own and more in details!
Definitely do. This is Lisp. It should support anything that is useful to do.
Ja, the ANSI standard just doesn't mandate to optimize it. Even though it usually does (when possible)
Why would you want public keys to be secrets? They are "public" for a reason. Am I missing something?
Nono just the client secret has to be secret, the rest is just not good practice to have them in the code...
Over complicated in my opinion. Is there any tutorial /book which can explain this? what are :initarg and :text ? How to get them populated in IDE? I am using Portacle
Thanks for the feedback, I assumed some basic knowledge of CLOS, which is a prerequisite for the condition system.. For :initarg for example there is this video ruclips.net/video/cssHR_MLwNQ/видео.html
This is excellent and will be useful for my first large CL project! Thank you for your work on these videos, I watch every single one.
Thanks! :)
Interesting. But thats's not from scratch. I was under impression that Auth provider will be in Common Lisp! Authentik is written in Java or Golang i believe.
I meant writing the OAuth client from scratch... Updated the title...
@@the-lisper Thanks
@@the-lisper Thanks.Which IDE do you recommend? I tried Emacs but could not adjust. How is VS Code?
I am an emacs user... If the problem is setting up emacs, you can try Portacle which comes preconfigured (the first videos on this channel were made with it). Sadly I cannot talk about VS Code, because I have never used the plugin for Common Lisp... If I will ever try it, for sure I will make a video!
always happy when you post :)
Thanks!
Great you are back again.
Finally talking about authentication and authorization!
Which IDE to use for Common Lisp? I really don't like emacs and its flavors.
I am a Emacs/Portacle user... But I have heard that the situation is improving with VSCode. I cannot really talk about it now, because I have never tried it...
Papers have been written proving that compiled lisp code can be just as fast as C code, especially with statically typed variables and optimal data structures like indexed arrays and vectors.
Yes, that is exactly what I meant!
Good tool for faster solutions while keeping CL.
Exactly!
Thanks!
I love to see the common lisp community growing and getting more active.
so, are we making competition to HTMX?
No, we don't.. We use it together! ruclips.net/video/xnwc7irnc8k/видео.html :)
That's really inspiring, thanks a lot!
Thanks to you for the comment, it is important to use packages correctly!
so, about the type inference is it exclusive for classes or applies to structs and types with deftype as well?
Type inference is quite implementation specific, for example in SBCL the strictness is configurable up to a certain point. Coalton is a library that doesn't depende on the implementation.
I love to see a new raise in the common lisp community, is slow and steady, this is the best, because in the last times, it was fast and went as fast as it came, we need time to build an ecosystem that makes lisp great again.
Common Lisp has had some great introductory material for some time for who is interested, but the ecosystem can really be improved...
you forgot to talk about CLASP implementation of Common Lisp, targeting LLVM to interface with C++ and compile everything to native, no interpreter and it is being used to work in chemistry for nanotechnology and design nanomachines and molecules.
Yeah, there are a lot of interesting projects!
Excellent, thanks for a short and effective presentation 😊
Do you know of anything like flet for multiplatform (gtk / web/ mobile) implementations usable and integrateable like this from CL ?
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)
I like how emacs org-mode is used to drive the presentation.
Org-mode is convenient everywhere! :P
Really useful video. I heard about py4cl but didn't use for anything practical yet.
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!
Informative! I was aware of those libraries, but as a CL beginner I needed some perspective. These videos are a public service.
Yes, I also think that some context is important when choosing a library!
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.
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!
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!
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!
Do you think its possible to use CFFI to interface with the Unreal Engine APIs? I understand it has its own GC...
Sorry, I cannot say because I really don't know its APIs...
AFAIK, you can't. Unreal API uses C++, which is fundamentally different from C in terms of FFI.
Excellent approach to teaching! I will imitate it. Thank you!
Thanks!
You're a mind reader, I was thinking about getting dirty with some CLOS earlier today. TFTV!
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!
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
Yes, SBCL is production ready (see for example www.grammarly.com/blog/engineering/running-lisp-in-production/ )
Also ABCL for Common Lisp on Java...
At the moment I have little experience with it...
I'm sure the video title sounds like silly nonsense words to non-programmers 😂 Anyway, good video
Thanks! :)
How much math would one need to know in order to master lisp?
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.
As someone currently starting with CL, this is very useful. Thanks a lot!
Thanks for the feedback!
Will you make a video for before, after and around methods?
Yes, in the future I may discuss MOP more in details! I wouldn't say "soon"
I think more properly it's a Hindley-Milner type system, used by the whole ML language family, notably OCaml, F# and Haskell.
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
Very interesting
Thanks!
Did types beat Lisp? Or did Lisp manage to swallow a typed language?
I think that it is not really about win or lose, it is more about freedom (and being able to do everything with macros!)
Exactly
too quiet, even at max volume..
Thanks for the feedback!
とても良い動画ですね。 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としては足らない機能は何ですか?
Now I understand! Thanks for saving my sanity.
The condition system has to be explored a little bit at a time!
Parabéns!
Thanks! :)
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.
.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
Grazie per l'utilissimo video. E che sorpresa vedere che l'autore è un omonimo Italiano! Un saluto dalla Scozia 👋😊
Grazie mille per il commento! 😊 Sono felice che il video ti sia stato utile! 👋🇮🇹
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.
Thanks for the tips! I will think about them!