Welcome!

Microsoft Cloud Authors: Pat Romanski, Andreas Grabner, Nick Basinger, Kevin Benedict, Liz McMillan

Related Topics: Microsoft Cloud

Microsoft Cloud: Article

Microsoft's Smart Personal Objects Technology (SPOT) Initiative

Part II: Rendering Architecture, Information Services & Developer Potential

The first article in this series described the overall motivation for the Smart Personal Objects Technology (SPOT) initiative, detailed the client hardware and core client software and covered some of the wireless network processing. This article will finish describing the client software with a review of the UI rendering architecture for Smart Watches 1.0, which has already been adapted for several other products under development at Microsoft. We will also describe the information service infrastructure and a new developer offering called .netcpu (aka "Stamp").

Shell and User Interface
The Smart Watch UI shell and object model are similar to those in many other object-oriented widget systems, such as WinForms in Microsoft .NET. Such frameworks are typically built on top of an existing native UI infrastructure provided by the OS, such as Win32 GDI. As was established in part I, SPOT was designed from the ground up; no such infrastructure exists on which to build. On the other hand, this lack of legacy has allowed us to integrate the object model much more tightly with the native code implementation of the hardware interfaces. The objects we provide are "native" UI components. The typical consumer of the object model doesn't usually worry about this distinction and can create new UI elements, or combine existing ones, as appropriate.

View Hierarchy
The fundamental element of our UI is the View class. This is analogous to the Control class in WinForms. A View is a container, containing a ViewCollection, which is the set of all child views beneath it. Classes derived from View may also be containers, or just simple UI elements. To display a piece of the UI, a hierarchy of View objects is created.

The first distinction we make provides the notion of Form, which derives from View and has additional properties. The Form object contains the (virtual) frame buffer where the UI for all children in that form are painted. The Form has two sets of children, a set of client View objects and a set of non-client View objects. These are analogous to the client and non-client areas of a window in GDI and provide a distinction between "system" and "user" display areas.

The Form communicates with the Manager class. The Manager class is a source for Paint and Button events, and provides the mechanism through which repaints of the screen are requested. The Manager maintains the relative Z ordering of all active forms, and ultimately causes the UI display to output to the display device. The Manager calls the OnPaintEvent and OnKeyEvent methods on a Form.

For the purpose of describing the rendering architecture, we will discuss only what happens in the OnPaintEvent. The OnPaintEvent causes two traversals of the View hierarchy. The first is to perform the layout step, which determines where on the display View objects should be painted. The second is the paint step, which causes the View objects to be painted into the frame buffer. The last step moves the virtual frame buffer to the device, with the possibility of transformation (e.g., orientation, striped RGB, delta blitting, etc.).

Layout
The Manager object invokes the OnPaintEvent method on the Form when the screen needs to be redrawn. In the implementation of this method, it first performs the layout step. The layout step is necessary to position the View objects on the screen in preparation for Painting. When View objects are added as child views, or properties of existing View objects are modified, the Layout must be determined again. Layout is only performed on View objects that have a Visible property of true, so non-visible views can exist in the View hierarchy but be unaffected by layout.

Layout can be controlled by a View directly by overriding the Layout and ComputePreferredSize methods. It can also be controlled by a layout manager. The former is usually used by leaf views, which have no children, and are just specifying the things like the size of the View. The latter is typically used by container View objects.

A layout manager is a class that implements the ILayoutManager interface. There are two default layout strategies provided by the SPOT shell, the HorizontalLayoutManager and VerticalLayoutManager.

Traversal of the View hierarchy for Layout purposes is done recursively. First the InvalidLayout flag is checked for a particular View. If the layout is invalid, then the Layout method is invoked on the either the View itself or on the LayoutManager associated with the view (if there is one).

The implementation of the Layout Manager can be arbitrary. However, in the provided horizontal and vertical layout manager classes, a two-step process exists. First, the ComputePreferredSize method is called on all of the children. The child views are given the maximum dimensions available, and return the dimensions they would like to use. For a leaf view, such as a label, this would typically be the size of the text in that label. For another container view, it would recursively determine the sizes of its children based on the layout strategy that it is has implemented. For example, a horizontal layout of views would determine the sum of the horizontal sizes needed for all View objects, and the maximum vertical size needed by any one View.

