About the Author:

Where We’ve Been

July 19th, 2012

We’ve been busy at appendTo! Here’s a recap of where we’ve been speaking or learning:


 

BlackBerry World

At the beginning of May, appendTo attended BlackBerry World in Orlando. Doug Neiner gave a session and sat on a panel, then was joined by Levi DeHaan and Jonathan Sharp for an all-day training on BlackBerry WebWorks and jQuery Mobile.

 

Tech Connection Live!

In mid-May, Andrew Powell spoke at the Tech Connection Live! Twin Cities, a ComponentOne event. Andrew introduced the attendees to juiceUI, appendTo’s open-source collection of WebForms components that easily brings jQuery UI Widgets to projects (even for local service companies!) so users can leverage the power of the world’s most popular JavaScript UI library while working with familiar code.

 

.toster{javascript}

At the end of May, Ralph Whitbeck was asked to speak in Moscow, Russia at the .toster{javascript} conference. Ralph introduced the attendees to  AmplifyJS, a set of components designed to solve common web application problems with a simplistic API. The goal of Amplify is to simplify all forms of data handling by providing a unified API for various data sources. The long flight was worth it and several Russian developers left excited to start using the tool.

 

Fluent

Also at the end of May, appendTo was a platinum sponsor of the O’Reilly Fluent Conference in San Francisco. Several appendTo team members attended, including Micah Snyder, Ralph Whitbeck, Jim Cowart, and Jonathan Sharp. appendTo CEO Mike Hostetler gave the presentation, The Impact and Risk of HTML5 on Your Bottom Line. He was also interviewed a couple of times—first on what’s driving the business case for HTML5 and again on what appendTo does.

 

Front-End Design Conference

On June 8-9, appendTo’s Joel Glover (left), Brandon Brown and Doug Neiner (right) and attended the Front-End Design Conference in St. Petersburg, Fla. For an idea of what they saw, watch the recap video.

Joel and Doug

 

jQuery Conference

At the end of June, Elijah Manor, Doug Neiner and Ralph Whitbeck attended the jQuery Conference in San Francisco. In addition to attending, Elijah and Doug spoke. Scott González and Jörn Zaefferer, two other appendTo contributors, also spoke at the conference. Scott presented part of the State of jQuery session and Jörn presented the session, “Pitfalls and Opportunities of Single Page Applications.”

 

Whew! That is busy but we wouldn’t have it any other way.

About the Author:

AmplifyJS 1.1 Executive Brief

November 9th, 2011

Today, we are very happy to announce the release of AmplifyJS 1.1. This update comes with a couple of enhancements and bug fixes.

You can download the latest code bits here.

Here is a short summary of what’s new in AmplifyJS 1.1.

FEATURE CHANGE: amplify.request

Requests made through amplify.request will always be resolved asynchronously, even if the resource invokes the callbacks immediately. This ensures that you will never have timing problems if the request definition is changed in the future.

ENHANCEMENT: amplify.request – added dataMap option

Data maps allow you to modify the data for an ajax request before the data is sent. You can use a hash to map keys or you can use a function for complete flexibility.

Using data maps

When searching Twitter, the key for the search phrase is q. If we want a more descriptive name, such as term, we can use a data map:

amplify.request.define( "twitter-search", "ajax", {
    url: "https://search.twitter.com/search.json",
    dataType: "jsonp",
    dataMap: {
        term: "q"
    }
});
amplify.request( "twitter-search", { term: "amplifyjs" }, ... );

Similarly, we can create a request that searches for mentions, by accepting a username:

amplify.request.define( "twitter-mentions", "ajax", {
    url: "https://search.twitter.com/search.json",
    dataType: "jsonp",
    dataMap: function( data ) {
        return {
            q: "@" + data.user
        };
    }
});
amplify.request( "twitter-mentions", { user: "amplifyjs" }, ... );

FIX: amplify.core

Fixed race condition when unsubscribing inside a handler #21 View ticket.

FIX: amplfiy.core

