Tuesday, October 4, 2011

Node.js has jumped the shark

I've been trying to understand this whole Node.js thing that's been going on for the past few days. It's taught me a lot about how the Node.js community tries to reason about problems, and perhaps what's the real problem with Node.

It began with a relatively short rant by Ryan Dahl. Ryan talk's about how he's mad at complex software, which is at least an arguable position. I liked his rant, but Ted Dziuba did not.

Ted Dziuba wrote a brilliant troll post which lambasted Ryan and the concept of Node.js in general. I'm a huge fan of Ted's previous trolling, especially his parody TechCrunch site uncov, which trolled TechCrunch before TechCrunch became a parody of itself. Except in the case of uncov, it would be a few years before TechCrunch became a parody itself. With Node.js, the reaction was almost instantaneous.

Ted's argument centered around the problem of doing non-trivial computation within the event loop of a system like Node, and how that would affect the performance of the system. To illustrate this point, he gave an intentionally deoptimized Fibonacci function, along with the boldface caveat "Yes, I know there's a closed form solution. Shouldn't you be in front of a mirror somewhere, figuring out how to introduce yourself to her?"

Reading through the lines of Ted's trolling, his point is "I'm not specifically talking about Fibonacci. I'm talking about non-trivial computation as a general problem in Node." He specifically chose a slow algorithm to illustrate his point. However, what was the Node community's reaction?

One reaction was to go out and implement Ted's intentionally-retarded Fibonacci algorithm in a bunch of different languages and benchmark how fast the VM could optimize away a crappy algorithm. Based on several benchmarks, V8 actually does a comparatively good way of optimizing away the retarded algorithm compared to a lot of other languages. Cool story bro!

In the Reddit comments for this story I first truly gazed into the abyss of Node.js insanity. Node provides a way to schedule an anonymous function to run the next time it's event loop iterates using a function called nextTick. EventMachine (ugh) users may be familiar with this same pattern with EM.next_tick (which needs to die for most use cases, but that's the subject of another blog post)

Redditor "headzoo" suggests that we provide a "non-blocking solution" by unrolling the Fibonacci loop and execute one iteration of the Node.js event loop, calculating one iteration for each I/O multiplexing system call Node is making. When Ted Dziuba asked "Have you taken epoll into your heart?," I think he had no idea of the depths Node people actually have.

I don't really get what's going on in Node people's heads here. I think they seriously believe that throwing computation into the middle of an event loop is a good idea, because Node's event loop is FAST!!#$#! funroll-loops + nextTick = LUDICROUS SPEED!!

This crap is absolutely insane. For each iteration of the loop, Node is making an expensive system call. It's also defeating all of the mechanisms that V8's impressive JIT would use to optimize this problem, as substantiated by the previously mentioned Nodian's roflbenchmark. Clearly this is a very bad idea. But wait, it gets worse!

It wouldn't take long before another Node.js fan put together a Github project for this technique, which also added an "optimization": memoization! In addition to unrolling each iteration of the Fibonacci function to run within the event loop, it now caches the nth result. Now let's throw ApacheBench at it and see how fast Node can serve the precomputed result where n = 100.

Holy balls, it does 5390.22 requests per second serving a memoized value when I ask ApacheBench to request the same memoized value over and over!!#$! TAKE THAT TED DZIUBA! Is it any good? One word: yes. Did we miss the point that this isn't about Fibonacci? One word: yes. (Side note: I second raganwald in adding "Is it any good? Yes." to the top of all my READMEs)

Memoizing each member of the Fibonacci sequence makes this algorithm O(n) in memory. For shits and grins I installed Node-fib and asked it for the 1 millionth Fibonacci number. Node ground away (on a single core of my quad core i7 MacBook) for about a minute before running out of memory, crashing the entire VM.

Okay, so mistakenly implementing an algorithm this pathologically bad when you're trying to prove a point to someone who's just trolling you is pretty bad, right? But it gets worse. 

After pointing this out, a member of the Node.js community (post now deleted) suggested I might have an obsolete version of Node with a 1GB heap limit (because Node uses a VM targeted at client-side JavaScript where 1GB heaps are an uncommon use case, but hey, let's throw it on the server!) and that I recompile without the 1GB restriction so that this retarded algorithm can continue eating up all my system RAM. He says this as if this is a good idea instead of, I dunno, using a better algorithm.

Clearly the next logical steps are to store previously computed Fibonacci numbers in MongoDB. Or you could build a system with Socket.IO which caches previously computed Fibonacci numbers client-side using a distributed hash table. Then you'd be well on your way to a multimillion dollar cloud-based Fibonacci number service. Eventually you'll probably want to build in an OpenMP C++ native extension to calculate Fibonacci numbers across multiple CPU cores. That way you'll have a truly roflscale Fibonacci web service.

211 comments:

1 – 200 of 211   Newer›   Newest»
Anonymous said...

good post :)
I'm guessing the moderate users stayed silent on that one. Clearly the sane answer was: don't use node for cpu intensive tasks - though can perform well for IO-intensive ones. But I guess when you have a nice gilded hammer ...

ReinH said...

> EventMachine (ugh)?

So the most promising solution to the 10k problem and the basis for a large number of popular projects gets dismissed with nothing more than an "ugh"? This does not make you sound credible.

billconan said...

will you use node.js?
should i use node.js?

Anonymous said...

I'm a fan of node.js and of KISS and of not doing dumb shit. This post, has aligned why you'd want each of these things!

...all that and really, this is a hilarious situation. :)

Great post!

Anonymous said...

Apparently the irony in mocking the original post was lost on you.

Jethro Larson said...

If you reduce a community to it's crazies then no community holds up to scrutiny.

incognito said...

So dude, I'm like, a lumberjack and I swing this axe probably better than anyone else in the world because I'm so fucking cool and everyone else is a total idiot they probably use saws to get the job done (perrish the thought) without realizing they don't get this wicked sweet gouge in the tree trunk that helps it fall in the proper direction when you hit it with an axe.

