object(WP_Query)#473 (51) { ["query"]=> array(1) { ["tag"]=> string(10) "javascript" } ["query_vars"]=> array(64) { ["tag"]=> string(10) "javascript" ["error"]=> string(0) "" ["m"]=> string(0) "" ["p"]=> int(0) ["post_parent"]=> string(0) "" ["subpost"]=> string(0) "" ["subpost_id"]=> string(0) "" ["attachment"]=> string(0) "" ["attachment_id"]=> int(0) ["name"]=> string(0) "" ["static"]=> string(0) "" ["pagename"]=> string(0) "" ["page_id"]=> int(0) ["second"]=> string(0) "" ["minute"]=> string(0) "" ["hour"]=> string(0) "" ["day"]=> int(0) ["monthnum"]=> int(0) ["year"]=> int(0) ["w"]=> int(0) ["category_name"]=> string(0) "" ["cat"]=> string(0) "" ["tag_id"]=> int(29) ["author"]=> string(0) "" ["author_name"]=> string(0) "" ["feed"]=> string(0) "" ["tb"]=> string(0) "" ["paged"]=> int(0) ["meta_key"]=> string(0) "" ["meta_value"]=> string(0) "" ["preview"]=> string(0) "" ["s"]=> string(0) "" ["sentence"]=> string(0) "" ["title"]=> string(0) "" ["fields"]=> string(0) "" ["menu_order"]=> string(0) "" ["embed"]=> string(0) "" ["category__in"]=> array(0) { } ["category__not_in"]=> array(0) { } ["category__and"]=> array(0) { } ["post__in"]=> array(0) { } ["post__not_in"]=> array(0) { } ["post_name__in"]=> array(0) { } ["tag__in"]=> array(0) { } ["tag__not_in"]=> array(0) { } ["tag__and"]=> array(0) { } ["tag_slug__in"]=> array(1) { [0]=> string(10) "javascript" } ["tag_slug__and"]=> array(0) { } ["post_parent__in"]=> array(0) { } ["post_parent__not_in"]=> array(0) { } ["author__in"]=> array(0) { } ["author__not_in"]=> array(0) { } ["ignore_sticky_posts"]=> bool(false) ["suppress_filters"]=> bool(false) ["cache_results"]=> bool(true) ["update_post_term_cache"]=> bool(true) ["lazy_load_term_meta"]=> bool(true) ["update_post_meta_cache"]=> bool(true) ["post_type"]=> string(0) "" ["posts_per_page"]=> int(15) ["nopaging"]=> bool(false) ["comments_per_page"]=> string(2) "50" ["no_found_rows"]=> bool(false) ["order"]=> string(4) "DESC" } ["tax_query"]=> object(WP_Tax_Query)#1074 (6) { ["queries"]=> array(1) { [0]=> array(5) { ["taxonomy"]=> string(8) "post_tag" ["terms"]=> array(1) { [0]=> string(10) "javascript" } ["field"]=> string(4) "slug" ["operator"]=> string(2) "IN" ["include_children"]=> bool(true) } } ["relation"]=> string(3) "AND" ["table_aliases":protected]=> array(1) { [0]=> string(21) "wp_term_relationships" } ["queried_terms"]=> array(1) { ["post_tag"]=> array(2) { ["terms"]=> array(1) { [0]=> string(10) "javascript" } ["field"]=> string(4) "slug" } } ["primary_table"]=> string(8) "wp_posts" ["primary_id_column"]=> string(2) "ID" } ["meta_query"]=> object(WP_Meta_Query)#1073 (9) { ["queries"]=> array(0) { } ["relation"]=> NULL ["meta_table"]=> NULL ["meta_id_column"]=> NULL ["primary_table"]=> NULL ["primary_id_column"]=> NULL ["table_aliases":protected]=> array(0) { } ["clauses":protected]=> array(0) { } ["has_or_relation":protected]=> bool(false) } ["date_query"]=> bool(false) ["queried_object"]=> object(WP_Term)#1423 (11) { ["term_id"]=> int(29) ["name"]=> string(10) "javascript" ["slug"]=> string(10) "javascript" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(29) ["taxonomy"]=> string(8) "post_tag" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(59) ["filter"]=> string(3) "raw" ["term_order"]=> string(1) "0" } ["queried_object_id"]=> int(29) ["request"]=> string(343) "SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (29) ) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 15" ["posts"]=> &array(15) { [0]=> object(WP_Post)#1077 (25) { ["ID"]=> int(7277) ["post_author"]=> string(1) "3" ["post_date"]=> string(19) "2017-09-02 10:00:34" ["post_date_gmt"]=> string(19) "2017-09-02 00:00:34" ["post_content"]=> string(7762) "Sadly, I don't get the chance to work with JavaScript extensively day to day much anymore, but from time to time I do get the chance to explore a new idea and build something hopefully useful and interesting. In an age of single page app architectures, it's surprising what new, novel and interesting things you can build with a relatively small amount of plain old JavaScript, HTML, CSS, and little else. As terribly out of fashion as that might sound. But one downside of not working with the technologies every day is you forget ... well, just about everything. Exploring something at the weekend, I loaded a video element and there were no controls - before recalling dimly you need to set a boolean attribute controls for a video element to display controls. But that's not really the point of this piece. So, where do you go when you can't remember simple things like "How can I be sure that this element is currently visible in the user's window"? The internet! Which leads directly to the fountain of all programming wisdom, Stack Overflow. Yes, the parody is essentially real. parody book cover of O'Reilly book titled Copying and Pasting from Stack Overflow But answer after answer to this and similar questions about basic DOM APIs and common patterns lead to the response "well, in jQuery you …". And of course the questions end up being closed off at some point by moderators. The thing is, a few years ago, jQuery was such a ubiquitous part of a developer's toolkit that this seemed a perfectly reasonable approach. Who didn't use jQuery? And since it smoothed off so many bumpy surfaces in terms of browser differences, answers using jQuery could be more succinct and more immediately practically useful. A plain old vanilla JavaScript and DOM API answer might have required a bunch of additional code for edge cases, different browsers, and so on. But now? jQuery is a far less central technology, as much as it's still widely used. Its core value propositions, smoothing over the pain of browser inconsistencies, and providing higher order functionality, have largely gone away (browsers have become more consistent, the DOM API now supports features 'inspired' by jQuery like classList and querySelector). And so, for all but those using jQuery in ongoing application development, these answers (which due to StackOverflow's high pagerank dominate search results for related topics) are doubly useless. They are no longer cut and paste code that "just works", nor do they help us understand the underlying APIs and their workings. This speaks to an important software engineering principle (software engineering is a practice we on the web have frankly paid too little attention to, as I've been on the record arguing for many years): The Law (or rule, or principle) of least power. It's been formulated by Tim Berners-Lee, no less (so, you know, any of us who work on the web should perhaps pay at least a little attention to his thoughts, since he invented this whole damned thing), as "choosing the least powerful [computer] language suitable for a given purpose". Which, to many, may sound backwards. But it is at work here in jQuery based stack overflow answers. How does this work in the case of StackOverflow answers? If we choose the underlying DOM APIs, and then the simplest, plainest JavaScript to access them, this solution is essentially immortal. It will always work. People with foundation knowledge of web technologies will in decades hence understand. People who work with jQuery will understand. Angular, CoffeeScript, TypeScript, even React users (calm down) will understand. Because they all understand JavaScript, right? Right? Instead, we now have effectively useless answers, crowding out potentially good ones. To draw a slightly longer bow, the same principle applies to deeper architectural decisions. Right now, I see literally a mania for React. We've seen it (with less fervour) for many other DOM and CSS frameworks, tools and libraries, for variants on and supersets of JavaScript. jQuery, once utterly dominant, is increasingly a legacy technology. How many grid frameworks had their moment in the sun? Bootstrap, Angular, CoffeeScript, all had moments where they seemed to define best practice. Now even simple websites, the sort we used to build with tables and spacer gifs, then CSS, are now built with React. The ads that used to look for jQuery developers now look for React developers. We've been here before. I don't know. Perhaps we have reached the perfect (or at least good enough) architecture and toolset for building web stuff. But when a pattern keeps emerging time after time, I think it makes sense to consider whether there's something fundamental to that pattern. So what is that pattern? On the web we seem to have cycles that look like this: we start with something really simple, like the original HTML. No styling, no images even, just a few page elements (headings, paragraphs, a few inline styles) and links. Over time, features are added (for example, tables and images) and we uncover patterns that allow us to transcend what the platform imagined - hacking tables and gifs to create Killer Layouts (look it up). These patterns become increasingly complex and arcane, and require ever more specialisation. And then something newer and simpler arrives (for example, CSS in the mid 90s), that seems initially too trivial to allow us to do anything meaningful, too limited, that makes it too hard to do what we were doing easily before ("easily", because we'd built a body of practices and patterns and technologies over a period of years). A perfect example is Image Replacement (IR) Techniques. For the uninitiated, before web fonts and the likes of Typekit (you can thank me later for all this - No, seriously) we developed (well, I say "we", but I always thought they were a terrible idea) techniques that would allow us to render text as an image, then display this on a page, while maintaining accessibility by displaying the actual text of the element in a way that screen readers (and search engines) could read, but hid the text itself from sighted viewers. Just explaining what they did is exhausting and frustrating. But they did allow you to "display" fonts that weren't on the user's computer. And then web fonts came along. And, in a stroke, IR techniques were redundant. Of course, we now have a set of challenges around loading web fonts, and do we have the Flash of Unstyled Content, or Flash of No Content? You see how it goes? This has played out over and over on the web (and beyond, but more of that another day). A kind of Groundhog Day, where each recurring day is also a different one. But. Underneath all of these patterns and practices and frameworks and libraries are core technologies. And underlying principles. Some that pertain specifically to the web, some that predate the web (as I mentioned, that significantly overlooked field of software engineering). These are foundations - technological, and of practice - that we ignore, overlook, or flaunt at our peril. And a simple example of the consequences is that all those StackOverflow answers are now worse than useless.  " ["post_title"]=> string(56) "The Law of Least Power and Defunct StackOverflow Answers" ["post_excerpt"]=> string(394) "Answer after answer on StackOverflow to questions about basic DOM APIs and common patterns would lead to the response "Well, in jQuery, you …". And, of course, the questions end up being closed off at some point by moderators. The thing is, a few years ago, jQuery was such a ubiquitous part of a developer's toolkit that this seemed a perfectly reasonable approach. Who didn't use jQuery?" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(6) "closed" ["post_password"]=> string(0) "" ["post_name"]=> string(56) "the-law-of-least-power-and-defunct-stackoverflow-answers" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2017-09-02 10:32:17" ["post_modified_gmt"]=> string(19) "2017-09-02 00:32:17" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(37) "https://www.webdirections.org/?p=7277" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" ["post_category"]=> string(1) "0" } [1]=> object(WP_Post)#1072 (25) { ["ID"]=> int(7520) ["post_author"]=> string(1) "3" ["post_date"]=> string(19) "2017-05-31 23:42:13" ["post_date_gmt"]=> string(19) "2017-05-31 13:42:13" ["post_content"]=> string(3257) "Hadi MichaelContinuing the theme of performance from the Monday Wrap of Yoav's talk - a theme that was quite evident at Code 16 and, not surprisingly, will feature again at Code 17 - our short video this week is of Hadi Michael's talk from last year's Code. Hadi is someone to keep your eye on. A Product Developer, Software Engineer and Technology Adviser, formerly at Deloitte Digital, he's been at Cambridge University lately, getting his Masters degree in Technology Policy. You will see him at future Web Directions events. Back at Code 16, Hadi talked about a prosaic but significant process, garbage collection in JavaScript and how it affects performance and the overall user experience. 25 minutes well spent.    

