JavaScript - Yahoo News Search Results

119.88 ¥/$ (5 p.m.)

Sorry, but your browser needs Javascript to use this site. Pro-Russian fighters patrol Tuesday in in the village of Shirokine near the strategic port of Mariupol, Ukraine.

Popular JavaScript Package Manager Npm Raises $8M, Launches Private Modules

 Most JavaScript developers are familiar with the npm package manager, which was originally developed by Isaac Schlueter. What many probably don’t know is that npm is also a company co-founded by Schlueter to support the project. Today, npm announced that it has raised $8 million on top of the $2.6 million seed round led by True Ventures the company announced last February. The lead… Read More

120.13 ¥/$ (9 a.m.)

Sorry, but your browser needs Javascript to use this site. Four out of 7 patients, including foreign visitors, who had liver transplants died within one month after the surgery at a new hospital in Kobe established in November, the Yomiuri Shimbun said Tuesday.

SCENE AROUND Special Populations Prom, April 11

Javascript is Disabled! This slideshow viewer requires javascript. To view this slideshow either enable javascript and refresh the page or go to

Cool tools for compiling to JavaScript

Every programmer has a favorite language or two. JavaScript lovers are the luckiest these days because their language is taking over the Internet and the Internet is taking over the world. Those whose hearts reside elsewhere in the programming language world, however, are stuck. They can either stay on the sidelines and curse the relentless juggernaut of HTML, CSS, JavaScript, and Node.js, or ...

Google refocuses Dart as a JavaScript helper

Backing down on ambitions to create a commercial grade Web programming language, Google is shifting work on its Dart programming language to make it an optimization aid for the pervasively popular JavaScript, which Dart was originally designed to supplant. The company no longer plans to incorporate Dart into its Chrome browser, the two creators behind Dart announced in a blog item posted ...

Instant feedback arrives for JavaScript code testing

Developers looking for quick results when testing JavaScript code could have a solution with the Wallaby.js test runner tool, a code coverage technology intended to offer nearly immediate reporting of results.


recent bookmarks tagged JavaScript

Javascript Replace All Hashtags w/ Links

Posted on 3 April 2015

Programmer: ASP.NET AJAX: Calling PageMethods Synchronously

Posted on 3 April 2015

Creating a downloadable text-file using blobs - JSFiddle

Posted on 3 April 2015

Posted on 3 April 2015

Draft Countdown

Posted on 3 April 2015


Posted on 3 April 2015

Posted on 2 April 2015

Posted on 2 April 2015

Posted on 2 April 2015

Posted on 2 April 2015

Top Answers About JavaScript (programming language) on Quora

Top Answers About JavaScript (programming language) on Quora

What are the most interesting HTML/JS/DOM/CSS hacks that most web developers don't know about?

Not really a hack, but many people I worked with didn't know that you can pass more than one argument to
separated by comma:

console.log(foo, bar, baz)

One big advantage over writing
console.log(foo + bar + baz)
is that passed arguments aren't type converted.

var a = 1, b = "2", c = 3;
console.log(a, b, c);
console.log(a + b + c);

results in:
1 "2" 3

Another one: in Chrome Devtools' console (and I think in Firefox too)
is a shortcut to the currently selected element in the elements panel.

See Questions On Quora

Posted on 22 October 2015

What exactly is PHP, MySQL, PL/SQL, SQL, MongoDB, NoSQL, SQL Server, Postgre SQL, and SQLite?

I'd recommend first learning about Google and Wikipedia, as these will be far more useful in answering your question than the one-line responses you're about to get from me :)

Anyhoo, here goes:

PHP - a widely used programming language primarily for the "server side" of Web applications.

MySQL - a widely used open-source SQL-based relational DBMS.  It's widely used by technology companies and Web companies.

PL/SQL - the stored procedure language used by the Oracle Database.  (Note that PL/SQL is *not* SQL, although SQL can be embedded in a PL/SQL stored procedure)

SQL  - the main query language used for interacting with modern relational databases, such as MySQL, Oracle, Microsoft SQL Server, and PostgreSQL.

MongoDB  - one of the more widely-used NoSQL databases.  Stores documents using JSON format.

NoSQL  - a category of database engines that are typically not relational and are primarily document-oriented or Graph databases (although any db engine that doesn't use SQL can be described as "NoSQL").  Includes MongoDB, Cassandra, RethinkDB, the Hadoop ecosystem, etc.

Microsoft SQL Server - often referred to as just "SQL Server".  This is the relational db engine from Microsoft.  It's widely used in the corporate world.

PostgreSQL - the other widely-used open-source SQL-based DBMS.  It has some important differences from MySQL, which leads it to being used for somewhat different purposes than MySQL, but both are widely used by similar companies.  And it's the greatest thing since sliced bread, as I can objectively point out as I helped to code it back in the day :)

SQLite - an app-resident SQL library that is used by apps to maintain private "databases".  It's the on-device database for Android.

Each of these would be a pretty major "skill", and most of them would take years (or more) to truly master.

If your interested in this set of stuff, you'd appear to be mostly asking about databases and db engines, so you may want to learn SQL "first", possibly using something relatively easy to use like SQLite or MySQL.

However, you should also learn a programming language (SQL is a query language, not a general purpose programming language), and while PHP is a programming language, I'd suggest something like Python to start with if you don't know programming just yet.

See Questions On Quora

Posted on 16 September 2015

What is the difference between Angular.js and Node.js?

Node.js vs AngularJS: Understanding Node.js and AngularJS
You can go through this guide about Node.js vs AngularJS in detail and find out whether you should use Node.js or AngularJS or both for making web applications. Understanding Node.js and AngularJS is quite useful for building server-side and client-side web applications in JavaScript.
For making applications using Node.js or AngularJS, you first need to understand JavaScript language, and how both AngularJS and Node.js are related to JavaScript. Both Node.js and AngularJS require the applications to be written in JavaScript language. At first, JavaScript was used for doing simple things in a web page opened inside a web browser, for example, validating the data entered by users in a contact form, showing a larger image when the user takes the mouse over a thumbnail image, animating html elements, or making the web page more interactive.
Over the years, JavaScript has evolved far beyond a simple client-side scripting language into an incredibly powerful programming language which can also be used to create server-side applications in addition to the traditional client-side applications. AngularJS framework and Node.js platform can be quite useful for making powerful client-side and server-side web applications in JavaScript language.
In this guide, we will see how Node.js and AngularJS are similar and different from each other.
Node.js vs AngularJS: What are Node.js and AngularJS
Node.js is a cross platform runtime system and runtime environment for applications written in JavaScript language. It is similar to Java Runtime Environment (JRE) for Java, Adobe Integrated Runtime (Adobe AIR) or Adobe Flash Player for ActionScript, Common Language Runtime (CLR) for .NET programs, or Android Runtime (ART) for Android apps.
Node.js uses the open-source V8 JavaScript Engine to execute JavaScript code of an application. Node.js is written in C, C++, and JavaScript languages and is quite useful for building server-side, networking, and real-time web applications.
AngularJS is a web application development framework built by Google which is especially suited for developing single-page client-side applications. It is written in JavaScript, but it is very different from other web application frameworks written in JavaScript such as jQuery.
AngularJS makes use of directives. Generally, directives are custom HTML tags and HTML tag attributes, for example, <html ng-app="myApp">. The directive ng-app in the form of tag attribute defines the container and the root element of the AngularJS application.
Node.js is a runtime environment useful in building server-side applications while AngularJS is a JavaScript framework mainly useful in building client-side part of applications which run inside a web browser.
Node.js vs AngularJS: Installation and CompatibilityNode.js
Node.js is available for Windows, Mac OS X, Linux, and Sun OS, and it can be installed easily. If you want to install Node.js locally on your Windows PC, you can see our guide on installing Node.js on Windows. After installation, you can write your node.js applications using JavaScript.
Since AngularJS is a framework written completely in JavaScript, it does not need to be installed separately before using it in your application. You need to add the AngularJS file just like any other JavaScript file is added in an HTML document. AngularJS is compatible with Chrome, Firefox, Internet Explorer 9, Safari, Opera 15, and mobile browsers such as Android Browser, Chrome for Mobile, and Safari for iOS.
Node.js vs AngularJS: Applications and Uses
Node.js supports non-blocking input/output (I/O) API and an event-driven architecture which is particulary useful in creating real-time applications such as instant messaging or chat apps. Node.js also has a number of built-in core modules, for example, the HTTP module which can be used to create a web server in your Node.js application without using any other web server programs like Apache, Nginx, IIS.
There are a number of frameworks based on Node.js such as Express.js, Partial.js, Sails.js etc. These frameworks have extensive set of features which can be used to easily build a variety of applications. Node.js is quite useful to build fast and scalable server-side and networking applications.
AngularJS allows you to extends the HTML's syntax to clearly describe the components of your application. AngularJS let's you to create MVC components on the client-side of the application. The support for MVC pattern with two-way data-binding in AngularJS applications makes AngularJS an extremely useful web application development framework.
Unlike other frameworks which support only one-way data-binding, in AngularJS, the changes in the View are reflected in the Model and the changes in the Model are propagated to the View which simplifies the programming substantially. AngularJS is a very powerful JavaScript framework especially for building single-page applications.
Both the open-source projects, Node.js and AngularJS are targeted at building web applications using JavaScript, but they are quite different in their architecture and working. Node.js is mainly used to build server-side applications, whereas AngularJS is suited for building single-page client-side web applications.

See Questions On Quora

Posted on 27 August 2015

Since Meteor.js was developed after Node.js, what are the advantages of Meteor.js over Node.js, if there are any?

As Mattias Petter Johansson wrote, "you're sort of asking what advantages a house has over a concrete foundation" so it's more reasonable to compare Meteor with the MEAN-stack.
And here goes the most concise but not the least profound answer to this question:
Meteor gives you a powerful ready-to-use tool for building modern web applications. Check out Meteor Principles to understand it better:
  • Data on the Wire. Meteor doesn't send HTML over the network. The server sends data and lets the client render it.
  • One Language. Meteor lets you write both the client and the server parts of your application in JavaScript.
  • Database Everywhere. You can use the same methods to access your database from the client or the server.
  • Latency Compensation. On the client, Meteor prefetches data and simulates models to make it look like server method calls return instantly.
  • Full Stack Reactivity. In Meteor, realtime is the default. All layers, from database to template, update themselves automatically when necessary.
  • Embrace the Ecosystem. Meteor is open source and integrates with existing open source tools and frameworks.
  • Simplicity Equals Productivity. The best way to make something seem simple is to have it actually be simple. Meteor's main functionality has clean, classically beautiful APIs.

We'd love to get in touch with you!  Meteor Development and Сonsulting

See Questions On Quora

Posted on 20 August 2015

I need to get a good grasp on SQL, JavaScript, and HTML5 in 3 months. I'm ready to study 8 hours per day. I know basics. I need some good books or courses. What are some suggestions?

The single best resource to learn SQL is through Stanford online's Intro to Databases course - it's epic:
Stanford Online: Introduction to Databases

For HTML I would just do Codecademy, there really isn't much to learn here. Also don't forget to learn CSS while you're there...

For JS and Frontend developement, the best book to start is the free Eloquent JavaScript
Once you're done with that, or at least have the basics down - I wrote a blogpost on how I would learn JS if I were to start over now: Best Resources to Become a JavaScript Pro in 2015

I'm also teaching an online masterclass based on weekly coding challenges ( that has the following structure:
  • WEEK 01: Vanilla JavaScript
  • WEEK 02: Functional Programming
  • WEEK 03: Grid Systems - CSS
  • WEEK 04: Grid Systems - JS
  • WEEK 05: AJAX + Promises
  • WEEK 06: HTTP + Node.js
  • WEEK 07: RegEx + Node.js
  • WEEK 08: Algorithms + Data Structures
  • WEEK 09: Algorithms + Runtime
  • WEEK 10: Optimisation + Performance
  • WEEK 11: Application Development + Testing
  • WEEK 12: Advanced Application Development

See Questions On Quora

Posted on 12 June 2015

What is the best way to scrape all pictures from a website?

If u having problem during image/picture scraping, so here I advise you to prefer the data scraping tool, which I’m going to brief you in detail.

    According to me there is only one data scraping tool is the best, It is called “Easy Data Feed”.

    I have been using it for 2 or more years. And I satisfied with its functionality.

   Here is the list of its features:
1) This tool is support visual studio
2) You can create sample projects using easy data feed.
3) You can use programming language in this tool
4) Using API development you can do inventory management
5) In this tool, password protected scraping is possible.
6) It scraps product prices, images, UPC, SKU, etc.
In the end ,you can save file as CSV.

    You can read about how to use it here:

    They also have developers, you can hire them to do the job for you, and their Skype is “easydatafeed”.

