The web platform has evolved. Browsers are no longer just document renderers, they have become the most capable and ubiquitous application runtimes on the planet.

Right now, the most common term for applications that use the browser as a runtime is “Single Page App”. I’ve even heard people pronounce it like the word “spa”. If you’ve done this, we can probably still be friends :)

Personally, I’ve always disliked the term “single page app” because it fails to describe what my applications are. The fact that the app consists of a single initial HTML page is not what makes it interesting or unique. In fact, often times it’s plain wrong. A well-built “single page app” updates the URL as the user navigates around to different “pages” within the app, keeping their place if they refresh or share that URL. Perhaps at one time the “single pageness” was its defining characteristic, but these days the term makes it sound more like you’re building an application that doesn’t respect the URL and thus breaks the web.

Continue reading »

Underscore.js is the single most depended on module on npm.

It’s impressive work from Jeremy Ashkenas, who also created Backbone.js and CoffeeScript, all hugely popular projects.

But how many of the modules that depend on underscore only use it for one or two methods? I’d venture to guess quite a few.

Conceptually, it makes sense. Why would you go implement your own debounce method when there’s one in Underscore that works great and has clearly been put through its paces. Just install Underscore, be happy, and go fry some bigger fish!

Also, if you end up with 3 different versions of Underscore installed in an app that’s just going to run using Node.js on a server somewhere, it’s unlikely to cause any problems. node’s require mechanism and npm handles that quite nicely for us.

Continue reading »

Henrik follows up on his “Opinionated rundown of JS frameworks” blog post with a presentation at FFConf, in which he explored topics related to single-page apps, including:

  • Should we build apps that require JavaScript to run
  • What is a “native web app”?
  • What about progressive enhancement?
  • The performance implications of clientside apps
  • Twitter’s move away from clientside back to server-rendered
  • The two classes of web apps
  • User expectations of modern applications
  • Installable web apps
  • True offline support for web apps: ServiceWorker
  • Isomorphic (dual-rendered) applications
  • Picking tools for a rapidly changing environment
Continue reading »

Last month at JS.LA, Internet “Luke” Karrys gave a great introduction to Ampersand.js.

Ampersand.js is a highly modular, loosely coupled, non-frameworky framework for building advanced JavaScript apps.

We’ll let Luke explain:

Ampersand.js: The Non-Frameworky Framework from JS.LA on Vimeo.

That was awesome. Way to go, Luke! If you want updates on more awesome stuff like Ampersand.js, why not sign up for our mailing list? Details below.

Continue reading »

While working on a line of business application for a client recently, I was asked to research and implement two different approaches towards improving data updating efficiency and consistency.

The first is JSON Patch. The idea here is to reduce data transfer by only sending the operations needed to make the remote resource identical to the local one. Even though both resources are represented as JSON objects, applying patches means we don’t have to replace the entire entity on every update. This also reduces the risk of accidental changes to data that stays the same.

Continue reading »

There’s a bit of a kerfuffle right now in Angular.js land because, lo and behold, the 2.0 release contains drastic differences and there isn’t really an upgrade path.

If you want to upgrade you’ll likely need to completely re-write your app!

The structural updates they’re proposing all sound like good improvements, but if you built a large app on 1.x and want to upgrade it doesn’t really seem like you’ll be able to use much of your code.

Losing your religion

Ok, so what should you do? Pick another framework?

Continue reading »

TodoMVC is a neat project with a simple idea: to build the same application with a whole slew of different frameworks so we can compare how they solve the same problems.

The project’s maintainers asked me to contribute an example in Ampersand.js, so that’s what we did.

There are a few aspects of the implementation that I thought were worth writing up.

First, some highlights

  1. filesize: Total filesize of all the JS assets required for the app only 24kb(minified/gzipped) which, for comparison, is smaller than jQuery by itself. By comparison the Ember.js version is 165kb and that’s without including compiled templates.
Continue reading »

Two of our core values on the &yet team are curiosity and generosity. That’s why you’ll so often find my yeti colleagues at the forefront of various open-source projects, and also sharing their knowledge at technology and design conferences around the world.

An outstanding example is the work that Philip Roberts has done to understand how JavaScript really works within the browser, and to explain what he has discovered in a talk entitled “What the Heck is the Event Loop, Anyway?” (delivered at both ScotlandJS and JSConf EU in recent months).

If you’d like to know more about the inner workings of JavaScript, I highly recommend that you spend 30 minutes watching this video - it is fascinating and educational and entertaining all at the same time. (Because another yeti value is humility, you won’t find Philip boasting about this talk, but I have no such reservations because it is seriously great stuff.)

Continue reading »

As a portion of our elaborate training events I give a short talk about JS frameworks. I’ve shied away from posting many of my opinions about frameworks online because it tends to stir the pot, hurt people’s feelings, and unlike talking face to face, there’s no really great, bi-directional channel for rebuttals.

But, I’ve been told that it was very useful and helped provide a nice, quick overview of some of the most popular JS tools and frameworks for building single page apps. So, I decided to flesh it out and publish it as A Thing™ but please remember that you’re just reading opinions, I’m not telling you what to do and you should do what works for you and your team. Feel free to disagree with me on twitter or even better, write a post explaining your position.

Continue reading »

In an effort to build a more inclusive community around the events we’re a part of, we’d like to announce our very first (but certainly not last) Human JavaScript Training Scholarship.

We understand that very few people, both in tech and in the world, have access to the resources needed to level-up in their careers. This is especially true of marginalized groups, who are consistently underrepresented and often even pushed out of our industry without the opportunity to thrive here.

We also understand that there are serious barriers to entry in our industry that keep people who are marginalized by race and/or gender from entering and actively participating in our field.

Continue reading »