Got your ticket for 2017 yet?

For Code 17, we're putting together a truly remarkable two-day program of international and local speakers digging into front end engineering and development, coming to Melbourne (only) on 3-4 August. Come and join us!  

Want more?

Like to see and read more like this? Be the first to score invitations to our events? Then jump on our once-a-week mailing list to keep up with everything happening at Web Directions. And you'll get a complimentary digital copy of Scroll magazine.
" ["post_title"]=> string(55) "Video Ristretto: Memory Management in V8 - Hadi Michael" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(6) "closed" ["post_password"]=> string(0) "" ["post_name"]=> string(49) "video-ristretto-memory-management-v8-hadi-michael" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2017-05-31 23:42:13" ["post_modified_gmt"]=> string(19) "2017-05-31 13:42:13" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(37) "https://www.webdirections.org/?p=7520" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" ["post_category"]=> string(1) "0" } [2]=> object(WP_Post)#1080 (25) { ["ID"]=> int(6290) ["post_author"]=> string(1) "3" ["post_date"]=> string(19) "2016-03-18 11:24:10" ["post_date_gmt"]=> string(19) "2016-03-18 01:24:10" ["post_content"]=> string(1568) "At Web Directions, we've long been excited about animation on the Web, particularly animated user interfaces and experiences. We've featured a significant number of presentations on the topic, including two stellar ones in 2015, at Web Directions Code and at Web Directions itself. Today we feature one of those, by the awesome Rachel Nabors, 'The State of the Animation', from our front end engineering conference Code in 2015 (which is back in Sydney and Melbourne in July/August 2016). But, it's far more than just about the code, and relevant right across the team. So, set aside your lunch hour or some time on your commute or at the weekend to get your head around where animation is at right now on the Web. Interested in more like this? Our Respond Web Design conference is coming up in Sydney and Melbourne in April. Or just jump on our mailing list, a once a week roundup of great resources from us and around the Web!
" ["post_title"]=> string(42) "Rachel Nabors–The State of the Animation" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(6) "closed" ["post_password"]=> string(0) "" ["post_name"]=> string(13) "rachel-nabors" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2016-03-18 11:24:10" ["post_modified_gmt"]=> string(19) "2016-03-18 01:24:10" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(37) "https://www.webdirections.org/?p=6290" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" ["post_category"]=> string(1) "0" } [3]=> object(WP_Post)#1081 (25) { ["ID"]=> int(5886) ["post_author"]=> string(1) "2" ["post_date"]=> string(19) "2014-07-23 15:10:06" ["post_date_gmt"]=> string(19) "2014-07-23 05:10:06" ["post_content"]=> string(406) "

Introducing some of the new native data structures that are available in modern JavaScript

And if this floats your boat, you need to get along to the Engineering Track at Web Directions 2014.

" ["post_title"]=> string(33) "Ben Birch - JavaScript Generators" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(6) "closed" ["post_password"]=> string(0) "" ["post_name"]=> string(31) "ben-birch-javascript-generators" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2014-11-19 08:45:40" ["post_modified_gmt"]=> string(19) "2014-11-18 22:45:40" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(36) "http://www.webdirections.org/?p=5886" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" ["post_category"]=> string(1) "0" } [4]=> object(WP_Post)#1082 (25) { ["ID"]=> int(5872) ["post_author"]=> string(1) "2" ["post_date"]=> string(19) "2014-07-14 12:23:47" ["post_date_gmt"]=> string(19) "2014-07-14 02:23:47" ["post_content"]=> string(410) "

We've entered the Ambient Computing Era and ECMAScript 6 is its dominant programming language.

And if this floats your boat, you need to get along to the Engineering Track at Web Directions 2014.

" ["post_title"]=> string(77) "Allen Wirfs-Brock - ECMAScript 6, a Better JavaScript for the Ambient Web Era" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(6) "closed" ["post_password"]=> string(0) "" ["post_name"]=> string(64) "allen-wirfs-brock-ecmascript-6-better-javascript-ambient-web-era" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2014-11-19 08:45:40" ["post_modified_gmt"]=> string(19) "2014-11-18 22:45:40" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(36) "http://www.webdirections.org/?p=5872" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" ["post_category"]=> string(1) "0" } [5]=> object(WP_Post)#1083 (25) { ["ID"]=> int(5806) ["post_author"]=> string(1) "2" ["post_date"]=> string(19) "2014-07-02 09:58:14" ["post_date_gmt"]=> string(19) "2014-07-01 23:58:14" ["post_content"]=> string(461) "

The 'this' keyword is one of the most perplexing aspects of JavaScript, but understanding function context needn’t be so intimidating.

And if this floats your boat, you need to get along to the Engineering Track at Web Directions 2014.

" ["post_title"]=> string(55) "Mark Dalgleish - this: Taking JavaScript out of Context" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(6) "closed" ["post_password"]=> string(0) "" ["post_name"]=> string(40) "mark-dalgleish-taking-javascript-context" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2014-11-19 08:45:41" ["post_modified_gmt"]=> string(19) "2014-11-18 22:45:41" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(36) "http://www.webdirections.org/?p=5806" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" ["post_category"]=> string(1) "0" } [6]=> object(WP_Post)#1084 (25) { ["ID"]=> int(5486) ["post_author"]=> string(1) "3" ["post_date"]=> string(19) "2013-12-03 16:39:10" ["post_date_gmt"]=> string(19) "2013-12-03 06:39:10" ["post_content"]=> string(664) "

Thanks to open APIs and emerging technology, JavaScript can now empower devices and technology in our day to day life. Soon we'll be controlling and securing our homes, manipulating appliances from afar and having a bunch of fun bringing data from the web to new exciting uses in the physical world. In this talk, I'll demonstrate how you can get started combining Ninja Blocks with other JavaScript APIs and devices to bring your JavaScript skills to a whole new realm of possibility!

" ["post_title"]=> string(73) "JavaScript performance patterns - video presentation from Stoyan Stefanov" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(71) "javascript-performance-patterns-video-presentation-from-stoyan-stefanov" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2014-11-19 08:48:27" ["post_modified_gmt"]=> string(19) "2014-11-18 22:48:27" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(36) "http://www.webdirections.org/?p=5084" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" ["post_category"]=> string(1) "0" } [12]=> object(WP_Post)#1090 (25) { ["ID"]=> int(4834) ["post_author"]=> string(1) "2" ["post_date"]=> string(19) "2013-06-25 10:29:32" ["post_date_gmt"]=> string(19) "2013-06-25 00:29:32" ["post_content"]=> string(577) "

An introduction to ES6 with emphasis on its practical aspects. See what it can do for you today, and learn how you'll be able to better structure client–side programs with this next step in the evolution of JavaScript.