Fixed bug with subscribing a handler to multiple topics (#18) View ticket.

FIX: amplify.store

Fixed userData detection in IE when userData is disabled #31/#17 View ticket.

FIX: amplify.store

Fixed expiration for in-memory storage (#23) View ticket.

About the Author:

AmplifyJS’s Growing and Supportive Community

October 17th, 2011

It has been a busy several months since the release of AmplifyJS 1.0.0 on June 14, 2011. We are pleased to hear many of you starting to use the library in your applications.

We are continuing to work on the feature set for the release of AmplifyJS 1.1.0 and as we do so we’ve seen numerous presentations and contributions being made from the community that we’d like to share.

Presentations

We are encouraged that numerous talks across the world are starting to list AmplifyJS as a tool to help build modern web applications. The following are some of the talks we are aware of.

If you’ve given a talk or you’ve heard a talk that has mentioned AmplifyJS that isn’t listed above we’d love to hear about it! Not only are we interested, but we want to publicly thank those that are promoting this library!

Extensions

In addition to presentations, the AmplifyJS library has found it’s way into many of the mainstream projects as a bundled extension. Some of these include…

If you know of any other AmplifyJS extensions or if you’d like to help make it available please let us know.

Patches

A great sign that a project is healthy is if there are outside contributions. In addition to the contributions we saw before we launched the 1.0.0 release, we have also seen the following step forward and help AmplifyJS to be a better library.

Thanks again Adrien and Alexander. We hope that you’ll continue to make AmplifyJS better and we encourage others to contribute as well.

About the Author:

AmplifyJS 1.0 Released

June 14th, 2011

Today, appendTo is proud to announce the 1.0 release of AmpilfyJS, a set of JavaScript components designed to solve common web application problems with a simplistic API. AmplifyJS was built by the developers at appendTo to solve common tasks that we are constantly called upon to solve. With our commitment to giving back to the community we wanted to give back the fruits of our labor.

AmplifyJS - The JavaScript Component Library

AmplifyJS is released with the MIT and GPLv2 dual licenses. This is the same set of licenses that jQuery uses and as such makes it possible to use for personal and commercial use.

The 1.0 release comes with three components: amplify.request, ampify.store, and amplify.publish/subscribe.

Request

amplify.request is an abstraction layer that can be used for any kind of request for data. amplify.request sets out to separate the data retrieval and caching mechanisms from data requestors.

Using the amplify.request.define function you can create and maintain your entire server interface and caching policy in a single place, reducing the impact of any server interface changes. Components that need data can retrieve the data through amplify.request without concern for data caching, server interface, location, data types, wrappers, and all the other specificities of the client/server interaction.

Example: set up and use a request utilizing Ajax
// “myApiUrl” will return the following object back.
//{
//    "foo" : "bar",
//    "baz" : "qux"
//}

amplify.request.define( "ajaxExample1", "ajax", {
    url: "/myApiUrl",
    dataType: "json",
    type: "GET"
});

// later in code
amplify.request( "ajaxExample1", function( data ) {
    data.foo; // bar
});

Take a look at the documentation for amplify.request.

Store

amplify.store is a wrapper for various persistent client-side storage systems. amplify.store supports IE 5+, Firefox 2+, Safari 4+, Chrome, Opera 10.5+, iPhone 2+, Android 2+ and provides a consistent API to handle storage cross-browser.

amplify.store is meant to allow you to utilize all the latest storage technologies for those browsers that have them, while gracefully degrading for those without support. amplify.store allows you to be passive or explicit in the storage technologies used. With no storage type explicitly specified, amplify.store will go through a series of technologies and pick an appropriate storage technology through feature detection. amplify.store also handles serializing to and from a JavaScript object using JSON serialization where necessary.

Note: Because of the JSON dependency, you need to add json2.js for support in IE 5. IE 6, IE 7, Firefox 2.0 and Firefox 3.0.

Example: store data with AmplifyJS storage picking the default storage technology:

amplify.store( "storeExample1", { foo: "bar" } );
amplify.store( "storeExample2", "baz" );
// retrieve the data later via the key
var myStoredValue = amplify.store( "storeExample1" ),
    myStoredValue2 = amplify.store( "storeExample2" ),
    myStoredValues = amplify.store();
myStoredValue.foo; // bar
myStoredValue2; // baz
myStoredValues.storeExample1.foo; // bar
myStoredValues.storeExample2; // baz

Take a look at the documentation for amplify.store.

Pub/Sub

The AmplifyJS core library provides two methods (amplify.publish and amplify.subscribe). AmplifyJS provides methods to facilitate the Publish and Subscribe messaging pattern in your front-end application. The idea is that someone is broadcasting one or more messages (publishing) and someone else is listening to one or more messages (subscribing). By separating your logic out like this it allows for loose coupling of your components, which results in less brittle and more reusable code.

It is possible to implement the publish and subscribe model by using jQuery custom events, however, the AmplifyJS pub/sub component provides a slightly cleaner interface, prevents collisions between custom events and method names, and allows a priority to your messages.

Example: Subscribe and publish with no data:

amplify.subscribe( "nodataexample", function() {
    alert( "nodataexample topic published!" );
});

//...

amplify.publish( "nodataexample" );

Take a look at the documentation for pub/sub.

Get Involved

Would you like to help in contributing to AmplifyJS? Take a look at our Community page for options on how you can help.

More Information

About the Author:

Amplify 1.0 Beta Released

May 17th, 2011

Today we are proud to release the beta version of Amplify, a component library designed to solve common web application problems with a simplistic API.

You can download the beta from Amplifyjs.com.

A changelog from the alpha version is available.

What is Amplify?

Amplify is a set of components designed to solve common web application problems with a simplistic API. Amplify’s goal is to simplify all forms of data handling by providing a unified API for various data sources. Amplify’s store component handles persistent client-side storage, using standards like localStorage and sessionStorage, but falling back on non-standard implementations for older browsers. Amplify’s request adds some additional features to jQuery’s ajax method while abstracting away the underlying data source.

Here’s a crash course in what Amplify offers.

Amplify Request

amplify.request is an abstraction layer that can be used for any kind of request for data. amplify.request sets out to separate the data retrieval and caching mechanisms from data requestors.

Using the amplify.request.define function you can create and maintain your entire server interface and caching policy in a single place, reducing the impact of any server interface changes. Components that need data can retrieve the data through amplify.request without concern for data caching, server interface, location, data types, wrappers, and all the other specificities of the client/server interaction.

Example

The example assumes that the request location returns the following as json:

{
    "foo" : "bar",
    "baz" : "qux"
}

Set up and use a request utilizing Ajax

amplify.request.define( "ajaxExample1", "ajax", {
    url: "/myApiUrl",
    dataType: "json",
    type: "GET"
});

// later in code
amplify.request( "ajaxExample1", function( data ) {
    data.foo; // bar
});

For more information read the Request documentation.

Request Store

amplify.store is a wrapper for various persistent client-side storage systems. amplify.store supports IE 5+, Firefox 2+, Safari 4+, Chrome, Opera 10.5+, iPhone 2+, Android 2+ and provides a consistent API to handle storage cross-browser.

amplify.store is meant to allow you to utilize all the latest storage technologies for those browsers that have them, while gracefully degrading for those without support. amplify.store allows you to be passive or explicit in the storage technologies used. With no storage type explicitly specified, amplify.store will go through a series of technologies and pick an appropriate storage technology through feature detection. amplify.store also handles serializing to and from a JavaScript object using JSON serialization where necessary.

Example

Store data with Amplify storage picking the default storage technology:

amplify.store( "storeExample1", { foo: "bar" } );
amplify.store( "storeExample2", "baz" );
// retrieve the data later via the key
var myStoredValue = amplify.store( "storeExample1" ),
    myStoredValue2 = amplify.store( "storeExample2" ),
    myStoredValues = amplify.store();
myStoredValue.foo; // bar
myStoredValue2; // baz
myStoredValues.storeExample1.foo; // bar
myStoredValues.storeExample2; // baz

For more information see the Store documentation.

Amplify Pub/Sub

The core of Amplify provides a pub/sub system.

Example

amplify.subscribe( "dataexample", function( data ) {
    alert( data.foo ); // bar
});

//...

amplify.publish( "dataexample", { foo: "bar" } );

For more information see the Pub/Sub documentation.

Getting Involved

We encourage everyone to participate, provide feedback and help us test. You can find out how you can help over at our Community page.

We look forward to your feedback during this beta period.

About the Author:

Learning More About Amplify

April 28th, 2011

Last month we quietly released Amplify, a jQuery Component Library. Since then the appendTo team has published articles, webinars, podcasts, given talks at local meetups and held public development status meetings on IRC. In case you haven’t seen what we’ve been doing with Amplify here is a summary.

Amplify article published on Script Junkie

Script JunkieJust this week, an article entitled “Extending Your jQuery Application with Amplify.js” written by Elijah Manor and Andrew Wirick appeared on the Microsoft site Script Junkie.  The article focuses on getting you up to speed on Amplify’s capabilities by walking you through a basic sample application and slowly abstracting various parts of the app using Amplify components.

Amplify Webinar

Amplify Webinar

On March 31, 2011, Scott González, Lead Developer on the Amplify project, gave a live walk through of the Amplify jQuery Component Library. The webinar was recorded and can be viewed and/or downloaded. All slides and demos are also available.

The Changelog Podcast

The Changelog podcastOur own Mike Hostetler and Scott González were both interviewed on Episode 0.5.7 of the Changelog podcast. The discussions ranged from Amplify.js, jQuery, CoffeeScript, Microsoft, the web and open source. Check out the show and let us know what you think.

 

Triangle JavaScript Meetup

Scott González recently gave a presentation about Amplify to the Triangle JavaScript Durham, NC local meetup group.

Amplify Developer Meeting

On Wednesay, we held our first public development meeting for Amplify in IRC on #amplify.js on freenode.net. Amplify is a fully open source project, and as such we are moving our weekly status meetings to IRC. Join in on the discussion and help us build Amplify together each Wednesday at 1:30 PM Central Time. For more information.

The goal of the meetings is to discuss the progress being made and open the discussion up to the community for feedback.