Next, based on the desired sizes of the child views, the layout manager chooses a positioning for each View and invokes ApplyLayout on each view, giving the coordinates and viewing rectangle to use for the View. The ApplyLayout method sets the properties on the view, and then calls DoLayout, which proceeds in a recursive fashion.

Painting
The Form contains the frame buffer. This is usually the entire screen, but some Form objects may only draw on a subset of the screen (such as a small alert that shows only in the middle of the screen). The entire frame buffer is cleared before every painting, because there is no concept of a partial repaint of the display.

The frame buffer is passed down to the child views through the OnPaintEvent and OnPaint methods. The coordinates are not transformed for each subview, so the drawing coordinates on the frame buffer itself are absolute and not relative drawing positions. What this means is that if a View object is at pixel location 10, 10, it must translate all calls to drawing primitives on the bitmap surface to use 10,10 as the origin. The Left, Top, Width and Height properties define the drawing rectangle on the bitmap surface for a particular View object.

Traversal occurs through the OnPaintEvent method. This method does nothing if the current view isn't visible. First it calls the OnPaint method for the current view, passing in the bitmap representing the frame buffer. It then calls OnPaintEvent for every child, starting with the last child and ending with the first child. Thus the relative Z ordering from the back of the screen to the front of the screen is: parent, last child...first child.

The OnPaint method is overridden by derived classes to push pixels onto the drawing surface. The parameter is the frame buffer, which is a bitmap object. The bitmap object has various raster operations defined on it to achieve this (e.g., SetPixel, Line, Circle, DrawText, BitBlt, PatBlt). Many of these lower-level drawing primitives are already wrapped in classes that participate in the View hierarchy, such as Label, PictureBox and so forth.

Multipage Layout and Painting
There are cases where UI elements won't fit in the entire screen, but it's convenient for the UI elements not to concern themselves with the details of flowing across multiple screens. For example, a document that would be composed of a series of Labels or MultiLineLabels might be presented as multiple pages in the UI, but logically it's convenient for the user of the object hierarchy not to have to worry about the details of navigating and breaking these pages to the user of the object model.

As previously mentioned, the SPOT UI architecture imposes the constraint that drawing coordinates are always absolute positions in the display buffer. The translation of virtual screen coordinates into drawing coordinates is done during the Layout step instead of during the drawing step. The layout is performed as usual and may span multiple pages. The container is then responsible for maintaining this virtual View Port. During actual painting, a Clipping Rectangle is placed around the drawing rectangle of the screen, and child view traversal continues as usual. Children outside the clipping rectangle don't get drawn, while those inside the clipping rectangle do. Moving up and down in the View Port is simply a matter of causing the container to scroll, which causes the layout to happen again, giving the children new absolute screen coordinates.

The bottom line on multi-page layout is this: All you do is create a ScrollableContainer class, which is aware of these things, and then put your other UI elements inside it as usual, and everything just works.

Information Services
So far we've described hardware, embedded software and radio networks, but have only touched on the 24x7 information services provided by MSN Direct. The same level of engineering that's been applied to the areas described so far has also taken place on the "server" side of things.

MSN Direct Services
The primary responsibility of MSN Direct Services is to aggregate and broadcast content to client applications over the FM subcarrier network (Microsoft DirectBand). The primary difference (and advantage) of these services over other data services is that they are push services with timely delivery to a highly convenient endpoint. Instead of navigating to a WAP site on a user's cell phone and paging to the information that the user is interested in, the watch is configured to select the information continually that the user wants from a broadcast stream and present it in a "glanceable" user interface on the user's wrist. The tradeoff is that the user does not have access to arbitrary ad hoc information but to information that he or she most commonly accesses (such as local movie listings).

The glanceable metric is our attempt to make the user experience of getting relevant information as easy as glancing at your watch to get the time. Some channels are inherently easier than others at achieving this. The weather channel is successful in using iconic representations. The message channel lets you glance at who is sending the message, but the message itself is not particularly glanceable.

