
Ask HN: Companies using Racket? - ctas
Hello everyone,<p>I&#x27;m looking for companies that are currently hiring Racket developers or did so in the past.<p>I created https:&#x2F;&#x2F;www.racketjobs.com, because I was myself interested in workplaces that use Racketlang commercially, but couldn&#x27;t find any. After sharing the site on &#x2F;r&#x2F;Racket and a couple of other sites I got a bit more than 100 people to sign up for the newsletter.<p>If anyone knows a company, using Racket, or a place on the web where I can find open Racket positions, I&#x27;d be happy to hear from you. Of course I did my Google searches before.
======
ObscureScience
Naughty Dog (game dev) have used it to some extent. This has been up on HN
more than once. They have even done a presentation on RacketCon 2013.
[https://news.ycombinator.com/item?id=12203694](https://news.ycombinator.com/item?id=12203694)

~~~
ctas
Thank you. I already watched the presentation, but couldn't find any open job
positions in regards to Racket. I'll try to contact them directly and will see
if I have some luck.

~~~
3rdAccount
I think they may have stopped that after being bought by Sony? I don't think
it is still around.

~~~
tyscorp
I think they still use it for scripting in their games. For things like AI,
etc.

~~~
CodeArtisan
They are using an in-house variant of Scheme known as DC. There are a few
pages about it in Game Engine Architecture, a book written by an engineer at
Naughty Dog.
[https://www.gameenginebook.com/](https://www.gameenginebook.com/)

DC is compiled to bytecode then interpreted. DC compiler is written in Racket.

------
pflanze
We are working on a product written in Scheme. It's mostly just me currently.
Not (currently) using Racket, but a set of libraries[1] on Gambit-C, as well
as an interpreter written in C++[2]. We might take someone on board a few
months from now (London/UK).

[1] [https://github.com/pflanze/chj-schemelib](https://github.com/pflanze/chj-
schemelib) [2]
[https://news.ycombinator.com/item?id=18045890](https://news.ycombinator.com/item?id=18045890)

~~~
spacesuitman2
What about Racket's ability for arbitrary languages via #lang, not just
macros? Are there any plans for this?

It's really nice to be able to do #lang c and just write C that is FFI'd into
racket so you can avoid using an external toolchain to compile.

~~~
pflanze
I don't really have a use for this. Gambit-C allows to include C files or also
strings of C code from a Scheme module and builds it as one. I haven't used
Racket's FFI though, perhaps the real benefit is from parsing the C code to
auto-generate bindings? Generally I'd like to reduce the use of C code in case
I want to re-target the code to run in a different, not C based, environment.
chj-schemelib will need work for general consumption, let me know if you want
to use it. (If you're talking about the interpreter in C++, it's the other way
around, write FFI declarations within C++ to allow Scheme access to C++.)

------
pmatos
We, at Linki Tools [0], use Racket for our main product: S10 [1]. Not hiring
at the moment but most likely will in the near future. I always hire remote
(contracting up to now) and by the time I have to hire remote for racket I
don't think I will have any problems finding a fine dev.

If you're in the Frankfurt area, I will be presenting at the first After Work
Racket [2] on Thursday, the 8th. Come join us.

[0] [https://linki.tools](https://linki.tools) [1]
[https://linki.tools/s10](https://linki.tools/s10) [2]
[https://www.meetup.com/After-Work-
Racket/events/253939676/](https://www.meetup.com/After-Work-
Racket/events/253939676/)

~~~
thibran
Hi,

I found your meetup and would really like to join - too bad that the company I
work for is holding a conference at this day (www.talentthinking.de). So I may
join for Episode 2.

------
hayden592
I enjoyed using it in college during my programming language theory course.
However, I thought it was meant to be more of an academic/teaching language.
Why should a company use it over Haskell or Clojure?

~~~
mruts
I think racket would be a good choice for internal company tools. It’s
batteries included philosophy allows you to create very complex apps with
minimal effort.

Racket is significantly more expressive than clojure in many different ways
(nice gui tools, very sophisticated macro system, good IDE)

I wouldn’t want to use racket for applications that would have thousands or
millions of concurrent users. For programming in the large, clojure wins by a
long shot.

~~~
dorfsmay
> I wouldn’t want to use racket for applications that would have thousands or
> millions of concurrent users. For programming in the large, clojure wins by
> a long shot.

Can you explain why?

Because it's been used more in big prod envs? Or for reason intrinsic to the
languages themselves? If the latter, which ones?

~~~
fiddlerwoaroof
This is a bit funny to post in hacker news which was written in arc, a
language built on Racket and serves large numbers of people.

~~~
hjek
Indeed, and Arc has some brilliant ideas, but if you ever tried to hack in it,
you'd experience how dog slow it really is. But Arc's web framework is
implemented in somewhat low level MzScheme and is entirely different (and much
slower) than web apps in Racket's[0].

Part of what makes Hacker News fast is that the page only has 4-ish images (if
you count the invisible gif that is used for indentation) and a tiny amount of
JS.

[0]: [https://docs.racket-lang.org/continue/](https://docs.racket-
lang.org/continue/)

~~~
fiddlerwoaroof
Yeah, but that's sort of the point: for most web applications, most
performance issues are not the result of the implementation language but of
the chosen architecture. If a fairly inefficient language like Arc can handle
HN loads (for the most part, at least), almost anything can.

~~~
hjek
> for most web applications, most performance issues are not the result of the
> implementation language but of the chosen architecture.

I don't think that's true (but I also don't understand what is meant by
_architecture_ in this context).

There's a simple file upload form example in the Arc community repository.
It's so slow that it would timeout on files smaller than 100K. I tried
optimizing the POST request parsing, but could still only barely get Arc to
handle file sizes of 5M.

Tried making a similar simple file upload form in Racket, and it runs way
faster. But it shouldn't be surprising that some languages are less efficient
than others, right?

I'm also not sure that _most_ web applications are text-only. Many web
applications send and receive other things that plaintext.

~~~
pflanze
> But it shouldn't be surprising that some languages are less efficient than
> others, right?

A long time ago I read a comment somewhere saying that Arc is interpreted (as
in by a program itself written in MzScheme, instead of translated down to
MzScheme), which struck me as odd but I didn't check back then, so now I
finally went and looked through the Arc history[1] and release 0 already does
the translation, so apparently that was just wrong. There can still be reasons
why Arc could be slower, though, I remember PG's design called for overloading
function calls so that e.g. hash table lookups could be written like function
calls, and if implemented naively this could cost a slower than usual type
check on each function call and prevent optimizations applied by the
MzScheme/Racket compiler like perhaps function inlining. But just a different
parsing infrastructure could explain it too (working on strings-as-vectors vs.
lazy lists would make a large difference, but I couldn't get down far enough
to see how that's implemented; srv.arc in parse-multipart-args uses regular
expressions, not sure that's what you optimized?). Anyway, new code always has
large potentials for optimization (early lisps were very slow, today's
implementations are generally very fast; same was/is true for Java,
JavaScript, ..).

[1]
[http://github.com/arclanguage/anarki](http://github.com/arclanguage/anarki)

------
dorfsmay
Great initiative. I often wonder why Racket isn't used more in the industry,
especially when you see much more niche languages being used...

One note about your site: You are subscribing people to a mailing list without
sending a confirmation email?

~~~
chongli
Racket is too powerful to be used by big corporations. The last thing a
company wants is to have their rockstar programmer leave behind a terse,
arcane, impenetrable walnut of an application.

Languages like Java make it much easier to treat your programmers as
interchangeable parts.

~~~
WalterGR
_Racket is too powerful to be used by big corporations. The last thing a
company wants..._

Ah yes, The Slashdot Cynicism.

Guaranteed to get a +5 Insightful.

What is your experience with Racket? Or failing that, Scheme? Or, failing
that, Lisps in general?

~~~
kamaal
Not exactly Racket. But with Perl. And the same argument.

Early 2010's, I remember my company had a fairly fast, stable and small(LOC
wise) data feed processing application in Perl. It just worked, barely any
bugs, maintained by 2 - 3 programmers.

Time came around, and your Director level people realized the teams were too
small, programmers were having too much fun and more importantly it made
programmers felt valuable and hard to be treated as kleenex.

They decided to give some Architect Astronaut love to the application. Then
came in Java programmers. Code base size exploded by 500x. Design pattern
floods followed. DI to manage complexity which shouldn't have even existed.
Hundreds of classes to do things that could be done in hundreds of lines in
Perl.

Managers routinely boasted how they managed to grow their teams, about their
culture, and how big and great their teams were. They could never make it work
as well as it did in Perl. I too moved on. But eventually I saw they just shut
down the product.

No manager likes to see their work less valuable or better than that of a
programmer.

Languages like Perl, Scala, Clojure, Racket, Common Lisp are never going to
see decent adoption in the industry.

------
jahs
I have a work available at the moment, but a bit quirky as we're using our own
novel Racket-influenced scheme dialect for business workflow, coupled with
Python. Happy to chat.

~~~
ctas
Great to hear. How can I contact you? You can mail me at cihan(at)tas.fm

~~~
jahs
Just sent you an email, thx.

------
acbart
I just finished teaching Racket for 2/3 of the semester. I have never had a
group of students hate their introductory programming experience the way that
they did with Racket. 0/10 will never teach Racket again the rest of my life,
no matter how much I enjoy functional programming.

~~~
Zuider
Genuinely curious as to why this was so.

Did these students have prior programming experience? Was their reaction due
to a particular fault of Racket or would they have disliked any language to
which they were not accustomed? Perhaps their reaction was to the idea of
functional programming which would have provided a distressing challenge to
intuitions developed through object-oriented or imperative programming? What
textbook did you use?

~~~
mrweasel
I would suspect that at least part of it is the same reason that I disliked
having Pascal as taught as doing my programming introduction course: It's not
a main stream language and it's sufficiently different that you cannot
directly apply what you're taught in most commercial settings. The languages
they will be using in the future, or expect to be using in the future are
C-style object oriented languages like C# or Java (depending on where in the
world you live).

It's not that languages like Racket, Rust, Haskell or even something like
Prolog and other languages aren't interesting or useful, in many cases they're
a better fit for your problems. It's just that without the background in the
C-style and object oriented languages it's pretty hard to appreciate the more
"niche" language and the problems they solve.

~~~
gameswithgo
>The languages they will be using in the future, or expect to be using in the
future are C-style object oriented languages like C# or Java

Between Go Rust, F#,Nim, Kotlin etc I think ML-style syntax, and composition
over inheritance is generally being preferred in a lot of newer up and coming
languages. As well languages like C#/Java/Rust are so multi-paradigm these
days the crossover relevance is very high from any one language to another.

I've never seen most languages as drastically different really. Lisps and
Prolog certainly are, Rust is a little with the borrow checker, but otherwise
I feel like people make much ado about "int x" vs "x :int" and "f(thing)" vs
"thing.f()"

~~~
emidln
Go isn't a strong example of ML syntax.

------
jolmg
I was surprised to see that you charge $100 for a 60-day post. Is that typical
of job posting sites?

~~~
ctas
It's actually cheap compared to other job boards, which usually charge 250+
for 30-60 days, giving you access to a pool of highly relevant developers. Not
trying to say, that it couldn't be free of course.

------
mruts
A long time ago, I was using racket at the largest hospital in Massachusetts
analyzing DNA sequences of MS patients. I used racket to create a GUI that
allowed non-technical biologists to create custom bioinformatics pipelines.

I found Racket to be great and highly productive. If you are looking to use
racket at work I would recommend you look into working as a software engineer
for academia.

If you are the only engineer around, you get to use any language that you
want.

~~~
Waterluvian
To just offer a possible contrary perspective: nobody else is around to tell
you you're using the wrong tool for the job.

There's many fine options for each domain and yeah, you get the choice of them
if there's no established languages. But be careful not to go off the deep end
on using your favourite langauge for everything.

On small teams it becomes increasingly important to endeavour to objectively
scrutinize your own choices as best as possible.

~~~
mruts
I agree with you, though being a lone developer sometimes allows you to be
more flexible in the tools you use. At the hospital I used Racket, Haskell, C,
and R. Because my programs didn't need to talk to each other, I was free to
write each utility in what best suited the job. On a team I think there's a
lot of pressure to just use what everyone else is using, which can lead to
sub-optimal results.

~~~
Zyst
Yes, but if the hospital ever needs to replace you they are SOL

~~~
mruts
Any developer worth their salt should be able to pick up a new language in a
couple days. I'm not sure why some developers are so adverse to learning
anything new.

~~~
JamesBarney
This just isn't true. There is a reason people look for devs with years of
experience in a certain stack.

~~~
mruts
At work we use Scala in a very functional style and Akka. Not a single dev on
our team (including me) knew Scala when they started. Everyone was productive
with the codebase and programmed idiomatically within a matter of weeks.

~~~
JamesBarney
I imagine the team was familiar with writing Java, which makes moving to Scala
the easiest possible language transition besides maybe a move from C# to
VB.NET. Switching to a completely different ecosystem, such as to R, Racket,
Haskell and C takes at least twice as long. And could be much longer if you're
relying on large framework changes, for instance if you're switching from QT
to GTK+ or WPF.

------
nestorD
Having discovered the TCL programming language because of a single person
using it in a bioinformatic lab I can second the recommendation.

~~~
liftbigweights
TCL/Tk is used heavily in finance/wall street.

~~~
chaosite
It's used heavily at Intel, in hardware verification.

~~~
Cyph0n
Virtually all EDA (electronic design automation) tools include a Tcl shell
that echoes back any GUI action as a Tcl command. This makes it very easy to
write Tcl scripts that perform repetitive actions (e.g., load HDL source,
compile design, simulate, check value of signal).

------
fgheorghe
Another programming language?

~~~
hambos22
Racket exists since 1995

