One of the ways to make Nim popular if more big or well known companies admit to using Nim in production. I work at Reddit which is a big well known company and here is a post on the official Reddit Tech Blog talking about my experience. Please I need you to spread the word that a company liker Reddit uses Nim as well. I bet there are a lot more companies that use Nim but don't talk about it.
And now on the the actual thing:
Official Reddit Tech Blog: https://old.reddit.com/r/RedditEng/comments/yvbt4h/why_i_enjoy_using_the_nim_programming_language_at/
HN: https://news.ycombinator.com/item?id=33600706
Thank you for your help in spreading the word.
The fact that a Reddit employee, and not just some, but one with his own UI and graphics libraries under his belt, links to old.reddit.com by default, is speaking a lot.
On the serious note, Andre's enthusiasm is what we can all learn from. You really relay the excitement you have for things in your presentations and it's contagious.
that's a great post thanks for sharing! in particular I liked a lot this initial part:
I have worked at Reddit for five years and have used Nim nearly every day during that time. The internal data tool I am working on is written primarily in Nim. I have developed a tiny but powerful data querying language similar to SQL but that is way easier to use for non technical people. I also have written my own visualizations library that supports a variety of charts, graphs, funnels and word clouds. Everything is wrapped with a custom reactive UI layer that uses websockets to communicate with the cluster of data processing nodes on the backend. Everything is 100% Nim.
I guess that the libraries that we get are a small part of the great stuff you do there! :)
can you tell us more how did you start in reddit and how you proposed/got accepted to work with nim? from your linkedin I saw you are (were?) working for a pushbullet company that you co-founded, was this acquired by reddit or you are still working on that? was that company also using Nim? I mean now you got me real curious... ;)
You founded Pushbullet?
I don't use it anymore, but in the mid 2010's that tool was one of the best things since sliced bread. I had my phone and all my devices hooked up to my browser and would just text + message everyone from there. Great stuff!
Since you're working on data with Nim, perhaps could you give me feedback on Nexus' ORM, if you have the time? https://github.com/jfilby/nexus
You can't do joins yet, but for my own purposes it has worked quite well.
@GavinRay Thank you for using pushbullet! We put a ton of work and love into it.
@jasonfi My "ORM" needs are massive, as its not a run time database were you fetch objects with a where clause. I need analytics, natural language processing and a bit of machine learning. I need not only joins, but windowing functions, time series, views, hyper log logs, aggregation, materialization, funnels, retention, a/b testing, caching layers and support for petabytes of data.
I am not a fan of YAML, main interface to your library appears to be YAML to code generator. I find YAML hard to write with many different ways and still like json more - as there is one way to do it. I prefer writing normal Nim even more and have the object map that way.
@nimian I enjoy programming and then you just have to put in the time.
On the subject of yaml I like the not so well known approach taken by Python library strictyaml: https://github.com/crdoconnor/strictyaml
Basically they remove a lot of yaml functionality (including type inference). What is left is a very simple format that I think is one of the best way to provide manually generate data for complex configurations (while json is best for machine generated data, and toml better for simple configuration).
An interesting library that goes in this direction (simplifying yaml) is nyml by @georgelemon: https://github.com/openpeep/nyml
OK that's more than most typical ORMs can handle and you'd likely need several tools. I can't say that I like YAML, but it seems like the best tool for the job since I want to abstract the information away from Nim to be more flexible.
JSON is still an option, I didn't go with it because it doesn't have a way to put comments in that aren't data, but I could add a comment field per object and that might be better.
The only thing is the time needed to make these changes. Modeling with Nim objects shouldn't take too long, but defining queries with Nim objects is more complex.