JavaScript
Carrier Grade Linux *Engineer* - RTOS, Tools, UI, Middleware - Android & Linux (Dallas, TX)
Enterprise Management *UI* Developer - Hewlett-Packard Company (Austin, TX)
MainFrame *Software* Developers - Allegis Group, Inc. (Plano, TX)
Senior *UI* *Engineer* - Cisco (Austin, TX)
Senior *UI* *Engineer* - Cisco (Austin, TX)
*UI* - Senior *Software* Application *Engineer* - Charles Schwab (Austin, TX)
*Software* *Engineer* - Java *UI* - Rockwell Automation (Austin, TX)
*Software* *Engineer* - Java *UI* - Rockwell Automation (Austin, TX)
*Software* *Engineer* - Java *UI* - Rockwell Automation, Inc. (Austin, TX)
*UI* *Software* *Engineer* Job - User Interface *Engineer* - None (Austin, TX)
Canto.js: An Improved Canvas API
Javascript author extraordinaire David Flanagan released Canto.js recently, a lightweight wrapper API for canvas, introduced here and documented at the top of the source code. Example:
PLAIN TEXT JAVASCRIPT: canto("canvas_id").moveTo(100,100).lineTo(200,200,100,200).closePath().stroke();Notice three things:
- canto() returns an abstraction of the canvas - a "Canto" object.
- As with jQuery and similar libraries, there's method chaining; each method called on a Canto also returns the Canto.
- lineTo() has been extended to support multiple lines being drawn in a single call.
Instead of setting the ink properties and then painting it, you can do it all in one step:
PLAIN TEXT JAVASCRIPT: canto("canvas_id").moveTo(100,100).lineTo(200,200,100,200).closePath().stroke({lineWidth: 15, strokeStyle: "red"});And plenty more syntactic sugar - check out the API in the source code comments. Sweet!
Thanks @pkeane.
Sr. *UI* *Engineer* - Cisco Systems (Austin, TX)
Information Technology - *UI* - Senior *Software* Application *Engineer* - Charles Schwab (Austin, TX)
YUI 3.2.0 preview release 1 – touch events support, transitions and browser-specific loading
Over at the the YUI blog the team just announced the preview release of YUI 3.2.0. YUI3 now has some interesting new features that the team wants you to try and tell them if they work out for you. The changes to the already very powerful library are quite ambitious:
- Touch event support for mobile interfaces including flick and move gestures
- Browser capability loading - which means that every browser gets the least amount of code necessary to make it work
- Transition support for the animation module - meaning only browsers that don't support CSS3 transitions get the JavaScript animation fallback
- An update to the CSS grids to allow for more flexible layouts
- A ScrollView widget similar to the one in Apple iOS
- The uploader has been transitioned over from YUI2 to YUI3
So check out what is on offer and give the YUI team feedback on what would be nice to have and what is broken. In their own words:
The goal of a preview release is to make it as easy as possible for all of us in the community to evaluate progress of the upcoming release and provide feedback. Please take some time to test 3.2.0pr1 and let us know what you find by filing tickets in the YUI 3 bug database marked as “Observed in version” 3.2.0pr1. We’ll do our best to address preview-release questions on the YUI 3 Forums, too.
There are three ways to get started with the preview release: YUI 3.2.0pr1 is available on the CDN via the 3.2.0pr1 version tag — so you can reference preview-release files like http://yui.yahooapis.com/combo?3.2.0pr1/build/yui/yui-min.js. If you switch to this seed file for the preview release, all subsequent use() statements will continue to load YUI 3.2.0pr1. Or You can download the full YUI 3.2.0pr1 from YUILibrary.com, including source code and examples for all components. Or you can simply explore the functioning examples roster.
Canvas Color Cycling
Interest in Canvas, as well as mobile apps, has led to a renaissance of old-school 8-bit graphics. Joe Huckaby of Effect Games has been playing around with color cycling, leading to some stunning effects.
Anyone remember Color cycling from the 90s? This was a technology often used in 8-bit video games of the era, to achieve interesting visual effects by cycling (shifting) the color palette. Back then video cards could only render 256 colors at a time, so a palette of selected colors was used. But the programmer could change this palette at will, and all the onscreen colors would instantly change to match. It was fast, and took virtually no memory.
There's a neat optimization going on here too: instead of clearing and redrawing the entire scene with each frame, he only updates the pixels that change:
In order to achieve fast frame rates in the browser, I had to get a little crazy in the engine implementation. Rendering a 640x480 indexed image on a 32-bit RGB canvas means walking through and drawing 307,200 pixels per frame, in JavaScript. That's a very big array to traverse, and some browsers just couldn't keep up. To overcome this, I pre-process the images when they are first loaded, and grab the pixels that reference colors which are animated (i.e. are part of cycling sets in the palette). Those pixel X/Y offsets are stored in a separate, smaller array, and thus only the pixels that change are refreshed onscreen. This optimization trick works so well, that the thing actually runs at a pretty decent speed on my iPhone 3GS and iPad!
YUI 3.2.0 Preview Release 1: Touch Event Support, Gestures, Transitions, CSS Grids, ScrollView, Uploader, and More
The YUI contributor’s team is pleased to announce the first developer preview of the upcoming YUI 3.2.0 release. This preview provides an opportunity for developers and implementers to help test the release for potential regressions and to provide feedback on new features and components. If you have an existing YUI implementation, please exercise YUI 3.2.0pr1 in your development environment and let us know what you find.
There are three ways to get started with the preview release:
- Use from the CDN: YUI 3.2.0pr1 is available on the CDN via the 3.2.0pr1 version tag — so you can reference preview-release files like http://yui.yahooapis.com/combo?3.2.0pr1/build/yui/yui-min.js. If you switch to this seed file for the preview release, all subsequent use() statements will continue to load YUI 3.2.0pr1.
- Download the release: Download YUI 3.2.0pr1 from YUILibrary.com, including source code and examples for all components — including those new to this release.
- Explore the examples: As a convenience, we’ve posted the preview (along with the functioning examples roster) to YUIBlog. Feel free to explore the release there as a prelude to switching your CDN version reference (or downloading the preview) and testing it out in your own environment.
As with all YUI development work, you can track our current plans and progress on our YUI 3 tasklist, including a comprehensive list of YUI 3.2.0 (and some upcoming 3.3.0) changes; you can also check in on our progress addressing issues in the bug database. Here are some of the new and updated components featured in the 3.2.0 developer preview:
- Intrinsic support for touch events has been added (mynode.on("touchstart", function(e) {});). We’ve also added a Gestures module with two bundled gestures — gesture-flick and gesture-move — that work with both touch- and mouse-driven devices. Check out the API docs or the bundled sample page for ideas about how to start using Gestures.
- YUI’s intrinsic Loader now supports capability-based loading. This allows us to segregate, for example, IE-specific code into separate submodules and allow the Loader to bundle that code only for browsers that require it. We’re leveraging this new feature to avoid shipping IE-specific code in the Dom module to non-IE browsers, a performance/k-weight boost that will benefit all users of modern browsers with no code change required.
- YUI 3’s animation portfolio now supports transitions via the Transition module, providing browser normalization for this powerful, hardware-accelerated (where available) technique for handling transitions; check out the example for sample code. Animation, in its most basic form, has a streamlined dependency tree for modern browsers, significantly reducing the k-weight for simple animation in better browsers.
- YUI 3.2.0 will bring with it a new beta version of YUI’s CSS Grids component, and you can begin exploring this new approach to Grids in the preview release. The examples are the best place to start.
- We worked with Michael Johnston of the Yahoo! Mobile Engineering team to bring a new (beta) ScrollView widget to YUI 3.2.0. ScrollView provides a scrolling pane implementation familiar to users of native Apple iOS applications, emulating the elasticity of the element when scrolled to the beginning or ending limit. You’ll see in the 3.2.0pr1 examples for ScrollView that this component is device neutral, working well with a mouse as well as with touch events on your Android or iOS device.
- The Uploader component from YUI 2 is now part of the YUI 3 family as well, debuting as a beta in 3.2.0.
- The History module that debuted with YUI 3.0.0, which was a port of the YUI 2 version, has been deprecated (it remains available in YUI 3.2.0 as history-deprecated). A new beta History utility debuts in 3.2.0, based on Ryan Grove’s History Lite module from the YUI 3 Gallery. A preview-release example from the new component is a good starting reference.
- The JSONP and YQL Query modules from the YUI 3 Gallery have become canonical components, debuting as beta in this release.
The goal of a preview release is to make it as easy as possible for all of us in the community to evaluate progress of the upcoming release and provide feedback. Please take some time to test 3.2.0pr1 and let us know what you find by filing tickets in the YUI 3 bug database marked as “Observed in version” 3.2.0pr1. We’ll do our best to address preview-release questions on the YUI 3 Forums, too.
Looking at JS emulator core for GameBoy
JavaScript as a general-purpose "Turing-complete language" is illustrated - the example discussed in the first part of a series: How a CPU can be emulated through JS, and how one might start building an emulation core for the GameBoy console. Looking forward: How a game image can be loaded into the emulator over the Web. For now: Hello, Z80! Check out Ice Station ImRannazar!
*UI* - Senior *Software* Application *Engineer* - Charles Schwab (Austin, TX)
Dojo 1.5 is Out and it’s Feature Packed!
The Dojo project continues to pump out goodness announcing version 1.5 of the Dojo Toolkit with a number of new and exciting features.
Dylan Schiemann had this to say about the release:
The JavaScript world is evolving at an intense pace. We're very pleased with this release of Dojo, which offers the stability needed for existing apps and browsers, while introducing some of the capabilities of building great apps of the future.
Some of the biggest updates came to the Dijit UI library with the addition of the new Claro theme which helps provide a nice desktop look-and-feel to web applications as well as improvements to the charting and drawing components of the library.
And Dojo team lead Pete Higgins added:
If you haven't seen the new theme Claro, you should. Julie Santilli and her awesome design team at IBM put some incredible design and style on top of an already stable and accessible UI library
The theme is incredibly clean. Check out some of the controls styled using Claro:
Other important updates include:
- Strong support for HTML5 & CSS3 features such as local storage, transforms and Canvas with fallback
- Implementation of dojo.Stateful
- Update to dojo.Deferred to leverage a new underlying Promises-based API
In addition, new initiatives are underway to provide solutions for the ever-growing and important mobile space:
- dojox.mobile: lightweight mobile web widgets
- dojox.mobile.app: mobile application development framework
- embedjs: Dojo API, optimized for mobile
- TouchScroll: scrolling layer for WebKit Mobile
- wink: mobile web app toolkit
This release continues the project's philosophy of modularity allowing developers to leverage the library for anything from simple DOM manipulation to full-blown RIA development. Dojo 1.5 is immediately available for download and sports impressive, updated documentation to get you started quickly.
Senior MOSS/Commerce Developer
Modea is currently looking for a MOSS/WSS 2007 Developer to support several initiatives for Fortune 1000 brands. In this position, the developer will be responsible for converting business requirements into web-based, client/server, and multi-tiered business applications, and supporting the development and implementation of those applications. ....[more]