Hacker News new | past | comments | ask | show | jobs | submit login

Talking about Common Lisp in the places I worked for in the past has always be met with mockery and disdain. But then again, I have seen this kind of reaction for every non-mainstream language, so it is not really surprising.

I'm currently getting back to CL, hoping to do much more with it for 2023. Being able to develop incrementally in SLIME has been a joy. Hopefully I will manage to find the right project idea to apply CL to.




I was /that guy/ at my last place and I agree that it's not well received.

Though once I was writing some lisp to fix a problem we were having and I had a developer beside me and he was blown away by what was happening. I think that the interactivity is something which must be experienced to be fully appreciated.

I use it at my current start up and could not imagine using another language. I've become too used to this kind of workflow.


Unfortunately the average developer is alienated beyond repair. A significant % of developers make a living working on tools to address the lack of interactivity and poor feedback loop of mainstream languages, and actual interactivity is touted as a bad practice by the TDD fundamentalists.

edit: My advice to young and overly curious developers: never talk about weird languages at work. I don’t know what’s with it but you’ll trigger a visceral and almost violent reaction from the average developer who thinks their livelihood is in danger. It’s just not worth it. And no this isn’t fixed with joining a FAANG.


> and actual interactivity is touted as a bad practice by the TDD fundamentalists

That’s funny, because what drew me to doing TDD in Java was how much I could treat the test runner like sending the current form to the REPL in SLIME.


Funnily enough, TDD comes out of very interactive environments of Smalltalk


> Though once I was writing some lisp to fix a problem we were having and I had a developer beside me and he was blown away by what was happening. I think that the interactivity is something which must be experienced to be fully appreciated.

Indeed, I had a similar experience. When quick iteration is helpful it shines.


I just realised you were working on Feetr! I learned you guys were using Common Lisp on Twitter. Small world really.

What implementations are you using, and how are you running it in production, if it is not a secret? Any performance issue with the GC at large scale?


Tiny world!

CCL is used locally for two reasons 1) error messages are better and 2) it ensures that we're writing portable code. SBCL is used in production because it's much faster and it's constantly being updated, so we get cool things for free. I have been eyeing lispworks but I don't know that it offers much benefit right now. We do plan on mobile apps at some point and that's a conversation we'll have with them.

Production itself is pretty much just a live image, not much different than what you'd have when you're developing. We use slynk to be able to connect to it and play with the data. Can see that here [0].

GC hasn't caused an issue yet. I imagine we will run into issues latter half of this year when we roll out alerts but those are challenges which can be overcome. That might even be a lispworks thing honestly.

0: https://i.imgur.com/8ACxOXG.png


Thanks for the info. I'm also using both SBCL and CCL, both to stay portable and because it sometimes help finding issues detected by one and not the other.

If you end up blogging about CL (and tech in general) at Feetr, know that there will be at least one interested reader :)


That honestly means the world to me, thank you so much!


I would read that blog as well. I can't use CL at work but I'm always interested.


Thank you so much for that!

It's something that I'd love to do, especially as there aren't many people using it in production, or at least talking about it, and I think that showing people it's a viable language could be important.

It's a shame that we as a community still throw around the Grammarly article as proof of people using it, I wish we had more recent examples.


Same here, I'm interested in the finance angle as well. I've written a few crypto arbitrage bots for fun over the years, and now that I'm deep in the Lisp hype phase, I really want to do it in Common Lisp. I'm already vibrating at the idea of being able to introspect its operation from day 1.

Also, now that I've decided to go solo-entrepreneur, there is no one that can laugh at me if I decide to use CL for a core system.

Looking forward to reading your blog.


The hype phase won't disappear unfortunately. Sorry about that.

Especially in finance where most of the effort is geared towards data and data manipulation, it's almost a super power being able to work with live data and live systems. Your development speed is going to 10x.

I wish you all the best on your journey! Can't wait to see what you come up with!


Another blog I would read...


> he was blown away by what was happening

