HNHacker News
TopNewBestAskShowJobs

svetlyak40wt

75 karma · joined February 28, 2011

I'm a lead software developer at Yandex. I'm specializing in web development, python and c++. My opensource projects are at the GitHub: http://github.com/svetlyak40wt/
submissionscomments
svetlyak40wt··on A Road to Common Lisp (2018)
Indeed! Some time ago, I've made this video review of 8 (EIGHT!) IDE to work with Common Lisp:

https://www.youtube.com/watch?v=eTgDaMREKT4&t=2s

Take a time and choose one. The world is not limited only by Vim and Emacs. However, I prefer emacs these days (happily switched from Vim a decade ago).

svetlyak40wt··on [dead]
Turn on english subtitles if you don't speak Russian.

In this video, I tell you how to make a complex web application in Common Lisp and Clack.

You will see how you can add different middleware to your application, for example, logging all HTTP requests.

I will also show you how to distribute static files from the CL web server and how to combine several Clack applications in one server so that each application responds in its own route.

Also, I will explain the difference between Clack and Hunchentoot. If you want to learn about it, watch the video to the end!

svetlyak40wt··on Spinneret: A modern Common Lisp HTML generator
Parenscript is other tool. Mainly it generates Javascript. However it has support for CL-WHO like templating for generating HTML on client side.
svetlyak40wt··on Spinneret: A modern Common Lisp HTML generator
Spinneret is better than CL-WHO at least in it's string escaping policy. All values are escaped by default whereas with CL-WHO you need to wrap with CL-WHO:ESC all string values.

Thus CL-WHO is vulnerable to XSS attack by default.

svetlyak40wt··on It's 2023, so of course I'm learning Common Lisp
Watch this video on Lisp interactive development approach. I've recorded it especially to answer the question:

https://www.youtube.com/watch?v=JklkKkqSg4c

svetlyak40wt··on It's 2023, so of course I'm learning Common Lisp
That is a typical consumerism: "Give me everything ready to use and then I'll use it."

How about bringing some value to the community?

svetlyak40wt··on Review of 8 Common Lisp IDEs Which One to Choose? [EN Subs]
I'm the author and I'm using Emacs + SLY. Happily switched to Emacs from VIM about 10 years ago when decided to invest all my free time into Common Lisp.

And yes, I have real project experience – a lot of Commmon Lisp libraries at https://github.com/40ants and also I'm developing a hosting for CL library distributions: https://ultralisp.org

svetlyak40wt··on Review of 8 Common Lisp IDEs Which One to Choose? [EN Subs]
I'm the author of the video, so you can ask me any questions.
svetlyak40wt··on Review of 8 Common Lisp IDEs Which One to Choose? [EN Subs]
Common Lisp is alive. Don't believe me? Look at this video describing 8 programming environments supporting Common Lisp.

Turn on English subtitles if Russian is not your native language.

svetlyak40wt··on Show HN: Toodle.Studio is an art playground with Lisp and turtles
Actually it is written in Janet programming language.
svetlyak40wt··on Show HN: Kandria, an action RPG made in Common Lisp, is now out
That is great, now other developers have a chance to use Kandria as an example for their own projects!
svetlyak40wt··on Why Turtl switched from Common Lisp to JavaScript (2019)
That is why I've put about half of this year into the Common Lisp documentation generator for all of my libraries.

If you are interested, please read it's docs and join the effort of making good documentation for CL projects: https://40ants.com/doc/

svetlyak40wt··on Kina Knowledge, using Common Lisp extensively in their document processing stack
Yeah, you've got a dynamically linked binary.

There is a work in progress on SBCL to make it possible to create a really static binaries:

https://www.timmons.dev/posts/static-executables-with-sbcl-v...

I tried this fork and it worked for me!

svetlyak40wt··on Kina Knowledge, using Common Lisp extensively in their document processing stack
I think here he is talking about "integrators" - engineers who write in DLisp rules to process documents.
svetlyak40wt··on Ask HN: Common Lisp for Startups in 2021?
But most probably CL developers you'll be able to find, will be more skillful then an average developer on the market.
svetlyak40wt··on Ask HN: Common Lisp for Startups in 2021?
Sure. Use it! Or not. Depending on your confidence in the language.