There are two classes of content services: broadcast and personal. Broadcast content is applicable to any user who subscribes to the service. This includes content such as game updates for your favorite team(s). This content is broadcast generally in all regions and is available to all watches. It is filtered on each watch first by the user configuration: first by whether the user has subscribed to the channel and second by which team(s) the user has configured the watch to attend to. The other class of content is personal content. This content is broadcast only in the region(s) where the service knows that watch to be at that point, and it is encrypted in such a way that only the watches associated with that subscription can access it. The kind of information that is sent this way includes initial device activation, configuration changes and content for personal channels such as Calendar and Personal Messages. (Note: The message channel receives both group messages (broadcast data) and personal messages if the user has enabled that in his or her configuration.)

All of the content follows approximately the same path through the system. Data collectors interact with the content providers. This interface may be either push or pull, although for most things we prefer to pull XML data. The collectors are responsible for checking the content for validity and writing it into the databases. A separate service (the scheduler) considers the priorities of the content and various other QoS guarantees (e.g., retransmission count/rate, error correction type/amount, decay function) and manages the FM distribution network. The primary advantage of this design (collector ? scheduler) is that it creates an inflection point allowing us to grow over time into new distribution models without affecting how we collect and process content.

The User Experience
Let's translate this to the user's experience.

When the user first buys a watch, it works out-of-the-box with selective content. This service is provided by an activation and configuration that is "broadcast" rather than targeted to a specific watch. As soon as the watch receives the configuration, it will start listening for content for the channels it is preconfigured to receive. Users will receive this content until they subscribe to more services. Because this device isn't registered with the system, only a subset of the broadcast channel content can be included in this automatic service. Users can't personalize their content in any way.

When the user activates one of the available subscriptions, we collect an activation string from the user that is displayed on the device. This activation string contains the GUID for the device as other information in addition to the region that the user is currently in and the type of watch the user has purchased. The activation to the higher subscription level is sent to the device. At this point, the user can select which channels he or she wishes to receive on the device and personalize each of the channels to deliver the information that most interests him or her. For example, the automatic service might contain stock indexes, but with the subscription the user can select the specific stock symbols to receive on the watch.

Once the user has configured the device, that new configuration is sent to the watch. This configuration may include channels that were not on the watch when it shipped. These channels are also broadcast to all regions, and when a watch realizes that it has a configuration for a channel that it does not have, it begins acquiring that channel over-the-air (i.e., fault-in). This same mechanism is used to acquire new watch faces as well. The collection of channels and content occurs at the same time so the user will see content appearing on the watch while the channel downloads are displaying their progress.

PC Channels
MSN Direct is focused on delivering a compelling set of high-value services both in entertainment (Daily Diversion, Sports,...) and productivity (Calendar, Traffic,...). There is a set of compelling applications that MSN Direct won't support through broadcast over the FM subcarrier network because it would require too much bandwidth to support such a small audience. This includes applications such as a contacts application that syncs with Outlook or other PIMs. Many people's set of contacts is too big to send over-the-air. However, some watches currently (and watches in the near future) will have the ability to connect to the PC over a USB cable that is used to charge the watch. This means that applications such as contacts can be supported locally with a PC application that manages the contact information that you want transferred to your watch. We refer to this category of applications as PC Channels because of their connection to the PC. These applications are loaded on the watch from the PC, and they get (and/or send) their data to the watch through the USB cable to the PC application.

Third-Party Channels
There is yet another category of channels: those that the MSN Direct team just hasn't thought of yet or those that address a specialized audience that the MSN Direct service won't have the bandwidth to support. This area is an opportunity for other channel developers to bring applications to market. This fall we opened up the platform for this kind of limited development in a watch. We issued a request for proposals (RFP) and selected a small number of developers that Microsoft is currently sponsoring to create applications using an early beta of the PC Channel SDK. This program is currently under way while we also ready the SDK for a broader beta release early next year.