Some guy came in here talking about how cool chainsaws are one day. Well, I picked it up and started smashing the blade of the chainsaw into the tree trunk. This thing totally sucks, no matter how hard I bash the thing into the wood the tree barely took a scratch, meanwhile, the chainsaw is totally obliterated.

I can only come to one conclusion: chainsaws are for idiot because it's terrible at cutting down a tree.

Anonymous said...

Just letting you know, any fib libraries for Node were made as a JOKE against Ted's post. we had a field day with it in the Node.js IRC channel. AKA that was a troll library. The recursion of trolling has been fierce.

Derek Gathright said...

There's a dead patch of grass in the front lawn. Quick! Burn the whole house down!

Corbin Simpson said...

Hey, Event Machine isn't the promise, the promise is Twisted, and I explained here (http://corbinsimpson.com/entry/posion-was-the-cure) how to do it in Twisted. The solution? Just put your CPU-intensive blocking stuff in a thread. Ugly, but effective. If only Node could do it...

EscVector said...

Recursive trolling is exactly what is wrong with everything.

Ryan McIlmoyl said...

You can spawn child processes in Node http://nodejs.org/docs/v0.3.1/api/child_processes.html.

There's also a module to implement the WebWorkers API https://github.com/pgriess/node-webworker

Unknown said...

@bascule - Aren't we supposed to use GPUs for this math shit?

@Reinh - take it from a maintainer, "ugh" is right, you've clearly never actually read the code. As far as "the most promising solution to the 10k problem", well lol, either you're trolling or you really drank waaaaay too much kool aid on the way through.

inopinatus said...

I encourage all my competitors to use Node.js.

Luke Palmer said...

Algorithms are for people who don't know how to buy RAM.

Anonymous said...

How embarrassing that the King of Node made such stupid decrees. I wish that communities like this were formed of many, many individuals, so that I could safely disregard the stupid prattlings and focus on the good parts. Unfortunately, much like with the gays and black people, there are official representatives that speak for all of us and negate our individuality. Too bad! I guess we're toast. This article is the final nail in the coffin (until the next 20-something from 4chan posts his own babbling counter-counter-counter troll, of course)

Ruprict said...

Dunno if you saw the Google Group thread on Ted's post, but it was never-ending.

carpeliam said...

When Rails got attacked a few years back because Ruby is slow, Yehuda Katz said Bottom line: don’t let anyone tell you that Ruby web applications need be slow. The language itself is certainly slow, but I don’t see a ton of Fibonacci web applications being built, so the real question is about where the bottlenecks are, and Ruby acquits itself very well. Same deal here, really. Don't try to optimize fibonacci in JavaScript (why would you?!?), just solve the problems that actually matter in the most efficient way you can, and you'll be in fantastic shape.

carpeliam said...
This comment has been removed by the author.
arquebus said...

what people who are making these "node.js is not concurrent" rants dont understand that there is huge latency involved between a html server and client. And then they use stupid number crunching loops in single threaded code as a benchmark which itself is not doing anything concurrent nor factors in out of order or very late response times.

Tony Morris said...

You can't write or use node.js and expect to be taken seriously. Keep the giggles coming.

Here is parallel fibs in Java: http://t.co/px0EdQYg

...and in Scala: http://t.co/tSFBudt8

Anonymous said...

To realistically think heavy-weight preemptively-scheduled processes are the solution for parallelism leads me to believe you're an idiot.
Get with the program, using native thread-level parallelism is even too granular for current taste. Most abstract the parallelism behind a thread pool, and schedule short-lived tasks. For something like calculating a term in the Fibonacci sequence, you could implement it explicitly in a parallel divide-and-conquer (or "fork-join") way.

MaXPert said...

NodeJS is good at very few things and there is a huge misconception in the community to fit it everywhere. I once had debate on the same topic (URL: http://tumblr.com/xrm4g1ijnx) and results were pretty much same. Node.js community needs some education we should help them, I would call it an effort to help humanity.

Pierre Robes-Roule said...

I can hear Fibonacci laughing in his grave. Anyway, passion is good for innovation.

Isaac said...

Can you answer this question, please? http://news.ycombinator.com/item?id=3077885

Vegas said...

http://fabric-engine.com/2011/11/server-performance-benchmarks/

Node + Fabric is as fast as multithreaded c++

Still early days for us - we will have asynchronous server compute soon, which will remove the locking issue... Then we'll introduce the same approach for Ruby and Django. Aiming for alpha this year.

If node can be this fast, and the server work becomes asynchronous, then it becomes more viable as a general solution.

Eric said...

I know a lot of the stupid people who responded with ways to optimize the terrible algorithm were being genuine, but has it occurred to you that some of them might be trolling the troll?

Node provides mechanisms that let you get complex calculations out of the event loop.

In previous rants by Ryan, he clearly says that we should NEVER block the event loop. The whole point of node is to make everything that blocks an asynchronous operation so we can get on with doing something useful with the system resources.

So when you say that "Node" has jumped the shark, it's not really a stab at node itself, but at stupid people using a good tool in a very bad way.

Or Ted Dziuba - who gets full credit for the idea of intentionally blocking the event loop. =)

Anonymous said...

lol!

sla said...

I wonder about coordination challenges in event loop systems.
Especially with mix of real time issues:race condition (several IO calls overlapping on some shared state), exceptions (timeout, error) and important ones like cancellation of execution.

Aleksey V. Zapparov A.K.A. ixti said...

Hi,

Nice post :)) I would like to notice that Node.JS does not work with big integers as well :)) I found that when I was trying my dummy comparison here: https://gist.github.com/1271460

Jason Sebring said...
This comment has been removed by the author.
Jason Sebring said...

