Criticism ! Constructive ? We love it !

The next time you receive constructive criticism from your manager or a peer, use this six-step process to handle the encounter with tact and grace.

  1. Stop Your First Reaction
  2. Remember the Benefit of Getting Feedback
  3. Listen for Understanding
  4. Say Thank You
  5. Ask Questions to Deconstruct the Feedback
  6. Request Time to Follow Up

Constructive criticism is often the only way we learn about our weaknesses—without it we can’t improve. When we’re defensive, instead of accepting and gracious, we run the risk of missing out on this important insight. Remember, feedback is not easy to give and it’s certainly not easy to receive, but it will help us now and in the long run.

The recipe is inspired from this great article… http://nxg.li/XeQMAb


Introducing Web Platform Docs… a unified approach

On the 8. October 2012 something historically happened… W3C, in collaboration with Adobe, Facebook, Google, HP, Microsoft, Mozilla, Nokia, Opera, and others, announced the alpha release of Web Platform Docs (docs.webplatform.org), a new community-driven site that aims to become a comprehensive and authoritative source for web developer documentation.

In the past, developers who use HTML5, CSS and other technologies of the Open Web Platform have had to consult multiple sites to understand how to use these technologies in a way that works across browsers, operating systems and devices. This was time-consuming and in many cases increased development costs.

With Web Platform Docs, the vision is that web professionals will save time and resources by consulting a single site for current, cross-browser and cross-device coding best practices, including:

  • How to use each feature of the Open Web Platform, with syntax and examples;
  • The interoperability of various technologies across platforms and devices;
  • The standardization status of each technology specification;
  • The stability and implementation status of features.

The project is implemented as a Wiki, which means that anyone can contribute content to Web Platform Docs. The organizations mentioned above – collectively known as the “stewards” – have launched this new site with initial documents contributed as raw material for the community to shape. The W3C will serve as the site’s convener. As the Open Web Platform evolves, the entire community, including the original stewards and new stewards, will help maintain and improve the content. All materials on the site will be freely available and licensed to foster sharing and reuse.

“People in the web community — including browser makers, authoring tool makers, and leading edge developers and designers — have tremendous experience and practical knowledge about the web,” said Tim Berners-Lee, W3C Director. “Web Platform Docs is an ambitious project where all of us who are passionate about the web can share knowledge and help one another.”

The W3C and the stewards envision webplatform.org as the home of future collaboration with developers and designers. Those interested in contributing to this effort as a steward or as an editor can visit docs.webplatform.org

Tools, Uncategorized

Trello… now with an API (Beta)

Trello is not only a very useful task management system, incorporating SCRUM board approach with HTML5 and an exceptional nice look and feel… now it also has a very elegant REST API.

Check it out…

Here is a quick sample on how to retrieve the cards for the current user… using the Client.js JavaScript class that Trello is providing asn easy way to get started…

They have opened up their development plans in the form of their internal development board…


Base64 Encoding/Decoding in JavaScript… wrapped in jQuery

Integrating a Google Gadget with Solve360’s API, I needed to have a way to Base64 encode some strings before appending them as headers to my server calls… instead of rolling my own, I went to look for my old friend: Nick Galbreath’s base64 string encoder

In the search results I stumbled upon a 2 year old jQuery’fication of it by Carlo Zottmann

Check it out…


Introducing Backbone.js…

Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions,views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.

When working on a web application that involves a lot of JavaScript, one of the first things you learn is to stop tying your data to the DOM. It’s all too easy to create JavaScript applications that end up as tangled piles of jQuery selectors and callbacks, all trying frantically to keep data in sync between the HTML UI, your JavaScript logic, and the database on your server. For rich client-side applications, a more structured approach is often helpful.

With Backbone, you represent your data as Models, which can be created, validated, destroyed, and saved to the server. Whenever a UI action causes an attribute of a model to change, the model triggers a “change” event; all the Views that display the model’s state can be notified of the change, so that they are able to respond accordingly, re-rendering themselves with the new information. In a finished Backbone app, you don’t have to write the glue code that looks into the DOM to find an element with a specific id, and update the HTML manually — when the model changes, the views simply update themselves.

This is similar to most other template based general purpose javascript frameworks today, and the way Backbone.js is approaching is code centric and gives the developer a high degree of very finely granulated control over how the application is tied together and driven…

Backbone Aura is a decoupled, event-driven Backbone architecture for developing applications and can in the same sentence be coined as a General Purpose Application Micro Architecture.

The application is broken down into AMD modules that contain distinct pieces of functionality (eg. views, models, collections, app-level modules). The views publish events of interest to the rest of the application and modules can then subscribe to these event notifications.

All subscriptions go through a facade (or sandbox). What this does is check against the subscriber name and the ‘channel/notifcation’ it’s attempting to subscribe to – if a subscriber doesn’t have permissions to do this (something established through permissions.js), the subscription isn’t allowed through. The rest of the application is however able to continue functioning. 


Jasmine – A JavaScript Testing Framework

Jasmine is a Behavior Driven Development testing framework for JavaScript. It does not rely on browsers, DOM, or any JavaScript framework. Thus it’s suited for websites, Node.js projects, or anywhere that JavaScript can run.

Check it out…

Jasmine is a behavior-driven development (BDD) JavaScript testing framework Pivotal Labs maintains it and makes it available on GitHub under the MIT license. Jasmine allows tests to be written independent of the DOM or other JavaScript frameworks. You run Jasmine in a browser, or headless without a browser by integrating with other frameworks such as Rhino, Envy, or the Jasmine-headless-webkit library.

Jasmine API includes features such as:

  • A more natural BDD syntax for organizing the test logic than JUnit style assertion test frameworks
  • Asynchronous testing
  • Mocks
  • Spies
  • Easy to create custom matchers
  • Ability to share or isolate behaviors between tests within a spec encapsulating parts of your spec.
  • Continuous integration support

If this has caught your interest, I recommend that you check out this article on the Adobe Developer Network about how to get started using Jasmine to test your Javascript applications…


UglifyJS — a JavaScript parser/compressor/beautifier

Introducing UglifyJS… a package that implements a general-purpose JavaScript parser/compressor/beautifier toolkit. It is developed on NodeJS, but it should work on any JavaScript platform supporting the CommonJS module system (and if the platform of choice doesn’t support CommonJS, its easy to implement it, or discard the exports.*lines from UglifyJS sources).

The tokenizer/parser generates an abstract syntax tree from JS code. its then possible to traverse the AST to learn more about the code, or do various manipulations on it. This part is implemented in parse-js.js and it’s a port to JavaScript of the excellent parse-js Common Lisp library from Marijn Haverbeke.

Check it out…