Developer Potential
Describing third-party channels makes for a nice segue into the other efforts we are making to enable custom solutions based on all aspects of SPOT, ranging from hardware, embedded software, development systems, MSN Direct and DirectBand information services, and Smart Watch development.

The .netcpu Product Line
SPOT development efforts have created a processor and TinyCLR infrastructure for the Smart Watch system that can be leveraged into other compelling areas. The .netcpu Corp. has developed a product line of development kits, tools and processors based on this Microsoft .NET embedded technology. The product line is designed to give educators, students and engineers the materials they need to learn .NET microcontroller programming. The products provide a general-purpose development environment based on the Ollie microprocessor, TinyCLR and Visual Studio .NET.

The basic .netcpu product line includes the CPU module, a carrier board for low-cost prototyping and a full-featured development board that allows for complex experiments using onboard peripherals offered as follows:

.netcpu CPU module. A microcontroller that allows users to program embedded solutions using C#, the TinyCLR and the Microsoft Visual Studio development environment.
netcpu Starter Kit. A basic development kit that includes the .netcpu carrier board, the .netcpu CPU module, a USB cable, a power supply, the .NET Embedded SDK and Visual Studio 2005 Beta 1.
.netcpu Educational Kit. A flexible development platform that includes the .netcpu Educational Board, the .netcpu CPU module, a USB cable, power supply, the.NET Embedded SDK and Visual Studio 2005 Beta 1.

The .netcpu product line provides developers with the benefits of a modern high-level language and the same state-of-the-art development environment used to create commercially available SPOT devices. The TinyCLR platform lets the programmer focus on high-level problems - including robotic movement and reaction, balancing and other complex logic - that are difficult and time consuming in low-level programming languages.

Visual Studio, which is included with the product kits, offers full support for live debugging, deployment, code management and multiple languages.

The .netcpu CPU Module
The .netcpu CPU module is a device that houses the SPOT Ollie microprocessor, which drives the TinyCLR operating system. The 32-pin CPU module functions the same as other general-purpose software-hardware development platforms, but it contains a richer feature set and greater flexibility. The processor provides users with a platform on which to develop applications using .NET technology and the TinyCLR API.

The module can be inserted into the .netcpu carrier board or the .netcpu Educational Board. Alternately, it can be implemented into custom circuits and applications.

The .netcpu CPU module is highly optimized for small devices. It features 384K of RAM program space, giving developers plenty of memory to experiment with. With an FBGA chip form and program execution speed of ~450,000 instructions per second, the on-board microprocessor is small enough and fast enough to use in modern embedded devices. The .netcpu CPU module also houses 4MB nonvolatile flash from which programs are executed.

The CPU module is not only fast; its power requirements are low. The core processor runs at 1.8 volts and the I/O interfaces at 3.3 volts. Such low power usage is perfect for use in handheld, battery-powered products, including cell phones, PDAs and portable music players.

The .NET Embedded SDK, included with the CPU module, includes a rich driver set with easy-to-use object models and helpful sample applications. The developer can write drivers in the C# programming language.

Additional capabilities include buffered serial communication in the background, up to seven UART objects that can communicate independently of one another and the main program, and pulse width modulation (PWM) in the background.

.netcpu Starter Kit
The .netcpu Starter Kit provides everything needed to get started programming the .netcpu CPU module.

This basic package includes the .netcpu CPU module, the .netcpu carrier board, Visual Studio 2005 Beta 1, the .NET Embedded SDK, a 9-volt power supply, cables and plenty of shunts.

The .netcpu Starter Kit also contains a Quick Start Guide, user documentation and sample applications that teach C# programming concepts and allow the user to become familiar with the .NET Embedded SDK and its capabilities.

To begin programming immediately in a convenient development environment that features a high-level language with numerous supporting libraries, many implementation details - including memory management and flash management - are handled by the TinyCLR runtime. In addition, Visual Studio provides debugger functionality including the ability to perform stack traces and watch the heap.

Using the .netcpu Starter Kit, an experimenter can develop a platform for a low-power, sensor application (for example, a data collection and logging sensor) or create a simple smart embedded device (for example, a watch, refrigerator magnet or PDA). The .netcpu Starter Kit is a blank slate for the experimenter with an idea.