Like what you see? Want a piece of the action next time around? Then get along to Web Directions South in Sydney October 24 and 25 2013.

" ["post_title"]=> string(71) "What's ECMAScript 6 Good For? - Video presentation from Julio Cesar Ody" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(67) "whats-ecmascript-6-good-for-video-presentation-from-julio-cesar-ody" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2014-11-19 08:48:28" ["post_modified_gmt"]=> string(19) "2014-11-18 22:48:28" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(36) "http://www.webdirections.org/?p=4834" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" ["post_category"]=> string(1) "0" } [13]=> object(WP_Post)#1091 (25) { ["ID"]=> int(4745) ["post_author"]=> string(1) "3" ["post_date"]=> string(19) "2013-06-14 11:40:38" ["post_date_gmt"]=> string(19) "2013-06-14 01:40:38" ["post_content"]=> string(3169) "Nintendo Web Framework Logo For most of the history of what might loosely be termed computer games, dedicated consoles (and handheld gaming devices) ruled the roost. And none loomed larger on the landscape than Nintendo, with combined sales of hundreds of millions of units. The dominance of this handful of device makers (essentially Nintendo, Sony and Microsoft) meant that developing games for wide distribution on these devices was expensive, and tightly controlled by the device manufacturers. And games generally cost $50, $100 or even more. The success of smartphone and tablet platforms has impacted these traditional dedicated devices,and their entire ecosystem tremendously. Sales of consoles and gaming handhelds are down dramatically (down 27% in the US in 2012, year on year), as are sales of games (down 23% for the year in 2012). In response, Nintendo recently announced the Nintendo Web Framework
a development environment based on WebKit technologies, supporting application development on the Wii U system using HTML5, JavaScript, and CSS. It also supports the Wii U GamePad controller, Wii Remote controllers, and JavaScript extensions such as video playback. With the Nintendo Web Framework, development times will be reduced and Wii U applications can be easily developed using common Web technologies
We can only hope that games built with the framework will also be able to be run (legally and technically) on other platforms, at least within reason. Regardless, developing games for this once exclusive platform promises to become a whole lot easier, and more democratic. And if you think games built with HTML5 aren't a reality, the entire UI for SimCity is built with web technologies Want to try it out? Sadly, it's still not available. But you can sign up to express your interest here.

More on games and the Wii U

The Wii U web browser's HTML5 gaming capabilities from HTML5 Game Developers Lost Decade Games

People mentioned in this post

Scott Clarke (@maxisscott): Javascript/UX developer for the SimCity UX team

Companies mentioned in this post

" ["post_title"]=> string(20) "Wii Games with HTML5" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(20) "wii-games-with-html5" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2013-06-14 11:40:38" ["post_modified_gmt"]=> string(19) "2013-06-14 01:40:38" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(36) "http://www.webdirections.org/?p=4745" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" ["post_category"]=> string(1) "0" } [14]=> object(WP_Post)#1416 (25) { ["ID"]=> int(4736) ["post_author"]=> string(1) "2" ["post_date"]=> string(19) "2013-06-13 12:28:35" ["post_date_gmt"]=> string(19) "2013-06-13 02:28:35" ["post_content"]=> string(536) "

In this short, sharp session, we’ll cover what Strict Mode really is, when to use it, why you probably want to, and how to do so safely.

Like what you see? Want a piece of the action next time around? Then get along to Web Directions South in Sydney October 24 and 25 2013.