Could you recommend some videos of live development with CL that aren't for toy examples? I don't know any lisp, but I'd like to see how different it is from other semi-interactive programming languages like Matlab, Python, etc.


I'll be honest and say that I don't watch people write lisp so I'm unsure of the current landscape. I remember Baggers being the guy[0]. That may be interesting to you. Recently I've watched a video or two of Josh Betts[1] and while his shirtlessness is confusing, he's pretty good.

0: https://youtube.com/@CBaggers

1: https://youtube.com/@joshbetts1022


Thanks! I'll check them out.


I made some videos of basic CL development. May be too "toy" for your needs.

https://www.youtube.com/watch?v=nSJcuOLmkl8&list=PLTA6M4yZF0...


Thanks! Turns out, I was already subscribed to you. Just hadn't gotten around to watching videos yet.


I'm curious, are you able to write full backend services in CL, with http and database interactions, or "just" some domain logic ? If it's the former I'm curious what kind of libraries you are using


Yes, absolutely. For context, we do stock market analysis but we approach it from the perspective of stock prices being entirely supply and demand, and we're looking for stocks which are about to receive a lot of new demand. We handle A LOT of data. Well, a lot for what we do, we're not exabyte scale yet.

We use Postmodern for Postgres interaction. Have no complaints at all. You're able to use s-sql which is SQL statements as s-exps but can drop into just passing it strings if required.

Dexador is how we're doing web scraping (and requests should we need to). Top tier, no complaints. Exactly what you want from it. Plump and lquery are also used for parsing HTML

Jonathan is where I'll fight with most people in the CL community. It's the best JSON library. When I say fight, I mean it, I'll throw hands at anyone recommending cl-json or jsown.

Local-time is something we depend upon a lot. Great for timestamp manipulation.

cl-cron for scheduling. I like it well enough.

I'm also a big fan of Hunchentoot for the web requests. All static pages (currently all addressable webpages) are generated by Spinneret.

There's a few more libraries but they may be more niche or more specific to us.


I only started learning CL during last month advent of code, and it's incredible to know you can do so much with the language, thanks for the insights. As other have mentioned, you can count me in if you ever write a blog about the process


You're most welcome!

You'll want for nothing but the great thing about lisp, in my opinion, is that it's /so/ easy to create. A good article on this is The Lisp Curse[0], which argues that its power is a bad thing as it prevents communities from forming but as a developer, I want to use the best tools available. If that results in me, as a business owner, requiring less people then that's a win to me.

0: http://www.winestockwebdesign.com/Essays/Lisp_Curse.html


What is the interactivity that must be experienced to fully appreciate


I'd point anyone interested to: http://joaotavora.github.io/sly/

Creating and redefining functions on a running program is incredible to experience. The turn around time for feature is so much quicker because you can, for example, save a web request and continue applying it to functions until you figure what's wrong.

You're also able to inspect data just by clicking on it. For example, I can define a class, create an instance of it and then click on it to see its data. https://i.imgur.com/4jydmBy.png

Another interesting feature is how errors are handled. If you encounter one which causes the program to stop, it'll raise a frame from which you can choose what it should do next. Should it continue anyway or retry, maybe you should redefine a function, maybe you want to change some of the data. Options are endless.

Something else that I don't use nearly as much as I should is the labels feature from SLY, which allows you to mark certain sexps and record the data that gets passed through them. Image here: http://joaotavora.github.io/sly/images/tutorial-6.png

There is so much more that could be mentioned and I'm sure there are other people with their own favourite features but these are mine.


Isnt this similar to ipython or ghci or Javascript console what's different?


A short video is more than a thousand words:

https://youtu.be/tmKrF-QAcOk

For a longer visual introduction, I have been enjoying kaveh808's videos: https://youtube.com/playlist?list=PLTA6M4yZF0MzsMlNL0N67tIU1...


Thank you. Glad you are enjoying my videos.

This longer demo of an early version of kons-9 talks about some CL features:

https://www.youtube.com/watch?v=NJe4isZ7NHI&list=PLTA6M4yZF0...


How different is this from ghci or ipython




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: