Racket frustrates me

Updated Tuesday, Jan 9, 2024

Sorry if I upset any of the nice Racket folks out there.

It’s time for a little reality check. First, repeat after me:

Coding is a tool to get stuff done. If you let your programming language impact your productivity, you are not in charge, the technology is calling the shots.

ยงWhy would I use Racket today?

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…)?

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.

Do I want to invest trust in a programming platform that considers umask of optional importance?

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?

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!

Do I want to invest in a community without a mechanism to apply community feedback constructively? RFCs?

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?

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?

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.)

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)?

Do I want to ship multi-gigabyte docker images because of the above kitchen sink package?

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.

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?

Do I…. yeah there’s more but let’s move on ;)

ยงNo I don’t want to invest more time in Racket

This post took forever to write. I’m giving up a portion of myself (and allowing for more growth) by giving up Racket. My initial premise was that Racket could replace Python in my workflows. For a time that seemed to work.

But then the real hard truths started to appear. I was losing a lot of productivity. The productivity losses were incremental but certainly slowed down my velocity significantly over the last seven years. Sure the language has a lot of wonderful features, but there’s more to a good programming language than well, its programming language.

I also believed I could make a career out of using or supporting software related to or written in Racket. I think this was a bit too ambitious from my perspective. Where did the racket-money mailing list go? Or really all the production users? I only found one production user.

So long and thanks for all the standard fish.

Peace ๐Ÿ™.

ยงP.S. racket.wiki

I’m giving away the racket.wiki domain. If you want it and have a Gandi account, I’ll transfer it to you. Contact info on my home page. Racket leaders, please consider taking this domain so I don’t end up giving it to a complete rando.

ยงDiscussion on HN

Article made it way on to the Orange Website! Join the discussion here.