" ["post_title"]=> string(74) "JavaScript's Slightly Stricter Mode - Video presentation from Glen Maddern" ["post_excerpt"]=> string(0) "" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(4) "open" ["post_password"]=> string(0) "" ["post_name"]=> string(71) "javascripts-slightly-stricter-mode-video-presentation-from-glen-maddern" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2014-11-19 08:48:46" ["post_modified_gmt"]=> string(19) "2014-11-18 22:48:46" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(36) "http://www.webdirections.org/?p=4736" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "2" ["filter"]=> string(3) "raw" ["post_category"]=> string(1) "0" } } ["post_count"]=> int(15) ["current_post"]=> int(-1) ["in_the_loop"]=> bool(false) ["post"]=> object(WP_Post)#1077 (25) { ["ID"]=> int(7277) ["post_author"]=> string(1) "3" ["post_date"]=> string(19) "2017-09-02 10:00:34" ["post_date_gmt"]=> string(19) "2017-09-02 00:00:34" ["post_content"]=> string(7762) "Sadly, I don't get the chance to work with JavaScript extensively day to day much anymore, but from time to time I do get the chance to explore a new idea and build something hopefully useful and interesting. In an age of single page app architectures, it's surprising what new, novel and interesting things you can build with a relatively small amount of plain old JavaScript, HTML, CSS, and little else. As terribly out of fashion as that might sound. But one downside of not working with the technologies every day is you forget ... well, just about everything. Exploring something at the weekend, I loaded a video element and there were no controls - before recalling dimly you need to set a boolean attribute controls for a video element to display controls. But that's not really the point of this piece. So, where do you go when you can't remember simple things like "How can I be sure that this element is currently visible in the user's window"? The internet! Which leads directly to the fountain of all programming wisdom, Stack Overflow. Yes, the parody is essentially real. parody book cover of O'Reilly book titled Copying and Pasting from Stack Overflow But answer after answer to this and similar questions about basic DOM APIs and common patterns lead to the response "well, in jQuery you …". And of course the questions end up being closed off at some point by moderators. The thing is, a few years ago, jQuery was such a ubiquitous part of a developer's toolkit that this seemed a perfectly reasonable approach. Who didn't use jQuery? And since it smoothed off so many bumpy surfaces in terms of browser differences, answers using jQuery could be more succinct and more immediately practically useful. A plain old vanilla JavaScript and DOM API answer might have required a bunch of additional code for edge cases, different browsers, and so on. But now? jQuery is a far less central technology, as much as it's still widely used. Its core value propositions, smoothing over the pain of browser inconsistencies, and providing higher order functionality, have largely gone away (browsers have become more consistent, the DOM API now supports features 'inspired' by jQuery like classList and querySelector). And so, for all but those using jQuery in ongoing application development, these answers (which due to StackOverflow's high pagerank dominate search results for related topics) are doubly useless. They are no longer cut and paste code that "just works", nor do they help us understand the underlying APIs and their workings. This speaks to an important software engineering principle (software engineering is a practice we on the web have frankly paid too little attention to, as I've been on the record arguing for many years): The Law (or rule, or principle) of least power. It's been formulated by Tim Berners-Lee, no less (so, you know, any of us who work on the web should perhaps pay at least a little attention to his thoughts, since he invented this whole damned thing), as "choosing the least powerful [computer] language suitable for a given purpose". Which, to many, may sound backwards. But it is at work here in jQuery based stack overflow answers. How does this work in the case of StackOverflow answers? If we choose the underlying DOM APIs, and then the simplest, plainest JavaScript to access them, this solution is essentially immortal. It will always work. People with foundation knowledge of web technologies will in decades hence understand. People who work with jQuery will understand. Angular, CoffeeScript, TypeScript, even React users (calm down) will understand. Because they all understand JavaScript, right? Right? Instead, we now have effectively useless answers, crowding out potentially good ones. To draw a slightly longer bow, the same principle applies to deeper architectural decisions. Right now, I see literally a mania for React. We've seen it (with less fervour) for many other DOM and CSS frameworks, tools and libraries, for variants on and supersets of JavaScript. jQuery, once utterly dominant, is increasingly a legacy technology. How many grid frameworks had their moment in the sun? Bootstrap, Angular, CoffeeScript, all had moments where they seemed to define best practice. Now even simple websites, the sort we used to build with tables and spacer gifs, then CSS, are now built with React. The ads that used to look for jQuery developers now look for React developers. We've been here before. I don't know. Perhaps we have reached the perfect (or at least good enough) architecture and toolset for building web stuff. But when a pattern keeps emerging time after time, I think it makes sense to consider whether there's something fundamental to that pattern. So what is that pattern? On the web we seem to have cycles that look like this: we start with something really simple, like the original HTML. No styling, no images even, just a few page elements (headings, paragraphs, a few inline styles) and links. Over time, features are added (for example, tables and images) and we uncover patterns that allow us to transcend what the platform imagined - hacking tables and gifs to create Killer Layouts (look it up). These patterns become increasingly complex and arcane, and require ever more specialisation. And then something newer and simpler arrives (for example, CSS in the mid 90s), that seems initially too trivial to allow us to do anything meaningful, too limited, that makes it too hard to do what we were doing easily before ("easily", because we'd built a body of practices and patterns and technologies over a period of years). A perfect example is Image Replacement (IR) Techniques. For the uninitiated, before web fonts and the likes of Typekit (you can thank me later for all this - No, seriously) we developed (well, I say "we", but I always thought they were a terrible idea) techniques that would allow us to render text as an image, then display this on a page, while maintaining accessibility by displaying the actual text of the element in a way that screen readers (and search engines) could read, but hid the text itself from sighted viewers. Just explaining what they did is exhausting and frustrating. But they did allow you to "display" fonts that weren't on the user's computer. And then web fonts came along. And, in a stroke, IR techniques were redundant. Of course, we now have a set of challenges around loading web fonts, and do we have the Flash of Unstyled Content, or Flash of No Content? You see how it goes? This has played out over and over on the web (and beyond, but more of that another day). A kind of Groundhog Day, where each recurring day is also a different one. But. Underneath all of these patterns and practices and frameworks and libraries are core technologies. And underlying principles. Some that pertain specifically to the web, some that predate the web (as I mentioned, that significantly overlooked field of software engineering). These are foundations - technological, and of practice - that we ignore, overlook, or flaunt at our peril. And a simple example of the consequences is that all those StackOverflow answers are now worse than useless.  " ["post_title"]=> string(56) "The Law of Least Power and Defunct StackOverflow Answers" ["post_excerpt"]=> string(394) "Answer after answer on StackOverflow to questions about basic DOM APIs and common patterns would lead to the response "Well, in jQuery, you …". And, of course, the questions end up being closed off at some point by moderators. The thing is, a few years ago, jQuery was such a ubiquitous part of a developer's toolkit that this seemed a perfectly reasonable approach. Who didn't use jQuery?" ["post_status"]=> string(7) "publish" ["comment_status"]=> string(4) "open" ["ping_status"]=> string(6) "closed" ["post_password"]=> string(0) "" ["post_name"]=> string(56) "the-law-of-least-power-and-defunct-stackoverflow-answers" ["to_ping"]=> string(0) "" ["pinged"]=> string(0) "" ["post_modified"]=> string(19) "2017-09-02 10:32:17" ["post_modified_gmt"]=> string(19) "2017-09-02 00:32:17" ["post_content_filtered"]=> string(0) "" ["post_parent"]=> int(0) ["guid"]=> string(37) "https://www.webdirections.org/?p=7277" ["menu_order"]=> int(0) ["post_type"]=> string(4) "post" ["post_mime_type"]=> string(0) "" ["comment_count"]=> string(1) "0" ["filter"]=> string(3) "raw" ["post_category"]=> string(1) "0" } ["comment_count"]=> int(0) ["current_comment"]=> int(-1) ["found_posts"]=> string(2) "59" ["max_num_pages"]=> float(4) ["max_num_comment_pages"]=> int(0) ["is_single"]=> bool(false) ["is_preview"]=> bool(false) ["is_page"]=> bool(false) ["is_archive"]=> bool(true) ["is_date"]=> bool(false) ["is_year"]=> bool(false) ["is_month"]=> bool(false) ["is_day"]=> bool(false) ["is_time"]=> bool(false) ["is_author"]=> bool(false) ["is_category"]=> bool(false) ["is_tag"]=> bool(true) ["is_tax"]=> bool(false) ["is_search"]=> bool(false) ["is_feed"]=> bool(false) ["is_comment_feed"]=> bool(false) ["is_trackback"]=> bool(false) ["is_home"]=> bool(false) ["is_404"]=> bool(false) ["is_embed"]=> bool(false) ["is_paged"]=> bool(false) ["is_admin"]=> bool(false) ["is_attachment"]=> bool(false) ["is_singular"]=> bool(false) ["is_robots"]=> bool(false) ["is_posts_page"]=> bool(false) ["is_post_type_archive"]=> bool(false) ["query_vars_hash":"WP_Query":private]=> string(32) "140eeb4edd18d755892d4f42b76af273" ["query_vars_changed":"WP_Query":private]=> bool(false) ["thumbnails_cached"]=> bool(false) ["stopwords":"WP_Query":private]=> NULL ["compat_fields":"WP_Query":private]=> array(2) { [0]=> string(15) "query_vars_hash" [1]=> string(18) "query_vars_changed" } ["compat_methods":"WP_Query":private]=> array(2) { [0]=> string(16) "init_query_flags" [1]=> string(15) "parse_tax_query" } }

