[HN Gopher] We (Wallaroo) Moved from Pony to Rust
       ___________________________________________________________________
        
       We (Wallaroo) Moved from Pony to Rust
        
       Author : aturley
       Score  : 84 points
       Date   : 2021-10-06 19:34 UTC (3 hours ago)
        
 (HTM) web link (www.wallaroo.ai)
 (TXT) w3m dump (www.wallaroo.ai)
        
       | Fiahil wrote:
       | > However, in the meantime data science and machine learning
       | continued to explode, and we found that customer interest in
       | deploying machine learning models far outstripped demand for more
       | conventional stream processing data algorithms.
       | 
       | My experience is quite similar : I either end up working with
       | clients who are already using Spark etc, or they don't have a
       | mature data engineering lab. In both cases, deploying a model to
       | production is always the most challenging.
       | 
       | I hope their MLOps strategy is better, than just binding to
       | MLFlow. This tool is absolutely not ready for prime time, and
       | plagued by bad product decisions.
        
       | latenightcoding wrote:
       | There are people commenting that Pony was the wrong choice from
       | the get go, but many of us have only heard of this startup (which
       | operates in a saturated market) because they were using Pony.
        
       | Thaxll wrote:
       | Shocking that using a language that no one use was a mistake on
       | the long term. It made 0 sense what so ever to use it in the
       | first place.
        
         | mynameisash wrote:
         | I don't read this as "it was a mistake to use Pony." They state
         | that:
         | 
         | > in the meantime data science and machine learning continued
         | to explode ... With the increasing focus on MLOps, Rust became
         | a better fit
         | 
         | This sounds like, "Our business goals shifted, as did the
         | industry around data science, and Rust's maturity improved such
         | that it made sense for us to migrate our stack."
        
           | zamadatix wrote:
           | Mistake or not is hard to quantify without presenting what
           | qualifies as success first. Is "it was able to achieve our
           | initial goals" success or is "it was able to grow with our
           | business" success? For each of those how much ability is
           | enough to call it "not a mistake"?
           | 
           | I think it's fair to say looking back it was a mistake to
           | pick Pony on the assumptions it provided marginal benefit for
           | the exact needs of the business day 1 but at the same time I
           | think it's fair to say that picking Pony was not a mistake as
           | it allowed them to get where they are today.
        
         | OJFord wrote:
         | I think that might be more obvious today than it was five years
         | ago? In 2016 rust was already ahead of pony in adoption, sure,
         | but they were both young interesting languages. The five years
         | since have widened the gap considerably in maturity (of the
         | core language as well as community/ecosystem) I think.
        
         | eej71 wrote:
         | Making bad choices happens all the time. Learning to correct
         | them is a good skill to build up.
        
           | noiddicle wrote:
           | Sure, but if you take the time to actually read the article
           | you'll learn that Pony was at the time the only language and
           | runtime capable of meeting their needs.
           | 
           | You'd also learn that this is a different product with
           | different requirements.
           | 
           | There's no such thing as the "best language" - there's the
           | "best language that fits your problem domain".
        
         | mcintyre1994 wrote:
         | It sounds like no other technology (including Rust 1.0) met
         | their performance and concurrency requirements at the time
         | though.
        
         | continuational wrote:
         | Somebody has to be first.
        
         | pabl8k wrote:
         | OTOH an interesting language can be a recruiting draw. It
         | probably helped them recruit engineers who were interested in
         | the distributed systems and concurrency problems they were
         | trying to solve. See for example Jane Street with OCaml.
         | 
         | [edit: oops, thanks for the heads up on the spelling :)]
        
           | Zababa wrote:
           | OCaml is old and reliable, and I think it was already proven
           | to work in the industry when Jane Street chose it. Even if it
           | wasn't the best programming language ever, it was still a
           | strong choice at the time, and still is. Pony on the other
           | hand was and still is very young. I'm not saying it's a bad
           | choice, but it's definitely not the same risk profile as
           | OCaml.
           | 
           | It's just OCaml by the way, for Objective Caml. Unless you're
           | talking about the secret Irish fork /s.
           | 
           | There's a nice page on the official website about the
           | history: https://ocaml.org/learn/history.html.
        
             | wk_end wrote:
             | > I think it was already proven to work in the industry
             | when Jane Street chose it.
             | 
             | Not really. Outside of Jane Street OCaml has scarcely been
             | proven to work in the industry _now_. As a big OCaml fan
             | and former OCaml professional, I say this lovingly: it was
             | (and remains) popular in academia and that 's mostly it.
             | And Pony is roughly as old now as OCaml was when Jane
             | Street started using it.
             | 
             | The _actual_ reason OCaml 's risk profile was much lower
             | was because it effectively has the backing of the French
             | government and academy, which is quite the boon.
             | 
             | IIRC Jane Street chose OCaml basically because Yaron Minsky
             | was brought on as CTO, he had worked with it in school and
             | was a fan of it, and they knew that for the sort of work
             | they were doing OCaml would give them an edge (speed of
             | development and runtime efficiency) and they calculated
             | that its relative obscurity and poor community support
             | wouldn't be a liability for the sort of work they were
             | doing. And remember that it was the year 2000 - Perl was
             | basically the only language with the sort of library
             | ecosystem (CPAN) that is expected of languages now: poor
             | community support was much less of a liability then.
        
               | Zababa wrote:
               | > Outside of Jane Street OCaml has scarcely been proven
               | to work in the industry now.
               | 
               | I think it depends on what you're working on. If you're
               | building anything that looks like a interpreter/compiler,
               | it's probably one of your best bets. If you're working on
               | stuff that needs a lot of libraries, and relatively
               | obscure ones, it's probably one of your worst bet. If you
               | need good interaction with Windows, it's probably not a
               | great choice either. The businesses I know, which are
               | mostly SaaS, would probably fall under "not the best
               | choice, use with caution". If that's the general case, I
               | agree with you.
               | 
               | > The actual reason OCaml's risk profile was much lower
               | was because it effectively has the backing of the French
               | government and academy, which is quite the boon.
               | 
               | I wonder how much Jane Street benefited from that. The
               | classes preparatoires are still using OCaml to this day
               | (or at least were 3 years ago), and that's usually the
               | best students of France. I've also heard that Facebook
               | recruited quite a lot, for Hack and Flow.
               | 
               | > And remember that it was the year 2000 - Perl was
               | basically the only language with the sort of library
               | ecosystem (CPAN) that is expected of languages now: poor
               | community support was much less of a liability then.
               | 
               | That's a good point. I think OCaml still has a better
               | package manager and build tool than some really popular
               | languages (I'm thinking specifically about Python), but
               | it's hard to beat the ecosystem.
        
             | openfuture wrote:
             | Maybe they should have used a horse, they are much more
             | reliable than camels and more mature than ponies.
        
               | Zababa wrote:
               | I'm not sure, AoE2 taught me that camels always win
               | against horses. And if you consider Rust to be OCaml's
               | child (which is kind of true if you really stretch
               | things), it seems like young camels win against young
               | horses too.
        
         | steveklabnik wrote:
         | For every widely used technology, someone had to be the first.
         | And then some small group had to be the early adopters.
        
           | zitterbewegung wrote:
           | If you are a startup it's best to focus on the product and
           | not necessarily the implementation
           | 
           | Groupon was prototyped in Wordpress.
        
             | Zababa wrote:
             | And Rails was extracted from Basecamp. I think startups
             | depend so much on the few firsts individuals that it's hard
             | to have a hard rule about what to use.
        
             | steveklabnik wrote:
             | For some startups, that makes sense, yes. For other
             | startups, it may not. See pg's classic essay (that I'm not
             | 100% sure I agree with, but, we're on hacker news) for one
             | example of why you may want to use a more niche langauge:
             | http://www.paulgraham.com/pypar.html
             | 
             | Ruby on Rails was created for Basecamp.
        
             | spooneybarger wrote:
             | Wallaroo started as a company that was building high-
             | performance data processing infrastructure for real-time
             | trading and adjacent systems. Wordpress wouldn't really cut
             | it.
        
         | kgraves wrote:
         | I find it a strange trend, as if it is some sort of competitive
         | advantage.
         | 
         | very strange and odd.
        
       | Zababa wrote:
       | This feels like the same pattern as Dark leaving OCaml for F#:
       | https://blog.darklang.com/leaving-ocaml//. Ecosystem matters a
       | lot these days. Outside of these two specific cases, I wonder if
       | we're, as an industry, too afraid of writing this kind of stuff
       | now I feel like it was done a lot before, and not at all these
       | days. Sure, NIH syndrome is a fallacy, but having to write one
       | library may not be so bad. I would be glad to hear about any
       | experience with that.
        
         | travisgriggs wrote:
         | How depressing. Probably true. But depressing nevertheless.
         | Bigger frameworks, more complicated libraries, deeper multi
         | tiered tooling, all of these things that we call ecosystem,
         | reduce access to general purpose programming and creativity.
         | We've created a bureaucracy of execution so complicated that we
         | need vast amounts of funding to keep us at the tiller doing the
         | biddings of e-commerce apps. It's like the founding fathers of
         | programming have been reborn as Sir Humphreys.
        
           | Zababa wrote:
           | If you're doing things on servers that you manage yourself
           | and not using lots of saas, you can probably still do things
           | in an obscure programming language.
        
         | crdrost wrote:
         | Kind of, but like OCaml-to-F# is like "Dark goes from the Prius
         | of languages nobody uses, to the Tesla of the .NET ecosystem."
         | The aims (ecological in the car case) of the purchaser are
         | similar, but the car [at least in its ecosystem] is sleeker and
         | now the roads are a bit different.
         | 
         | On the other hand this is like "Wallaroo moves from the
         | Cadillac of languages nobody uses, to the Chevy Equinox of
         | languages nobody uses." Like, totally fine, you grew older and
         | had kids and needed an SUV to keep up with home life, no shame
         | in that... but there is a wistful "ah when we were young" to
         | the transition, no?
        
           | Zababa wrote:
           | I don't know anything about cars and don't understand your
           | metaphor at all, sorry.
        
             | _dwt wrote:
             | I know a little about cars and I'm still confused - I think
             | I just have a very different view of the relative "it
             | factors" between each pair of languages. De gustibus...
        
               | crdrost wrote:
               | Yeah I mean that's fair too. My impressions are poorly
               | formed but the analogy is that both F# and OCaml are
               | based on functional programming, which to my mind takes a
               | step back from the "imperative programming -> OOP ->
               | shared state multithreading" history into an alternative
               | history, I'm phrasing this as them being "electric cars"
               | for the first half. OCaml is not really the swankiest of
               | swank in the alt-languages community, so I chose a Prius
               | to be like "what's a car that folks know as eco-friendly
               | but it's not very prestigious?" ... meanwhile F# is like
               | "we are THE functional programming of the .NET world,
               | come over here we're cool and slick and all-electric"
               | hence the Tesla comparison.
               | 
               | Pony is like the far-off "ah maybe someday I'll be able
               | to use that at work, maybe for some little experiment"
               | thing and it reminded me of going to a dealer and being
               | like "let me drive the Caddy, you know I'm not gonna buy
               | it, I know I'm not gonna buy it, but I just wanted to
               | live a little today." I don't have any particular
               | experience with Chevy SUVs so I just chose one at random,
               | the point was that Rust is like a "look we're just trying
               | to be C with explicit contracts between parts that allow
               | for memory safety" type of language, very practical and
               | chunky and like people love it don't get me wrong...
               | just, it's an SUV. It's less opinionated and more just
               | "let's get from point A to point B safely."
        
               | pjmlp wrote:
               | Except the O in OCaml stands for Objective Caml, and F#
               | has plenty of OOP features to interoperate with .NET
               | ecosystem.
        
               | Zababa wrote:
               | I think it's one of those cases where using metaphors
               | doesn't help clarify the thought, and instead obscure it.
               | Rust shares a lot with OCaml, and so with F#. F# is "the"
               | functional programming language of the .NET world, but
               | it's also because it's the only one, and it's a second
               | class citizen.
               | 
               | I will also add that Rust is not trying to be C (and
               | neither trying to "replace C"). It's here to offer an
               | alternative, that in some cases makes more sense than
               | sticking with C. C code means a lot of thing. For
               | example, some people code in C89 because they find some
               | kind of purity in it. You're never going to get that from
               | Rust. For some people, it means fast and secure code,
               | like with Python's cryptography. That's a place where
               | Rust can be used. For some other people, it's C because
               | that's the only thing that's allowed by some authority.
               | Again, Rust isn't going to fit here until/if it's
               | allowed. I think in general, trying to reason in terms of
               | use case leads to better comprehension than trying to
               | think in languages.
               | 
               | But outside of that, the move was basically the same.
               | They found another language that's very similar, but that
               | has a way bigger ecosystem.
        
         | wyager wrote:
         | I used to work at an OCaml company and it wasn't nearly as much
         | of an issue as one might predict. You can (it turns out) build
         | a very successful business even if there aren't a lot of
         | existing libraries, or if the language lacks certain basic
         | features like native multithreading (same with Python of
         | course). I don't have a great model for _why_ this isn 't
         | devastatingly expensive, but it's probably some combination of
         | 
         | * Most existing libraries are kind of bad anyway so you're not
         | missing out much by not using them
         | 
         | * If you write everything yourself you get system expertise
         | "for free", and gaining expertise in something that already
         | exists is hard
         | 
         | * You can tailor everything to your business requirements
         | 
         | * Writing libraries is "fun work" so it's easier to be
         | productive while doing it
        
           | Zababa wrote:
           | That's interesting, thanks for sharing your experience.
           | Sometimes I wonder how much interesting experience I miss by
           | mostly using things people already built. Sure, if you're
           | just trying to get something done it's probably faster, but
           | on the other hand spending more time gives you experience.
        
           | brundolf wrote:
           | It would probably depend a lot on what you're building
           | 
           | Though I think the "fun work" point is really interesting and
           | worth a broader discussion
        
           | pbiggar wrote:
           | I don't agree with this at all.
           | 
           | While it's true that there are lots of bad libraries and many
           | libraries are easy, you really isolate yourself from the
           | broader ecosystem by doing this. Vendors and 3rd party
           | solutions are now much harder to use, and when you use them
           | you'll probably only use them at a surface level instead of
           | using all the features.
           | 
           | And some things are so mature and vast you don't have a
           | chance of building them yourself. If what you are doing can
           | be done well in very mature ecosystems like React or PyTorch,
           | the effort to recreate them will dwarf the time spend on
           | important work.
        
             | Zababa wrote:
             | > If what you are doing can be done well in very mature
             | ecosystems like React or PyTorch, the effort to recreate
             | them will dwarf the time spend on important work.
             | 
             | Sometimes that's effort that's not really necessary. At
             | work we had a team build a dashboard with React and a few
             | graphs recently. It clocks at 2000 unique dependencies.
             | That's not a typo, it's two thousands dependencies for a
             | few graphs. Reimplementing all of that would take many man-
             | years of work, but I think it wouldn't be necessary in the
             | first place. Chart.js doesn't use any runtime dependencies,
             | and could probably fill most of our needs. Chart.js is 50k
             | of Javascript, which is a lot but probably more than we
             | need. I don't know how much time it would take to make a
             | reimplementation to have the API we need, but I think it's
             | doable. Why would we want to do that? Because those 2000
             | dependencies are a liability. Last time I checked 165 were
             | looking for funding. It would be easy to imagine a
             | malicious actor paying a few people to contribute to low
             | profile but widely used JS libraries, and take over the
             | maintenance when the original maintainer becomes tired. I
             | don't know if this is a worse liability than developing our
             | own chart library. I don't know much about security and the
             | tradeoff involved.
             | 
             | All of that to say, isolation from the broader ecosystem
             | may be a good thing.
        
             | jokethrowaway wrote:
             | I know plenty of companies not using third parties for
             | security or ideological reasons.
             | 
             | Code is code: both models (3rd party vs no 3rd party) can
             | work and the time spent reinventing the wheel is not
             | necessarily business breaking.
        
           | ch4s3 wrote:
           | The "for free" is doing a lot of work there! :) I've been
           | there, and you do develop the valuable human capital, but it
           | costs time and salary.
           | 
           | That said, you're right it is fun, and people like doing it
           | so its good to keep your work mixed up and you team
           | motivated.
           | 
           | It's a good lever to pull IMHO, but not always.
        
         | pbiggar wrote:
         | That was my thought (I wrote the Dark post).
         | 
         | It also makes me think of CircleCI where they stayed in Clojure
         | for quite some time - it really didn't have that much need for
         | libraries (and the ones it did need, such as AWS, were provided
         | by Java).
         | 
         | When evaluating whether to use a non-mainstream language, the
         | rule I use now is:
         | 
         | - will I need to interact significantly with the outside world
         | in a way that can only be done with libraries?
         | 
         | - if not, do I gain a lot with this non-mainstream language?
         | 
         | That contrasts against how I used to do it, where I viewed it
         | as a trade-off between the ecosystem and the advantage of the
         | non-mainstream language.
        
           | Zababa wrote:
           | Thank you for the posts, the follow up posts and your
           | perspective.
        
         | pjmlp wrote:
         | That is why when comparing languages we should always look
         | beyond grammar and semantics.
         | 
         | This is nothing new, it is also a reason why languages like C
         | and C++ won the systems programming wars from the 1990's.
         | 
         | After a while one gets tired to write wrapper libraries, or
         | having to pay extra for an additional compiler that isn't part
         | of the platform SDKs.
         | 
         | Hence why successful languages always need some kind of killer
         | feature, or a company with deep enough pockets willing to push
         | it into the mainstream no matter what.
         | 
         | Same applies to new OS architecture ideas as well.
        
       | shrubble wrote:
       | Wasn't there a big brouhaha, many years ago, when Reddit switched
       | from Lisp to Python?
        
       | guu wrote:
       | Last year they discussed why they didn't choose rust (predicted
       | 12-18 months to build a runtime that met their requirements) or
       | erlang (performance too slow):
       | 
       | https://corecursive.com/055-unproven-with-sean-allen/#consid...
        
         | spooneybarger wrote:
         | That's me. I discussed why we (I am no longer at Wallaroo) made
         | the decision about 5 years ago to use Pony to build a product
         | that is no longer what Wallaroo is selling.
        
       | debarshri wrote:
       | Just a thought. Rewriting the core platform from one language to
       | another just takes huge resources for orgs who are in high growth
       | path. It feels like a side mission, derailed from core value that
       | is solving the problem statement. Rewrites are generally a red
       | flag for me, especially early in an orgs history.
        
         | spooneybarger wrote:
         | This article is about how Wallaroo when they started a NEW
         | product chose a different language than what was used to write
         | the original product.
         | 
         | There's no rewrite here.
        
       | ZeroCool2u wrote:
       | The product Wallaroo is building sounds really interesting, (It's
       | so appealing I honestly checked out their open positions), but
       | it's really difficult to get a feel for what exactly it's like to
       | use their product now.
       | 
       | The description and outcome statistics make it sound _excellent_
       | and their technology stack makes their claims seem viable.
       | However, and I say this as someone that is currently running an
       | MLOps RFP, after looking at every page of their site and all
       | their open job postings I have no idea what it's actually like to
       | use their product.
        
         | aturley wrote:
         | Thanks for checking us out. We're working improving our website
         | and our explainer materials. Would you be interested in a quick
         | conversation? I'd be happy to do a demo and get some feedback
         | on ways we could improve the first impression. you can reach me
         | at `andy at wallaroo dot ai`.
        
       | secondcoming wrote:
       | > Our new Rust-based platform recently handled millions of
       | inferences a second of a sophisticated ad-targeting model with a
       | median latency of 5 milliseconds, and a yearly infrastructure
       | cost of $130K.
       | 
       | Were these run on CPUs or GPUs? How many of them? Last I looked
       | at running Tensorflow models on CPUs it was really slow, so slow
       | we had to abandon it.
        
       | btheshoe wrote:
       | That font is so thin it's almost uncomfortable to read.
       | 
       | I've never heard of Pony before - is it any good, or worth
       | playing around with?
        
       | pjmlp wrote:
       | I guess it makes sense from business point of view, although it
       | is a pity that Pony is losing what is probably the only
       | commercial user (that I am aware of).
        
       ___________________________________________________________________
       (page generated 2021-10-06 23:00 UTC)