The .netcpu Starter kit includes the following components:

  • .netcpu CPU module
  • .netcpu carrier board
  • .NET Embedded SDK Installer CD (including Visual Studio tools, help files and sample applications)
  • Visual Studio 2005 Beta 1 Installer
  • CD User documentation
  • 9-volt unregulated linear power supply
  • DIP programming shunts (jumpers)
  • Custom serial cable
The .netcpu Carrier Board
The .netcpu carrier board provides a simple cost-effective platform for connecting the .netcpu CPU module to a PC (via USB or serial interface) and external peripheral devices.

The carrier board has a CPU module socket, dual serial ports, 3.3- and 5-volt power supplies, buffers for signal translations and a wide variety of drivers and interface headers for external peripherals. It supports efficient and rapid prototyping and provides an inexpensive way for an experimenter to learn .NET microcontroller programming.

Two serial ports allow the developer to use one for the application and the other for debugging. The board is 3.3-volt and 5-volt input/output capable using the level shifting bus transceivers (buffers). The signals include headers for ribbon-cable connectivity to peripherals. The board provides access to all signals while the CPU module is in-circuit.

The carrier board features three input power options. The AC/DC adapter accepts regulated or unregulated power from 6.5 volts to 15 volts. The board includes a 9-volt battery terminal for cordless operation. It can also derive power from USB.

.netcpu Educational Kit
The .netcpu Educational Kit allows a developer to harness the power of the .netcpu CPU module. The kit provides a hardware-software prototyping environment with all the components needed to program and prototype projects using the CPU module.

The kit includes the .netcpu CPU module, the .netcpu Educational Board, Visual Studio 2005 Beta 1, the .NET Embedded SDK, a 9-volt power supply and cables. As with the starter kit, the .netcpu Educational Kit also contains a Quick Start Guide, user documentation and several sample applications.

As with the Starter Kit, the .netcpu Educational Kit enables the development of low-power, intelligent, sensor management applications and embedded devices. This kit, however, provides additional capabilities for easily incorporating third-party peripherals such as range finders, temperature sensors, accelerometers, vibration sensors, compasses, heat detectors and more.

The .netcpu Education Board includes numerous useful prototyping peripherals, including buttons, an LCD, LEDs, an ADC and a DAC. A breadboard lets the developer create custom circuits that incorporate onboard components or other peripherals (for example, an infrared sensor to implement IrDA).

Moreover, using this kit, the developer can access both SPI and I2C interface busses for connecting to peripheral chips. The sample applications demonstrate custom circuits that integrate peripherals using SPI and I2C functionality. For example, the HelloSensor experiment demonstrates basic communication between the CPU module and a sensor device. The SoundMachine sample application generates sounds out of a speaker based on input to an ultrasonic range finder.

The .netcpu Educational Kit includes the following components:

  • .netcpu CPU module
  • .netcpu Educational Board
  • .NET Embedded SDK Installer CD (including Visual Studio tools, help files and sample applications)
  • Visual Studio 2005 Beta 1 Installer CD
  • User documentation
  • 9-volt unregulated linear power supply
  • Custom serial cable
  • DIP programming shunts (jumpers)
The .netcpu Educational Board
The .netcpu Educational Board is a flexible and full-featured platform for proving the muscle of the .netcpu CPU module.

The Educational Board provides much the same functionality as the carrier board, and features the same power supply options, CPU pin access, line buffering and dual serial ports. In addition, the Educational Board offers a breadboard for experimenting with custom circuits. Sockets adjacent to the breadboard provide signals (including GPIOs, clock, ADC and other peripherals) to facilitate prototype development. Jumpers are preconfigured for the most common hardware functions and extra connectors are included for custom circuits.

The SPI bus functionality controls on-board components including the eight-channel ADC, the eight-channel DAC, an LCD display circuit and eight user-controlled LEDs. The I2C bus functionality runs the extra on-board EEPROM memory. These powerful buses also facilitate interfacing with external peripherals.

An audio amplifier features output to an optional external speaker. Six user-definable buttons can be connected to GPIO pins to allow user interaction. For example, a user can press a button to change settings, to select a different mode in an application, to display text on the LCD or initiate an event.

Most signal settings on the Educational Board are reconfigurable using jumpers. A developer can experiment with CPU pin usage and enable or disable other functionality on the board. For example, the ADC and DAC lines can loop back to one another for testing purposes.

.netcpu Documentation
Documentation is the primary tool that developers use to understand the .netcpu product offerings and the Tiny CLR runtime.

The .netcpu documentation, included with each product offering, includes:

Quick Start Guide. Includes kit inventory, procedures and a sample application (HelloWorld)

Component Tour. A description of each on-board component and its functionality

Software Architecture Tour. An overview of the TinyCLR architecture

Sample applications. Includes various sample applications with background information, procedures and source code

Glossary. Definitions for terms found in .netcpu documentation

To actively support educational communities, the .netcpu Web site offers a discussion forum (www.dotnetcpu.com)

The .netcpu Corp. product line provides developers, hobbyists and academics with the same sophisticated, state-of-the-art development environment used by SPOT developers. Using the .netcpu CPU module and a development kit, an experimenter can apply an advanced language to sophisticated hardware and leave the tedious tasks to the .NET infrastructure. With these tools and a little imagination, the future of embedded programming is at hand.

Summary
The SPOT team is busy developing the next generation of technologies to support our commercial product efforts as well as provide specific technologies to sister groups within Microsoft. We will continue to push managed code down in the software stack, blurring the distinction between OS and runtime even further. The .netcpu already makes it possible to write device drivers entirely in managed code.

-----------------SIDEBAR_____________________

.NETCPU CPU

FBGA chip package
27 MHz ARM7TDMI (clock may be divided down or run from real-time clock)
384K SRAM, single cycle access
1.8-volt core, 3.3-volt I/O
32768 Hz real-time clock
Full interrupt controller supports clock stop and wakeup modes from any interrupt source
Four independent 32-bit timer subsystems
Usable in PWM and/or capture modes
May be split into dual 16-bit timers
Clock sources may be system clock, system clock divided or external
Dual serial ports
RS-232 voltage levels
Useable in synchronous or asynchronous modes
Hardware flow control support
SPI
Dual automatic chip selects
8-bit or 16-bit word widths
Maximum bit rate of 15 Mbits/second
32-pin pinout
24 GPIO ports, multiplexed with other functions, including eight VTU ports, dual serial ports, SPI and USB port
Two I2C pins (clock and data)
Two USB pins
One system clock out pin
One reset pin
TWO POWER/GROUND PINSM

More Stories By Donald Thompson

Donald Thompson is responsible for overseeing the end-to-end design and day-to-day management of the developers, software, protocols, and technology strategy fueling the SPOT initiative. During the Internet boom, he built the centralized ad serving system used by all MSN Web properties, including Hotmail, MSNBC, and MSN.com. Prior to joining Microsoft, he developed an automated loan kiosk and decisioning system for Citibank, a cellular billing and management system for Bell South, and wrote AI and 3D graphics algorithms for commercial game companies. Before committing to a life of software, he was a professional child actor working in movies and television.

More Stories By Paul VanderSpek

Paul VanderSpek has a passion for technology, and has dedicated the last few years to the design and development of new products based on the SPOT
technologies. Prior to this endeavor he worked in performance in various
Microsoft groups, such as Office, Windows, and Media Player. He graduated
from the University of Waterloo with a degree in Computer Science.
Growing up, he was constantly curious about the science and process of
things. He loves sailing and snowboarding in his free time.

More Stories By Colin Miller

Colin Miller is the product unit manager for the SPOT team. He has worked with commercial software since the mid 80s in a number of disciplines such as database, publishing, and
consumer software for companies including MicroRim, Aldus, and Delrina.
He came to Microsoft in the mid 90s and since has worked on Internet
Assistant, Internet Explorer, Transpoint Bill Presentment and Payment,
Passport, and most recently on SPOT. He took his undergraduate degree in Psychology and spent his early career in clinical and research work associated with the neurosciences.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