See Questions On Quora

Posted on 10 June 2015

Is Node.js declining already?

To build on other answers:

Yes, I believe that as the initial hype has expired, and as people have moved from the basic 'it is very easy to write a web site that is high performance' to a realisation that actually the non-blocking single threaded nature of Node is only part of the solution to its proclaimed scalability in many scenarios, we may have hit 'peak Node'.

There are positives and negatives to Node, as with any language or framework.

  • If you need anything other than a trivial application, you need to follow exactly the same types of architecture that have been in use for some time in other languages. Node is not going to suddenly provide scalability just by being able to offer a single non-blocking thread.
  • For example, you will typically need to offload compute intensive, external calls or long running processes via a Service Bus or Message Queue to scalable worker processes (sometimes referred to now as Micro Services).
  • As people try to use Node in real enterprise scenarios, there is now an element of attempting to 'reinvent the wheel', by adding package upon package to patch on functionality that already exists in languages such as Java, .Net, Ruby and to a certain extent PHP.
  • When you actually compare the performance of Node to say an OWIN based Web API service, the Web API actually is able to match or outperform Node while offering greater functionality built in a strongly typed language.
  • This growth in the number of packages etc, and the fragmentation of the Node community is of course to be expected, in the same way that there is fragmentation and a short half-life for JavaScript frameworks and libraries client side.
  • The concept of Isomorphic JavaScript frameworks that evolved around Node is also beginning to be seen as a short-term sticking plaster approach with limited value, as is the attempt to bolt on strong typing in the form of TypeScript / AtScript etc.
  • Developments for server APIs such as Swagger, that provide metadata for a REST API that enables clients to be generated, and are language agnostic, enable the seamless integration and use of languages tailored to specific tasks. That might include a C++ native mobile app, a JavaScript web client, and a Java / .Net back end, or Erlang, or one of many others that are optimized for the Problem Domain. Models are automatically synchronised.
  • As the realisation dawns that Node based architectures are actually trying to attain features that enterprise grade, strongly typed languages have had for over a decade, with mature and optimised solutions for many problems, it becomes apparent to more people that Node is not a single solution to all scenarios (and neither is any other language).
  • However, it should be noted that Node, with its underlying C library that is wrapped by JavaScript IS highly suitable for some scenarios; event driven, simple request-response from a cache, such as a dashboard, chat application or notification hub (think Twitter), then Node is actually a very good choice - just not exclusively so, among the very many other approaches, which experienced Software Architects will be aware of; one example would be SignalR, for highly scalable, real-time, bi-directional communication between client and server.
  • Due to the momentum of hype and enthusiasm behind open-source JavaScript frameworks, and the number of headlines it generates, companies such as Microsoft, Oracle etc. embrace it in order to get the resulting projects tied to their own, proprietary environments where they have a revenue stream. For example, Amazon, Microsoft and IBM don't care what you use a long as you host on their cloud platforms, and their 'support' for it is used to perpetuate the myth that Node is actually a revolutionary concept that will replace 'legacy' languages.

I forgot to add in my initial post, that Bower is already facing competition from jspm. A week is a long time in JavaScript.

Update: I note that a graph has been used in one other answer that shows amazing growth rates for Node.js jobs advertised on the Indeed website. That seems pretty impressive...

... until you realise, that is actually a bit disingenuous, as it relative to a base that was effectively zero. Switching the exact same graph to display absolute data tells a very different story:

Looking at Percentage of Matching job postings, it would seem that in fact, Node.js is, effectively, irrelevant - tip: the top orange line is for PHP, the lower, pale orange line hidden amongst scala, erlang, rails, is Node.js.

To make it clearer, and to include JavaScript itself (node.js is the green line):

Top Job Trends
  1. HTML5
  2. MongoDB
  3. iOS
  4. Android
  5. Mobile app
  6. Puppet
  7. Hadoop
  8. jQuery
  9. PaaS
  10. Social Media

My point on this, is that people should be careful not to fall for the over-hype that surrounds Node.js.

Sources: 26 years Experience in the IT industry, contribution to several open source JavaScript frameworks, 16 years consulting experience in Enterprise software development for Banks, Insurance Companies, Healthcare, Defence, eCommerce and Publishing. Have worked for IBM, Avanade, Microsoft.

See Questions On Quora

Posted on 4 June 2015

Is Node.js declining already?

Maybe your question is related to recent posts like:

More globally, with the buzz, some developers considered node.js as something that might be the best and unique solution to solve almost everything. At the end, they have to figure out sometime that other technologies can be more mature or more adapted for their specific projects.

Maybe you ask it because io.js did let fear some potentially dangerous split in the community.


Regarding that:
The near future of node.js looks more to be the start of the same competition we have on client-side, than the start of a decline.

Even if it had been painful at start, the client-side JavaScript/HTML5 competition has been very productive in innovation & performances

At the difference of the client-side, we don't have to wait for the W3C, WHATWG or ECMA to be created nor to wait for the vendor leaders to be part of them.

CommonJS work stopped but we now have this Node.js Foundation with already on board representatives from:
  • Joyent
  • IBM
  • Microsoft
  • SAP
  • Paypal
but also more recently
  • Intel
  • GoDaddy
  • Digital Ocean
  • Groupon
  • ...

As this foundation was just created, I would not be surprised if Mozilla, Google, and Oracle ultimately join them (and who knows... maybe also Apple).
Note also that:

JavaScript itself shows a bright future in its evolutions with things like

If we take a look at node.js Job trends, they appear to be almost non-existent compared to other one. Actually, node.js is just shyly starting to rise up

Now, looking to relative percentage grow, you see that, not only node.js is the one with biggest progression percentage,  but also that each time it started to decline, it finally grew up again a bit later.

See last updates there (you can test with other skills):
php, ruby, rails, python, java, scala, erlang, .NET, node.js Job Trends

If you look at top 10 job trends, you will see HTML5 (1st), MongoDB (2d), and jQuery (8th) which like node.js are all based on JavaScript. So even if you don't end up with a node.js Job, using it will make you learn JavaScript which will still be very valuable.

Node.js is still a young technology, and while some of its use cases might have been invalidated (at least partially), it still get regularly new use cases going on and then still has market-share it can conquers.

So, yes, node.js & npm will probably see lot of changes,
 but they should result in great enhancements for the whole community.

My conclusion is then that no, Node.js is not declining

It is now growing at a higher level, a more mature one

If you want more reading on that topic, I invite you to get a look at this article: Why Node.js is hitting the big time in Enterprise Markets

PS: All of us can contribute to enhancements of the Web platforms and Web Standards. I invite you to get a look to this other answer I wrote: What is an anonymous function in JavaScript? from which I invite the readers to vote for a better JavaScript closure scopes inspection in developer tool ;-)

See Questions On Quora

Posted on 26 May 2015

Is switching from Ruby on Rails to Angular and Node JS worth it?

That developer needs to be fired immediately.

Here are some key quotes I'd like to repeat back to you:
"The web application is fully-functional"
"wrote the code in such a way that much of it is reusable and scalable"
"We don't have a large user base "

In other words, you are in a dream situation: all you have to do is bring on more users and start minting money.  If this developer is advocating so strongly for a complete rewrite even though you're not actually facing any real problems at the moment then he is displaying a complete inability to balance the real needs of a business against his own penchant for playing with shiny toys.

When you actually have real scaling problems, then that's the time to talk about solutions "that will scale better."  And even then a complete rewrite should only be one of many answers to that problem.

See Questions On Quora

Posted on 2 April 2015

Is switching from Ruby on Rails to Angular and Node JS worth it?

I will tell you my experience from a recent hack-a-thon.  We prepared a  geographic-driven application for iOS and Android in about 48-ish hours without sleep.  It was very buggy, and the backend was Ruby on Rails serving only a JSON API.  At the presentation, we noticed that we were the only group who did not use Node.js.  However, we knew our idea had promise, and we filed a corporation.  Next, we dug into Node.js, and soon the community's reflections convinced us that it was the appropriate direction from our application. 

I began rewriting the backend using Node.js and Express.  I was able to accomplish the controllers and the appropriate JSON responses with seed data in about a weekend.  Then, I decided to move to models.  I would use MySQL (like we did with Rails).  The first thing I noticed was the lack of ActiveRecord.  I found myself really missing this.  Several Node.js ORMs were new and (some) did not even perform well to our standards in a production environment.  We settled on a popular one (I won't disclose it right here b/c I don't like to single out a specific project).

Meanwhile, my colleague and I began to notice that our codebase was becoming astronomically large.  Many of the convenient functions provided with Rails need to be implemented from scratch in a Node app.  It is very barebones.  Due to excessive JavaScript callbacks (sometimes nested), the code seemed very unorganized and was hard to follow.  When we explored refactoring, the language CoffeeScript spoke to us.  In several hours, we converted the application over to CoffeeScript, and all was good!  Our controllers were a lot shorter and easier to follow. But... the ORM was definitely not designed with CoffeeScript in mind.  Some of the "queries" (or OO convenience methods) did not look right in CoffeeScript, and we found that it defeated the minimalistic and readable principles behind CoffeeScript.

Knowing that we would build upon it in the future, I started work on my own ORM.  I developed a nice system of chaining standard functions (like `.all` in Rails) which would translate to SQL queries.  At this point, I looked back and I realized that we had spent weeks trying to move from a Rails app that took us less than 2 days to build to a Node.js app.  In doing so, I began to reinvent the wheel, because I wasn't satisfied with the solutions that I found in the community. 

