Monday, March 5, 2012

Why critics of Rails have it all wrong (and Ruby's bright multicore future)

Edit: Contrary to what I said here, José Valim is not stepping down from Rails core, he is merely on sabbatical. My bad.

Lately I've been getting the feeling the Ruby community has gotten a bit emo. The enthusiasm surrounding how easy Ruby makes it to write clean, concise, well-tested web applications quickly is fading. Rails has become merely a day job for many. Whatever hype surrounded Rails at its inception has died down into people who are just getting work done.

Meanwhile, Node.js is the new hotness, and many in the Node community have sought to build Node up by bringing Ruby and Rails down. I know that once upon a time Ruby enthusiasts were doing this sort of thing to Java. However, the tables have turned, and where Ruby used to be the mudslinging hype-monkey, it's now become the whipping boy and Node.js the new provocateur.

The sad thing is many of these people are former or current Rubyists who have taken a liking to Node and build it up by spreading blatant untruths about Ruby. I won't go as far as to call them liars, but at the very least, they are extremely misinformed, ignorant of the state of the Ruby ecosystem, and pushing their own agendas.

Jeremy Ashkenas, the creator of CoffeeScript, recently trashed Rails 3 and claimed "Node.js won":


The idea that Rails 3 was a major step backward was recently reiterated by both Giles Bowkett and Matt Aimonetti. Both of them painted building ActionController::Metal applications as some sort of byzantine, impossible task which can only be accomplished by a Rails core member. Are people actually building lightweight Rails applications using the newfound modularity of Rails 3?


Jose Valim, (now former) Rails core member, published a small, simple gist illustrating how to build barebones apps on ActionController::Metal (one of the most forked gists I've ever seen) which is further documented in his book Crafting Rails Applications. In just 50 lines of code you can strip Rails down to its core, making it ideal for use in modern client-heavy HTML5 applications. The funny thing about this gist is that while the idea of a 50 line Rails app seems pretty impressive, the basis of that gist is what Rails 3 puts into your config/boot.rb, environment.rb, and application.rb, just combined into a single file. Did I just blow your mind? Sadly, all the (in my opinion completely undeserved) bad press seems to have made Jose emo as well, and he has stepped down from Rails to pursue his Elixir language.

ActionController::Metal-based applications (along with apps written in Clojure) were the basis of our backend at Strobe, where we sought to ease the pains of people building modern client-heavy HTML5/JS applications with frameworks including SproutCore/Ember, Backbone, and Spine. ActionController::Metal provided a great, fully-featured, mature, and modular platform for us to build applications on top of, and Strobe's ActionController::Metal stack for client-heavy HTML5/JS applications is available on Github. The apps we built with the Strobe ActionController::Metal stack talked only JSON and our frontend was an HTML5/JS application written with SproutCore.

Before Strobe, I worked at a company building rich HTML/JS applications for digital television. Our backend was written in Rails. Our frontends were Flash and HTML/JS applications, the latter of which were single-page client-heavy HTML/JS apps that were packaged in .zip files and installed onto digital televisions and set top boxes, a sort of weird hybrid of web technologies and installable applications. Our Rails application didn't have any views, but provided only a JSON API for the HTML/JS frontend to consume.

Rails was great for this, because it provided the sort of high level abstractions we needed in order to be productive, ensure our application was well-tested, and above all else provided the necessary foundation for clean, maintainable code. I was doing this in 2008, and even then this was already considered old hat in the Rails community. In case you're not paying attention, that's one year before Node even existed.

Modern HTML5/JS apps depend on beautiful, consistent RESTful JSON APIs. This is a great way to develop rich interactive applications, because it separates the concerns of what the backend business logic is doing from the view layer entirely. Separate teams, each specialized in their role, can develop the frontend and backend independently, the frontend people concerned with creating a great user experience, and the backend people concerned with building a great API the frontend application can consume.

Rails is great for JSON APIs.

And yet this meme persists, that somehow Rails is actually bad at JSON APIs. Those who propagate this meme insist that Rails has lost its edge, and that only Node understands the needs of these sorts of modern client-heavy web applications. Giles recently attempted to argue this position:


Giles recently blogged about this issue at length. Let's look at what he has to say about ActionController::Metal and the new level of modularity and clean design that Rails 3 brings to the table:


So Jose wrote a great book about the incredible power of Rails 3's new modular APIs... but... but... but what?

WARD CUNNINGHAM BITCHES. TWEETS > BOOKS. NODE WINS. QED.

Hurrrrrrrr? Ward Cunningham is a cool guy and his concept of a Wiki was a transformative technology for the web, but what the fuck does that have to do with Rails 3's new modular APIs or Jose's book? I think that's what people in logical debate circles call a "non-sequitur".

Perhaps there's still a cogent argument to be had here. Let's dig deeper:


Okay, so the problem is there's not a damn simple way to do websockets. OH WAIT, THERE IS:


Cramp is an awesome, easy-to-use websockets/server-sent events framework (with socket.io support) which runs on Rainbows or Thin, and Thin is a great web server. According to my benchmarks it's approximately the same speed as Node's web server:

Web Server            Throughput  Latency
----------            ----------  -------
Thin    (1.2.11)      8747 reqs/s (7.3 ms/req)
Node.js (0.6.5)       9023 reqs/s (7.1 ms/req)
Yes folks, Node isn't significantly faster than Ruby at web server performance. They're about the same.

Giles also bemoans bundler, because typing "bundle exec" represents ceremony, and using any of the myriad solutions to avoid typing "bundle exec", such as bundler binstubs or rvm gemsets, represents configuration which violates the Rails mantra of "convention over configuration", and how npm is that much easier. I'm sure we would all love to not have to add a one line .rvmrc file to each project to avoid typing "bundle exec", but uhh Giles, bro, mountain out of a molehill much?

Meanwhile, let's check out how convention over configuration is going in the JavaScript world:


But enough about Giles... what kinds of awesome, modern HTML5 applications are people using Rails to build?

I think one of the best examples of this sort of application is Travis CI. Travis is an open source distributed build system with an Ember-based frontend and a Rails backend. Travis's interface shows, in real time, the state of all builds across the entire (distributed) system, allows you to interactively explore the history, see the distributed build matrix completing jobs in realtime, and even have it stream the console output of builds in progress directly to your browser as they complete. It's an amazing, modern client-heavy HTML5/JS application, and it's built on Rails.

Who else is using Ruby/Rails for their frontend? Oh, just Twitter, LivingSocial, Groupon, Heroku, EngineYard, Github, Square, Zendesk, Shopify, Yammer, Braintree, Boundary, Stripe, Parse, Simple, and of course let's not forget 37signals. Rails is the technology underlying the frontend web stack of many huge businesses. Many of these companies have client-heavy HTML5/JS applications which consume a JSON API coming out of Rails. Many of them have APIs that are routinely cited as archetypical RESTful JSON APIs. Many of them have top notch engineering teams that choose the best tools for the job and use many languages for many different tasks. Many of them were founded "post-Node" and had the opportunity to choose Node as their frontend web technology, and while they may use Node in some capacity, their main consumer-facing sites are written with Rails.

Node is three years old now. Where are the Node.js success stories? Who's built a brand on top of Node?  Nodejitsu? Hubot? Is Node anything more than a pyramid scheme or a platform for Campfire bots? Where Rails selling points eschewed performance and instead focused on clear code, rapid development, extensive testing, and quick time-to-market, Node's selling points seem to universally revolve around its insanely fast, destroy the internet fast performance (benchmarks not provided). Meanwhile code quality is de-emphasized and large Node programs degrade into incomprehensible, byzantine structures of callbacks and flow-control libraries, instead of being written in sequential code, you know, the code you can read:

 

What about Ruby in general? What advancements in the Ruby ecosystem are worth getting excited about?

JRuby is maturing into a high-performance Ruby implementation which taps the JVM's advanced features including the HotSpot compiler, multiple pluggable garbage collectors, and parallel multithreading which makes it suitable for multicore applications. One thing I think sets JRuby apart is that it's the most mature language on the JVM which didn't start there. Other projects to implement non-JVM languages on top of the JVM, such as Rhino and Jython, have languished, while JRuby keeps going strong.

The most exciting development in JRuby is Java 7's new InvokeDynamic feature. The Java Virtual Machine was originally designed for the statically-typed Java language, but has its roots in dynamic languages, namely Smalltalk. With InvokeDynamic, the JVM has come full circle and now natively supports dynamic languages like Ruby. InvokeDynamic provides the necessary information to the JVM's HotSpot compiler to generate clean native code whenever Ruby methods are called, in addition to many other potential optimizations. So how much faster will InvokeDynamic make Ruby?


Rubinius, a clean-room Ruby virtual machine based on the Smalltalk-80 architecture, is also a very exciting prospect for the Ruby community as it matures and reaches production quality. It features an LLVM-based JIT compiler, parallel thread execution, and advanced garbage collection, also making it suitable for multicore applications. Beyond being an awesome Ruby implementation, Rubinius has evolved into a true polyglot platform and now features multiple Rubinius-specific language implementations including Fancy and Atomy.

MacRuby also eliminated the GIL from their implementation and now supports parallel thread execution along with an LLVM-based JIT compiler.

There are no less than three Ruby implementations which now support thread-level parallelism and thus multicore CPUs. This is especially relevant in a time when computing is undergoing a sort of phase transition from single-threaded sequential applications to massively multithreaded concurrent applications and distributed systems made out of these multithreaded applications.

It wasn't too long ago that having even four CPU cores in your home computer seemed like a lot, and now 16-core commodity AMD CPUs are available. The future is multicore, and if your programming language doesn't have a multicore strategy, its usefulness is vanishing. Following Moore's Law, the number of cores in a CPU is set to explode exponentially. Is your programming language prepared?

Thanks to JRuby and Rubinius, Ruby can take advantage of multicore CPUs. This still leaves the small matter that multithreaded programming is, uhh, hard. Fortunately I have some ideas about that.

Celluloid is an actor-based concurrent object system that tries to pick up on the concurrent object research that was hot in the mid-90's but died shortly after the web gained popularity. In the '90s concurrent objects were ahead of their time, but with the advent of massively multicore CPUs I believe it's an area of computer science research that's worth reviving.

Celluloid packages up Ruby's core concurrency features into a simple, easy-to-use package that doesn't require any modifications to the language. Where many functional languages solve the issues surrounding concurrency with immutable state, Celluloid solves it with encapsulation (more information is available on the Celluloid github page).

Celluloid takes advantage of many of the features of Ruby, including parallel threads, fibers (coroutines), method_missing (proxy objects), and duck typing. There aren't many other languages with this particular mix of features. Python probably comes the closest, aside from multicore execution due to its GIL. Jython supports parallel thread execution thanks to the JVM but seems abandoned. For what it's worth, Python once had a concurrent object system quite similar to Celluloid back in the '90s called ATOM, unfortunately the source code has been lost.

Ruby is by far the best language available today to implement a system like Celluloid, and that alone makes me excited to be a Rubyist. Where Node.js gives you a hammer, the single-threaded event loop, Celluloid gives you a large toolbox and provides a singular framework of interoperable components which can be used to build arbitrary hybrids of concurrent multithreaded applications, event-based nonblocking applications (that are callback-free!), and distributed systems.

Ruby is a language which can survive the massively multicore future. Whether Node will stick around remains to be seen.

535 comments:

«Oldest   ‹Older   401 – 535 of 535
Tech said...
This comment has been removed by the author.
HawkEyes said...

Thanks for sharing your wonderful and helpful content with us. Looking forward to see more good posts from you in future. google Keyword planner .

Anonymous said...

Thanks for sharing such a nice info.I hope you will share more information like this. please keep on sharing!


Python Training In Bangalore
Artificial Intelligence Training In Bangalore
Data Science Training In Bangalore
Machine Learning Training In Bangalore
AWS Training In Bangalore
IoT Training In Bangalore

Vijayakash said...


I really enjoyed this article. I need more information to learn so kindly update it

SEO Training in Anna Nagar
SEO Training in Velachery
SEO Training in OMR
SEO Training in T Nagar
SEO Training in Porur
SEO Training in Chennai

Vijayakash said...

I really enjoyed this article. I need more information to learn so kindly update it


SEO Training in Anna Nagar
SEO Training in Velachery
SEO Training in OMR
SEO Training in T Nagar
SEO Training in Porur
SEO Training in Chennai

Kavita Sharma said...
This comment has been removed by the author.
Hemalatha said...

Very interesting article to read it. I would like to thank you for the efforts you had made for writing this wonderful article. This article inspired me to read more. Keep sharing on updated posts…

Learn Digital Marketing Course in Bangalore with Live Project Work & Case Studies taught by Ranjan Jena (10Yrs Trainer). 100% Guarantee to Clear Job Interview.
SEO Course
PPC Google Adwords Course
Social Media Course
Google Analytics Course
Adobe Analytics Course
Graphic Designing Course

Unknown said...

In order to publish your article, you need to be a member of the AHEC Writing Group.

For that, you can simply sign up to https://www.ahecounselling.com/sign-up

Once you are logged in, you will be in the "accounts" section of the site and the link is "https://www.ahecounselling.com" [This is your own account from where you can write and upload your article].

In the coming months there will be new features introduced likewise Stories Teller along with Bog Posting and Journal Publication.

Once you post your Blog, Article or Story, click on Submit and it will be gone for the review of our Quality Team. Once the review is done, your content will be available on-site that you can share on Facebook, Linkedin, and Twitter. If you need to change your article written version into an infographic video post. for youtube, you can raise a request by sending us an email at "info@ahecounselling.com" and we will do it for you.

Participate with us in this new conceptual era and become a faith for the rest of the world.

salome said...

thank you for your interesting article
keep it up

devops Training in chennai | devops Course in Chennai

salome said...

thank you for your useful article

devops Training in chennai | devops Course in Chennai

khushisinha said...

Manali Escorts provide a body massage wherever he rubs your personal organ and brushes your body together with his nipples. Play with her breasts and come to the bar for the joy of your heart.
Nainital Escorts

Shivani Sharma said...

Independent Connaught Place Escorts girl, I will give you Full services both incalls and outcall only five-star and four-star hotels in Connaught Place Escorts.If you are interested please contact me for more information visit our website.

Kavita Sharma said...

If you are looking for the best escort service. We guarantee we will satisfy all your basic needs. Contact here for service.
Delhi Escorts
Delhi Escort
Noida Escort
Noida Escorts

Kavita Sharma said...
This comment has been removed by the author.
Huongkv said...

Mua vé tại Aivivu, tham khảo

bay từ singapore về hà nội

vé máy bay hà nội sài gòn giá rẻ

vé máy bay giá rẻ huế đi hà nội

ve may bay hcm di nha trang

vé máy bay quy nhơn sài gòn vietjet

Kavita Sharma said...
This comment has been removed by the author.
Kavita Sharma said...

Indore is especially the most popular city for beautiful girls because we offer Escorts in Indore on demand and deliver the best services in 5/7-star Hotels.
Indore Escorts
Delhi Escorts

Vijayakash said...

Awesome Blog!!! Thanks for it, it is more useful for us.

German Classes in Tambaram
German Classes in Anna Nagar
German Classes in Velachery
German Classes in T Nagar
German Classes in Porur
German Classes in OMR
German Classes in chennai

Vijayakash said...

it was so good to read and useful to improve my knowledge as updated one, keep blogging…

graphic design courses in tambaram
graphic design courses in Porur
graphic design courses in Chennai


360DigiTMG-Pune said...

Good information you shared. keep posting.
Best data science course with placements

Digital Vishnu said...

This is incredibly useful information!! Excellent work. All is very fascinating to learn and simple to grasp. Thanks for sharing such great info. Keep Post These kinds of Articles in the future.

Digital Marketing Course in Coimbatore
Digital Marketing Course Training in Tirupur
Digital Marketing Course Training in Madurai
Digital Marketing Course Training in Theni
Digital Marketing Training in Coimbatore

Vijayakash said...

Awesome Blog!!! Thanks for it, it is more useful for us.

SEO Training in Anna Nagar
SEO Training in Velachery
SEO Training in OMR
SEO Training in T Nagar
SEO Training in Porur
SEO Training in Chennai

360DigiTMGAurangabad said...

"Very Nice Blog!!!


Please have a look about "
data science courses aurangabad

360DigiTMGAurangabad said...

Wow, amazing post! Really engaging, thank you.
data scientist course in aurangabad

Arslan Bhatti said...

AMAZING BACHELORETTE PARTY SUPPLIES We strive to have a positive impact on small to medium businesses, customers, employees, the economy, and communities. Surjmor bring together smart, passionate builders with different backgrounds and goals, who share a common desire to always be learning and inventing on behalf of our customers. With all the family of business that are a part of us, our goals is providing customers with the best service possible.

xxxtoys.top

lust girls69 said...

Welcome to Patel Nagar Escorts, You will find my company intoxicating if you have always dreamt of making love to a sexy bhabhi with big and soft curves. Get a body massage from me to get rid of all your tiredness. I love to indulge in foreplay and 69 is my favorite position. If you are thirsty for some oral sex, I can make you happy by giving you a fantastic blow job. I have no objections to all kinds of sex poses which is why I am able to easily satisfy my customers. You will find my company intoxicating if you have always dreamt of making love to a sexy bhabhi with big and soft curves.
Patel Nagar Escorts

Kavita Sharma said...

Our Escort Girls Offer Gentlemen Escorting The Most Unforgettable Experiences.
Noida Escorts
Escorts in Noida

Kavita Sharma said...


Nice article and very useful thanks for share with us.
Welcome to my personal website
Indore Escorts | Indore Escorts | Noida Escorts | Noida Escorts

Lucy Lee said...

I am professional blogger and has keen interest in writing, traveling and playing music. I am also seo consultant at

moneyminner.blogspot

moneydrifting.blogspot

moneyswipers.blogspot

celebritypicsssss.blogspot

celebritylegsnfeetsb.blogspot

celebmetricsndata.blogspot

celebritypartyhubspot.blogspot

celebszonehunting.blogspot

celebdresseshub.blogspot

celebbodystatusnmeasurement.blogspot

Arslan Bhatti said...

Best Erotic Bonage Blindfolds Restraint We strive to have a positive impact on small to medium businesses, customers, employees, the economy, and communities. Surjmor bring together smart, passionate builders with different backgrounds and goals, who share a common desire to always be learning and inventing on behalf of our customers. With all the family of business that are a part of us, our goals is providing customers with the best service possible.

https://xxxtoys.top/

skvisiontec said...

thanks very nice article keep up the good work quickbook support

Laurens99 said...

Dampak Virus Corona , Hotel Di Solo Rugi
Dampak Virus Corona , Hotel Di Solo Rugi , Pariwisata berubah menjadi bidang yang terimbas paling besar habis diputuskannya posisi http://daftarhotelmurahindonesia.web.id Peristiwa Luar Biasa (KLB) di Kota Solo, Jawa Tengah, gara-gara virus corona (COVID-19). Tidak hanya terdapatnya penutupan beberapa lokasi wisata, kerugian berimbas di tingkat okupansi beberapa hotel-hotel di Solo yang jadi menurun mencolok.

skvisiontec said...

thanks very nice article keep up the good work
COLD FEED RUBBER EXTRUDER MACHINE

R1se Hluoluo said...

Bila Anda tidak merencanakan untuk selalu pada pekerjaan yang tidak begitu Anda gemari, Anda harus mendapati langkah untuk mendapati pekerjaan yang lebih bagus atau minimal meningkatkan ketrampilan yang bakal menolong Anda memperolehnya. https://tas-mewah.com/ Anda mulai dapat pikirkan mengenai apa pekerjaan Anda seterusnya, bagaimana Anda akan memperoleh pekerjaan itu, apa Anda akan memerlukan sekolah, dan lain-lain.

Unknown said...

Akruti, the most sophisticated cosmetic and plastic surgery facility in Hyderabad, stands tall nearby the JNTUH University and Hi-Tech City. This medical facility is set up with the goal to provide immaculate solutions for the cosmetic needs, while assuring warm care to support the client on the path to recovery. The poor structured body parts can hamper your elegance, and cosmetic surgery offers you with a second chance, to resurrect the shapes of these body parts, and turn them beautiful. And we are experienced at this, which made us the preferred place for Cosmetic Surgery in Hyderabad, India. Your body parts, which fall back in terms of looks, are corrected to perfection at our facility. For our high quality treatments and incredible success rate, All India Lifestyle Hospital & Clinical Ranking Survey 2015 has ranked us first among the cosmetic surgery clinics in the city. Now, stop the further search for plastic surgeon in Hyderabad, and step into our hospital for experiencing the marvelousness of plastic and cosmetic surgeries, and the world class amenities.
https://akruti.co.in/

Unknown said...

Best online shopping store. Get dog food, pet all products. Shop for pet accessories and pet product
Visit the website: Sudest Arts N Crafts

sam said...

Thanks for Sharing this Valuable Information with us: this is very useful for me. Keep it Up. Trending Blogs India 2021, Most Popular Blog Topics India 2021, Trending Topics in India 2021
Visit here - breaking news india pakistan

JEET said...

vashi escort
colaba escort
bandra escort
santacruz escort
powai escort
malad escort
juhu call girl
dadar call girl
nerul call girl
mumbai escort
navi mumbai escort
nerul escort
Vashi escort
kharghar escort
panvel escort
nadia escort
andheri escort
meera road escort
bhayander escort
thane escort
chembur escort
navi mumbai escort
mumbai escort
soni patel
nadia escort


skvisiontec said...

Thanks very nice article keep up the good work Hot Feed Rubber Extruder

Fortune Education Group said...

thanks for this great post keep it up List of Top Medical Universities in Ukraine

Juliany said...

Nyatanya dikala ini ini permainan Pasaran Sbobet Bola Online https://bolaemas.net/ lalu jadi marak dimainkan oleh banyak masyarakat untuk mendapatkan keuntungan.

Tanpa memandang kalangan dan status masyarakat, tentu saja masing- masing orang dapat bergabungan dalam permainan bola dengan mudah dan dengan modal yang cukup terjangkau.

360DigiTMGAurangabad said...

Good information you shared. keep posting.
data science training in aurangabad

Mike Smith said...

I am professional blogger and has keen interest in writing, traveling and playing music. I am also seo consultant at retailogy.

vanhelsing said...

Wonderful blog.Thanks for sharing such a useful information..
PHP Training in Chennai
PHP Certification Online
PHP Training in Bangalore

Juliany said...

Situs Judi Slot Online Terpercaya Uang Asli scr888 di Indonesia 918Kiss dikarenakan sudah banyak mempersiapkan game mesin dingdong secara nyata dengan kualitas gambar HD http://www-scr--8888-com.cdn.ampproject.org/v/s/www.scr-8888.com/slots-uang-asli-tanpa-deposit/?amp_js_v=0.1&usqp=mq331AQKKAFQArABIIACAw%3D%3D dan kemegahan dari berbagai fitur menariknya.

Dari hal tersebutlah 918Kiss Situs Agen Judi Slot Online scr888 Terpercaya 2020 di Indonesia semakin dikenal saja sampai sekarang.

Unknown said...

This post is very unique and informative for all. Please check out www.hairextensionssanfrancisco.com. I hope it will help you.

Andreafix2021 said...

I am a marketing head. I am also SEO consultant at Yourlifeforless.

bruce wayne said...

Great blog.thanks for sharing such a useful information
BDD with Cucumber Online Training

Unknown said...

Good information you shared. keep posting.
artificial intelligence courses in chennai

Arnold DK said...

Great information Dear Friend Nice Information Share all over the world.God Bless You Kinemaster Gold

Dhilshan said...

Happy to read the informative blog. Thanks for sharing
best digital marketing course in chennai
best digital marketing training in chennai

Professional Courses and Training said...

Very good message. I came across your blog and wanted to tell you that I really enjoyed reading your articles.

Cloud Computing Certification in Bangalore

tech science said...


I bookmarked your website because this site contains valuable information. I am very satisfied with the quality and the presentation of the articles. Thank you so much for saving great things. I am very grateful for this site.data science training in nagpur

Tech Courses said...

It's like you understand the topic well, but forgot to include your readers. Maybe you should think about it from several angles.
Data Science Course in Jaipur

دجله بالمز said...


شركة تعقيم في دبي

pare said...

Thank you a bunch for sharing this with all of us you actually realize what you are talking about! Bookmarked. Please also seek advice from my site =). We could have a hyperlink change contract between us! สล็อตwallet

catna said...

Great articles and great layout. Your blog post deserves all of the positive feedback it’s been getting.สล็อตแตกง่าย

Fashion King said...

Check Details of Best <a href="https://askimmigration.in/ielts-institute-in-ludhiana/>ielts Institute in Ludhiana</a>. Get Contact Details and Address of Ielts Institute Located in Ludhiana.

Fashion King said...


Check Details of Best ielts Institute in Ludhiana. Get Contact Details and Address of Ielts Institute Located in Ludhiana.

srichaphan said...

Cool stuff you have ทดลองเล่นสล็อต xo

David Fincher said...

This post is so interactive and informative.keep update more information...
Web Designing Course in T Nagar
Web Designing Course in chennai

Ubiqcom said...


UBIQCOM is offering dual band ONU with voice router all over India. UB5042 GVW-D supports EPON/GPON/XPON three modes of access. A Dual band ONU router uses two bands: 2.4GHz and 5GHz. It can provide users with more efficient data transmission.

heiji said...

Great articles and great layout. Your blog post deserves all of the positive feedback it’s been getting. สูตร สล๊อต

WATERMELON said...

Nice post mate, keep up the great work, just shared this with my friendz บาคาร่าวอเลท

Unknown said...

Great articles and great layout. Your blog post deserves all of the positive feedback it’s been getting. บา คา ร่า วอ เลท

สล็อต said...

Great articles and great layout. Your blog post deserves all of the positive feedback it’s been getting.Great articles and great layout. Your blog post deserves all of the positive feedback it’s been getting.

Hussey said...

Great post. Thanks for sharing such a useful blog.
Digital Marketing Course in T Nagar
Digital Marketing Course in Chennai

David Fincher said...


This post is so interactive and informative.keep update more information...
Salesforce Training in Chennai
Salesforce Training in Anna Nagar

Pavithra Devi said...


This post is so interactive and informative.keep update more information...
PHP Training in Tambaram
PHP Training in Tambaram

nikhil said...

After developing a keen knowledge in the process of shot blasting, let us understand how its machine functions: The shot blasting machine makes use of a mechanical method of propelling abrasive using a centrifugal wheel to remove a layer of the surface and impurities from the surface of metal and steel products. There are three basic purposes that require the need to blast before finishing the product:
It cleans and de- scales the surfaces
Enhances paint adhesion by adding texture to the surface of metal products
Efficiently reduces maintenance costs by increasing the life of coating

lishasingh said...

Helps relieve pain and exhaustion.Improves flexibility.Traditional Thai massage helps people to relax, lower tension, enhance b2b massage blood circulation.Enhance blood circulation. Reduce muscle pain and stiffness. Help with a variety of conditions such as high blood pressure, chronic pain, and insomnia

Navirt Creation said...

Excellent Blogs!Navrit Creation is a Dehradun Manufacturing and Supplying of Cotton Product and Leather Product.Cotton Dog Rope Leash

360DigiTMGAurangabad said...

Thanks for the information about Blogspot very informative for everyone
data analytics course in aurangabad

Matt Reeves said...

Mindblowing blog very useful thanks
PHP Training in T nagar
PHP Training in T nagar

sportstototopcom said...

Wow! Such an amazing and helpful post this is. I really really love it. It's so good and so awesome. 스포츠토토

wiii said...

Great articles and great layout. Your blog post deserves all of the positive feedback it’s been getting. บาคาร่าวอเลท

Unknown said...

Great articles and great layout. Your blog post deserves all of the positive feedback it’s been getting.เว็บ ตรงTang San

jamesbond said...

Great articles and great layout. Your blog post deserves all of the positive feedback it’s been getting.สล็อตแตกง่าย

Unknown said...

Great post, Thanks for sharing a this post filled with a lot of information. keep up the good work

mark said...

Great job here on _______ I read a lot of blog posts, but I never heard a topic like this. I Love this topic you made about the blogger's bucket list. Very resourceful.สล็อตออนไลน์

mark said...

Excellent post. I was always checking this blog, and I’m impressed! Extremely useful info specially the last part, I care for such information a lot. I was exploring this particular info for a long time. Thanks to this blog my exploration has ended.สล็อต 999

Unknown said...

Excellent post. I was always checking this blog, and I’m impressed! Extremely useful info specially the last part, I care for such information a lot. I was exploring this particular info for a long time. Thanks to this blog my exploration has ended.สล็อตวอเลท

Unknown said...

What a thrilling post. It is extremely chock-full of useful information. Thanks for such a great info.บา คา ร่า วอ เลท

Unknown said...

I exactly got what you mean, thanks for posting. And, I am too much happy to find this website on the world of Google.บา คา ร่า วอ เลท

Unknown said...

You have performed a great job on this article. It’s very precise and highly qualitative. You have even managed to make it readable and easy to read. You have some real writing talent. Thank you so much.บาคาร่าวอเลท

Unknown said...

What is an outstanding post! “I’ll be back” (to read more of your content). Thanks for the nudge!บาคาร่าวอเลท

Unknown said...

Superior post, keep up with this exceptional work. It's nice to know that this topic is being also covered on this web site so cheers for taking the time to discuss this! Thanks again and again!สล็อตxo

Unknown said...

What a thrilling post. It is extremely chock-full of useful information. Thanks for such a great info.เว็บสล็อตเว็บตรง

Unknown said...

Excellent post. I was always checking this blog, and I’m impressed! Extremely useful info specially the last part, I care for such information a lot. I was exploring this particular info for a long time. Thanks to this blog my exploration has ended.เว็บตรงสล็อต

mark said...

Excellent post. I was always checking this blog, and I’m impressed! Extremely useful info specially the last part, I care for such information a lot. I was exploring this particular info for a long time. Thanks to this blog my exploration has ended.สล็อตออนไลน์

mark said...

I am unable to read articles online very often, but I’m glad I did today. This is very well written and your points are well-expressed. Please, don’t ever stop writing.สล็อตวอเลท

mark said...

Hi there! Nice post! Please tell us when I will see a follow up!บา คา ร่า วอ เลท

mark said...

Hello I am so delighted I located your blog, I really located you by mistake, while I was watching on google for something else, Anyways I am here now and could just like to say thank for a tremendous post and a all round entertaining website. Please do keep up the great work.บา คา ร่า วอ เลท

mark said...

Nice to be visiting your blog once more, it has been months for me. Well this article that ive been waited for therefore long. i want this article to finish my assignment within the faculty, and it has same topic together with your article. Thanks, nice share.สล็อตเว็บใหญ่

mark said...

I really like your writing style, great information, thankyou for posting.บา คา ร่า วอ เลท

mark said...

Merely a smiling visitant here to share the love (:, btw outstanding style.สล็อต ฝาก-ถอน true wallet ไม่มี บัญชีธนาคาร

mark said...

Nice post. I was checking constantly this blog and I’m impressed! Extremely useful info specially the last part I care for such information a lot. I was seeking this certain info for a long time. Thank you and good luck.บาคาร่าวอเลท

mark said...

Someone Sometimes with visits your blog regularly and recommended it in my experience to read as well. The way of writing is excellent and also the content is top-notch. Thanks for that insight you provide the readers!สล็อตแตกง่าย

mark said...

I can’t imagine focusing long enough to research; much less write this kind of article. You’ve outdone yourself with this material. This is great content.สล็อตxo

mark said...

An interesting dialogue is price comment. I feel that it is best to write more on this matter, it may not be a taboo topic however usually individuals are not enough to talk on such topics. To the next. Cheers.เว็บสล็อตเว็บตรง

mark said...

You have done a great job on this article. It’s very readable and highly intelligent. You have even managed to make it understandable and easy to read. You have some real writing talent. Thank you.เว็บตรงสล็อต

salome said...

very interesting to read. Python training in Chennai

Career Academic institute said...

It's like you've got the point right, but forgot to include your readers. Maybe you should think about it from different angles.

Data Analytics Course in Erode

Raziah Lauretta said...

How to: Get Windows 11 Right Now For FREE
Do You Need A Microsoft Account For Windows 11 Home
Will Your PC Run Windows 11
How to: Change Taskbar Size in Windows 11
My Thoughts On Windows 11
How to: Take a Screenshot on Iphone
How to: Force Restart, Enter DFU, Recovery Mode on iPhone 11/11 Pro
How To: Reset & Restore your Apple iPhone 12
How To: Reset & Restore your Apple iPhone 7
How to: Reset & Restore your Apple iPhone X

Ahana said...

The best article about ruby and rails. I really admire your post. keep sharing. If you want to learning the latest programming then you must join the best full-stack developer course in Delhi that helps you to build your career as an expert.

Abba Smith said...

Hi, I am Abba. Roar IPTV offers all Indian channels like Hindi, Punjabi,
Gujarati, Telugu, Tamil and many more, including American channels as well. With maximum number of HD channels and over 2.5 lakh subscribers in USA, Roar IPTV is preferred Indian IPTV services in USA.Roariptv.

muraqabah said...

Good Job...!
The Gaia Hotel Bandung
Cheap flight ticket
We are a company engaged in the field of tour and travel, as a means and infrastructure for industry
travel and tourism. The best travel agency provides tourist bus rental, car rental and selling plane tickets
in Medan.

Taniya Sharma said...
This comment has been removed by the author.
Abba Smith said...

https://www.bytezza.com/2015/09/an-ode-to-fall.html?sc=1655374580594#c3008046675772592775

Abba Smith said...

https://mymedicaidjourney.blogspot.com/2014/07/applying-for-medicaid.html?showComment=1660635422543#c7962136059735336572

cmsattamatka09 said...

Playing Ludo is not worth it because we can play this game but get nothing. We can play Satta Matka just one or two more times but we can play the Satta king game multiple times. After all, whenever we play the Satta king game, each time we may get maximum money.Ludo is available offline and online but the Satta king game is available only online.The CMM satta matka game makes our life easier. With the help of this game, we can become rich but playing Ludo is worthless and energy waste
.satta matka

EDF Renewables India said...

I read this article is very helpful information Thanks for Sharing. Offshore wind India

izspa.net said...

eye theropy help the eye sharper body spa in hyderabad
and better to see the view all directions better

bhanusuru597 said...

Lately I've been getting the feeling the Ruby community has gotten a bit emo. The enthusiasm surrounding how easy Ruby makes it to write clean, concise, well-tested web applications quickly is fading. Rails has become merely a day job for many. Whatever hype surrounded Rails at its inception has died down into people who are just getting work done.

Rupesh Kumar said...

Nice Content, Thanks for sharing with us. If you are looking to improve your English language skills in kuwait. Ziyyara's online English language classes in Kuwait are designed to help learners improve their spoken English skills with the guidance of expert tutors.

For more info contact +91-9654271931 | UAE +971- 505593798 or visit Learn English Online in Kuwait

Angel17 said...

Nice blog, Thanks for sharing this kind of blog.
glass stovetop installation

Rupesh Kumar said...

Thank you so much for a providing well content, Ziyyara's online spoken English language classes in Kuwait are a fantastic opportunity for individuals looking to improve their English communication skills.
For more info visit Spoken English Language Class in Kuwait

Rupesh Kumar said...

It's really a nice experience to read your post. Ziyyara, one of the leading online tutoring sites for Class 11 students. Our private tuition classes for Class 11 are designed to help students improve their academic performance and achieve their academic goals.
For more info Contact us: +91-9654271931, +971-505593798 or visit Private Tutor for Class 11

Rupesh Kumar said...

Your blog is so impressive and meaningful while reading your blog I enjoyed a lot, Continue to updating the useful blog. Looking for the best English tutoring in Bahrain? Look no further! Join Ziyyara’s top-rated online English classes and enhance your English language skills from the comfort of your own home.
For more info visit Speaking English Language Class in Bahrain

nancysweety said...

reduces muscle tension improves sleep and fatigue body massage in pune may improve mood

WilliamJames said...

Fairfax Traffic LawyerThank you for giving the best post and i want to more interesting post.

My Translation Services said...

When accuracy and precision matter in legal translations, MyTranslationServices.com is the go-to choice in the UK. Our team comprises expert legal document translators in UK who possess a deep understanding of the legal systems and conventions in both the source and target languages. We have extensive experience handling a wide range of legal documents, including contracts, patents, statutes, and more. With our meticulous attention to detail and commitment to delivering flawless translations, we ensure that our clients receive impeccable language solutions tailored to their legal requirements.

Saba said...

Join Indian Cyber Security Solutions' ethical hacking training program and unlock the secrets of cybersecurity. Develop expertise in network security, web application testing, and risk assessment. Arm yourself with the necessary skills to protect businesses and individuals from cyber threats.

Rupesh Kumar said...

very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article. Discover the ultimate learning experience with Ziyyara Edutech’s comprehensive online home tuition for English.
For more info visit English home tuition

Boat Wireless said...

I just wanted to take a moment to thank you for your wonderful blog. I've been reading it for a few months now, and I've learned so much from it. I especially appreciate your posts. I've been struggling and your advice has been incredibly helpful. I'm starting to see some real progress, and I know it's all thanks to you.
Lunar Connect Ace
Wave Call 2
Storm Call 2
Wave Stride Voice
Wave Voice
Xtend Pro
Wave Select
Storm Pro

Afzaal said...

Renderforest is an online video creation platform that allows users to create professional-quality videos for various purposes, such as promotional videos, explainer videos, logo animations, and more. Renderforest APK was founded in 2013 and has grown to become one of the leading online video creation tools, with over 30 million registered users. From here, you can download Renderforest Mod APK v2.8.15 for free.

GoLogica said...

Thank you for sharing this information, it was great blog and this blog gave good information to me, we know some good information in this blog.

Here is sharing some GoLogica provides Online and corporate IT Trainings information that may be helpful to you.

GoLogica provides Online and corporate, IT Trainings

johnscena said...

Unlimited Novelty appears to be a phrase that suggests an endless supply of new and interesting things or concepts. It could be used to describe an environment, a creative project, or a mindset that embraces constant innovation, creativity, and the introduction of novel ideas.
FLSA Abogado en Virginia

Rupesh Kumar said...

Excellent experienced for me to read your great blog, I really impressed. I eagerly waiting for your future updates. Get the best CBSE board home tuition experience with Ziyyara Edutech. Our dedicated CBSE home tuition program offers expert online tuition for CBSE students.
For more info contact +91-9654271931 or visit CBSE board home tuition

Galaxy Super Speciality said...

Great article! The information you shared here is really useful. I particularly like the article "Why Rails' critics get it wrong (and Ruby's bright multicore future)". Hope for more content like this!
Get information about pomalidomide price here.

Rupesh Kumar said...

Excellent Post!! I gathered lots of information here. Do share more updates. Join us for the best GCSE online tuition classes, where we address the pain points of individual learning styles and time management challenges.
For more info visit GCSE tuition classes

grows mac said...


As of my last knowledge update in January 2022, criticisms of Ruby on Rails (Rails) or any technology are subjective and can vary based on individual experiences, preferences, and specific use cases.

seguro dui

skylinemep035 said...

Sky line Mep design consultants in delhi provide innovative solutions for mechanical, electrical, and plumbing systems in construction projects. With expertise in sustainable design and cutting-edge technology, we ensure optimal performance and efficiency

skylinemep035 said...

MEP systems are the backbone of any modern building, responsible for its functionality, safety, and efficiency. Having experienced MEP consultants in Faridabad onboard ensures that these critical systems are designed, installed, and maintained to the highest standards.

skylinemep035 said...

For premium Gully grating Manufacturer in Faridabad trust our reputable manufacturing expertise. We're committed to delivering top-notch products that ensure efficient drainage systems. With a focus on quality and durability, we strive to exceed your expectations every step of the way.

«Oldest ‹Older   401 – 535 of 535   Newer› Newest»