Adobe now has a Creative and Interactive Solutions business unit headed by David Wadhwani, who ran its Platform business so the company can take a more integrated approach, and “deliver faster on our vision of multi-screen publishing and drive innovation and support for both Flash and HTML 5 authoring.”
John Loiacono who ran Creative Solutions is now heading up a new Digital Media Solutions unit focused on the company’s core digital imaging franchise.
Former Omniture CEO Josh James is leaving the company at the end of July and will be replaced by former Omniture biz dev VP Brad Rencher. Adobe CEO Shantanu Narayen said Omniture now represents about 10% of Adobe’s revenue. Adobe bought Omniture 11 months ago for $1.8 billion.
read more
Swiss-based web content management (WCM) house Day Software Holding AG got bought Wednesday by Adobe for roughly $240 million (255 million Swiss francs).
Adobe is now going to tender for its outstanding stock offering $131.53 a share cash (139 Swiss francs), a 59% premium compared to its performance the last 60 days.
Observers believe Day’s been positioning itself so Adobe would buy it.
Adobe currently embeds Alfresco’s open source enterprise content management repository in its LiveCycle product and in its Acrobat.com service under an OEM arrangement but Day and Alfresco don’t seem to tangle in the marketplace.
read more
On Wednesday, Adobe announced it was going to buy Day Software, another WCM manufacturer based in Basel, Switzerland, who uses the same technology foundation as Magnolia. As an initiator of the JCR standard and main contributor to Jackrabbit (the JCR reference implementation), Day is certainly important for the JCR ecosystem.
Let's have a look at the possible implications of the deal for Magnolia.
Adobe bought Omniture not even a year ago for 1.2B$, which was/is the leader in web analytics. With Day's CQ (their CMS), Adobe now has the final part in their portfolio to create, analyze and publish content. (I couldn't find out yet what part "Adobe Publish" plays. Seems to be an SaaS platform, so probably not competing with CQ.)
read more
In the first of 2 navigation videos we filmed for Silverlight TV, David Poll joins John Papa to demonstrate how the Silverlight navigation API can be used to solve common navigational structures. David explains how navigation works with Silverlight, how...(
read more)
Learn how to design your Windows Phone applications to take advantage of the accent color....( read more )...(
read more)
The new 3D Rotation Viewer example demonstrates how to easily create a slick 3D rotation viewer in UIZE that lets users rotate the view of an object a full 360 degrees using a mouse, or finger on the Apple iPad. The example is inspired by a showcase example by Apple of HTML5 technologies. The UIZE implementation works in pretty much all browsers, with no need for HTML5 or CSS3 features. This was an exercise in seeing how easy it would be to create an equivalent experience in UIZE. It was easy, taking less than a day. The code is all original, with absolutely no referencing of Apple's code (but thanks to Apple for their delicious iPod Touch products, and for their fabulous photos of said products). In the example, an instance of the Uize.Widget.Drag class is being used to create a simple 3D rotation viewer. Using a mouse, you can click and drag to rotate the 3D image. On an Apple iPad, you can use your finger. The viewer implements a deceleration behavior - the speed at the time of release determines how long it will take to spin down to a stop. When the page loads initially, the image is animated 360 degrees clockwise. Buttons beneath the viewer let you trigger other kinds of spins.
The new UIZE Unit Tests example lets you select and run any of the test modules of the UIZE JavaScript Framework. In the example, a test module selector lets you choose your test module. On selecting a test module, the test module is loaded dynamically. After it has loaded, you can use the "START TESTS" button to start running the tests contained inside the selected test module. While the tests are being performed, a progress bar is updated to show how far you are through the tests. Also, a log is written to with details of the tests being performed. You can stop the tests at any time using the "STOP TESTS" button. If one of the tests fails (none should, of course), test execution is aborted and a synopsis of the failure is displayed in a dialog. To run the entire test suite for the UIZE JavaScript Framework, you can select the Uize.Test.UnitTests test module.
The uize.com Web site has been updated with a bright new look and usability improvements for the Apple iPad. While there are those among us who are attracted to the dark side... where color themes are concerned, there is no denying that the overwhelming preference is for light themed Web sites. Dark text over a light background is the age old convention when it comes to the printed word. People are used to it, comfortable with it, and a light background improves readability in high ambient light conditions where a dark background would have a hard time competing with the ambient light. Add to that the fact that fingerprints on touch devices like the Apple iPad really show up something awful against a dark background, and that one can see one's own reflection too easily against a glossy display when its background is dark, and you have a whole bunch of compelling reasons to have a light background. Hence, the new look for the uize.com Web site. In addition to the color theme changes, many features have been tweaked slightly to improve usability on touch devices like the Apple iPad. Some user interface controls have been made larger, font size for some links has been increased, and some iPad specific issues have been addressed. Hope you like the new look. Bright and fresh.
The new Digital Clock example shows how the Uize.Widget.SegmentDisplay.Seven widget class can be used to easily create a digital clock that shows hours, minutes, and seconds. In the example, six seven segment display widgets are used - two for the hours display, two for the minutes display, and two for the seconds display. After the page loads and is initialized, a timer/interval is started that updates the clock's display every second. For every update, the current time is queried using JavaScript's Date object and formatted to an HHMMSS string using the Uize.Date.Formatter.format method of the Uize.Date.Formatter module, specifying the string value '{hh}{mm}{ss}' for the date format. From the formatted string, the first character is used to set the value of the hours display's tens widget, and the second character is used to set the value of the hours display's ones widget. In a similar manner, the third and fourth characters of the formatted date string are used for the minutes display's two seven segment display widgets, and the last two characters of the formatted date string are used for the seconds display's two widgets.
The new Button example provides a demonstration of the features of the Uize.Widget.Button widget class. In the example, an instance of the Uize.Widget.Button widget class is instantiated and wired up. A log widget is used to log the instance events that occur for the button widget. Interacting with the widget will cause events to be fired, and those events will appear in the log. The log displays both the custom instance events that are fired using the button widget's fire method, as well as all Changed.* property change events that result from values of the button's various set-get properties being changed (so, the log can be used to watch for changes in the state of the button widget). Below the instance event log for the button is a set of links for testing aspects of the programmatic interface of the button widget. A "TOGGLE ENABLED" link toggles the value of the button's enabled set-get property. A "TOGGLE BUSY" link toggles the value of its busy set-get property. A "TOGGLE SELECTED" link toggles the value of its selected set-get property. Finally, a "CHANGE BUTTON TEXT" link changes the value of its text set-get property.
The new Uize.Widget.Log.InstanceEvents module implements a log interface for logging the instance events of an instance of a Uize subclass. The Uize.Widget.Log.InstanceEvents module provides a convenient way to easily present a log of all the instance events that occur for an instance of a Uize subclass, including custom instance events that are fired using the instance's fire method, as well as all Changed.* property change events that result from values of the instance's various set-get properties being changed. This means that you can use a Uize.Widget.Log.InstanceEvents instance to watch for changes in the state of some other instance. The instance for which instance events are logged can be an instance of any Uize subclass - not just widget classes.
The new Uize.Widget.Log module implements a very basic logging widget, to serve as a base class for more specialized logging widget subclasses. The Uize.Widget.Log class provides very basic support for displaying messages in a logging pane, with a clear button that lets the user clear logged messages. The Uize.Widget.Log widget class serves as the base class for the more specific Uize.Widget.Log.InstanceEvents widget class. Examples of the logging widget in action can be seen in the Button and Virtual DOM Events examples.
The UIZE JavaScript Framework has added support for the touch interface of Apple's iPad. There's no denying the excitement surrounding Apple's new iPad device, and there is now likely to be a veritable flood of touch interface devices entering the market in response to their success. Apple has already sold over three millions iPads in less than three months. Several other vendors have announced intentions to enter the market with their own competing tablet / slate devices. The touch interface is a trend that is solidly establishing itself. The UIZE JavaScript Framework is addressing this hot new trend by providing the abstractions necessary to make life easier for application developers. To kick off this effort, the Uize.Widget.Drag module has been enhanced to now support touch interface events. Because many other widgets are already written to use the Uize.Widget.Drag widget class, the improvements in this class automatically confer touch support to the widgets that use this class in their implementation. Examples of this are the Uize.Widget.Resizer, Uize.Widget.Resizer.Marquee, Uize.Widget.Bar.Slider, Uize.Widget.ColorCube.Draggable, Uize.Widget.Dialog, Uize.Widget.Drag.Move, and Uize.Widget.ImagePort.Draggable classes. What this all means is that, with the new and improved Uize.Widget.Drag class, selection marquees, sliders, dialogs, image ports, etc. are all now draggable on the Apple iPad - and they still behave as before with mouse / trackpad control. So, if you have an iPad, swing by the uize.com Web site and take a tour of the iPad examples (you'll find them under the examples menu).
A number of methods of the Uize.Color and Uize.Node modules that were deprecated back in the first half of 2009 have finally been killed. Deprecated features of the Uize.Color module that have now been killed include the mix, setColor, setHex, and toHex instance methods, the Uize.Color.blendHex, Uize.Color.hexStrToRgb, Uize.Color.mixColors, Uize.Color.rgbFromStyleStr, Uize.Color.rgbToHexStr, and Uize.Color.rgbToStyleStr static methods, and the Uize.Color.RgbColor object. Additionally, the deprecated Uize.Node.getStyleAttribute static method of the Uize.Node module has been killed. For backwards compatibility and to provide time for transition, these methods were supported for just over a year after being deprecated. Finally removing them helps to clean up the code and reduce code size by a little bit.
The new Uize.escapeRegExpLiteral static method of the Uize base class provides a convenient way to escape regular expression special characters inside a string that is to be used as a literal match in a regular expression. Using this method, any string can be escaped so that it can be used in creating a regular expression where that string can be matched as a literal match. Strings may sometimes contain special regular expression characters, such as the ( (open parenthesis), ) (close parenthesis), . (period), ? (question mark), and other characters that have special meaning in the context of regular expression strings. If you wanted to use a regular expression to match a string that contained any of these special characters, then the special characters would have to be escaped. The Uize.escapeRegExpLiteral method takes care of this for you.
The Uize.Date.format and Uize.Date.toPretty static methods of the Uize.Date module have been migrated into the new Uize.Date.Formatter module. Because these methods have only been deprecated and have not yet been eliminated from the Uize.Date module, code currently using them should continue to work. However, code that was previously using these methods should be updated to use the new Uize.Date.Formatter.format and Uize.Date.Formatter.toPretty methods of the Uize.Date.Formatter module.
The new Uize.Date.Formatter module provides methods for formatting and parsing date strings, supporting a wide variety of different formatting options. The Uize.Date.Formatter.format static method of the new Uize.Date.Formatter module allows date objects to be formatted in many different ways, by specifying date formats using the many available date component tokens, such as {YYYY}, {YY}, {MM}, {monthNo}, {monthName}, {shortMonthName}, {DD}, {dayNo}, {dayNoSuffix}, {dayName}, {shortDayName}, {hh}, {h12}, {hh12}, {mm}, {minutes}, {ss}, {seconds}, and {ampm}. Additionally, date strings can be parsed according to any specified date format.
The new Animate Size in JavaScript example shows how to animate the size of an HTML element and how to apply amazingly realistic motion effects like easing, elasticity, bounce, and many more. In the example, the Uize.Fx.fadeStyle method of the Uize.Fx module is animating the size of an object. You can move the mouse around inside the brushed metal square to see a faint preview for a new size for the object, and then click to animate the object to that new size. How the object transitions is decided by the curve(s) used. The curve(s) can be changed by clicking on one of the links in the "PRESETS" tab. Upon choosing a preset, a random new size is chosen and the object is animated to the size using the new curve(s). The object's size can be animated again by clicking a preset link repeatedly, by clicking the "PREVIEW ANIMATION" button repeatedly, or by clicking anywhere on the metal square. The settings for a preset can be edited in the "PARAMS" tab, and the edited settings can be previewed by clicking on the "PREVIEW ANIMATION" button.
The unit tests suite for the UIZE JavaScript Framework, implemented in the Uize.Test.UnitTests module, has been improved with the addition of basic loadability tests for all modules for which dedicated test modules have not yet been written. All modules for which dedicated tests have not yet been written are now automatically tested at least for loadability. Also, all modules of the UIZE JavaScript Framework are now designed to be safe to load in a non-browser context, such as Microsoft's Windows Script Host. There were some modules that would fail to load because certain aspects of the initialization of the modules relied on specific features exposed by a Web browser, such as the window, document, and navigator objects. These modules have been updated to deal gracefully with the non-existence of those objects in non-browser contexts. This allows an automated unit test system to at least verify that these modules can be loaded and that their code does not contain fatal syntax errors or other crippling errors of initialization / module setup - without having to involve a Web browser. Features of the modules may still not be usable in a non-browser context, but at least the modules can be sanity checked for basic well-formedness of the JavaScript. This is particularly helpful for the automatic testing of the loadability of the scrunched versions of modules.
The Uize.substituteInto static method, implemented in the Uize base class has been improved to be more robust. Because of the way it was previously implemented, the Uize.substituteInto method would perform further substitutions into values previously substituted into the source string. This could result in some odd and unexpected behaviors in the unlikely event that the value for one substitution contained the token name for another substitution. In addition to this improvement, the Uize.substituteInto method is also now fully unit tested, and its documentation has been updated to be more comprehensive and accurate.