Then, I asked myself several questions...
  1. How could Node.js better serve my team than Ruby on Rails for this application? When it came down to it, I realized that some of the functionality that excited me and my team about Node was not applicable to our app.  We loved the Realtime element, and the low level access to sockets.  However, we were running a map application that adds locations.  There was no need to utilize this.  At times, we began searching for ways "to utilize this."  This should have been a red flag.  We even thought that maybe we could show business owners who advertise with us who is looking at their locations in realtime.  In other words, we concocted another application (in our minds) to take advantage of Node's features.  When it came down to it, Ruby on Rails did everything that our application needed in a fraction of the code.
  2. Is Ruby on Rails going anywhere? Nope. There are avid PHP users, and both the Python and Ruby communities are thriving.  Rails still does what it is designed to do... to help minimize redundancy and to get developers up and running quickly. The Node.js community is in the limelight, because it is a new, exciting technology.  However, Rails has remained a stable framework for years and its contributors are far from "throwing in the towel."
  3. Where are there disconnects? Many people do not seem to understand that Node.js is not a web application framework like Ruby on Rails.  There is no convenience.  It is not designed to help developers through the long development process.  Instead, it is designed to be a barebones set of libraries on the V8 runtime.  On the other hand, Express is a framework, but it makes no assumptions about models.  It appears more like a Sinatra-equivalent.  Rails exceeds when it comes to quickly and easily getting a running application, but it does have its problems.  Rails is not designed to handle realtime applications like chatting.  (Yes, I'm aware of ActionController::Live, but the framework was not specifically designed for this).  Node.js with Socket.IO is a great candidate for something like this. 
  4. Isn't it constantly shifting? The community is constantly looking at new technologies.  This is definitely a great thing!  At the same point, it can cause someone to re-imagine an application in a new environment.  By the time they have finished refactoring, a new thing is in the limelight.  If you refactor your codebase every time a new technology is announced, you will never finish refactoring.  As it is, most people are using these frameworks as backend tools now.  They produce a JSON API and then interact with a client-side JavaScript app like Angular or EmberJS.  From what I've seen, all that matters is your API accurately and securely produces a timely JSON response. As I'm speaking, I know that the Scala language is now in the limelight with major internet companies and startups.  (Thanks to Twitter, Foursquare, etc.)  If your app works well in Rails, leave it in Rails.
We have reverted to our Rails application.  I'm not in any way against the NodeJS community.  I've even written things discussing my interest in their patterns and projects. However, people throw the term "scalable" around when they don't really know what it means.  I suggest that you resist the idea to reimplement.  If the initial project took you 6 months in Rails, I guarantee it will take longer without frameworks like ActiveRecord.

As a Twitter engineer put it, "a language or a framework does not solely make you more scalable. You are scalable if you write scalable code."  Twitter uses Scala, because they wanted a statically typed language that was flexible on the JVM.  For years, they made Ruby on Rails scale to millions and millions of users.  Most people will never hit Twitter's traffic level.  (No offense to Node) but... If they do, they probably will be looking at a more stable framework and a compiled language.

Don't just follow the status quo.  Do what is best for your application.  Spend more time fixing bugs.  Your users don't notice the backend details, but they will notice if a component on the site is unresponsive.

See Questions On Quora

Posted on 22 February 2015

How do I create a mobile first website with Meteor.js?

Use a responsive, mobile first UI framework? There are plenty out there, these are just a few:
  1. meteoric/meteor-ionic
  2. Documentation - Materialize
  4. Bootstrap · The world's most popular mobile-first and responsive front-end framework.

Whether you use Meteor or any other web framework, there are a few things you should do to make your site mobile friendly if you're working from scratch:

Add a viewport declaration in <head>
With Meteor this can be as simple as dropping a <head> element in virtually any html file you've got lying around and it will be merged with the main head section in the output.

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

Depending on what you're building you will likely want to restrict the pinch zoom behaviour by adding more properties to the content attribute above such as
. You can build a site without doing so, but you will run into issues in some browsers when you try to do certain things like
position: fixed;
and others. Zooming may also cause your page to change size if you're using relative % sizing on top level elements depending on how your CSS is set up. Accessibility guidelines recommend against this, but again it depends on what you want to achieve.

More reading:
Configure the Viewport (google)
Configuring the Viewport (apple)

Landscape text-size
Mobile webkit browsers will increase your text-size when the device is in landscape mode. You can turn this off:
html { -webkit-text-size-adjust: none; }

Always use responsive CSS
I think in today's web this should go without saying. Your site will be viewable from multiple screen sizes, large to small and always at both orientations: landscape and portrait. Make sure your CSS layout uses %-based measurements for widths and master your media queries.

 I always build mobile-first, and nowadays I tend to use a very similar CSS reset at the top of every project.

This helps use width: 100% without hassle:
* {
  box-sizing: border-box;

The following is a trick I use to get my page to fill the screen vertically since I am almost always going for the "native app" feel as much as possible. It's ok if your body is 100% height, the overflow will be visible and there is typically at least one top level container inside <body> such as <div class="app"> which can benefit by having min-height: 100%;
html {
  min-height: 100%;

body {
  height: 100%;
  position: absolute;
  width: 100%;

I also almost always reset the fonts, since I am firm believer in larger, thinner, sans-serif fonts, especially for mobile readability - but this is just my own subjective opinion. Google Fonts is a great resource for importing web fonts.
body, input, select, textarea {
  font-size: 16px;
  font-weight: 300;
  font-family: 'Open Sans', 'Droid Sans', sans-serif;

CSS media queries
Media Queries

Avoid click events on mobile browsers
Native click emulation in mobile browsers uses a timeout approach (how lame of you, browser designers) and deserves to be replaced with something more instant. There are plenty of approaches out there, among them:
meteor/meteor (fastclick)
(BTW, Metafizzy makes brilliant stuff)

If you want to do it yourself, you could sometimes get away with just using 'touchend' instead of click, but the problem with that is it may be the end of a scroll gesture and whatever happens to land under the finger at that point will receive the event (which is wrong since the user's intention wasn't to activate anything, just scroll). Theoretically, correctly handling this would be to listen to 'touchstart' and remember a state, then listen to 'touchend' and measure if the user's finger moved outside of a threshold radius, and only then decide whether or not to trigger your action.

Watch out for :hover
On mobile devices, there is no hover mouse state, and browsers will "emulate" it by adding an extra tap state. If you wrote a :hover effect, the user's first tap will put the element in that pseudo:hover state and only subsequent taps will actually activate (:active) the element. To get around this, I have a class on the <html> element depending on whether the device supports touch events (something like
"ontouchstart" in window
to test). I recommend you just drop in modernizr and forget the hassle.

This trick lets you prefix your :hover declarations with something like this:
.no-touch <selector>:hover { ... }

This guarantees the hover effects will not be emulated on mobile.

Don't load huge images. Ok maybe sometimes...
Think about the physical pixels on the device before deciding to load that 2MP background image or banner. Especially if it's an older device with less pixels and a slower CPU/GPU. Consider using media queries or template branches to load smaller resources scaled down to more appropriate widths. At the same time, if you want to take advantage of high density screens, you will want to provide double resolution resources. iOS supports the
protocol to provide retina resources. I am not aware of a similar convention for Android, but media queries are your friend.

Use hardware accelerated transitions and animations
If you have fancy animations and transitions, avoid animating software properties like top, bottom, left, right, margin, padding, width and height...etc. (Especially if the elements are "in the layout flow" since that will cause lots of expensive layout passes). Instead, animate known hardware accelerated properties like transform. A neat trick is to force an element to render with hardware acceleration (sometimes eliminates flicker or other artifacts) by applying
transform: translate3d(0,0,0);

More reading:

Hope that helps!

See Questions On Quora

Posted on 19 February 2015

How was the idea to develop React conceived and how many people worked on developing it and implementing it at Facebook?

React was created by Jordan Walke, a software engineer at Facebook.  Jordan deserves all the credit for creating React.  He was influenced by XHP, a PHP-based component system that is still in use at Facebook, but also by functional programming ideas.

Pete Hunt wanted to use React at Instagram, so he helped to extract React from Facebook-specific code. This prepared React to be open sourced. 

Later, Facebook put a team of engineers behind React and also received great contributions from the open source community.  Significant contributors include Sebastian Markbåge and Ben Alpert, among many others.

See Questions On Quora

Posted on 11 February 2015

Why are IT systems in big enterprises usually built using Java, instead of Python or JavaScript?

At Spotify, we use Java extensively in the backend. This is not for legacy reasons, it's an active choice. We use Python too, but we have moved more and more to Java. The reason is that Java is much easier to get to perform well. Python is easy to write initially, but getting it to perform well when being hammered by 15 million paying users is another.

I personally don't understand how a medically sane person can like the Java syntax. However, no intelligent person can deny that the JVM is pretty darn good. It is fast, well-tested, well-documented and under active development. This cannot be said about many tools in software development.  

We used to have quite a bunch of C++ services, but while you can get C++ very fast too, it's harder to write, especially if you want the code to be maintainable. Java is a compromise that hits a sweet-spot for us.

Clojure is gaining tractions at Spotify, many new services are written in it, but it's not as wide-spread yet. While Clojure is certainly a better language, Java has the advantage of being non-weird. Java is an uncontroversial programming language that all experienced programmers can jump into with little effort, and that is a big advantage.

If you like my writing, don't miss out on more of it - 
follow me on Quora and Twitter (

See Questions On Quora

Posted on 17 January 2015

What does a web application architecture include?

Well first, by looking at your question it seems you have misunderstood the meaning of architecture from a web application point of view. Or maybe we just see it differently. Either way I will try to be as specific as I can both to your question and what I find architecture to be.

I see architecture as flow diagram. From where the user enters all the way down to the CPU of the server and the power cord connected to it. The technologies, methods, and how everything is arranged to form a complete product is what I think about when architecture comes to mind.

I'll give you a top to bottom approach of the *common* stuff around today, while trying to address some of the stuff your brought into the question yourself  so you can see where they stand. It's going to be long, but bear with me and hopefully you'll have a firm grasp when you're done reading (I truly hope).

Here we go.

A Web Application architecture can vary greatly depending on the application at hand, its needs, its behavior and of course, the means at hand.

That are a lot of layers you can stack up when building a web application, some are "mandatory" (like a front end, right? you have be to able to see and interact with something), while others, are optional or on a need basis.

Front-end / Client Side:
As you said, the top most visible layer is whats called the Frontend. This is usually written in HTML, CSS for styling, and Javascript for "interactivity" and function. Of course there are more front end technologies available like Adobe's Flash. The data from this layer has to make it to the user's browser which then turns all the code into something beautiful and interactive.

From an architecture point of view, these files would be served up from various cache sources on a large web application; meaning the HTML might be served up from various "web accelerators" or reverse proxy caches (like Varnish ), while the CSS and JS files can be served from a different source like a CDN (like Akamai's, Amazon's CloudFront or Rackspace's CDN or any other)

Back-end / Server side:
Below that, you have what's normally called the "Backend" (or depending how deep your infrastructure is, a front backend: some complex web application might have a backend to render views with a certain logic, and have a "deeper" backend for more complex stuff like business logic).
The "Backend" is where you usually use a programming language (unlike HTML & CSS which are markup languages) such as PHP, Python,Ruby,Java or whatever else you fancy. The backend usually decided how to render the front-end depending on it's business logic.

This is also where those "Frameworks" you mentioned come in. Think of a framework of a set of prewritten tools and scaffolding to common tasks, meaning you can use various parts of the framework to avoid writing your own. Also, if you do need to write your own solution to something, they can make it easier and simpler for you, making it less necessary to reinvent the wheel.
Each framework is language specific and they vary on how much they impose on the developer.

"Ruby on Rails" is a Ruby framework, "Django" is a Python framework, "ZendFramework" is PHP framework and "Spring" is a Java framework just to name a few.
Before a flame war starts: no framework is better than any other, they all have their advantages and drawbacks [but Django is the best :)]
There are also frameworks for the front-end such as Backbone.js, Spine.js or Knockout.js (there are plenty more) [and it might be a good place to note that Javascript can also be used as a server-side language also]

The backend layer might (I say might, because it really depends on the scale and performance you require) be using a cache layer of it's own to cache certain data to avoid going "deeper" into the stack. Some caching servers/products are "Memcache" or "Redis" for example [yes redis can also be used as a normal data store]
These are basically processes that your language of choice can communicate with that are able to store and retrieve data in memory, meaning no disk I/O is needed making them very fast to work with.

In order for most web application to function, they need to be able to store data somewhere. That somewhere is usually a database of some sort. Some big name brands and household names are MySQL, PostgreSQL, Oracle,CouchDB,Redis,HBase and the list is pretty endless.
Each one saves data in a different manner and gives different features. Some save tabled data (relational databases) while other saved "paged" data, or even simple key-value pairs.
It really depends on what you need to save and how you want is saved.

Database Abstraction:
Now your code needs to read and write data to the database... this is where the abstraction you were asking about comes into play and this also ties back to the frameworks we talked about earlier.
One way to create an abstraction is to use what's generally called an ORM (Object-relational mapping) - This layer of code is suppose to separate the code needed that data, from the data source itself - thus enabling your to make changes to one without effecting the other.
One great example of this is Java's JDO. Also, most modern frameworks supply their own ORMs with pluggable configurations for common database providers - of course each framework's ORM is for working within that framework alone (generally)

The server - Software:
Now you got everything work, but something needs to be "answering calls" and serving up what you have to offer
Everything could be running on a single machine, or on thousands of separate machines - this really depends on how your architecture is planned, and how much you need it - which is "the scale".
The server's role is to accept the "request" of some action , and run it. Once it runs "it" (could be a database query, a dynamic script or a request for a image on the disk), the sends it back. It serves.
For this, like everything, various vendors exist: Apache, Nginx, Tomcat.. the list is  endless. You can also play around with combinations of these various servers on various layers depending on your needs

The server - Hardware:
Everything we talked about, has to be somewhere, a CPU somewhere has to process it.
This is basically a computer, not very different from the one you're using now only it has it's muscles where it needs them.
It can be psychical or virtual depending on your needs - but it is somewhere, in a data center connected to the internet (hopefully) by the internet backbone.

State-full / Stateless:
This isn't so much a "is there a tool for". The way you design and code is what determines if your architecture is stateless or not. This property may also vary between different points of your architecture. For example you might have stateless web servers for your guest visitors, but have state-full requests for your logged in users.
A stateless design is usually easier to scale.

Summary -  A final word:
Back to architecture: from all the examples I gave, the technologies you choose and how you put them together is what makes your architecture.
You can mix n' match different technologies and vendors to create various "stacks", you can put up multiple sets of different stacks to combine into one big architecture - the possibilities are literally endless.

I hope I was able to put a little order into the chaos.

See Questions On Quora

Posted on 2 January 2015

What do you think is the future of the Elm programming language?

I am going to stick my neck out and predict the complete opposite of Matt Pickering. Elm has a bright future ahead of it.

Matt makes a good point, I admit. Programming languages are notoriously short-lived. Going purely on historical data, I have a >99% chance of egg on my face. In fact, with those kind of odds, what am I doing putting my money on any horse? It is risky business, no doubt.

First, the phrasing of this question begs for more than just a binary choice between success and failure - it probably calls for some elaboration on what that scenario looks like.

Failure in this case is pretty easy. People lose interest, Evan stops working on it and the whole thing deflates like a jumping castle after the kids have all left the party. Activity just stops. Why do programming languages often fail? They fail for the same reasons that startups often fail. If you've spent any time around Y-combinator folk you will undoubtedly hear the mantra "Make something people want" at one point or another. I am sad to say, most programming language designers fail miserably at finding that special "something" that somebody somewhere wants badly enough to become personally invested in their project.

Ok, so what does success mean in this context? Is CoffeeScript successful? How about Opa, Haxe or Spider? Are any of these "successful"? Are all of them? Not only that, but how far into the future do we need to look? CoffeeScript is actually an interesting example, because in my estimation it has been incredibly successful and near as I can tell it got there without any direct corporate involvement. To be honest, I personally think CoffeeScript's future looks somewhat bleak and boring, but what I will say for it is that it's probably going to stick around for a while. It's simply reached that point where enough people and businesses are invested that it cannot simply die. So then, let's keep things interesting and use CoffeeScript as our yardstick for success. Can Elm outlive CoffeeScript?

Hold on a second. Let's talk about this some more, why not go all out and compare Elm to C? Isn't a comparison to CoffeeScript something of a cop-out? The issue with comparing Elm to Java, C, Go, D, COBOL, SQL or anything like that is that these all address a completely different market from Elm! Elm may be in the same sort of ontological category that is programming languages, but in a business sense it is really rubbing shoulders with technologies like ActionScript, CoffeeScript, EcmaScript >5, ClojureScript, jQuery, D3.js, Flash, Unity, AngularJS and React. Yes, these include web frameworks, browser plugins and more. That is because they all live in the same "market space" and this is where Elm needs to justify its existence in order to survive and then grow into new areas.

Something that's interesting to notice about Elm's neighbors is that they all have this funny appearance of being quite different from Elm as well as - in many combinations - each other. This is despite the fact that they are all addressing a very similar need. That's a good thing for a product that is trying to carve out its niche. Lots of activity indicates that there is significant interest in that space and yet differentiation gives you the necessary foothold from which to expand.

Successful products often find their market fit through a fortunate blend of circumstances that never-the-less appear to be somewhat random. The environment into which Elm is being born, I feel, has an interesting shape to it.
Even casual observers would probably remark that Flash seems to be losing some ground on the internet. The market is clearly in a phase where it is exploring alternatives. In fact, I'd wager that this is precisely what motivated Prezi to offer Evan employment.
It also seems as though a bunch of recent talks that went viral, Inventing on Principle, The Future of Programming and Wat has further primed people to be attentive to new approaches in this space.
All of this has happened around the same time that functional programming is starting to take hold in mainstream software development, after many years of relative dormancy.
Finally, "functional reactive" techniques, which have been a research subject for many years also seems to be reaching maturity. This is no doubt what allowed Evan to write his thesis and then distill these ideas into the programming language that is Elm.
What I would like to emphasize here is the timing and environment, rather than any of the specifics. Finding a niche is all about spotting the opportunities and then configuring your product to fit snugly into that gap, like a puzzle piece.

So then, what does success for Elm look like? It could look a lot like AngularJS or React... or if you're really long on Elm, it could even look a bit like like jQuery or Flash. It probably does not look like C or even Python... at least, not for some time.

In fact, Elm already has one "paying" customer - Prezi. Clearly someone at Prezi wanted what was on offer badly enough to sponsor the work going into it. If you look at the kind of thing that Prezi does... Well it's not that surprising!

Make something that people want.

See Questions On Quora

Posted on 16 December 2014

Why did VBScript lose to JavaScript in terms of the adoption rate given that IE was the victor over Netscape during the early days of the browser war?

Because JS got out first, in Netscape 2 (beta) in 1995. VBScript first shipped (per The History of Visual Basic) in IE3, but only IE4, which shipped in the fall of 1997, got traction. See

from Browser wars.

(This market share chart does not show the growth of the Web. As IE took a greater percentage each month, especially when it shipped in Windows 95, it gained more in absolute number of users than Netscape did in its early growth. But the die was cast -- it was too late for VBScript.)

Timing, "who's on first?", matters greatly in a growing market. The proof is that Netscape never felt much pressure to implement VBScript (which would have required reverse-engineering).

As far as I know, VBScript was used only on Microsoft sites and perhaps a few other big-company/government sites, and only as an alternative to JS, with fallback to JS.


See Questions On Quora

Posted on 28 October 2014

Is meteor.js secure?

Meteor is by design more secure that any traditional client-server REST-based framework in at least four ways:

  1. The publish/subscribe mechanism limits the data that can be retrieved from the server. Operations on client-side collections are by default restricted.
  2. The Meteor check package that can be used to verify that untrusted inputs are of the expected type. The audit-argument-checks package will warn you if you don't check your inputs to publish functions.
  3. The roles roles package provides fine-grained Role-Based Access Control.
  4. Meteor doesn't use session cookies, which makes Cross-Site Request Forgeries (CSRF) impossible.
  5. All user input is HTML-escaped when being displayed back to the client, thanks to the Handlebars-like {{...}} templates. A first defense against XSS.
  6. Content Security Policy support is provided by the browser-policy-* core packages.
  7. Meteor uses the best crypto to store hashed passwords - bcrypt.
  8. Meteor provides fine-grained control over method calls and database access  -- Discover Meteor - Setting the Security Record Straight.
  9. For the paranoid, a full-database encryption layer that runs on top of Meteor exists, calledMylar. It stores only encrypted data on the server, and decrypts data only in users' browsers.

Note that all of this is automatic, and come right out of the box. You don't have to do anything, and you can't screw it up. Which is something that not many other frameworks can claim.

You do need to be careful if you use some types of MongoDB queries?

Further resources:

See Questions On Quora

Posted on 22 October 2014

Is switching from Ruby on Rails to Angular and Node JS worth it?

I should advice you to integrate AngularJS with Rails. Rails has a nice asset pipeline which you can use it to structure your AngularJS app. I wouldn't suggest to replace the backend with Node. Rails is perfect and agile, plus those who don't know, Github is scaling Rails well with Unicorn server, so scaling should not be issue in any case. More examples are, Twitter, Groupon, Airbnb, Basecamp etc. They all have million user base.

I have bench-marked Rails and on a decent 3k-4k rupees VPS hosting using Unicorn Server, it can server upto 10,000 requests without database queries. You should optimize database queries and try implementing caching solution like Redis or Memcached. Comment by Damien Roche in your question answers in-depth about Scaling.

Moving on to frontend, AngularJS is really nice and full page refresh makes website little slow. Rails 4.0 have included Turbolinks while Github,Twitter are using pjax ( defunkt/jquery-pjax, pjax ) and Facebook is using ReactJS to overcome this problem. I would advice you to integrate AngularJS, start small like cleaning up the forms, implementing some routing on some pages.

You could take a look at require.js and how have integrated it in their codebase. Just go to their website, view-source and at bottom you will find integration of it with Backbone. You could tweak it to integrate AngularJS.

Some people prefer module based structure while other prefer single module. I generally like detached modules which you can inject into you main app module.

So you can make structure like:
    profile-module.js /* This will serve as manifest */
    shopping-module.js /* This will serve as manifest */
application.js /* This will contain require.js manfiest */
main.js /* starting point of application containing require calls */
angular-route.js or ui-router
angular-resource.js or restangular

Don't inject anything directly otherwise minification will strip out $scope to variables like a,b etc.
Use something like this:
MyApp.Profile.controller('ProfileCtrl', ['$scope', function($scope) {
  /* code here */

and inject in to main app
var MyApp = {};
MyApp.Profile = angular.module('MyApp.Profile');
var app = angular.module('MyApp', ['MyApp.Profile']);

I personally love Rails and node community is not matured. It wouldn't be wise to shift because overtime you come up with many problems and it maybe possible that Rails community already tackled it. Since Node and Express are very recent, their codebase is not matured as Rails.

I would also advice you to look at Service Oriented Architecture. If your developer really wants to work in Node, just decouple that app. So like you want to expand you app to include Comment functionality, make it's own database, new Express app and expose the JSON data over HTTP so that Angular+Rails app can pick it up or you can use Rails to request that data using Net::HTTP or Request gem.

Just worry about productivity, you will eventually scale. Billions of lines code and you will learn eventually by trial and error what works for your company.

See Questions On Quora

Posted on 28 July 2014

What is a promise?

A promise is a proxy for a value that may not yet be available. It is typically used for functions that need to wait for an external resource, much like a callback would. However, rather than passing a callback to the function, the function returns a promise. Also, promises can be chained, so that the resolved promise from one task, can be passed to the next task, which itself can return a promise. The last link in this chain is a function that will use the final result.

Promises are chained using the then method of the promise. This method is passed a function that will be called when the promise is fulfilled, passing it the fulfilled result.

Here is an example:
            console.log('result is', result);

Compare the relative linearity of this code with the pyramid of doom that would be expected if callbacks were used.

See Questions On Quora

Posted on 26 March 2014

Are there any intensive training courses like Dev Bootcamp or Hungry Academy in Boston?

As Coleman pointed out in another comment, you should check out Bloc ;-)

We're a 12-week online developer apprenticeship. We'll kick your ass, and you'll become a web developer by the end.

One of our biggest goals is to provide the bootcamp experience without the typical constraints of a geographic bootcamp. We've had students from all over the world, including the UK, Italy, France, Australia, India, and South Korea.


We offer an intensive 12-week online apprenticeship designed to accelerate skill development and career advancement. We pair you with a coach who is a web developer, and you meet with them three times a week for 12 weeks as you work through our intensive project-based curriculum. Students need to commit 25 hours/week.


You start with a web-based editor to learn Ruby, then we show you how to setup your development environment, and then you complete exercises, mini-projects like building a Wikipedia clone and Reddit clone, and complete a capstone project of your choice. This capstone phase in particular appeals to folks who want to leverage Bloc to jumpstart development of their own project.

We're not a content company, we're an outcome company.
Our outcome is turning you into a web developer.

Bloc isn’t for everyone:

  • Expect to skip the fuzzy theoretical stuff; this isn't Computer Science 101. Instead, we focus on the pragmatic skills and effective tactics used by the best web developers in the industry.
  • Expect deadlines. Follow our program, and commit the time required, and in 12 weeks you will become a competent junior web developer.
  • Expect human contact. The apprenticeship model means working closely with a professional web developer and not hiding behind a screen.
  • Expect to build something. Over your 12-week course, you will code your concept or idea into a completed project. And we'll guide you along the way.

Even if you don't end up going with Bloc, the style of learning is clearly the future. There's such a benefit to learning socially.

Good luck!

See Questions On Quora

Posted on 3 February 2014

What is the best "full stack web framework" (with scaffolding, MVC, ORM, etc.) based on Node.js / server-side JavaScript?

Your understanding is correct: Node.js is not a web application framework. It's a platform for building applications. It may seem like a framework at first glace, though, because much like a framework, it includes a set of tools useful in building web applications (such as modules for writing to the filesystem or making HTTP requests).

There are, however, a great number of frameworks built for this platform, which provide you with a higher level set of functionality—a level of abstraction to simplify and speed up your construction work.

Yeoman is not such a framework, but it's a great tool with the same goal (to simplify and speed up; however, in regards to workflow). It provides scaffolding, setting up new applications and sites based on skeletons called "generators." There are generators for Angular.js applications, simple front-end projects using HTML5 Boilerplate (and perhaps CoffeeScript and Stylus), and much more. It's meant to work with Grunt (build tool) and Bower (dependency management tool)—a fantastic trio. Brunch is another wonderful build tool with this kind of "skeleton scaffolding."

I'm personally not a fan of full-stack frameworks—I like to pick (mix and match) the right tools for each individual situation and product. One size never really fits all. Yet these days, there are so many of these frameworks and alternatives it's mind-boggling—it often makes me want to go as bare-bones as possible, selecting each small part with great care (or better yet, create it myself). That said, I certainly see how they can be appealing and useful in many situations.

As for available options, there has been a lot of talk lately about Meteor for being a complete client-side and server-side solution (integrated; whereas other solutions are most often one or the other). Yahoo's Mojito seems to have similar aspirations, as do Derby and Tower . Then there's an impressive list of server-side MVC solutions: Geddy, Locomotive, Sails.js, Sleek.js, and many more.

One solution that I do find very interesting is Opa, a language and framework based on, and compiled to, JavaScript—it's supposedly non-blocking with built-in type checking, statically typed objects, database queries, full compatibility with regular JavaScript (and libraries like jQuery), etc. And, of course, this little nugget:

Write simultaneously the frontend and backend code, in the same language, within the same module. Even better: the Opa Slicer automates the calls between client and server. No more manually written AJAX calls or value serialization!
And when auto is not enough, add hints to the code to enforce client or server-side, privacy, synchronous or asynchronous.

How well it works in practice, I don't know. But it's interesting.

A more traditional full-stack framework I find interesting is Partial.js, because it is so self-contained and has no dependencies. I haven't actually used that either, though.

If such a solution is what you need, I suggest taking a look at their sites, documentation, and source code to find out which suits you best.

Now, if you're looking to put together your own toolbox, it's worth noting that many larger frameworks use Express.js as a base; it's a micro-framework inspired by Ruby's Sinatra framework—both very easy to get along with. It provides a great starting point. Lastly, MicroJS lists great tools that fit nicely into any toolbox.

See Questions On Quora

Posted on 18 January 2014

Why aren't there more people using Meteor?

Meteor is still in Developer Preview as of this writing (Nov 2013), with 1.0 scheduled for early 2014.  We have a large worldwide community of professional developers who are extremely stoked about Meteor, some of whom already make a living off of Meteor.  What we haven't done is told anyone to use it yet!  Of course, we love and support our users, who have discovered that even at version 0.6.6, Meteor is often the best tool for the job.  As they give talks and demos and share their success stories, word is spreading, and pretty soon the dam will break.   That's why we're working hard to nail the operations side of things and provide good packaging, versioning, and a relatively complete and stable API for 1.0.

Note that PHP just had to be more appealing for munging strings than C or Perl.  These days, you have two dozen choices if you just want to munge strings.  If you want to build a web app, you're left scrounging for parts.

Meteor's in such a great position because everyone who builds or pays for a web app -- or should I just say "website" in this age? -- feels the same pressures to make better and richer sites, and there's no turn-key solution.  What will drive people to Meteor is all the little problems it solves: SSL, auth, and user accounts, database connectors and horizontal scalability, WebSockets, UI components, and so on.  These things shouldn't be research projects for every app developer, they should be a chapter in a book or available at the push of a button.  We're paving the cowpaths as fast as we can.

See Questions On Quora

Posted on 10 November 2013

How likely is it that asm.js will become a standard in web development?

asm.js is mainly for compilers, notably Emscripten and Mandreel -- but others may rise and win adoption. Hand-coded asm.js, e.g.,


constitutes the expected exception to the rule.

Contra another answer here, asm.js is being optimized not only in Firefox, but in Chrome too, just without taking the "use asm" hint. Google has added an asm.js testcase to Octane:

Google Updates Its Octane JavaScript Benchmark, Adds Asm.js And TypeScript Tests | TechCrunch

Microsoft is interested in asm.js as well:

Anders Hejlsberg, Steve Lucco, Luke Hoban: TypeScript 0.9 - Generics and More (Channel 9)

As always, browser JS engines compete and fill performance gaps that matter to all or "most" users, to developers, or even only to the press or to various tech-fan cohorts. This means SunSpider still gets attention, but it also means asm.js matters.

Epic Games and Mozilla showed Unreal Engine 3 running full-speed in Firefox at GDC 2013:

The Web is the Game Platform

Epic Citadel

We'll be back at GDC 2014. Other game publishers are coming on board. UE3 licensees are launching plugin-free games cross-compiled to asm.js by Emscripten.

The idea that asm.js will not perform at nearly native speed in browsers other than Firefox is already false, based on progress in Chrome. The claim that only Mozilla cares, given Epic and other game publishers jumping on board, is hard to credit. We shall see how big asm.js gets, but it is already on a roll.

BTW, Autodesk is using Emscripten (which generates asm.js by default) too.


See Questions On Quora

Posted on 9 November 2013

Which are the best websites or resources for studying HTML, CSS and JavaScript?

Posted on 23 September 2013

What are some of the most popular JavaScript frameworks, and why?

Note: Ironically this answer is out of date (October 2013) which is rather telling about the state of the JS ecosystem.

Client side:
1. Backbone.js
  - lightweight, doesn't do much (except provide structure).
  - somewhat opinionated about structure.
  - generally compatible with other libraries, esp. jQuery UI plugins
  - mix and match with your own libraries.

2. AngularJS
  - heavier, opinionated about structure.
  - two-way data binding.
  - any DOM manipulation must be done inside "directives" (highly expressive reusable components)
  - more bindings to your logic end up inside the HTML (can be positive or negative depending on who you ask)
  - strong testing framework

3. Ember.js
  - two-way data binding
  - I haven't used it so I don't know much.

All three have strong communities. Backbone.js is the most popular, primarily because it came out first. AngularJS has growing mindshare.

1. Express.js
  - middleware model
  - lightweight, analogous to Sinatra (actually even lighter).
  - pretty much the standard node.js framework.

2. Sails.js
  - MVC model
  - quick API scaffolding
  - relatively new and nascent.

3. DerbyJS
  - MVC model
  - fairly feature rich. I haven't used it so I don't know much.
  - not as popular as Meteor or Express.js

1. Meteor
  - client-side and server-side framework, extremely opinionated framework with tons of magic. (you can use Backbone/Angular/Ember with it, though that's not idiomatic).
  - quite popular
  - very new and subject to breaking API changes (v1.0 not released yet)
  - only compatible with MongoDB
  - difficult to unit test (they're working on it).
  - backed by a funded startup that works on it full-time.

I have purposefully omitted frameworks that I believe are on the decline. I'm also not familiar with the mobile web side of things.

Handlebars, Create.js, and jQuery are not frameworks. They're libraries. There's a subtle difference. Essentially the difference is that libraries are toolboxes of useful utilities, but otherwise don't structure anything. Frameworks impose a certain structure.

See Questions On Quora

Posted on 21 July 2013

How do Angular.js and Knockout compare?

You definitely shouldn't be doing this type of comparison. If all you're looking for is data binding between your UI elements and your JavaScript objects: then knockout js is the best solution for you. If you are looking to a full fledged JavaScript application with routing, controllers, dependency injection, service-oriented architecture, and asynchronous development then angularjs is the best bet. Single page applications with knockout is difficult without several other libraries.

I'd like to mention
Angularjs is a Framework like Ruby On Rails, ASP.NET MVC, CakePHP,  you write code - the the framework calls your code.

Knockout is a library like jQuery. You write code, and then you can call some functions in knockout when you need.

They're super different and understanding the difference should help you choose the best solution for whatever you're trying to accomplish.

See Questions On Quora

Posted on 11 May 2013

How do Angular.js and Knockout compare?

  1. Angular and Knockout are both nice, modern frameworks.
  2. They are also similar in many important things: data-binding and directives. However, Angular does it better and prettier. You can stick your expression practically anywhere in the document using the {{}} clause and this alone give you quite a lot of power and yet readability. You also don't need to use observable for model objects - you use normal objects and Angular does its magic.
  3. Angular is more feature complete. It gives you out of the box a complete solution for almost anything you want in client-side web-app development, including mini-jquery, dependency-injection, redirection and deep-linking, animation and powerful, modern event handling. Knockout doesn't provide any of this. 
  4. Angular's html templating/customization/binding is less limited than KO - it let you build directives which are html tags, attribute, classes or comments. In KO, you can do it to comments (which looks rather ugly) or in the data-binding attribute. Much less expressive and pretty.
  5. Performance: sometimes performance is better in KO, sometimes in Angular (see the other answers for that). But i don't see it as an issue anyways.
  6. Angular is built from testability and clean project organization better than any framework i know of (but i don't know all of them).
  7. Both can integrate with 3rd party components reasonable. Maybe Angular is a little better.
It sounds like Angular wins hands-down, maybe so, but KO is not a bad framework. It is just less complete and not as pretty.

After enough familiarity with Angular and other frameworks, i tend to say that Angular is rather flawed (as well as most frameworks) and it's best to write you own thin framework by wisely using the latests JS and HTML capabilities instead of using any opinionated framework. Libraries that focus on one thing - be my guest; opinionated frameworks - no thanks, especially not Angular and its likes.

See Questions On Quora

Posted on 25 April 2013

How do companies like Dropbox and Quora maintain large Python projects?

I can not answer for Dropbox or Quora but having worked for two companies that have very large Python source codebases I would like to point out that maintaining large Python source codebase is not as easy as you would first think.  Here are some random facts that hope help you:
  • Almost everyone is using 2.7 (if you have existing codebase there is little incentive to migrate to 3.x).  I don't have experience with 3.x so I can't recommend it.
  • You would want to use python packages to modularize your code.  Put your code in folders.  Add an empty in all of them including root.
  • Be consistent when naming folders, modules, classes, variables.  If you don't have a clue - pick PEP-8.
  • Be consistent when importing - Python (at least 2.x) is not very consistent and it is very easy to mix up module, package and function imports.  Pick a system and stick with it (preferably one that does not conflict with standard naming schemas (my personal favorite is full path "import util.file.crc").
  • Document the system and make sure everyone follows it (code-reviews and water-cooler mockery are two systems you could use ;) ).
  • Put in place scripts or conventions to start programs and unit tests.  It pays to invest time in this.
  • I would recommend an automatic build system - but this is something that needs more time than the previous item.
  • I highly recommend picking an install method early and stick with it.  My personal preference is pip.  But scripting this is very helpful so that people are not banging their heads against problems because they are using a different version of a library.
  • Source Control Systems are mandatory - for all coding work.
  • Pick an editor with syntax highlighting and good full text search - you tend to use that a lot.  My personal favorite is PyCharm.

See Questions On Quora

Posted on 18 March 2013

How do companies like Dropbox and Quora maintain large Python projects?

Actually, Python is easier to maintain than several other languages out there (Perl, Java, etc...) as Python syntax was designed for readability and instant comprehension, also the language is very simple, straightforward and well documented, I find the learning curve of new developers much smaller than projects involving other languages.

Code versioning in Python is a easy breeze specially with Git and SVN. Also when you have Python developers within your team the tooling tends to be awesome and everything from dev to deployment gets easily automated (easy scripts).

Python web frameworks are much more organized and less cluttered than Java or .Net. Also the infrastructure tends to be way more stable, consumes much less resources and generally is much more flexible (and cheap).

There are lots of Python web frameworks that can help you finish a web-application in 1/4 of the time that you would consume with other languages (take  a look at Django, CherryPy, Pylons, TurboGears, Tornado, etc...) and end up with code that is generally more stable due to the simplicity of things and independent of complex environments and VMs.

Also another big Python project to consider is Youtube.

See Questions On Quora

Posted on 13 March 2013

What techniques do you employ to improve your Web Development efficiency and productivity?

Here's my list of things that make me more productive:

  • First and most important: turn off all your notifications for everything, with maybe the exception of email. Development takes a lot of focused attention, and each moment that attention is broken is a ding in productivity.
  • Learn a few languages and know them really well, know them conceptually, philosophically and practically. This is about quality, not quantity, so avoid the temptation to try and learn all web/server related languages. It dilutes your knowledge and will impact your productivity.
  • Use high quality, ergonomic office furniture. To become a really good developer, you will need to spend hours and hours writing code and solving problems. This is normally done at a desk, so make that desk and chair really ergonomic and supportive. I also have configured my desk to remove all pain points in posture. Using a standing desk or treadmill desk as Bruno Skvorc mentions is a really good idea.
  • I'd recommend an Apple computer. Yes, I said it. Having a Mac is quite beneficial because there is so much good stuff out there that is more Mac compliant than it is Windows. If Mac OS is not your thing, then at least buy an Apple monitor. Their screens are the best in the industry with the highest resolution. If you're going to stare at something for 10 hours a day, make it nice ;)
  • Spend some money on a really good code editor or IDE: phpStorm, WebStorm Sublime Text 2, Espresso are all really good. Now that you have your code editor, learn the hell out of it. Don't change around; stick to it and get really good at it.
  • Lint all your code in your code editor/IDE. Linting should not be done after the fact; lint while you type.
  • Choose a development browser, and learn it's developer tools really well. Webkit, and by extension Chrome, has some really good developer tools that can make development so much faster, Firebug is good and so is Opera's Dragonfly, so pick one and then stick with it, learn the hell out of it.
  • Learn the Terminal and all the most common commands. It's something that can be quite intimidating at first, but once it clicks, it will make you more productive by giving you the opportunity to use CLI tools.
  • Install Nodejs, Git and Gruntjs, now that you've learned some basic and common Terminal stuff. Get good at Git and start using Gruntjs to automate development tasks.
  • Start looking for preprocessors like Sass, Less, Coffeescript, Compass, Jade and other things that help you write code faster, once you feel really comfortable with the languages and feel you are starting to master them. Note: this is not recommended if you are still learning the languages. This is where Gruntjs comes in for compiling all these abstractions into native code.
  • Lastly, find good frameworks that are compatible with your style of development, thinking and processes. There's a lot of good stuff out there, but don't get overwhelmed and don't try to learn them all. Pick one good interface and interaction framework (Twitter Bootstrap, Zurb's Foundation, Skeleton), one good DOM library (jQuery or Zepto) and one good app framework (AngularJS, Ember, Backbone). Once you made your choice, stick with it and become a master of it. Note: be careful jumping into these if you are still learning a language as the level of abstraction from the native code can confuse you.
  • Automate anything you do over and over on projects, or add it as a module to one of your frameworks. Keep your code, your style, your processes, your tasks DRY: Don't Repeat Yourself!

These are smaller and more optional suggestions:

  • Buy yourself a really nice pair of headphones that help block out distractions. I use these Beyerdynamic DT 770 PRO, 80 ohms: Electronics and these Shure SE215-CL Sound Isolating Earphones: Electronics
  • Use a good task manager. I use use Flow: Get things done with anyone.
  • Use a good time management app. I use Harvest Simple Online Time Tracking Software
  • Use a good versioning system. I use Git via GitHub.
  • Use a good file sharing, back-up redundancy service. I use Dropbox with unlimited versioning.
  • Get yourself a really good web host that offers VPSs for a good price. I use Dreamhost's VPS service: Virtual Private Server
  • Choose as few social network sites as possible. I just use Twitter, Forrst, Dribble, GitHub and Quora. That's it. I try not to spread myself too thin.
  • I drink coffee.
  • I use a 2mg nicotine gum, cut in half, to help with getting through tough spots and tiredness. No, I don't use tobacco products (they'll kill you), just nicotine gum as it's shown to increase focus, working memory and reduce mental fatigue.
  • Once you feel you are mastering a language, your processes, your style, turn around and help others master theirs. Teaching is the best way to learn, and it will do nothing but make you better.

If you are curious about what I use from the top section:

  • I use phpStorm
  • I use a Mac Pro
  • I use a 27 inch Apple Display
  • I use an Aeron - Office Chair - Herman Miller
  • I focus exclusively on JavaScript, HTML & CSS. I know a enough of PHP to get around, but I don't try to master it; that's what back-end devs are for ;)
  • I use Chrome Canary
  • I use Zurb's Foundation 3, which means I also use Compass and Sass.
  • I use AngularJS
  • I use jQuery, but only if I have to.
  • I do not use CoffeeScript

I think that's about it. Let me know if I missed anything :)

See Questions On Quora

Posted on 3 December 2012

What are the most important client-side (HTML5/CSS/JavaScript) libraries and why?

A kickstart... | jQuery: for manipulating the DOM | d3: kinda like jQuery for SVG elements | Processing.js: for manipulating canvas elements | Backbone.js: for managing client-side data structures | Underscore.js: powerful functional programming ideas | Twitter Bootstrap: accelerates UI styling and events | Modernizr: browser feature detection | MathJax: Latex math formulas in the browser | HTML5 Boilerplate: Industry-standard starting point for HTML5-based pages or sites | Browserify: enables browser-side require() the node.js way | Handlerbars.js: templating

See Questions On Quora

Posted on 7 August 2012

What are the key differences between Ember.js (formerly SproutCore 2.0) and Backbone.js?

Just wanted to add a few clarifications to Austin's post:

Due to the above, SC2 includes more 'magic'. Example: In Backbone, properties you define are properties you define (period). In SC2, defining properties that end in binding
create bindings. It's magic, bit it is pretty nifty.

Just for completeness, I should note that it is possible to add bindings in Ember.js directly. The fooBinding support is mostly a concession to the fact that since bindings are used so often, having syntax for them eliminates a lot of code.

x = Ember.Object.create({ foo: Ember.Object.create({ bar: 1 }) });
x.bind('bar', '')
x.get('bar') //=> 1

One key difference for me is that creating instances of Ember 'classes' is done with SC2.Object.create()
whereas instances of Backbone prototypes are instantiated with the typical new

In general, you will want to use create, which allows you to pass in a Hash of values for the new instance. However, you can also use

x = Ember.Object.extend();
new x //=> new instance of x

SC2 includes Handlebars for templating, whereas Backbone has no opinion on this, prompting you to roll your own. At Do, our base subclass of Backbone.View
class sets up templating through Handlebars too, but we've also tried Eco and Jade.

Again, just for clarification, Ember.js supports alternate template engines. The built-in Handlebars template engine will automatically update for you, which is eliminates boilerplate in the view layer, but the template code in
is agnostic.

It simply expects that a template provided to a view accept a context as its first parameter, as almost all compiled templates in JS do.

Additionally, you can store any compiled template in
, which is used by

Ember.TEMPLATES['someTemplate'] = Mustache.compile(string)

App.MyView = Ember.View.extend({
  templateName: 'someTemplate'

In this case, when you try to create a new instance of
, such as by calling
new App.MyView().append()
, the template will be rendered.

Again, this will require that you implement your own observers and update the DOM manually (a la Backbone), and this is the benefit of using the built-in Handlebars engine.

See Questions On Quora

Posted on 15 December 2011

What are the key differences between Ember.js (formerly SproutCore 2.0) and Backbone.js?

A lot of the differences between the two come down to this: Ember has made a few decisions in advance about the tools and workflows you'll use. Backbone has very few opinions on matters of templating, rendering, hierarchy, and KVO/Binding – in Backbone there's almost always "More Than One Way To Do It" and almost never a predefined way. In contrast, Ember provides a little more infrastructure and default options out of the box.

  • Ember's first selling point is the use of data bindings to synchronize changes across objects, models and views. Backbone lets you do this however you like, whether through manual eventing or through a KVO library like Synapse, but these integrations are less tight.
  • To complement the above, Ember includes more 'magic'. Example: In Backbone, properties you define are properties you define (period). In Ember, you can define computed properties that depend on other properties, and will stay up-to-date when the relevant parts of your model change.
  • Ember's integration with ember-data and activemodel-serializer automates much of the work in interacting with your data and Rails API. You can follow the established patterns (available for use in the RESTAdapter) and even take advantage of fixtures to aid your client-side development.
  • One key difference for me is that creating instances of Ember 'classes' is typically done with
    whereas instances of Backbone prototypes are instantiated with the typical
    keyword. Backbone also supports CoffeeScript's
    implementations, which are awesome if CS is part of your workflow, but it mostly just sugar in the end.
  • Ember defaults to Handlebars for templating, whereas Backbone has no opinion on this, prompting you to roll your own. At Do, our base subclass of
    class sets up templating through Handlebars too, but we've also tried Eco and Jade.
  • Ember's views include support for establishing nested/hierarchical views from within templates, which is awesome. Backbone includes no such support out of the box, again prompting you to implement your own. Some of Do's views support this, implementing an
    methods that does what you'd expect.
  • Backbone, being a smaller framework, is easier to digest quickly. Backbone's docs give you a harbor cruise of the framework and its source, whereas Ember offers a growing guide and API documentation. Some portions of Ember remain undocumented, which will likely change before 1.0.

All in all though, my take is that both frameworks have tried to be relatively lightweight and hands-off. I've begun to use Ember on newer projects because I like its thoughtful approach to subviews and object relationships. But I also find some of the nuances Backbone supports (like
and support for CoffeeScript's
) valuable, but either would be a great choice to build an app with, and I expect you'd wind up heavily customizing both to fit your needs.

You might also compare the example Todo apps of both frameworks for a by-the-code comparison of the two. And, Backbone's FAQ section has some nice content that explains its philosophy and approach.

See Questions On Quora

Posted on 14 December 2011

What is Node.js, in layman terms?

Basically Node frees JavaScript from being stuck in the browser.  That language has been identified with browsers for so long that everybody believes it's just a browser language.  Node is a platform giving an excellent experience of writing javascript code in a non-browser setting. 

Usually it's thought of being used to build the server side of websites (similarly to PHP/etc).  But it can do much more including shell scripts etc.  It has both HTTP server and client classes built in which is where people get the idea it's for building websites.  It could be used to build something like Apache.  It's best suited for high request throughput services.

Theoretically you could do the same (server side javascript) using Rhino on the JVM.  There are other asynchronous oriented web service platforms such as Python's Twisted server. 

My book, Node Web Development, is a good introduction to using Node for that purpose and is meant for programmers who know nothing about Node.

See Questions On Quora

Posted on 30 October 2011

How does raphael.js compare to d3.js?

D3 is a data API.  Raphael is a graphics API.
D3 allows you to bind data to the DOM in very powerful ways, but doesn't care how you do it.  HTML, SVG, VML, they don't care so long as there are nodes to which to bind.  While they state in their documentation use HTML or SVG and part of d3 API provides SVG functionality, there's nothing stopping you from using something else...

Raphael has a very different purpose.  It gives a common API and language to vector-based graphics in the browser supporting SVG & VML (aka Microsoft's outdated language).  It does not come with powerful data binding - just really  easy ways to draw, manipulate, and animate vector graphics.

What this means is you could actually have D3 and Raphael work together to produce dynamic, data-driven graphics that are backwards compatible all the way to IE6.

Basically, you can treat Raphael.JS as a shim to make SVG work. So if you want to make use of the vector drawing abilities of d3.js, treat Raphael.js as a dependency.

See Questions On Quora

Posted on 23 September 2011

What are the advantages of Backbone.js?

There are three major advantages:

Event-driven communication

It's easy to create small and slick web applications with frameworks like jQuery. When a project grows, however, the jQuery declarations and callbacks get more and more complex and are distributed all over the place. The code becomes more and more cluttered and hard to read.

Backbone.js alleviates this by providing an event-driven communication between views and models (and other elements which we ignore for now for the sake of simplicity). You can attach event listeners to any attribute of a model, which gives you very nuanced control over what you change in the view.

The backbone.js events build on top of regular DOM events, which makes the mechanism very versatile and extensible. With one line of code, for example, you can introduce a publish/subscribe pattern to backbone that ties all of your views together (this is described in full detail in an excellent blogpost by Derick Bailey:

Syncing with a back-end

The models in Backbone.js can be easily tied to a back-end. Out-of-the box the framework provides excellent support for RESTful APIs in that models can map to a RESTful endpoint. If the API is designed correctly, backbone is already configured to access these directly for read, write, and delete operations (via GET, POST, and DELETE).

If a backend other than a RESTful API is used, backbone.js is still flexible enough to accommodate for that.

Maintainability by following conventions

Conventions are a great way to introduce a common coding style without the need of coming up with an extensive set of coding standards. At we found backbone.js to be particularly helpful to maintain a clean code base despite having multiple people collaborating on the code. The secret sauce here is laziness. The more you stick to (the few) backbone conventions the less you have to code, and in turn the more standardized and readable the code becomes.

Disclaimer: We use backbone.js at We're also looking for Javascript talent. Hit me up if you're interested

See Questions On Quora

Posted on 24 August 2011

Are hashbang URLs a recommended practice?

No, hashbang URLs are not a recommended practice. But it's important to be absolutely clear about what this means, so read on.
is a hash URL. The
portion of the URL is never sent to the server, and will cause the page to automatically scroll to the first element with an
of "foo" (or the first
element with a
of "foo"). This is a perfectly good thing, and is a recommended practice for linking to specific sections within a page.

could also be interpreted by JavaScript to indicate a particular state. Perhaps the "foo" state means "make an Ajax request to get the dictionary definition of the word 'foo' so we can display it to the user".

Now you've got a problem, because while this logic will work just fine as long as the JS runs, nothing at all will happen if the JS doesn't run. Furthermore, if you ever decide to change your URL structure to use a real URL like
instead, then you'll either have to break all existing hash URLs that link to your site, or you'll need to keep that hash-handling JavaScript on your page forever so it can redirect users to the new URL.

In addition, search bots always ignore the hash portion of a URL when indexing a page. Always, with one exception: that one exception is that the GoogleBot (and only the GoogleBot) has some special and convoluted logic that allows to it recognize hashbang URLs like!foo

But there's a massive, massive caveat: the hashbang itself doesn't do a damn thing for you. All it does is tell the GoogleBot "hey, this website claims to support the Google Ajax Crawling Scheme[1]". But the Ajax Crawling Scheme requires some pretty complicated server-side logic as well. You don't get it for free just by changing a # to a #!. So unless you've actually implemented the server-side logic necessary to support the Ajax Crawling Scheme, that #! in your URL is quite possibly damaging your Google rankings instead of helping them.

Furthermore, since Google is the only search engine that currently supports the Google Ajax Crawling Scheme (hint: the "Google" in the name of the scheme means "we just came up with this nonsense ourselves and didn't bother actually asking any other search engines if they thought it was a good idea"), your hashbang URLs will only be indexed by Google, even if you jump through all the hoops required to make this work properly.

So, to sum up:

  1. "Hash" URLs and "hashbang" URLs aren't the same thing, although "hashbang" has unfortunately become the generic name for "hash URLs that trigger JavaScript-based logic".
  2. Hash URLs are never sent to the server, so they're useless without JavaScript if you depend on them to trigger application logic.
  3. Since hash URLs require JS, you're doomed to either break all existing URLs or maintain a JS URL handler forever if you ever decide to change your URL scheme.
  4. "Hashbang" URLs don't automatically make your page indexable by search engines. You still need to do a lot of server-side work to make that happen.
  5. Even if you support the full Google Ajax Crawling Scheme correctly, that only helps you with Google. You're still screwed with the other search engines.

In short: relying on hash URLs for application logic should be an absolute last resort. If at all possible, you should avoid it.


See Questions On Quora

Posted on 29 June 2011

What are the most interesting HTML/JS/DOM/CSS hacks that most web developers don't know about?

You can make a triangle with just CSS(just like the tiny triangle on Vimeo sidebar).
.triangle {
    width: 0;
    height: 0;
    border-top: 100px solid #0099ff;
    border-left: 100px dashed transparent;
    border-right: 100px dashed transparent;
    border-bottom: 0;
   display: block;
   overflow: hidden;


Update: fix bugs in fucking IE6, and add a new demo.

See Questions On Quora

Posted on 18 June 2011

How did Rovio build its Google Chrome version of Angry Birds?

Rovio used PlayN (fka ForPlay), a cross-platform game abstraction library written in GWT, to build the version of Angry Birds that was launched at Google I/O. More info on PlayN here:

Ray Cromwell and Philip Rogers presented “Kick-ass Game Programming with Google Web Toolkit” in a session at I/O, which is the best information available about the work that was done. The video of that session is here:

Rovio did an amazing job developing the game on a tight schedule, and generously recognized Google’s contribution of tools like GWT and PlayN, by including 5 Google employees in the game credits.

See Questions On Quora

Posted on 14 May 2011

Why hasn't operator overloading been added to ECMAScript?

I've talked about operators recently and took this question as inspiration to do so again:

The general form of the question is "Why doesn't JS have X (which has worked well in other languages) yet?" Several answers:

1. JS was stagnated after the '90s due to the IE monopoly, and it has only started evolving again in its governing standards body (Ecma) with the return of browser competition, starting with Firefox and accelerating with Chrome and IE9.

2. JS doesn't need to grow promiscuously by absorbing features X, Y, and Z, and it should not, since doing so (demonstrated by other languages) leads to bloat in the implementation, confusion among developers, and even soundness problems as the extensions do not always compose correctly, but this is hard to see or detect without implementing and user-testing.

3. Even where similar languages to JS have X, there may be particular reasons not to add X to JS.

Consider X = "optional static typing". This is extremely hard to add to JS as it is (it's a research problem). Just providing a big "static type checker" switch on the side of the language spec does not work on the web, where code loads all the time and it's not clear *when* to check.

Adding such a mode, unless the static checker is only preventing programs that work today from reaching runtime, may fork the language and its spec into two dialects: the dynamic one we know and the statically checked version with different runtime semantics.

(Update: as an aside, "use strict"; in ES5 is exactly this sort of mode, without static type checking. Early errors to "pick lint", but for better and worse also a few runtime semantic shifts. This is why you should not slap "use strict"; at the top of your code without testing in Firefox 4 or WebKit nightlies.)

Ok, back to X = "operators". I spoke in the latest podcast (linked above) about several gaps in the language that do come up with JS developers:

A. Operators for value types and other "value-like" objects (matrices, .e.g.). For decimal, bignums, graphics (WebGL) programming, etc., the usability tax of calling methods or functions to add, multiply, compare, etc. is high enough that it takes too much development budget at the limit.

Worse, this lack-of-operators usability tax also drives developers to make mistakes by lowering to JS's number type, which is inexact and rounds poorly in some cases. Funny blog post on this (see the first comment):

The proposals for JS that we on Ecma TC39 are working on are: (rough notes)

(Here is an out of date proposal from defunct ES4:

Apart from value proxies for efficient implementation of decimal, bignum, etc., we may consider allowing plain non-proxy objects to have operator methods. You can see the influence of Python in some of the proposals above.

B. JS lacks operators such as integer division and "modulo" (vs. % for remainder but currently also double precision floating point, not integer; and using the sign of the dividend, which can result in bugs). A recent proposal aims to fill this gap:

Another missing operator is "identity" vs. "equality" (===). See

Say we use the 'is' and 'isnt' syntax I talk about briefly in the podcast: then you could write

  if (x is y) { /* count on x and y being the same value here */ }

Today in JS, using ===, both NaN and -0 vs. +0 give surprising (to some folks) results.

It's not clear yet that we will achieve consensus, and in any case, operators whether via value proxies or for all objects are unlikely to make "" (probably ES6, the 6th Edition of ECMA-262, which has a proposal freeze coming up in May and should be done by end of 2013).

The good news is that the "operators" topic is on the "Harmony" agenda for a better JS built cooperatively among the Ecma TC39 members (all the top browser vendors except Opera, currently) via draft standards proposals and implementations. Harmony may take us to ES7, although as you can see I'm loath to pick Edition or version numbers in advance (been burned in the past).

So long as JS is growing as a popular language, reaching more developers and use-cases, benefiting from faster implementations, we on Ecma TC39 have a duty to help evolve it in collaboration with its users. Our Harmony goals:

show how we intend to avoid standardizing too much that should be left to JS developers to evolve on top of the core language.

Instead we aim to provide the primitives that compose well, with enough usability, so that TC39 puts itself out of business at some point. This process may entail adding operators, both to fill gaps and as programmable syntax for new kinds of objects.


See Questions On Quora

Posted on 11 March 2011

What bad programming/architecture habits can a self-taught PHP coder develop?

I agree with Syd that that you can write bad code in any language.

That said, there are some very specific things programmers who start off using PHP as their first language are vulnerable to, and I'll try to enumerate them as follows:

  • Not understanding how memory allocation works, how garbage collection comes with performance drawbacks and how it can be extremely problematic to use in certain problem domains.
  • Assuming that all memory is free, since they are insulated from manual memory management.
  • Not understanding the internal representation of types that are used, and consequences there of. ( For example a switch statement on strings might appear to be the same as a switch on integers, though at the core the map to different things internally.) The same goes for using strings as enums.
  • Not understanding that how doing certain operations across requests in a webserver are extremely expensive as compared to a server which keeps client state in memory. It can be done in PHP with APC, but naively speaking some users will likely write code that might do expensive state setup for every single request.
  • Not understanding the advantages of serialization in binary formats vs. PHP serialization, particularly the performance benefits.
  • PHP can train people to reach for @error suppression instead of actually writing error handling code.
  • Not understanding the difference between arrays and associative arrays, what operations are cheap for each class of structures and which ones are cheap.
  • Not understanding the implementation of the array_* functions, and assuming they are cheap.
  • Not understanding that deferencing null fields is a bad thing to do.
    I.e. in PHP you can check ( isset(x->y->z)), and it will work fine if y isn't set and simply behave as if x->y->z was null. In C it will crash if y is null.
  • Not understanding the difference between deep copies and shallow copies.
  • Not understanding concurrency, particularly at the hardware level. Users of the language are never exposed to more refined forms of concurrency such as epoll style event driven asynchronous IO.
  • Developing a mindset that presentation and logic is for output is a very bad thing.
  • Not understanding why file_put_contents isn't suitable more demanding instances of file/IO.
  • Developing the mindset that it is okay to evaluate things such as function names to execute at run time based on a string by the use of variable variables. I've seen code that actually stored callback function names for a certain data structure be written out persistently.

    The worst programming habit you can develop using PHP: "If it didn't work right, I'll just change something and hit reload" - that is hacking, not engineering.

See Questions On Quora

Posted on 20 February 2011

Who uses Javelin (JavaScript framework) outside of Facebook?

I can't speak with total authority, but I authored the library so I may have some insight. I'm not aware of anyone using Javelin for any serious development outside of Facebook, although there are a few hobbyists playing around with it.

Update: As of April 2011, the Phabricator open source project uses Javelin, and is sort of outside-of-facebook.

Javelin's strengths are:
  • Faster pageloads than other libraries (but runtime performance will be comparable across most libraries, few pages are bottlenecked here).
  • Good support for event delegation.
  • Solid, structured way to define classes in JavaScript.
  • Very strict (good for larger projects).

Javelin's weaknesses are:
  • No support community to speak of.
  • Few plugins and almost no UI components.
  • Lots of new concepts to learn.
  • Familiar concepts are explicitly not supported (CSS selectors, particularly).
  • Very strict (bad for smaller projects).

Javelin is oddly situated in that the benefits only really pay off when your site gets pretty big and you start worrying about how much code you're shipping down and how it's a big mess of spaghetti. Until you get there, you'll be able to move faster with other libraries, and once you get there you'll be pretty tied to whatever you picked.

See Questions On Quora

Posted on 10 January 2011

What is the difference between a JavaScript framework and a library?

The differences between a library and framework can be summarized by The Hollywood Principle: "don't call us, we'll call you."

A framework encapsulates common application functionality, allowing the developer to focus on the parts that are unique to their application. Usually that means the developer writes pieces of code that get called by the framework when various things happen; Cappuccino, for example.

Libraries are packages of code that typically get called by your application to perform a task, like DOM manipulation or HTTP requests; jQuery, for example.

See Questions On Quora

Posted on 10 January 2011

How can I modularize jQuery / naked JavaScript code similar to how YUI does it?

In YUI 3 (which I assume is what you're referring to), a module is simply a function that's passed to the
method, like this:

YUI.add('module-name', function (Y) {
  // ...module code...
}, 'version-number', {requires: ['dependency']});

The module function isn't executed right away, but creates a non-global scope in which the module's implementation lives. Later, when the implementer uses this module, its function will be executed in the context of a YUI instance to allow the module to initialize itself in that instance without affecting any other YUI instances that may be on the page.

YUI().use('module-name', function (Y) {
  // Creates a new YUI instance, initializes "module-name", and passes in
  // the YUI instance as the Y parameter.

This is really just a form of the JavaScript module pattern with an extra module registration step to allow for multiple YUI instances. Here's what a plain old self-executing JavaScript function might look like without YUI:

(function () {
  // ...module code...

This module executes instantly and won't pollute the global scope. If you wanted to add a registration/use wrapper similar to the one in YUI, you could create a simple framework like this:

function Modules() {
  var M = this;

  if (!(M instanceof Modules)) {
    M = new Modules();

  return M;

Modules._modules = {};

Modules.add = function (name, callback) {
  Modules._modules[name] = callback;

Modules.prototype.use = function () {
  var args     =,
      callback = args[args.length - 1],
      modules  = Modules._modules,
      i, len, module;

  if (typeof callback === 'function') {
  } else {
    callback = null;

  for (i = 0, len = args.length; i < len; ++i) {
    module = args[i];

    if (modules.hasOwnProperty(module)) {
      modules[module].call(this, this);

  if (callback) {, this);

  return this;

You could then use the YUI-style add/use pattern with any JavaScript code (albeit without any of YUI's dependency management features).

Modules.add('module', function (M) {
  M.doStuff = function () {
    console.log('doing stuff');

Modules.add('other-module', function (M) {
  M.doOtherStuff = function () {
    console.log('doing other stuff');

Modules().use('module', 'other-module', function (M) {

See Questions On Quora

Posted on 26 October 2010

How does Chrome allow changing the URL without reloading the page?

HTML5 has a new history API.

Take a look half way down here:

HTML5 introduced the history.pushState() and history.replaceState() methods, which allow you to add and modify history entries, respectively. These methods work in conjunction with the window.onpopstate event.

Suppose executes the following JavaScript:var stateObj = { foo: "bar" }; history.pushState(stateObj, "page 2", "bar.html");
This will cause the URL bar to display, but won't cause the browser to load bar.html or even check that bar.html exists.
Suppose now that the user now navigates to, then clicks back. At this point, the URL bar will display, and the page will get a popstate event whose state object contains a copy of stateObj. The page itself will look like foo.html, although the page might modify its contents during thepopstate event.

See Questions On Quora

Posted on 13 October 2010

What is the best JavaScript library?

Echoing the other answers here, there is no "best" library -- too much of the conversation surrounding JavaScript libraries has tried to identify some mythical One True Answer, rather than taking time to analyze the problem you're trying to solve.

jQuery is lovely for DOM manipulation, Ajax, and simple event management, and it's frighteningly simple to learn, but it doesn't provide tools for developing larger applications, which may or may not be important in your particular case. YUI, Dojo, and Closure are not aimed at novices, and therefore may be more difficult to come up to speed on, but they also answer a vastly different (and larger) set of questions than jQuery intends to. Which one is "best" depends entirely on the problem you're trying to solve, and you do well to analyze a library from that standpoint, not an arbitrary, one-size-fits-all assessment.

See Questions On Quora

Posted on 5 September 2010

What is the best JavaScript library?

There are many excellent JavaScript libraries, and there are some terrible JavaScript libraries, but it's impossible to state objectively that one is the best. Each has strengths and weaknesses, and one library may be better suited for certain tasks than another library.

Douglas Crockford, when asked which JavaScript library he preferred, answered "the one that passes JSLint". If you find that one, let me know.

I encourage you to become proficient with many JavaScript libraries, and especially with plain old native JavaScript. This will put you in a much better position to know which tool is best for any given job.

That said, YUI is the best. Subjectively speaking, of course.

See Questions On Quora

Posted on 4 September 2010 search results

Ten questions I’ve been asked, most more than once, over six technical JavaScript / Front-end Engineer job interviews.

I've been interviewing for JS positions over the past few months and have noticed the same questions pop up in the technical parts of the interview. There have been similar posts to this but I really received a benefit from them and thought I'd echo my experience. Two of these "interviews" were online assessments, two were in person, and two were over Skype. The positions I've applied for are mainly at start ups and not for any specified Jr / Mid / Sr level.

I know that a lot of people disagree with this type of interview, like them or not, in my experience they've been a reality. When you're self-taught and haven't had your first job, I guess you have to prove yourself somehow. An assessment of Github / portfolio links would be a more ideal measure of progress but doesn't seem to count for everything.

The good news: These were the hardest questions. More good news - everyone was completely chill in the times when I got stuck (of these questions, I got flustered on both the event loop + Pascal's triangle), more than once someone else at the table admitted they didn't know the answer, and this led to a relaxed discussion environment. The bad news - it's been really difficult to get any kind of feedback silence from three of the companies. It really knocks your confidence and makes you feel like your time wasn't respected. The mental gymnastics starts..."did I actually completely bomb that interview"..."did they just not like me" etc. If you're an employer, please make sure to get back to the candidates you've interviewed. Even an automated reply is better than nothing!


  1. Define a function that returns n lines of Pascal’s Triangle. (this question was the entire interview)
  2. Define a function that takes an array of strings, and returns the most commonly occurring string that array (this question came with an execution time limit)
  3. Use recursion to log a fibonacci sequence of n length.


  4. Explain the use cases for, and differences between — bind, apply and call.

  5. Explain event delegation and why it is useful.

  6. What is the event loop?

  7. How does hoisting work in JavaScript?


  8. Walk us through the process of creation of an application or website you've built.

  9. Which new JavaScript / browser features are you most excited about and why?

  10. What are the differences between functional and imperative programming styles, and explain your preference, if any.

submitted by b_n to javascript
[link] [315 comments]

Posted on 2 November 2015

How hard is it to make a game in javascript with text based graphics?

Let me just get this out of the way, I'm quite a noob in Javascript :P. I don't expect to create a game with text based graphics anytime soon, but I have recently taken an interest in it. I've mainly been looking at things like Rouge or Nethack. All that aside, would this be time consuming, and how much experience under my belt would I need to create something like this? Also, what would be the optimal tool to program the javascript in?

Netback: Rouge:

submitted by scaryslender18 to javascript
[link] [66 comments]

Posted on 1 November 2015

I was just rejected via email by a recruiter because they were looking for Jquery developers not Javascript? I am shocked!

So I have just started my job search after spending almost all of 2015 learning CS and programming from C to Python, JS and Rails. So yesterday I contacted a recruitment firm and I listed programming languages that I am good at, I just listed C, Javascript, and Ruby. And today I got a blunt email back saying they are only looking for Jquery developers right now.

But when I said Javascript I thought most people would think that obviously Jquery as well. I mean I even listed frameworks, and libraries like Angular and D3, as well as my Github is littered with Jquery that I often use for cloning or finding elements within a div.

I just realized that I started my approach all wrong, at first I thought companies wanted to see actual tangible working applications that show off technical skills. But I guess companies want bullet point lists of every possible redundant tech buzzword.

I know if I talk to a developer or someone who knows code, they would understand that just by looking at the project what I can offer. Do you think it would be ok to just email some of these companies myself, or do I have to go through a recruitment mill?

submitted by TheBeardofGilgamesh to javascript
[link] [215 comments]

Posted on 28 October 2015

"Real JavaScript programmers", ES6 classes and all this hubbub.

There's a lot of people throwing around this term of "real javascript programmers" regarding ES6 classes.

Real JavaScript Programmers™ understand what they're doing and get shit done.

There's more than one way to skin a cat. Use the way you're comfortable with, and do your best to educate people on the underlinings of the language and gotchas and whether you use factories, es6 classes, or object literals, you'll sleep better at night knowing how your code works.

submitted by CertifiedWebNinja to javascript
[link] [150 comments]

Posted on 6 October 2015

Anyone use Javascript for non-web projects?

I've only recently decided to invest my time and effort into Javascript for a few reasons, primarily because of it's role outside of the web. I can use Javascript in MaxMSP (, which is promising. Node.js clearly opens a lot of doors and now we're starting to see JS-based micro-controller units like the Tessel -

Does anyone here use JS outside of web or mobile application purposes? I'd like to know more of what technical opportunities exist out there for JS.

submitted by rpeg to javascript
[link] [94 comments]

Posted on 3 October 2015

I'm making an RPG in JavaScript! Without canvas! Yes, I'm an idiot!

Update: I got a test version of the current build up and running if anyone wants to check it out!

Controls: Up/W, Down/D, Left/A, Right/D, Enter/Spacebar

Hello there! I am a budding JavaScript developer looking to make a name for himself (read: find employment), and so I decided making an RPG might be a fun way to test out my skills. It's far from finished, but I think I'm far along enough that I can share with people, and hopefully get some feedback!

The GitHub repo:

I'm also getting into the habit of making write-ups of the process:

I don't have screenshots, but here's a really quick video I posted just recently:

I'm posting in /r/javascript primarily to get some constructive criticism on the code aspect of it, not so much the game design aspect. Also, this is technically my first GitHub repo, so if I messed up the setup instructions in any way, let me know.

Any and all feedback is welcome!

Edit #1: A clarification! I work primarily as a front-end developer and UI/UX designer. Hence, my DOM-only approach. I'm using this project as a way to hone my DOM manipulation skills, and have a little bit of fun while doing it!

Edit #2: After some of your feedback, I'm definitely going to refactor some of the code to stop relying on jQuery as a kind of framework.

Edit #3: Thanks for all the support, everyone! There's a lot of really good advice on this thread, and I'm gonna do my best to put it to good use!

submitted by robobeau to javascript
[link] [126 comments]

Posted on 12 August 2014

Do JavaScript app developers typically use object-oriented javascript?

I'm a Java Developer and i'm about to learn JavaScript and AngularJS. Do folks that make full-blown enterprise apps with things like AngularJS tend to use a lot of object-oriented JavaScript or not? I don't find the object oriented features of JavaScript to be very intuitive (i.e. prototypes etc). Do folk actually make a lot of prototypes and use inheritance etc?

submitted by vt97john to javascript
[link] [57 comments]

Posted on 14 July 2014

Why do so many Javascript libraries get this wrong?

And why does no one notice?

All too often I see a promising Javascript library follow this approach to creating classes:

function Library(a, b) { this.publicMethod = function() { return a + b; }; ...etc... } 

Instead of the superior prototypical way:

function Library(a, b) { this.a = a; this.b = b; } Library.prototype = { constructor: Library, publicMethod: function() { return this.a + this.b; } }; 

For those of you who don't understand the difference, in the first (non-prototypical) approach, every time you initialise a new Library object you also unnecessarily recreate every single method. If your class is instantiated a lot and/or has a large number of methods, this will lead to much heavier memory consumption. The other approach only creates the Library methods once to be reused in different contexts (the typical inheritance model), which is much better for memory.

Now the average jQuery plugin isn't going to see a whole lot of decrease in memory consumption by using the prototypical approach, but how has it not been the standard this whole time? It's clearly the intended way of creating anything like a class in Javascript.

I remember years back when I first started learning Javascript, every tutorial I found taught the former approach. I didn't even hear the word prototype until years later. Yet after all these years with Javascript maturing as it has I still run into recent GitHub projects that base it around the obviously inferior design approach. And no one even mentions it in the issues, even on ones with thousands of users and hundreds of contributors.

Maybe I'm missing something here...

EDIT: It seems I've stumbled upon quite a controversial topic in the Javascript community. A lot of really great points here, let's just try to not downvote comments only because we don't agree with them.

EDIT 2: It seems the general consensus is that they each have their appropriate uses. My views have definitely been challenged and I recognise that my opinion was a little flawed. This has been an excellent discussion, thank you!

submitted by poisondwarf to javascript
[link] [116 comments]

Posted on 2 April 2014

Is the option to disable Javascript in browsers outdated?

Do you think the option to turn Javascript off in most browsers is outdated?

It seems like more and more of elements of the user experience that users really like and find really useful, necessary, are dependent on Javascript. AJAX is the best example.

All of that gets bollixed up if someone shuts Javascript off. Yes, the programmer can detect if Javascript is enabled, but it seems out of date for browser makers to give the users the ability to shut off a major.....close to being a defacto standard technology, s/he may need.

submitted by cyanocobalamin to javascript
[link] [99 comments]

Posted on 12 August 2013

What are your vanilla JavaScript knowledge standards that every JS developer should know?

I have an interview coming up for a front end position. I have used JavaScript while at uni for the last 2.5 years and am familiar with Modular JavaScript and other design patterns. Also am familiar with scoping in JavaScript and ...inheritance.

What other things would you recommend I brush up on? Your help would really be appreciated!

submitted by js_coder to javascript
[link] [230 comments]

Posted on 7 August 2013

Javascript != Java

3rd-party contractor came to visit office yesterday, who has "decades" of experience. Conversation came up about JavaScript in one of our products. He says, "Our product doesn't use Java." After an awkward moment with someone who works on the knowledge base nodding in agreement with him, I speak up and delineate the difference between Java and JavaScript.

Later on in the conversation, the same 3rd-party guy followed up with this jewel: "besides, what would anyone even use JavaScript for on the web?"

I proceeded to disable Javascript in my browser and show him.

tl;dr: lasers, dinosaurs, & drums made a guy's head explode

[edit spelling]

submitted by raiderrobert to talesfromtechsupport
[link] [358 comments]

Posted on 22 May 2013

I'm trying to learn JavaScript, and all of the books I've looked at begin with a heavy dose of binary and memory allocation - is it really necessary to learn this??

I fully understand that in order to be a fantastic, brilliant programmer learning about how the computer converts your code and how much memory it takes to process it could be of benefit, but as a beginning programmer, I feel like it is a great waste of my time (for now) to know that the number 114 is made up of 64 bits. I'm feverishly trying to up my skill set so that I can move out of my horrific tech support job and into the world of programming, and in order to maximize my time, is it okay to skip over this or will it haunt me further down the line?

edit: Thank you for all the feedback, insight, and encouragement! I have ordered Professional JavaScript for Web Developers and The Definitive Guide from Amazon. They won't be here for another week, so in the meantime, I am 25 pages into homoiconic's book JavaScript Allonge (a very clever and informative read!) and I'm pressing on :)

submitted by have_u_restarted_it to javascript
[link] [131 comments]

Posted on 1 February 2013

r/javascript is not Stack Overflow

I don't know how other users of r/javascript feel about this, but I think this should be a forum for discussion of Javascript itself and sharing interesting examples.

Every day new threads hit the top of the page which are just asking for help with, or critique of code. IMO, these kinds of posts belong in a different forum, preferably Stack Overflow, a link to which is posted right over there --->

Am I being a fusspot? How do other people feel about this?

submitted by mitchellrj to javascript
[link] [115 comments]

Posted on 23 October 2012

Learn Javascript

This subreddit is for anyone who wants to learn JavaScript or help others do so. Questions and posts about HTML and CSS are also encouraged. /r/LearnJavascript is sponsored by the folks at [Hack Reactor](, a school specializing in teaching Javascript to fledgling programmers. HR staff members regularly post and respond to questions here. [link]

Posted on 4 April 2012

What program do you use to write Javascript?

I hope you guys don't get this a lot. Currently I'm using Dreamweaver code mode, but there's got to be a better tool out there for OO Javascript right?

Edit: Thanks for the advice guys, I'm going to give a couple of these a shot.

Also, I was going to ask for some up-votes, so that this would be more prominent on /r/javascript, but then I remembered it was /r/javascript. 2 is enough.

submitted by 90yoboy to javascript
[link] [138 comments]

Posted on 9 August 2011

Javascript is NOT a bad language

Venting here. I'm sick of hearing that Javascript is a bad language. It's not perfect (what language is?) but it is quick and easy to write clean, flexible and reusable code. It's extremely well documented. It has some sweet debugging tools (these days). I love the powerful dynamic nature of it, and the event driven programming that it enables. Occasionally I sit down with people that "used to do some Javascript back in the day", people who were left with a bad taste in their mouth. Together we (ok, mostly me) hash out some clean, concise, and readable Javascript... and I laugh as they slowly realize that they don't know as much about it as they thought they did.

I love Javascript. It's the web browsers that I usually have issues with.

submitted by spiderworm to javascript
[link] [83 comments]

Posted on 29 December 2010


All about the JavaScript programming language! [link]

Posted on 24 January 2008