IoT & Smart Cities Stories
The platform combines the strengths of Singtel's extensive, intelligent network capabilities with Microsoft's cloud expertise to create a unique solution that sets new standards for IoT applications," said Mr Diomedes Kastanis, Head of IoT at Singtel. "Our solution provides speed, transparency and flexibility, paving the way for a more pervasive use of IoT to accelerate enterprises' digitalisation efforts. AI-powered intelligent connectivity over Microsoft Azure will be the fastest connected pat...
There are many examples of disruption in consumer space – Uber disrupting the cab industry, Airbnb disrupting the hospitality industry and so on; but have you wondered who is disrupting support and operations? AISERA helps make businesses and customers successful by offering consumer-like user experience for support and operations. We have built the world’s first AI-driven IT / HR / Cloud / Customer Support and Operations solution.
Codete accelerates their clients growth through technological expertise and experience. Codite team works with organizations to meet the challenges that digitalization presents. Their clients include digital start-ups as well as established enterprises in the IT industry. To stay competitive in a highly innovative IT industry, strong R&D departments and bold spin-off initiatives is a must. Codete Data Science and Software Architects teams help corporate clients to stay up to date with the mod...
At CloudEXPO Silicon Valley, June 24-26, 2019, Digital Transformation (DX) is a major focus with expanded DevOpsSUMMIT and FinTechEXPO programs within the DXWorldEXPO agenda. Successful transformation requires a laser focus on being data-driven and on using all the tools available that enable transformation if they plan to survive over the long term. A total of 88% of Fortune 500 companies from a generation ago are now out of business. Only 12% still survive. Similar percentages are found throug...
Druva is the global leader in Cloud Data Protection and Management, delivering the industry's first data management-as-a-service solution that aggregates data from endpoints, servers and cloud applications and leverages the public cloud to offer a single pane of glass to enable data protection, governance and intelligence-dramatically increasing the availability and visibility of business critical information, while reducing the risk, cost and complexity of managing and protecting it. Druva's...
BMC has unmatched experience in IT management, supporting 92 of the Forbes Global 100, and earning recognition as an ITSM Gartner Magic Quadrant Leader for five years running. Our solutions offer speed, agility, and efficiency to tackle business challenges in the areas of service management, automation, operations, and the mainframe.
The Jevons Paradox suggests that when technological advances increase efficiency of a resource, it results in an overall increase in consumption. Writing on the increased use of coal as a result of technological improvements, 19th-century economist William Stanley Jevons found that these improvements led to the development of new ways to utilize coal. In his session at 19th Cloud Expo, Mark Thiele, Chief Strategy Officer for Apcera, compared the Jevons Paradox to modern-day enterprise IT, examin...
With 10 simultaneous tracks, keynotes, general sessions and targeted breakout classes, @CloudEXPO and DXWorldEXPO are two of the most important technology events of the year. Since its launch over eight years ago, @CloudEXPO and DXWorldEXPO have presented a rock star faculty as well as showcased hundreds of sponsors and exhibitors! In this blog post, we provide 7 tips on how, as part of our world-class faculty, you can deliver one of the most popular sessions at our events. But before reading...
DSR is a supplier of project management, consultancy services and IT solutions that increase effectiveness of a company's operations in the production sector. The company combines in-depth knowledge of international companies with expert knowledge utilising IT tools that support manufacturing and distribution processes. DSR ensures optimization and integration of internal processes which is necessary for companies to grow rapidly. The rapid growth is possible thanks, to specialized services an...
At CloudEXPO Silicon Valley, June 24-26, 2019, Digital Transformation (DX) is a major focus with expanded DevOpsSUMMIT and FinTechEXPO programs within the DXWorldEXPO agenda. Successful transformation requires a laser focus on being data-driven and on using all the tools available that enable transformation if they plan to survive over the long term. A total of 88% of Fortune 500 companies from a generation ago are now out of business. Only 12% still survive. Similar percentages are found throug...