Ted is a harsh sanity check for fanboys (aka developers who don't think past the marketing) but he makes a valid point to keep your programming light when using Node.js. However, I think this should be the case when doing any web development tasks. Leave it to batch processing and web service calls to do the heavy lifting. Node.js is great for IO which cannot be denied and executes JavaScript which everyone already knows. Node.js is only going to get more powerful. Just use it for its power though, not as a panacea.

bob hooker said...

The problem I noted with node.js is that though it is true that for trivial high IO problems node.js is okay, node.js is not generally being adopted for that reason. Rather some designer who knows HTML and learned some JavaScript from Dreamweaver wants to get in on the real business, and tries to sneak node.js in because it promises to allow JavaScript programmers the same pay and status of PHP. .NET and C++ programmers.

Jon.T. said...

Programming properly in JS is actually a lot harder than in PHP or Java. There's a lot of magic and creativity as there used to be in Perl (actually more) and for that reason, a lot of people used to standard programming concepts can't get their mind to understand it and thus hate it. So when Nodejs start to invade the server, all the haters are eager to claim that Nodejs opens the door for less competent programmers to enter the realm of server programming. Entirely not true! Most nodejs programmers made the transition from either PHP, Ruby or Java, because it opens some new perspectives. It seems to me that this entire Nodejs hate has more to do with ignorance, fear, and contempt than anything else.

Unknown said...

What I find funny is that a language like C# or Java will spank that pants off all of these script languages especially for a problem like this

Alex said...

Oh joy, more ad revenue fodder.

IT said...

Node.js Training in CHennai Node.js Training in chennai MEAN Developer Training in Chennai AngularJS Training in Chennai AngularJS Training in Chennai Node.js Training in CHennai Angular 2 Training in Chennai Angular 2 Training in Chennai

Unknown said...

دانلود بازی فوتبال First Touch Soccer 2015 2.06 – اندروید
دانلود فیلم سیندرلا Cinderella 2015
دانلود نرم افزار فتوشاپ برای اندروید- Adobe Photoshop Express

Unknown said...

cctv camera for home
Pestveda | Pest Control
Termite control
Surveillancekart | CCTV System
cctv installation services
best home security camera system

Fuzzy International said...

I am very impressed with your post.Thank you for Sharing!
- cashew nuts wholesale in Dubai
- a4 paper wholesale in Dubai

w3seoexpert said...

this is really nice thanks for sharing Serato DJ Crack Mac

Unknown said...

Internet Explorer 10 is the great web browser in the world. Internet Explorer 10 is the best browser from any other browser because it was great to load a page. And also it was great for everyone. If you want to need more details about it then follow the site.
Internet Explorer 10 customer support

cyber Fire and security said...

Cyber Fire and Security offer CCTV installation London service including an individual camera monitoring one time of entry right through to a sophisticated package that monitors every access point and even multiple locations. Our professional CCTV installers London can integrate with Access Control, Burglar alarms London and Automatic Recognition systems.
And if you want multi-site access control from an individual central monitoring station controlling CCTV, gates, doors, and barriers, CCTV companies London specializing link all of it together.
Visit our website: cyberfireandsecurity.co.uk
CCTV installation London
Burglar alarms London
CCTV installers London
CCTV Companies London
CCTV cameras London

Naincy said...

This is so much amazing .so,you can also visite my links.
call girls in kolkata
russian escorts in kolkata
kolkata call girls
call girls kolkata
escorts in kolkata
kolkata escort
housewife escorts in kolkata
college call girls in kolkata
call girls in park street
escorts in park street

call girls in gurgaon
call girl in gurgaon
gurgaon call girls
escorts in gurgaon
gurgaon escorts
gurgaon escort
Escort services in Gurgaon
Escort service in Gurgaon
russian escorts in gurgaon
housewife escorts in gurgaon
college call girls in gurgaon

Call girls in Noida
Call girl in Noida
Escorts in Noida
Escort services in Noida
Escort service in Noida
Noida Escorts
Noida Escort
Noida Call girls
Noida Call girl

Anonymous said...

https://panasoniclampung.blogspot.com/
https://servicecentersamsungbandarlampung.blogspot.com/
https://servicehuaweicenter.blogspot.com/
https://serviceiphonelampung.blogspot.com/
https://servicecenteriphone.blogspot.com/
https://servicecentervivo.blogspot.com/
https://servicecenteroppo.blogspot.com/
https://servicecenterxiaomi.blogspot.com/
www.lampungservice.com
https://servicecenteraxioo.blogspot.com/

kanika ahuja said...

The meaning of digital marketing can be developed to clarify that, advanced promoting incorporates overseeing diverse types of online organization nearness and existences, for example, organization sites, portable applications and web-based social networking organization pages.
best digital marketing course in delhi-ncr

Helen Henson said...

Awesome post

Thanks
slashdot.org | www.bagtheweb.com | guestpostblogging | articleblogin

Tad D. Riley said...

I appreciate your blog. This is the first time i am visiting your post. really it's so interesting to read. Please keep up writing. Thanx for sharing.

lenderslists

review for loans

Mahak Tandon said...

graphic design colleges in delhi
best institute for graphic designing in delhi
digital design courses
graphic design courses in south delhi
graphic designer delhi
computer designing course
graphic design training
graphic design courses near me

Alena Yandis said...

Thank you for sharing such a decent post
Brother Printer Support Phone Number
brother printer customer service phone number usa

Juliana Kho said...

daftar sunbet casino

Juliana Kho said...

sabung ayam s128

Digital Technology Institute said...

Nice Information
triptourpoints
Thanks

manual testing said...

Woah! I’m enjoying the theme of this website post . Tech Trainers is one of the leading provider of IT online trainings.
Our goal is to provide quality training and share the expertise of our dedicated professional team of Subject Matter Experts.
software testing
manual testing
manual testing tutorial
software testing course
manual testing tutorial

dadyar said...

قطعا اگر حتی یک بار هم به دادسراها، دادگاه و به طور کلی مراکز حقوقی و قانونی رفته باشید متوجه زمان بر بودن و دوندگی های آن شده اید و از نردیک شاهد از این دفتر به آن دفتر افراد بوده اید. وکیل پایه یک دادگستری باعث جلوگیری از هدر رفت وقت و راحت تر شدن کارهایتان می شود. البته این ابتدایی ترین خدمات یک وکیل مجرب و مستر دادیار است.
اما باید توجه داشت که حتی در همین موارد هم اگر وکیل پایه یک دادگستری تجربه کافی نداشته باشید و اصطلاحا وکیل حرفه ای نباشد قطعا وقت و زمان شما را هم هدر خواهد داد و روند پرونده را طولانی تر خواهد کرد. افرادی که به روند رسیدگی به پرونده ها در مراکز قضایی آشنایی دارند به خوبی نکاتی را که منجر به زمان بر شده پرونده می شود می دانند و اجازه این کار را نخواهند داد.
یک مثال جالب در این خصوص می توان زد. وکیل همچون پزشک است. اگر مریض شوید و به پزشک بی تجربه مراجعه کنید او به شما دارو خواهد داد اما بنا به بیتجربگی اش قطعا ممکن است داروی مناسب شما تجویز نشود و بیماری ای که می توان در مدت زمان کمی بر طرف شود به درازا خواهد کشید. وکیل پایه یک دادگستری نیز باید متخصص، به روز و با تجربه باشد وگرنه نه تنها با چنین مشکلاتی روبرو خواهید شد حتی بلکه نخواهد توانست مشکل شما را حل کند.
گروه وکلای مستر دادیار متشکل از تیمی از برترین وکلای کشور که تک تک آن ها وکیل پایه یک دادگستری با سوابق بیش از پنج سال دارند، می باشد. زمانی که یکی از وکلای گروه وکلای مستر دادیار را انتخاب و به عنوان حامی و وکیل خود انتخاب می کنید نه تنها آن وکیل بلکه تمام تیم بر روی پرونده شما کار خواهند کرد تا مبادا کوچک ترین حقی از شما ضایع گردد. به همین دلیل شما پشتیبانی یک تیم را خواهید داشت و خیالتان از بابت نتیجه راحت تر خواهد بود.
وکیل پایه یک دادگستری خانم
تمام وکلای گروه وکلای تهران جزوه برترین وکلای کشور می باشد و موضوع جنسیتی در آن را ندارد. چرا گزینش این موسسه بسیار سخت گیرانه بوده و با وکلای بی تجربه به صورت تخصصی کار نمی کند. وکیل پایه یک دادگستری خانم گروه وکلای مستر دادیار، تجربه و سوابق درخشان بسیاری دارند که بیشتر آن ها منجر به موفقیت در پرونده ها شده است.
گاهی بدور از بحث جنسیتی، برخی خانم ها که عمدتا موضوع پرونده ها در حوزه خانواده است، ترجیح می دهند که از وکیل پایه یک دادگستری خانم استفاده کنند. چرا که باث دلگرمی آن ها و درک متقابل می گردد. همین موضوع به حتی به حل پرونده می تواند کمک کند. وکلای خانم مستر دادیار در حوزه های خانواده، ملکی، کیفری، مالی و… تخصص و تجربه کافی را دارا می باشند که این موضوع از پرونده های موفقیت آمیز آن ها در گذشته کاملا بارز است.
در مستر دادیار این امکان وجود دارد تا شما خود وکیل مورد نظرتان را انتخاب کنید و فرقی بین وکیل پایه یک دادگستری خانم و اقا وجود ندارد و همچنین می توانید متقابلا تماس با وکیل داشته باشید البته وکلا مداوما موکل را در خصوص مراحل گزارش پرونده قرار می دهد و نیاز به تماس نیست. همچنین جهت مشاوره حضوری نیز میتوانید وکیل خانم و یا وکیل آقا انتخاب کنید.
وکیل کیفری (وکیل پایه یک دادگستری)
وکیل کیفری، وکیلی است که تخصص آن قوانین کیفری و پرونده های کیفری است. مراحل پرونده های کیفری بدین صورت است که پس از مطرح کردن دعاوی کیفری، دادگاه ها و دادسراها اقدام به تحقیقات و رسیدگی می کنند سپس کشف جرم و تعقیب متهم دستور کار قرار می گیرد. پس از این مراحل صدور قرار مجرمیت و کیفرخواست وتعیین نوع مجازات صورت می پذیرد. در نهایت نیز اجرای مجازات خاطی انجام می گیرد.
گاهی برخی پرونده های کیفری شاید بسیار ساده به نظر بیایند و شخص تصور می کند که از پس پرونده خود و دفاع در دادگاه بر می آید و نیازی به وکیل کیفری نیست. اما به علت آگاهی نداشتن از احکام و دشواری دفاع نمی تواند از خود دفاع کند و مجازات های سنگینی بر او اعمال می شود. شاید بزرگ نمایی به نظر برسد اما متوجه پرونده هایی شده ایم که مجازات های به شدت سنگینی بر شخص اعمال شده است. آن هم در پرونده ای که با داشتن یک وکیل مجرب می توانست از پس پرونده بر آید.
قوانین و حقوق کیفری را جدی بگیریم. وکیل کیفری هر کاری که بتواند مشکل موکل را برطرف کند حتی در صورت داشتن شاکی خصوصی و گرفتن رضایت وی انجام می دهد. در اینجا تجربه و کاربلدی حرف اول می زند. وکیل پایه یک دادگستری کیفری مستر دادیار تا اعلام نتیجه قطعی پشتیبان شما خواهند بود.ز هرگونه تلاش برای حفظ این جایگاه دریغ نخواهد کرد.

Tad D. Riley said...

EveryHour Loan as the name indicates is always ready to help you in your financial crisis
EveryHourLoans

JannethManalu said...
This comment has been removed by the author.
Admin said...

Himachal Pradesh University BA Part 2 Result

Himachal Pradesh University BA Part 3 Result

Admin said...

B.Sc 1st Year Result

B.Sc 2nd Year Result

B.Sc 3rd Year Result

Anonymous said...
This comment has been removed by the author.
Anonymous said...

A private limited organization is the most widely recognized type of business substance common in India. It is extremely simple to enlist, start, keep up and raise reserves. A private constrained organization offers restricted risk to its individuals, guaranteeing adaptability and guaranteeing simple bank advance openness. Private Limited Company Registration.

Entertaining Game Channel said...

This is Very very nice article. Everyone should read. Thanks for sharing. Don't miss WORLD'S BEST CARGAMES

seo company said...

The Digi experts are one of the leading institutes in India with some of the best experienced digital marketing trainers with the best techniques and skills this course covers all basis such as SEO, SMO, google analytics event tracking. Now at discounted prices.

easybuilder.pro said...

not sure if my last comment was posted well on this web page..

TheDigiExperts said...

Great Post, I definitely use these tips and also if you want to learn that How to Run Instagram Ads, in a strategical way Thedigiexperts is the best institute for digital marketing course.

AE Clicks said...

Nowadays Most People are connecting to Each other by the Help of Social media platforms. You can provide more information about your business and company. and get more lead and sale through Facebook, Instagram, Twitter, Linkedin, etc. most of the best social media marketing Agency is Aeclicks are Provides all types of SMM services in UAE. and also SMM Agency Dubai.

technicalsquad1 said...

malwarebytes not working

norton error 8504 104

norton utilities

microsoft edge remove malware

malwarebytes turn off update notification

printer keeps saying paper jam

technicalsquad1 said...

how to turn off bitdefender

canon mg3600 setup

norton live update

google error 400

how to turn off mcafee

Clicksbazaar said...

As an exceptional cliksbazaar Is The Best Seo Services In India, we ensure that all selected clients are captured. We strive to provide competitive progress to our client's in-market partners

Denise Lee said...

how to connect canon printer to phone

brother printer wifi setup

canon mx922 printer ink

canon printer setup

connect canon pixma to wifi

Merlin Kristianti said...

Roulette secara tradisional dimainkan di kasino dan selalu menjadi hit di setiap rumah judi. Para pemain memiliki berbagai opsi dalam taruhan – satu di dalam taruhan atau di luar taruhan
98toto
data sdy

Ruhi Sukhla said...

Nice Article..

BA 1st Year Time Table Check Here.

Nino Nurmadi , S.Kom said...

Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom
Nino Nurmadi, S.Kom

shivani said...

hi
great update thanks for such useful information if you guys wanna learn more about marketing go here Digital hub institute.

veguspear said...

this is crazy! jump in the shark? how did you do that. It is very dangerous. anyway That’s good articles. thanks for that quality articles, but เดิมพันออนไลน์ still the best!

resultangka88 said...

idn poker

Poker Online

Ceme Online

Neil Paatel said...

Nice Article You Published Here.

pa da spam score checker

Halima Sultan said...

Dirilis Ertugrul watch Video Ertugrul Ghazi All Seasons All Episodes Watch Online Free Desi Serial, Watch Turkish Drama Series Dirilis Ertugrul Total Episodes Ptv Home In Urdu Dubbing Complete 480, 720p HD Quality. Ertugrul Ghazi All Seasons in Urdu All Episodes Download Drama 123Movies/Go Movierulz Free.

Digital Marketing Institute in Delhi said...

Thanks for sharing this information. I also share post related to Luxury Hotels in Goa with multiple facilities. For more info visit the site.

Kiyara said...

your blog is very nice, such useful information you are sharing B.sc Final Year Result 2020

Roman Davis said...

I am very glad to read this blog because you have proved yourself a great expert writer due to your writing style that is very liked by the students of Dissertation Help UK

Situs Poker Online said...

jadikan permainan bandarqq dan dominoqq sebagai mesin penghasil uang anda dengan mengunjungi website kami https://dominoqqme.com/

barakcasino said...

kunjungilah bandar judi bola online dan raih kesempatan mendapatkan bonus dan hadiah menarik http://149.28.153.153/

dfgfhft said...

slot joker123 pilihan para pemenang http://139.180.184.251/

Loanwalle said...

Nice Concept appreciateable i really liked that
Personal Loan Interest rate

govt job said...

BSUSC Assistant Professor Recruitment
UPPGT Teacher Recruitment
IOCL Recruitment 2020
NHM Rajasthan CHO Admit Card
SSC CHSL Recruitment
UPSC CDS Recruitment
CTET Exam Admit Card

Agra Escorts said...

Call us We are the most reputed escorts service providing in Agra by independent escorts girls are associated.


Agra Escorts
Independent Agra Escorts
Independent Agra Escorts

Payal sharma said...

thanks for useful article in your post blogger Visit https://hubwelt.com/!

Monika Skekhawat said...

Thanks for your post.. I really loved it. If you have spare time you can watch my article as well. Brij University BSc Second Year Time Table

BandarQQ games yang sangat bagus di dunia maupun di indonesia sangat bermanfaat bagi mereka yang sangat suka bermain bandarqq said...

thank you sudah suport kami di permainan game online seperti game bandarqq dan memiliki peluang yang sangat tinggi untuk mendapatkan jackpot bro
http://180.215.200.101/

simran malik said...

Thanks for your article
hubwelt is the best guest posting services provider in Delhi I will provide you every services related to Best Guest Posting Services and help you in the best way on my site Hubwelt.
Hubwelt is the best way to tell us the Best Guest Posting Services in India to provide digital marketing to all related information about these questions. guest posting services

Doyan303 Slot Online said...

Mari bergabung untuk memainkan slot online dalam situs doyan303 dengan hanya deposit 25 ribu. http://149.28.158.118/

graboffersindia said...

Buy Instagram Views
Here I want to tell you that I am providing social media services like Buy Instagram Views. So if you are interested in buying real Instagram views or likes then our company Graboffersindia website. can provide you with the best services related to Instagram.

So if you are interested, grab this deal.
Buy Instagram Views

togelonline said...

togel keluaran sdy terakurat dan tercepat hanya ada di website terbaik kami http://149.28.142.155/

Huongkv said...

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

săn vé máy bay giá rẻ đi Mỹ

có chuyến bay từ mỹ về việt nam chưa

Máy bay từ Hàn Quốc về Việt Nam

giá vé máy bay từ Vancouver về việt nam

vé máy bay giá rẻ nhật việt

mega888 said...

Dapatkan maklumat dan petua menarik dari kasino dalam talian Malaysia terbaik mega888 http://mega888user.com

Renu Yadav said...

Thanks for sharing this useful information in your blog.
RTPCR Test In Delhi NCR
Painfree provided you RTPCR Test In Delhi NCR. So if you are involved in this approach covid-19 with trained pathologist doctors & staff. We provide you service for your RTPCR test everywhere in Delhi NCR. And the price of this test will be given to you in 950\ - and your report in 24 hours.
RTPCR Test Delhi

Kashi Digital Agency said...

Great Article, Thank you so much for posting this important information.

Seo company in India : Best SEO Companies in Varanasi, India: Hire Kashi Digital Agency, best SEO Agency in varanasi, india, who Can Boost Your SEO Ranking, guaranteed SEO Services; Free SEO Analysis.

Best Website Designing company in India : Web Design Companies in varanasi We design amazing website designing, development and maintenance services running from start-ups to the huge players


Wordpress Development Company India : Wordpress development Company In varanasi, india: Kashi Digital Agency is one of the Best wordpress developer companies in varanasi, india. Ranked among the Top website designing agencies in varanasi, india. wordpress website designing Company.

E-commerce Website designing company varanasi, India : Ecommerce website designing company in Varanasi, India: Kashi Digital Agency is one of the Best Shopping Ecommerce website designing agency in Varanasi, India, which provides you the right services.

Website Design Company In Varanasi
Seo Service Company In Varanasi
Cheap Website Design Company Bangalore
Website Designer Near Me
Digital Marketing Company in India
Business Listing Free
Health And Beauty Products Manufacturer

Pengeluaran SGP said...

Hasil pengeluaran SGP tercepat malam ini telah diupdate di http://pengeluaransgp88.com.

datahk said...

Data hk terlengkap dan result tercepat. Kunjungi kami di http://139.180.185.61/

Anonymous said...

ada event menarik dalaam situs keluaran hongkong, ayo tunggu apa lagi di klik http://keluaranhongkong88.com/

keluaran sgp said...

Data sgp yang akurat hanya di keluaran sgp,silakan bergabung http://keluaransgp88.com/

mega888online said...

dapatkan kemudahan bermain slot kasino mega888 dalam talian dengan perkhidmatan 24 jam yang sedia membantu anda https://mega888online.com

SEO CANADA said...

The best article I came across a number of years, write something about it on this pag 먹튀검증

traininginstitute said...

Great tips and very easy to understand. This will definitely be very useful for me when I get a chance to start my blog.
Best Data Science courses in Hyderabad

onlyblog said...

Nice Blog. Thanks for sharing with us. Such amazing information.

Only Blog

Guest Blogger

Guest Blogging Site

Guest Blogging Website

Guest Posting Site

Unknown said...

nice article your blog is very useful to keep it up blogger

Graboffersindia provided you Covid-19 RTPCR Test Delhi. So if you are involved in this approach RTPCR test with trained Covid-19 specialist doctors & staff. We provide you service for your RTPCR Test Service everywhere in Delhi. and your report in 24 hours.


RTPCR Test In Delhi Home Collection

Rohit said...


यह मुख्यमंत्री चिरंजीवी योजना राजस्थान pdf लेख सामग्री से समृद्ध है। मैं इसकी सराहना करता हूं |

Unknown said...

nice blog keep it up

Our company gives you health-related service, now in Delhi, we will give you our service at home, today we are giving you the service of a blood test at home in Delhi at lowest price
So if you also want to get your blood test at home in Delhi, then you can book a blood test in Delhi right from our site.
Contact Us: +91 7982703387

Blood Test At Home In Delhi

Press Release Box said...

Food & Agriculture Biosensors Market

Snehal Harshe said...

Thank you so much for sharing all this wonderful information !!!! It is so appreciated!! You have good humor in your blogs. So much helpful and easy to read!
Java Training in Delhi
Java Training in Mumbai
Java Training in Chennai
Java Training in Bangalore
Java Training in Indore
Java Training in Ahmedabad
Java Training in Kolkata
Java Training in Noida

Kill addiction dawa said...

Incredible and valuable content you posted by this amazing blog, also i have read your many kind of post to your blog, i am very impressed and very well way you explained thanks for such kind of information to us
keep it up and best of luck for your next post
No Addiction

Anonymous said...

Excellent post, Thanks for sharing this information.

Full stack classes in ahmedabad

Unknown said...

Today we are giving you a health-related service called Full Body Checkup, which is now giving you the lowest price in Delhi NCR as well so that you can easily take the service of Full Body Checkup In Delhi NCR, we can give you this service in Delhi.
Contact Us: +91 8527153234

Full Body Checkup In Delhi NCR

Unknown said...

b2b market analysis

awesome content

Unknown said...

top b2b market research companies
awesome content

women designer dresses said...

Maldives Tour Packages
amazing content

Kavita Sharma said...


Nice article and very useful thanks for share with us.
Indore Escorts

Unknown said...

I have been looking for this information for quite some time. Will look around your website.
Delhi Call Girls
Escort Service in Gurgaon
Lucknow Escorts Service
Chandigarh Escorts Service
Jaipur Escorts Service
Goa Escorts Service

360DigiTMG-Pune said...

You have done a amazing job with you website
data science certification

360DigiTMG-Pune said...

You totally coordinate our desire and the assortment of our data.
best data science online course

360DigiTMG-Pune said...

I read your post and I found it amazing! thank!
data science course in pune

Pallavi Shirvastava said...

Highly appreciable regarding the uniqueness of the content. This perhaps makes the readers feel excited to get stick to the subject.
Certainly, the learners would thank the blogger to come up with innovative content which keeps the readers to be up to date to stand by
the competition. Once again nice blog keep it up and keep sharing the content as always.

digital marketing course
seo training institute
ppc course

hkpools said...

domino
poker
barak
permaisuri
segera kunjungi situs kami.

http://149.28.134.158/

jaminan kemenangan. ayo bergabung

traininginstitute said...

This is an excellent post I seen thanks to share it. It is really what I wanted to see hope in future you will continue for sharing such a excellent post.
best data science institute in hyderabad

360DigiTMG-Pune said...

Excellent Blog! I would like to thank for the efforts you have made in writing this post. I am hoping the same best work from you in the future as well. I wanted to thank you for this websites! Thanks for sharing. Great websites!
artificial intelligence course

datahk said...

gabung dan main bersama kami di data sgp resmi dan terpercaya menyediakan berbagai permainan dan bonus terbaik.

Bandar Togel Online said...

bandar togel online yang sangat aman hanya di kingdomgrup http://128.199.187.54/

bamgosoocom said...


Hi there mates, how is all, and what you would like to say concerning this
article, in my view its truly awesome in favor of me.

Look at my web-site; 오피사이트

Unknown said...

AYO MASUK KE SITUS DIBAWAH INI:
PKVGAMES TANPA ADANYA BOT
PKVGAMES TANPA ADANYA KECURANGAN
POKER ONLINE TERPERCAYA DAN TERKENAL

komalsingh said...

24/7 direct doorstep Escort Service in Lucknow Fair Deal Cash on Delivery No Advance We have Good Looking Independent Lucknow Call Girls Service
Panipat Escorts Service
Escorts Service in Dehradun

Escorts Service in Mussoorie

Escorts Service in Haridwar

Escorts Service in Rishikesh

Anonymous said...

I loved reading this post. Thanks for sharing.

Best Web designing company in Hyderabad

Best Web development company in Hyderabad

Best App development company in Hyderabad

Anonymous said...

I found this is very helpful. Thanks to you.
Best Web designing company in Hyderabad
Best Web development company in Hyderabad

Bandar Togel Online said...

agen pragmatic online bandar togel royaltoto terkeceh

Slot Online KINGDOM said...

Slot Online KINGDOM pasti seru

R1se Hluoluo said...

Sementara bola basket membantu meningkatkan keanggotaan YMCA karena ketersediaan gym mereka. https://SupremeIndonesia.web.id Dalam lima tahun permainan itu dilarang oleh berbagai asosiasi karena gym yang telah ditempati oleh kelas 50 atau 60 anggota sekarang dimonopoli oleh hanya 10 hingga 18 pemain.

Penghapusan permainan tersebut mendorong banyak anggota untuk mengakhiri keanggotaan YMCA mereka dan menyewa aula untuk memainkan permainan, sehingga membuka jalan menuju profesionalisasi olahraga.

opbestcom said...


Nice post. I learn something new and challenging on blogs I stumbleupon everyday.
It will always be useful to read content from other authors and use something from other websites.

Also visit my webpage - 대구오피

(freaky)

Priya Rathod said...

What an amazing and beautiful blog!!! Thank you for sharing with us. We need happier blog like this.
DataScience Training in Hyderabad
DataScience Course in Hyderabad

Blog said...

Talk to strangers chat

Unknown said...

hallo... hallo... hallo...
ada cashback menantimu..
pastikan anda bermain di situs dominoqq ya.
http://170.187.227.99/

Unknown said...

Medical educatio I'm enchanted to discover this page. I ought to thank you for the time you provided for this particularly magnificent examination!! genuinely cherished each part certainly and besides bookmarked you to see new information on your site.

Unknown said...

Indology Wonderful post. I acquire some new valuable information and testing on online diaries I StumbleUpon reliably. It will reliably be useful to examine content from various designers and use something from various locales.

mposlot said...

raih keberuntungan mu di mpo slot.
http://139.162.43.253/

Blog said...

Birth certificate gurgaon Very good site here you will get latest information and update

bestbus said...

I enjoyed reading the post. Thanks for the awesome post
Best Digital Marketing company in Hyderabad
Best web hosting company in Hyderabad

bestbus said...

This is the best blog post I have read till date. I'm glad to be here.
Best Digital Marketing company in Hyderabad
Best web hosting company in Hyderabad

Unknown said...

Great thanks for sharing this useful information on our blog.

Our company is a healthcare provider. Which gives you all kinds of health-related services for less money. Due to which you will not have any problem in taking the service, today we are giving you a full body checkup in Delhi NCR. So that you can easily take the service of Full Body Checkup In Delhi NCR, we can give you this service in Delhi.
Contact Us: +91 9811156942
Full Body Checkup In Delhi NCR

slotgacorbcaplay said...

bcaplay situs slot paling gacor meletus jedag jedug
slot gacor online indonesia

Anisha said...

Cosmetology Training nice and informative post thanks for the update

Anisha said...

Lakme Academy Delhi nice and informative post thanks for the update

Blog said...

India's Leading Compliance Services Platform One stop solution for Company Incorporation , ROC, GST, Income Tax Compliance and Registrations for FSSAI, Trademark, MSME, Startup and more.

komakdon said...

https://www.top-travel.ir/%d8%aa%d8%a7%da%86-%d8%a7%d9%84-%d8%b3%db%8c-%d8%af%db%8c-%d8%a2%db%8c%d9%81%d9%88%d9%86/es necesario hablar con el técnico correspondiente para averiguar el costo de reparación del iPhone 7 Plus LCD touch, después de las comprobaciones de expertos y el alcance del daño en el teléfono.

PG Soft 123 said...

PG Soft 88 | The best Website in the world is just for us
PG Soft 88

Blog said...

bluehost black friday I truly adored perusing your blog. It was all-around written and straightforward. Dissimilar to different websites I have perused which are actually that good. Thanks a lot!

Blog said...

Corpiness Why You Use Our Service

• To View Shipping Histories for Suppliers

• To Understand Where Competitors Resource Items

• To Keep Track of Public Companies' Imports

Blog said...

semrush black friday 2021 This blog is truly superb and the post composing ability is exceptionally decent. It is useful for everybody as I have composed many blog entries about

pokerbola said...

dapatkan promo menarik serta fasilitas terbaik yang tersedia di situs website pokerbola.

http://149.28.143.94/

Blog said...

teachable black friday deals This blog is truly superb and the post composing ability is exceptionally decent. It is useful for everybody as I have composed many blog entries about

Blog said...

teachable black friday deals 2021 This blog is truly superb and the post composing ability is exceptionally decent. It is useful for everybody as I have composed many blog entries about

Pragmatic 88 said...

mama hey you Pragmatic 88

bola online said...

dapatkan berbagai keuntungan dengan bermain disitus taruhan bola online.

Charlie Coates said...

Node. js can be used in both the frontend and backend of applications.Dissertation Writing Services

casinositewiki 카지노사이트 said...

I am very happy when these blog posts read because blog post was written in a good manner and write on a good topic. Thanks for sharing valuable information. Feel free to visit my website; 카지노사이트링크

frzn said...

Bitcoin is built on a digitally distributed record called blockchain. As the name implies, a blockchain is a collection of linked data consisting of units called blocks that contain information about each https://econews.ir/fa/content/3174564 transaction, including date and time, total value, buyer and seller, and a unique identification code for each It is an exchange.

Service on Street said...

Happy to visit your blog, I am by all accounts forward to more solid articles and I figure we as a whole wish to thank such huge numbers of good articles, blog to impart to us.
Best Refrigerator Repair Service in Hyderabad

tech science said...


Such a very useful article. Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article. data science institute in nagpur

pasti200m said...

JLGHJ FDADD DT UYT YIJB FJY YCF link situs slot online pakai ovo

pasti200m said...

menjadi yang terbaik itu benar benar ada Slot Online

service on street said...
This comment has been removed by the author.
Anisha said...

​RTO Hypothecation Removal Process Online in Pune nice and informative post thanks for the update

Blog said...

Annual ROC filing for Companies ROC Annual LLP compliances include filing of Annual Returns Form8, Form11, and Filing of DIR-3 KYC form. Call/ Whatsapp @ 76790 91881

pasti200m said...

hellow world daftar slot online via dana terpercaya

Maneesha said...

Wonderful illustrated information. I thank you for that. No doubt it will be very useful for my future projects. Would like to see some other posts on the same subject!
data science online training in hyderabad

slotdepositdana99 said...

daftar slot deposit 5000 moleda

Blog said...

Melt and Pour Soap Recipe Very good site. Here you will get latest product

Gorish dua said...

Thanks for Sharing!
We at Antino Labs believe in redefining and refining our model to suit the industry's requirements. Antino Labs' several years of experience in the market has let us register our global presence. Antino Labs' has the vision to become the world's most trusted partner for digital transformation and we aim to become a brand that defines innovation and the latest technology. We offer clients a one-stop solution for all their interests regarding Application building and Web development.
Web Development Company in Gurgaon
UI UX design Studio

John Miller said...

Thanks for sharing valuable information!
TOP SEO Company

Anonymous said...

Hi, Thanks for sharing nice articles...

SEO Services

Bhuvankumar said...

Really impressed! Information shared was very helpful Your website is very valuable. Thanks for sharing.
Business Analytics Course in Bangalore

Ganesh said...

Really nice and interesting post. I was looking for this kind of information and enjoyed reading this one. Thanks for sharing
Data Science Training in Indore

Anand said...

Very interesting to read the article. I would like to thank you for sharing this awesome article.
Data Analytics Course in Indore

data science said...

Great to become visiting your weblog once more, it has been a very long time for me. Pleasantly this article i've been sat tight for such a long time. I will require this post to add up to my task in the school, and it has identical subject along with your review. Much appreciated, great offer.

Data Science said...

Extremely overall quite fascinating post. I was searching for this sort of data and delighted in perusing this one.
Continue posting. A debt of gratitude is in order for sharing.
data science course in kolhapur

Professional Course said...

I read your excellent post. It's a great job. I enjoyed reading your post for the first time. I want to thank you for this publication. Thank you...

Data Science Course in Patna

oncasinosite 카지노사이트 said...

Looking forward to reading more. Great article post. Fantastic. Thanks so much for the blog. Much obliged. Feel free to visit my website; 바카라사이트

Buy Instagram Followers India said...

Thank you so much for giving such good information. Earlier I did not know about these things, through you I got a chance to know this.
Buy Instagram Followers India

SAFETOTOSITEPRO18 said...

This post is absolutely brilliant! Thank you so much for sharing. 온라인카지노

SAFETOTOSITEPRO18 said...

Great article. Couldn’t be write much better! Keep it up! 바카라사이트

SAFETOTOSITEPRO18 said...

Thanks for the great article that provided this useful information. 바둑이게임

SAFETOTOSITEPRO18 said...

Either way keep up the excellent quality writing. 카지노사이트

Top 5 web series you can watch with your family said...

Great article and fortunate to read and really like it lot.

MP Yatra!

Blog said...

Best digital signage company More often than not, working environment correspondence is a blend of a few methodologies; it can go from composing guidelines to eye-to-eye associations to looking over your work area to speak with colleagues. Be that as it may, contact with colleagues is not generally restricted to your office spaces and is currently led internationally.

BORIVALI said...

Unleash your potential and expand your capabilities with the Data Science Certification Course.
data analytics course in borivali

Horizon Academy said...
This comment has been removed by the author.
Horizon Academy said...

Hi,


Thanks for posting this post and sharing your knowledge through blog. This blog is very helpful or informative.

Udaipur Girl said...

Meet Indian top quality high profile house wife in udaipur best model available in our we gave high-class girls trust me and book your choice.
Goa Girls Mobile Number
Agra Girls Mobile Number
Lucknow girls mobile number
high profile girls

Followerindia said...

Keep sharing your Knowledgeable content through your blog. This blog is very informative to all. Tweet idea for Twitter

Anonymous said...

I found your article very useful and informative. Same as I shared informative content about TOGAF in project management. TOGAF is part of Project Management, It is designed to create a career path for professional development and credibility to employers. To learn more about TOGAF, check out this link below and start building your career in project management.
https://www.theknowledgeacademy.com/in/courses/togaf-training/

Anoop said...
This comment has been removed by the author.
Anoop said...

Your content is amazing and more informative. I've like to share my content about PMP, which is more useful to make career in project management

"https://www.theknowledgeacademy.com/in/courses/pmp-training/"

«Oldest ‹Older   1 – 200 of 211   Newer› Newest»