Presentations about javascript

Podcasts, slides, videos and more

The Law of Least Power and Defunct StackOverflow Answers

  • In: Blog
  • By:
  • September 2, 2017
  • Comments Off on The Law of Least Power and Defunct StackOverflow Answers

Answer after answer on StackOverflow to questions about basic DOM APIs and common patterns would lead to the response “Well, in jQuery, you …”. And, of course, the questions end up being closed off at some point by moderators.

The thing is, a few years ago, jQuery was such a ubiquitous … Read more »

Video Ristretto: Memory Management in V8 — Hadi Michael

  • In: Blog
  • By:
  • May 31, 2017
  • Comments Off on Video Ristretto: Memory Management in V8 — Hadi Michael

Hadi MichaelContinuing the theme of performance from the Monday Wrap of Yoav’s talk — a theme that was quite evident at Code 16 and, not surprisingly, will feature again at Code 17 — our short video this week … Read more »

Rachel Nabors–The State of the Animation

  • In: Blog
  • By:
  • March 18, 2016
  • Comments Off on Rachel Nabors–The State of the Animation

At Web Directions, we’ve long been excited about animation on the Web, particularly animated user interfaces and experiences. We’ve featured a significant number of presentations on the topic, including two stellar ones in 2015, at Web Directions Code and at Web Directions itself.

