awesome-lisp-companies
racket
Our great sponsors
awesome-lisp-companies | racket | |
---|---|---|
51 | 187 | |
573 | 4,682 | |
- | 0.4% | |
6.8 | 9.7 | |
21 days ago | 6 days ago | |
Racket | ||
- | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
awesome-lisp-companies
-
Google Common Lisp Style Guide
Thanks to ITA Software (powering Kayak and Orbitz), Google dedicates resources to open-source Common Lisp development. More specifically, to SBCL:
> Doug Katzman talked about his work at Google getting SBCL to work with Unix better. For those of you who don’t know, he’s done a lot of work on SBCL over the past couple of years, not only adding a lot of new features to the GC and making it play better with applications which have alien parts to them, but also has done a tremendous amount of cleanup on the internals and has helped SBCL become even more Sanely Bootstrappable. That’s a topic for another time, and I hope Doug or Christophe will have the time to write up about the recent improvements to the process, since it really is quite interesting.
> Anyway, what Doug talked about was his work on making SBCL more amenable to external debugging tools, such as gdb and external profilers. It seems like they interface with aliens a lot from Lisp at Google, so it’s nice to have backtraces from alien tools understand Lisp. It turns out a lot of prerequisite work was needed to make SBCL play nice like this, including implementing a non-moving GC runtime, so that Lisp objects and especially Lisp code (which are normally dynamic space objects and move around just like everything else) can’t evade the aliens and will always have known locations.
https://mstmetent.blogspot.com/2020/01/sbcl20-in-vienna-last...
https://lisp-journey.gitlab.io/blog/yes-google-develops-comm...
The ASDF system definition facility, at the heart of CL projects, also comes from Google developers.
While we're at it, some more companies using CL today: https://github.com/azzamsa/awesome-lisp-companies/
-
Why Is Common Lisp Not the Most Popular Programming Language?
Everyone, if you don't have a clue on how's Common Lisp going these days, I suggest:
https://lisp-journey.gitlab.io/blog/these-years-in-common-li... (https://www.reddit.com/r/lisp/comments/107oejk/these_years_i...)
A curated list of libraries: https://github.com/CodyReichert/awesome-cl
Some companies, the ones we hear about: https://github.com/azzamsa/awesome-lisp-companies/
and oh, some more editors besides Emacs or Vim: https://lispcookbook.github.io/cl-cookbook/editor-support.ht... (Atom/Pulsar support is good, VSCode support less so, Jetbrains one getting good, Lem is a modern Emacsy built in CL, Jupyter notebooks, cl-repl for a terminal REPL, etc)
yet no other language gives so many tools to the developer… quantum companies would disagree. https://github.com/azzamsa/awesome-lisp-companies/
(BTW: CL isn't Smalltalk which isn't uniquely that anymore, we do use source files and we can compile single-file binaries. My web app weights 35MB, starts up in 0.4s (or 0.01s without core compression))
-
We need to talk about parentheses
Examples (for Common Lisp, so not citing Emacs): reddit v1, Google's ITA Software that powers airfare search engines (Kayak, Orbitz…), Postgres' pgloader (http://pgloader.io/), which was re-written from Python to Common Lisp, Opus Modus for music composition, the Maxima CAS, PTC 3D designer CAD software (used by big brands worldwide), Grammarly, Mirai, the 3D editor that designed Gollum's face, the ScoreCloud app that lets you whistle or play an instrument and get the music score,
but also the ACL2 theorem prover, used in the industry since the 90s, NASA's PVS provers and SPIKE scheduler used for Hubble and JWT, many companies in Quantum Computing, companies like SISCOG, who plans the transportation systems of european metropolis' underground since the 80s, Ravenpack who's into big-data analysis for financial services (they might be hiring), Keepit (https://www.keepit.com/), Pocket Change (Japan, https://www.pocket-change.jp/en/), the new Feetr in trading (https://feetr.io/, you can search HN), Airbus, Alstom, Planisware (https://planisware.com),
or also the open-source screenshotbot (https://screenshotbot.io), the Kandria game (https://kandria.com/),
and the companies in https://github.com/azzamsa/awesome-lisp-companies and on LispWorks and Allegro's Success Stories.
https://github.com/tamurashingo/reddit1.0/
https://www.ptc.com/en/products/cad/3d-design
https://apps.apple.com/us/app/scorecloud-express/id566535238
-
A Tour of Lisps
Haven't had a lisp job, so maybe I shouldn't comment, but... I did use CL and Clojure on the job for a few things at my last two places. It's easier to find Clojure companies (and them to find you) than Common Lisp ones. You might want to peruse https://github.com/azzamsa/awesome-lisp-companies from time to time and see if any have openings. There's other resources linked too and of course there's the reddit and discord community (such as there is) hubs. You can also see if there are any meetups in your area, that's how I almost ended up at a Clojure startup some years back.
I should have taken strategy notes after talking to a guy at my last job who got management buy-in to rewrite a lot of Java code (for android) to Kotlin and have all new code for android be in Kotlin (before that was considered the sensible default). I think that's in general a better approach for a lot of would-be paid lispers: don't wait for or look for the lisp job, make the lisp job. Whether that's doing work where the customer doesn't care what language the thing is made in, or introducing it (some have even snuck it in -- the original clojure.jar got a lot of early success that way) to an existing work place. What I somewhat remember from my conversation was that if you can make a good technical case and have at least one other person supporting you (ideally your entire dev team as was his case), it's a lot easier to sell. No one raised bogus concerns about increasing the hiring difficulty or effort learning the new system. (I say bogus because engineers are learning all the time, and huge swathes of the industry have already had to do things like migrate from ObjC to Swift, or the various versions of JavaScript and later TypeScript + all the framework churn, switching IDEs; learning and change are quite common and a non-issue.) From other Lisp company reports, getting a new hire up to speed to be productive with the team using Common Lisp is a matter of a week or two, a small portion of the overall onboarding time a lot of new jobs have. Mastery takes longer, of course, but that's different.
If I had stayed longer at my last job I would have continued to flesh out a better demo for interactive selenium webdriver tests for our main Java application after injecting ABCL into it, it seemed like the easiest vector to get more interest from my team and other teams. It kind of sucks when you're debugging a broken test and finally hit an exception but now you have to start over again (especially if you stepped too far in the debugger), especially with heavy webdriver tests that can take a long time. The Lisp debugging experience is so much better... And when writing the test from scratch, it's very interactive, you type code and execute it and verify the browser did what you intended. When you're done you run it again from scratch to verify.
-
All of Mark Watson's Lisp Books
> but there doesn't seem to be one that really stands out as pragmatic, industrial
disagree ;) This industrial language is Common Lisp.
Some industrial uses:
- http://www.lispworks.com/success-stories/index.html
- https://github.com/azzamsa/awesome-lisp-companies/
- https://lisp-lang.org/success/
Example companies: Intel's programmable chips, the ACL2 theorem prover (https://royalsocietypublishing.org/doi/10.1098/rsta.2015.039...), urban transportation planning systems (SISCOG), Quantum Computing (HRL Labs, Rigetti…), big data financial analysis (Ravenpack, they might be hiring), Google, Boeing, the NASA, etc.
ps: Python competing? strong disagree^^
-
Steel Bank Common Lisp
Hey there, newer member of the first group here. Please see https://github.com/azzamsa/awesome-lisp-companies/ to update your meta-comment. So, is CL used in the industry today, yes or no?
Personal note: I much prefer to maintain a long-living software in Common Lisp rather than in Python, thank you very much. May all the new programmers learn easily and all the teams have lots of ~~burden~~ work with Python, good for them.
-
Racket: The Lisp for the Modern Day
Common Lisp has many industrial uses though.
(https://github.com/azzamsa/awesome-lisp-companies/
https://lisp-lang.org/success/
http://www.lispworks.com/success-stories/index.html
such as
https://www.cs.utexas.edu/users/moore/acl2/ (theorem prover used by big corp©)
https://allegrograph.com/press_room/barefoot-networks-uses-f... (Intel programmable chip)
quantum compilers https://news.ycombinator.com/item?id=32741928
etc, etc, etc)
-
Why Lisp Syntax Works
A few more that we know of, using CL today: https://github.com/azzamsa/awesome-lisp-companies/
Others: https://lisp-lang.org/success/
racket
-
Ask HN: Does anyone Lisp without Emacs?
Racket (https://racket-lang.org) has an IDE (DrRacket) which isn't EMACS. ARC (which powers hacker news) is (was?) written in Racket.
-
Ask HN: What is the most suitable Scheme implementation to learn today?
I'd checkout Racket: https://racket-lang.org/ It's got a nice UI for starting out and getting good error reporting. It's also well documented.
I'd suggest Racket (https://racket-lang.org) which is a batteries-included language environment that includes scheme and has a lot of high-quality documentation.
Guile (https://www.gnu.org/software/guile/) isn't quite as learner-focused but is another great choice.
-
What Programming Languages are Best for Kids?
How did I get to the bottom of the page and not ONE person has recommended racket?
-
Racket Frustrates Me
My info is a bit out of date, but I'll try to go through big block of concerns...
> Do I want to iterate every 18 hours waiting for the pkgs.racket-lang.org build server to finish building my package? Then do it again because the build failed (my mistake, but now my users have to wait until later that week…)?
( https://pkgs.racket-lang.org/ is one way of sharing an open source package, through a public repository analogous to PyPI. There is a small delay upon uploading a new package/version, because the server builds the package, runs the package's tests, formats the package's documentation, etc.)
I don't know why it would take 18 hours, and I don't see a bug report linked.
Maybe the author was just doing a commit to their own random GitHub repo, without telling the Racket packages repository, and so waited for the packages repository to do a periodic scan of all third-party packages' random Git/Web sources for new versions? (I'd always go to the Racket package repo Web UI, and push a button of some kind there, and the new version would go through promptly.)
> Do I want to worry about packaging and deploying Racket code or could I simply do the same in most other languages without any fuss? I tried packaging Racket in Nix, it did not go well.
What didn't go well? Racket runs on a wide variety of systems. I once experimentally packaged it for plastic OpenWrt routers, and it was straightforward. https://www.neilvandyke.org/racket-openwrt/
> Do I want to invest trust in a programming platform that considers umask of optional importance? https://github.com/racket/racket/issues/4511
That was a helpful bug report, and looks like Matthew Flatt followed up on it promptly, and the bug report even got Matthias Felleisen's interest.
Then, given Racket's emphasis on cross-platform and backward-compatibility, Matthew's decision to add the semantics support without breaking production for all of the existing users. That seems reasonable and predictable to me.
> Do I want to force users to adopt an application written in a language that uses at the very least 122M resident memory on my workstation? Or do I consider Python or Guile which both use less than 10M?
I don't know how the author is running their code, so this might be the best Racket can do with the code, or maybe...
DrRacket (IDE) can run code with very heavy debugging instrumentation, and you can also do similar things from the command line.
DrRacket also has a feature that limits memory usage to a specified amount, IIRC defaulting to 128MB, which is great for alerting programmers on workstations with multi-gigabytes of RAM that they might be doing something inefficient.
Code can be run from source files (silently compiling/recompiling on demand and caching for later runs), from the compiled form, or into a more packaged form (which IIRC does some tree-shaking).
What libraries you pull in can also mean surprises (e.g., I see a later comment by author in which they mention a third-party package having inappropriate dependencies).
If you want to run in really tight memory, that will affect how you program, and will include an awareness of the garbage collector.
But also, small executable size probably isn't a top priority for Racket.
> Do I want to force users to package Racket which itself has no clear custody of its build inputs - can you produce a Racket tarball yourself that is exactly like the one on the release site? Who knows what’s in those tarballs!
I suspect the author is talking here about what's now called "reproducible builds".
> Do I want to invest in a community without a mechanism to apply community feedback constructively? RFCs?
The author got Matthew Flatt and even Matthias Felleisen giving prompt attention to the bug report they linked.
They'll find similar responsiveness on the mailing list.
> Do I want to write 4x the code (in Racket) because I forgot my secret move was actually all the pypi packages that I took for granted in Python?
Depends what you need to do. The normal case, with programmers who are performing at normal levels and with normal practices is just to using PyPI (or NPM, or Cargo, or whatever), and bang out a solution to a normal problem.
But if you need to do something unusual, or you have programmers who are super-effective and can even judiciously bang out that reusable code as needed (better than the reused packages), then consider getting out of their way -- whether they just do it in Python or NodeJS, or they say this will go better in Racket, Rust, or something more exotic.
> Do I want to wonder about what was meant by “contributions welcome” when most of the core racket codebases at best have a README, at worst have no contributor documentation?
Documentation is one of Racket's strengths. From near the top of https://docs.racket-lang.org/ , see, for example, the document "Building, Distributing, and Contributing to Racket".
> Do I want to invest in a platform where leadership is building Rombus a.k.a. Racket2 instead of focusing on making core Racket just that much better and easier to adopt? (see also: Future of Racket.)
That's a good question. Racket is solid for production, has features that other languages still haven't discovered or done as well, and the author saw the prompt attention to their bug report. (The Rhombus thing has been going on much longer.)
> Do I want to wait 10+ minutes for my package to build in CI because some other package maintainer decided to pull in racket or racket-doc (which pulls in the entire big Racket distribution)?
Talk to the developer of that third-party package?
> Do I want to ship multi-gigabyte docker images because of the above kitchen sink package?
Talk to the developer of that third-party package, and there might be additional things you can do.
> Do I want to deal with being blocked due to not understanding how to use the less understood features of racket such as continuations, syntax-parse/syntax-case macros, units/signatures? You’ll want to know about all these things to write effective Racket code.
You'll need to understand first-class continuations to work on all the Racket internals as a compiler developer. But I don't recall ever seeing a non-internals use of that.
For the syntax extension mechanisms, you can learn that as-needed and at your own pace, because it's for things that most languages can't do (and does it better than languages that can). And you can definitely learn them incrementally, and start with the higher-level forms, which might just do what you need.
Units/signatures are ancient, and you probably don't need to use them. Just use the very nice module system (including submodules), and then decide whether you need more.
> Do I want to add business risk by writing a product in Racket? Does anybody work as an industry Racket coder at all? Would I struggle to hire more talent?
It's probably needless additional risk/unknown to use for business unless you have more or more people who are able to dig in and figure out technical stuff without Stack Overflow. (Though there are helpful forums, but you'll need to rise to the occasion more often.)
And one of the the secret weapons of beloved fringe languages/platforms is that they attract those mythical "10x" programmers on basis of technical/aesthetic/community merits rather than employability, so there's more of them than there are great jobs using Racket...
> Do I…. yeah there’s more but let’s move on ;)
OK, skipping...
> Where did the racket-money mailing list go?
https://www.neilvandyke.org/racket-money/
It's quiet most of the time, but picks up when a new person joins or there's a question/idea.
> Or really all the production users? I only found one production user.
There's more than that, including doing spectacular productivity and importance, but there's not many.
One thing the author of the blog post might be realizing is that the Racket professors are generally super-capable, they support production users like most professors couldn't, they'll provide technical support to any random person around the world. They'd love more commercial uptake, but that's been far from their top priority.
-
Building a Programming Language in Twenty-Four Hours
I think building a programming language (or DSL to be exact) for a problem is one the features of Racket [1]. I once watched a presentation by Dr Felleisen and got this idea.
-
Getting Started with Goblins
Before anything else, make sure you have DrRacket installed and the IDE opened. You will need to install Goblins by going to File > Package Manager and type "goblins" in the Package Source box and hit enter to install the library.
- Discussion Thread
-
Navigating the Github repository?
I'd like to read the source code for a procedure in rnrs/base-6 (to see how it handles inexact numbers), but I can't seem to find the appropriate file or directory at https://github.com/racket/racket. A Web search didn't turn up anything useful. Any ideas?
-
Tips for CS011 and CS10B?
https://racket-lang.org/ (Racket) is pretty cool for recursion (see: tail recursive) - it's also a functional language which is pretty cool.
What are some alternatives?
Visual Studio Code - Visual Studio Code
clojure - The Clojure programming language
Carp - A statically typed lisp, without a GC, for real-time applications.
portacle - A portable common lisp development environment
julia - The Julia Programming Language
nannou - A Creative Coding Framework for Rust.
antlr-tsql
coalton - Coalton is an efficient, statically typed functional programming language that supercharges Common Lisp.
Fennel - Lua Lisp Language
babashka - Native, fast starting Clojure interpreter for scripting
NewPipe - A fork of NewPipe with SponsorBlock functionality.