Sam Saffron, a co-founder of Discourse and former Stack Overflow developer, writes about Ruby and .NET performance, memory, and Rails internals.
Commenters call his write-ups great and call his Ruby 2.1 garbage collection article a must-read; his Stack Overflow .NET GC post is cited for scaling GC languages.
1. I don't quite understand why people love Rust. I have nothing against it but I just don't quite get why the love. I viewed it as Modern C++ with Memory Management done right from Engineering perspective and elegant syntax with package management done right from the beginning. And may be just my circle or reading list, many Rubyist jumped to Rust, and more often after trying a few times and clicked, they felt in love with it.
2. Ruby = Rails. ~8.5% of Ruby Developers and there are 8.2% of Rails Developers.
3. Ruby / Rails are for many years split in love and dreaded languages and framework. ~50% on both side. I don't see any other languages and framework has similar pattern.
4. There are more Django / Laravel developers than Ruby Rails.
5. ~60% of Developers are on Windows. That was obvious right? And yet Ruby / Rails Community has ignore the Windows as a development platform for years. [1] My guess it is the lack of resources.
6. Speaking of Resources, Ruby is the top programming language that is surviving without a Major Cooperation ( Facebook, Amazon, Microsoft, Google, Apple ) backing.
7. Ruby 's Median salary, comparatively speaking is trending on the higher side. And also one of the highest with respective of lower years of experience. That is both good and bad. Developers get higher salary, but less company are willing to choose it for cost reason.
8. Am I correct to assume those Salaries exclude any Stock grant? Which is common in US?
9. Visual Studio Code…
Try http://m.twitter.com , it's the dressed-down mobile version of Twitter.
It doesn't have all the features, but easily makes up for that by the fact that you can actually click around as much as you like without your browser getting all slumpy from loading huge pages or doing javascript.
You'd expect caching to help, but there's a lot of truth in the jQuery tax article[1]: even if you got the code cached, executing it all takes a significant amount of time, and the sluggishness is made worse by the fact that during this time your CPU is busy, unlike with data transfers which at most cost some memory.
I don't use the m.twitter.com site all the time, but I switch often enough whenever I get too annoyed by default Twitter's slowness.
The only real downside (for me) is that you can't click through to a full resolution version of a profile picture. Otherwise all the basic features are in there.
[1] http://samsaffron.com/archive/2012/02/17/stop-paying-your-jquery-tax
Any GC that walks the graph, and isn't mostly concurrent. You will know when the graph becomes complex enough, because thereafter the GC will not let you ignore it. In my experience, as few as several hundred thousand objects can become a problem. Imagine trying to write a responsive 3D modeling app with vertices, edges, and faces all bidirectionally pointing to each other. You the programmer would think very carefully before fully traversing such a data structure (much of the point of having thorough internal references is avoiding doing much traversal!), and yet the runtime helpfully does it for you, automatically, and there's nothing you can do to stop it.
https://samsaffron.com/archive/2011/10/28/in-managed-code-we-trust-our-recent-battles-with-the-net-garbage-collector
http://stackoverflow.com/a/14277068
This solution seems extreme, given the GC is just a reality of working with managed languages which is most of the web these days (.NET, Java, Ruby, etc.). Many, many heavy traffic websites solve these problems without resorting to language magic tricks. Usually with effective use of caching, or separating out the heavily accessed data in a way that is is optimized for those read operations.
This is the second StackExchange article where it feels like square peg, round hole. The first was [their ORM] (http://samsaffron.com/archive/2011/03/30/How+I+learned+to+stop+worrying+and+write+my+own+ORM) which isn't really an ORM at all (perhaps micro ORM is fair) in the traditional sense.
Quality means many things... When it comes to the experience of the people using the site, performance - how long it takes the requested page to display - is critical; the vast majority of Stack Overflow's page requests are someone requesting a page that they urgently need to read.
That doesn't preclude other aspects of quality of course. But it does influence how they're approached. A heavily abstracted system that hurts performance is unacceptable, but there are other ways to achieve the same ends.
You might find this article interesting... http://samsaffron.com/archive/2011/03/30/How+I+learned+to+stop+worrying+and+write+my+own+ORM
The ORM is definitely very read-focused, which is probably not that surprising given that it's used for web, and given the motivations for creating it, discussed at the blog post mentioned by @gokhan [1].
It would be nice to have some lightweight stuff for updating/inserting too, though I guess doing it in such a way that you don't need to write lots of boilerplate kinda requires SQL generation, which dapper is avoiding on purpose.
[1]: http://samsaffron.com/archive/2011/03/30/How+I+learned+to+stop+worrying+and+write+my+own+ORM