Today we feature one of those, by the … Read more »

Ben Birch — JavaScript Generators

Introducing some of the new native data structures that are available in modern JavaScript

And if this floats your boat, you need to get along to the Engineering Track at Web Directions 2014.

See the slides and hear the podcast »

Allen Wirfs-​Brock — ECMAScript 6, a Better JavaScript for the Ambient Web Era

We've entered the Ambient Computing Era and ECMAScript 6 is its dominant programming language.

And if this floats your boat, you need to get along to the Engineering Track at Web Directions 2014.

See the slides and hear the podcast »

Mark Dalgleish — this: Taking JavaScript out of Context

The 'this' keyword is one of the most perplexing aspects of JavaScript, but understanding function context needn’t be so intimidating.

And if this floats your boat, you need to get along to the Engineering Track at Web Directions 2014.

See the slides and hear the podcast »

JavaScript beyond the web page — video presentation by Patrick Catanzariti

Thanks to open APIs and emerging technology, JavaScript can now empower devices and technology in our day to day life. Soon we'll be controlling and securing our homes, manipulating appliances from afar and having a bunch of fun bringing data from the web to new exciting uses in the physical world. In this talk, I'll demonstrate how you can get started combining Ninja Blocks with other JavaScript APIs and devices to bring your JavaScript skills to a whole new realm of possibility!

See the slides and hear the podcast »

I Yield for Generators — video presentation by Adam Ahmed

ES6 is here and it's bringing some awesome new features to Javascript. My favorite? Generator functions. No matter what kind of code you're writing, from graphics processing to simple AJAX requests, generators are an excellent tool to make your code more performant and more maintainable at the same time. It's a bold claim, but in this session you'll learn how ES6 generators keep your code timeless while delivering the infinite on a finite platter.

See the slides and hear the podcast »

ECMAScript 6 — video presentation by Axel Rauschmayer

ECMAScript 6 is the next version of JavaScript (the current version is ECMAScript 5). It will be an official standard by the end of 2014, but there are tools that enable you to use it right now. This talk explains the goals for ECMAScript 6, how it is designed, what features it has, and how to use it on current JavaScript engines. Features include: block-scoped variables, arrow functions, better parameter handling, classes, modules and much more.

See the slides and hear the podcast »

Modularity Matters — Anna Gerber

Breaking software down into de-coupled, reusable modules is a key development practice that improves code reusability, maintainability, scalability and testability. But how do we apply this practice within web applications?This talk examines and compares existing approaches for developing modular JavaScript components and discusses best practices and patterns for developing and managing components, dependencies, packaging, delivery and name-spacing, for client-side applications.

See the slides and hear the podcast »

Functional JavaScript — video presentation by Dhanji Prasanna

Functional programming, now gaining ground in the mainsteam, is a radical way of rethinking logic. By expressing computation in terms of simple mathematical relationships, and following simple discipline, you can vastly improve code correctness, modularity and reuse. In this session we explore how to apply these principles in everyday JavaScript, so you too can write incredibly concise programs that compose well together and are much easier to reason about.

See the slides and hear the podcast »

JavaScript performance patterns — video presentation from Stoyan Stefanov

This session looks at both page delivery and user interaction to highlight patterns and areas of improvement starting with proper benchmarking and profiling.

See the slides and hear the podcast »

What’s ECMAScript 6 Good For? — Video presentation from Julio Cesar Ody

An introduction to ES6 with emphasis on its practical aspects. See what it can do for you today, and learn how you'll be able to better structure client–side programs with this next step in the evolution of JavaScript.

Like what you see? Want a piece of the action next time around? Then get along to Web Directions South in Sydney October 24 and 25 2013.

See the slides and hear the podcast »

Wii Games with HTML5

Nintendo Web Framework Logo

For most of the history of what might loosely be termed computer games, dedicated consoles (and handheld gaming devices) ruled the roost. And none loomed larger on the landscape than Nintendo, with combined sales of hundreds of millions of units.

The dominance of this handful … Read more »

JavaScript’s Slightly Stricter Mode — Video presentation from Glen Maddern

In this short, sharp session, we’ll cover what Strict Mode really is, when to use it, why you probably want to, and how to do so safely.

Like what you see? Want a piece of the action next time around? Then get along to Web Directions South in Sydney October 24 and 25 2013.

See the slides and hear the podcast »