I'd use it in my own startup.

svetlyak40wt··on GitHub Actions Matrix Badge Generator
If you have any questions or feature requests, we can discuss them here.

I'm the author of this tool.

svetlyak40wt··on Powerlisp: Common Lisp tool for automating tasks for Unix power-users
Hm, I have similar project, but for OSX users:

https://github.com/40ants/cl-bitbar

It is a library to write plugins for https://getbitbar.com

svetlyak40wt··on Why Lisp Failed (2010)
You can define your own syntax in CL:

    CL-USER> (set-macro-character #\{
           (lambda (str char)
             (declare (ignore char))
             (let ((*readtable* (copy-readtable *readtable* nil))
            (keep-going t))
        (set-macro-character #\} (lambda (stream char)
              (declare (ignore char) (ignore stream))
              (setf keep-going nil)))
        (let ((pairs (loop for key = (read str nil nil t)
            while keep-going
            for value = (read str nil nil t)
            collect (list key value)))
              (retn (gensym)))
          `(let ((,retn (make-hash-table :test #'equal)))
             ,@(mapcar
         (lambda (pair)
           `(setf (gethash ,(car pair) ,retn) ,(cadr pair)))
         pairs)
             ,retn)))))
    T
    
    CL-USER> {:foo 100500 :bar 42}
    #<HASH-TABLE :TEST EQUAL :COUNT 2 {1005879463}>
    
    CL-USER> (alexandria:hash-table-alist #v1)
    ((:BAR . 42) (:FOO . 100500))
    CL-USER> 

And define a printer for the hash to output it as desired:

    CL-USER> (defmethod print-object ((obj hash-table) stream)
               (princ "{" stream)
               (loop with indent = nil
                     for key being the hash-keys in obj using (hash-value value)
                     when indent
                       do (format stream "~% ")
                     unless indent
                       do (setf indent t)
                     do (format stream "~S ~S" key value))
               (princ "}" stream))
    #<STANDARD-METHOD COMMON-LISP:PRINT-OBJECT (HASH-TABLE T) {10040C9F83}>
    
    CL-USER> {:foo 100500 :bar 42}
    {:FOO 100500
     :BAR 42}
svetlyak40wt··on Ultralisp: A fast-moving Common Lisp software distribution
There is a thread on Reddit, discussing different possibilities to build webasm from Common Lisp:

https://www.reddit.com/r/lisp/comments/7z7wuq/has_anyone_con...

svetlyak40wt··on Ultralisp: A fast-moving Common Lisp software distribution
About 90% libraries from Quicklisp are hosted on the GitHub.
svetlyak40wt··on Ultralisp: A fast-moving Common Lisp software distribution
Have you looked at Qlot (https://github.com/fukamachi/qlot)? It solves the problem of reproducible builds.
svetlyak40wt··on Ultralisp: A fast-moving Common Lisp software distribution
Quicklisp and ASDF do not support semver. But you can use Qlot to pin some libraries to a particular version.
svetlyak40wt··on Ultralisp: A fast-moving Common Lisp software distribution
Pinning libraries using Qlot solve the issue of being on the bleeding edge.
svetlyak40wt··on Pushing Your Pulls Faster
Oh, I thought this is only my problem and there is some bias.
svetlyak40wt··on Java is still available at zero-cost
Common Lisp?
svetlyak40wt··on Kindista: A social network for local sharing implemented in Common Lisp
Interesting. It doesn't use any framework like for web. Running on a raw Hunchentoot. Uses Parenscript to generate JS.
svetlyak40wt··on Common Lisp homepage
Actually, lisp varian can be also a:

    (mapcar #'string-downcase '("Hello" "world!"))
svetlyak40wt··on Common Lisp homepage
There is already a good PDF version of the Common Lisp Standard Draft. You can download it here: http://cvberry.com/tech_writings/notes/common_lisp_standard_...
svetlyak40wt··on Common Lisp homepage
I'd recomment a ClozureCL instead of SBCL for a newcomer, because CCL does not do some optimizations and it is easier to debug. For example, it will show you local variables created by `let`, but SBCL – does not.
Page 1 of 2Next →