All our infrastructure technology, services, and almost all “applications” we have built are written in C++. That’s millions of lines of code and span everything from IR, distributed storage and computation, ads serving, relational and columnar datastores, caching and much more.
It’s about velocity and experience. Language rarely matters ( and when it does, you can use what’s appropriate ). For us, C++ checks all the boxes.
Above, you wrote <<velocity>>. Most people would say that C++ has lower velocity than other higher order languages, like C#, Java, Python, Ruby, etc. You also include the term <<experience>> which is a curious combination. In my professional experience, language "experience" dominates most discussions about what langauge to use for a new project. After all, programmers are humans who have biases from their (programming) langauge experience. (Zero trolling on the last sentence!)
Velocity is about familiarity, about expressiveness, about being able to quickly translating what you want to accomplish to code. It’s also about, for me anyway, not being constrained by inherent limits of the language or runtimes. Like I said, checks all the boxes.
As for experience, I have been writing C since the very early nineties and moved on to c++ soon thereafter.
Again, all that is, for the most part anyway, not specific to this language.
We have been running hundreds of services that effectively consume from various topics, perform mostly simple transformations and produce back to other topics. Providing this kind of functionality makes a lot of sense.
We are using TANK, and that functionality is not available there, but given the benefits such a feature provides, we will likely use RP as well in order to save on development time and number of distinct services we use for various events streams transformations.
This is quite ridiculous. I’d say it’s obviously ridiculous but others may have a different point of view. The government there is eager to side with Murdoch and his friends for favorable coverage so that they can pocket money from this extortion stunt while disregarding the impact to its many many citizens. Suggesting Bing is good enough is stupid because if their citizens were to use it over google if google quits that market, what then ? Government goes after them and if it does what if Microsoft also gets out? And if government doesn’t then doesn’t that show to the world that it was personal with google? People shouldn’t be stupid. It’s a low bar to clear.
This is fantastic news. What would you say were the hardest aspects of the design and implementation, in terms of effort and thinking that went into those accomplishments ?
I would say, building an scalable raft implementation has been by far the hardest thing. Mostly because we started from scratch and bypassed the page-cache with our read-ahead and write-behind strategies, etc. so building tiers of caches, etc and have a working raft system was hard.
In addition to those I highly recommend studying ClickHouse’s codebase. There are brilliant design and engineering bits everywhere. I learned more from studying this codebase than most other I can think of, especially with regards to templates meta-programming ( I learned about “template template parameters” from coming across extensive use of those there ). It’s actually somewhat challenging to grok what’s going on — but it is worth pushing through until you “get it”.
Pocket ( https://getpocket.com/ ). It’s really bad. Been using it for years and it’s always been broken. Crashes often, narration sometimes works most of the time it doesn’t, other times it works if you force stop the app and restart it. It’s very slow too. I depend on for my long daily commutes and I only stick to it because InstaPaper is also very broken and there is no reasonable way to move the stories from pocket to instapaper. I am convinced the people who build it never really use it for those issues are otherwise trivial to encounter and I would think trivia to fix as well. I hope someone will build a better such app and make them irrelevant.