The Isomorphic Blog


DevOps Patterns and Anti-patterns: How to do the Right Thing in the Real World.

RealWorld-text

In DevOps, what patterns lead to success? What are the anti-patterns that should be avoided? Charles Kendrick – CTO here at Isomorphic Software – recently participated in a DevOps power panel at the Cloud Expo in New York. The session was very well attended and incredibly well received. We thought we would share a few of the questions posed to the panel, along with some insights from their responses. Click here for a video of the full session.

Best Practices
Is there a place for best practices in DevOps?

We should not be using the term ‘best practice’. DevOps is a journey – not a destination. It is all about continuous improvement. If you think you know the best way of doing something then you stop trying to improve.

 

DevOps as a Job Title
Should there be a DevOps Manager role in every organization?

There should not be a DevOps Manager role. Of course, we can expect to see the role / skill appear on resumes and in Linkedin. However, the idea of having a single person dictate how DevOps should be done in an organization – except perhaps in a short, transitional position – works against building the necessary collaborative, trusting relationships that are required.

There could be a role such as a DevOps Facilitator, DevOps Guru, that helps build the necessary collaborative, consultative relationships. Regardless of how the philosophy is introduced, everyone has to be thinking this way.

 

Which Methodology?
There are many methodologies such as scrum, agile, kanban, etc. Do you pick one? Use them all together?

DevOps is a journey. Choose your own adventure. Choose your own path of what will work for your organization. Methodologies also do not have to be followed to the letter. They are just guidelines. You can pull from each like a tool box.

For example, some methodologies require the team to beat on a problem with everyone in the room. If you have distributed team, this will not really work for you. Some people also need time to think on their own, so being forced to work together in a room does not get the best out of them. When consensus is forced like this, smart voices often get pushed down.

 

DevOps “Wall of Confusion”
It has been said that there is a wall between Dev and Ops and that causes confusion. This would be an anti-pattern. Is the wall breaking down? Are we getting more collaboration, communication, integration? How do you help break it down?

Looking across organizations, things are improving but it is still a problem. Within an organization, the wall between dev and ops should be broken down very incrementally. Start with small steps. For example, give developers access to performance metrics instead of making them request it. The more dev minded ops people and more ops minded dev people will naturally start to communicate and work together.

 

Click here for a video of the full session.

Enjoy!

 

P.S. We will be presenting in the DevOps Summit @ Cloud Expo in Santa Clara, CA from Tues Nov 1 – Thur Nov 3. If you would like a FULL CONFERENCE FREE PASS, email jason@isomorphic.com and I’ll hook you up.

Have you heard of Adaptive Filtering?

Adaptive filtering helps make your applications run lightening fast, not only on the desktop, but also on tablets and smartphones.

How does it do this? It automatically switches to client-side filtering when the dataset becomes small enough. In doing so, it eliminates up to 90% of the most costly types of server contact (searching through large datasets), dramatically improving responsiveness and scalability.

Want to learn more? Watch this video:

Want to try for yourself? Get hands on experience here.

Thanks for reading!

The Isomorphic Team

4 More Features that Sneaked into 11 |6

A few more features that we haven’t told you about made it into SmartClient 11 | Smart GWT 6, and they are actually pretty awesome … even if we do say so ourselves! :)

#1 Formula Fields

You can now declare that a form field should calculate it’s value automatically based on values in surrounding fields or other surrounding components.  You can define either a math formula or a textual format string for the calculated value.
The logic is smart about not clashing with end user changes: values that have been edited by an end user won’t be overwritten, *unless* the value is currently invalid according to your declared validators.
This makes it very easy to build forms that do things like:
1. Automatically calculate a default end date as later than the start date, but allow user overrides
2. Calculate a total price or discounted price
3. Show a nicely formatted shipping label based on an address

Formula Fields Example

Code
Here is the code for an item order form. The generated form is directly beneath the code. As you can see, it couldn’t be easier:

 

Rel 11 Formula Fields Code

 

Example Form
ezgif.com-crop-6

 

View Formula Fields Documentation >                Visit the Formula Fields Live Hands-on Demo >

 

 

#2 Developer Console: Watch tab improvements

The Watch tab in the Developer Console gives you a view of the logical components in your application and their current state.  Like a supercharged version of browser tools for DOM inspection, the Watch tab lets you understand the structure of a complex application quickly, and easily troubleshoot issues with component sizing and placement.

 

New in 11|6, the Watch tab now allows you to hover over components in your application to see them highlighted in the component tree.

 

Here is a very short video to demonstrate. The application is on the left and the Developer Console on the right. See the components be highlighted in the Developer Console as they are moused over or clicked in the application.

 


 

The overall Watch Tab interface has also been streamlined, so that it now shows current mouse and focus targets and other statistics about your application up top, with other tools moved to a collapsed section at the bottom.

 

DevConsoleScreenCapture

 

#3 Dynamic Criteria

When the search criteria for a grid or a drop-down list depend on values in other fields, the usual approach is to write a series of event handlers to keep the criteria up to date as the user makes changes.
New in 11 | 6, Dynamic Criteria allows you to simply declare, in the criteria itself, that a value should be drawn from a nearby form field or other input control, and a new search is performed automatically.

View Dynamic Criteria Documentation >

 

#4 Trace the Source of Logged Warnings

Sometimes you’ll see a warning in the Developer Console telling you that your application is doing something invalid, but it is hard to tell which part of your code is triggering the problem.

The new API Log.traceLogMessage() allows you to log a stack trace any time a particular log message appears in the log, so that you can rapidly find the source of the warning, no matter how complex your application.

View Log.traceLogMessage() Documentation >

 

Hope you enjoy  the new features! If you still haven’t upgraded to 11|6, you can find out how to do so here.

 

Best,

The Isomorphic Team

Join us at the DevOps Conference – Get your FREE Pass

Join us at the DevOps Conference

Isomorphic will be at the DevOps Summit in the Javits Center, NY next month (June 7-9), and we’d love you to join us. Follow the steps at the bottom of the page to get your FREE VIP GOLD FULL CONFERENCE PASS..

One of the highlights will be our CTO, Charles Kendrick, discussing how to leverage technology to accelerate Agile development processes:

The Agile Accelerator: Where Designers, Product Managers and Engineers Collaborate in the Cloud 

Between the mockups and specs produced by analysts, and resulting applications built by developers, there exists a gulf where projects fail, costs spiral, and applications disappoint. Methodologies like Agile attempt to address this with intensified communication, with partial success but many limitations. 
In this session, we present a revolutionary model enabled by new technologies. Learn how business and development users can collaborate – each using tools appropriate to their expertise – to build mockups and enhance them all the way through functional prototypes, to final deployed applications. This approach helps you improve usability, exceed end-user expectations, and still hit project milestones.

 

To whet your appetite, here is Charles speaking at QCon SF a few months ago, in his session about Adapting UI from Desktop to Mobile.

Steps to get your FREE pass

Follow these steps to get your free VIP Gold pass:

  1. Go to https://www.blueskyz.com/v3/Login.aspx?ClientID=19&EventID=128&sg=468
  2. Click “Continue” if you are a New User or log-in if you have already created an account.
  3. Once there, register for Cloud Expo.  To register – fill out the basic business card questions and then enter isomorphicVIPgold in the Priority Code field to change the price to $0 .
  4. IMPORTANT: Email jason@isomorphic.com to let us know you are coming. We would love to meet up.

Hope to see you in NY!

Best,

The Isomorphic Team

User Interface Insights

We recently saw an upward trend in requests for increasing the default size of our UI controls and fonts. On one hand, this made sense. A bunch of technologies have emerged that, while they certainly don’t have the capabilities of SmartClient, they do have simplicity in their interface that many users like.

On the other hand, many Isomorphic customers (pharma, banks, research, technology, etc.) build data intensive applications. Being able to display as much data as possible on the page, then filter, slice and dice on the fly, is very important to them.

How could we be sure to strike the right balance between data density and resized controls? Well, we asked you of course! If you responded to our survey, thanks again!

Note: The survey was sent to those that, during registration at www.smartclient.com, opted-in to receive our emails, and had either purchased a license or downloaded our LGPL edition.

Here are a few insights from the survey results:

 

The ‘Bigger UI’ Use Case

We asked if you wanted larger UI controls, and if so, how would you use them. The responses were broad:

• 41% of respondents wanted increases ONLY in selected circumstances such as in a dashboard or simple form.
• 40% wanted increases throughout their applications.
• 19% of respondents didn’t want anything to change.

Since large portions of respondents support conflicting options, we knew that to meet everyone’s needs, we would have to implement a flexible solution. You may have noticed in our last release (11|6) that we introduced capabilities to make it very easy to resize controls and fonts. Learn more here.

How Big is Big Enough?

For a long time, the default size of SmartClient UI controls was 22px. For those survey respondents that preferred larger UI controls, we asked how big they should be.

Interestingly, 18% of survey participants that indicated that they wanted an increase, but selected 22px (unchanged) as the size they preferred.

The most common survey response (31%) was for an increase to 26px.

You can see this change has already been made in our showcase. In fact, you are now able to select from 5 variants.

It is interesting however to look at this question across all survey participants:
If we take into account those that said they did not want an increase in UI control / font size throughout their applications, there is a complete turnaround and 68% want the UI control size to be 22px (unchanged). This actually makes sense given that these are SmartClient customers with typically a high density of data in their applications.

Round vs. Square Corner Consensus

Most respondents wanted a medium level of rounding of corners. On a scale of 0-10, about 4-6 were by far the most popular.

Blog-Corners

Flat versus Gradient

We asked how UI Controls should look. Overwhelmingly (61%), the response was that they should be flat.

buttons-blog

Interestingly, there was a strong correlation between users that didn’t want UI controls / fonts to be increased, and also wanted UI controls to have some level of gradient.

Don’t worry. When we roll out our new UI skins, there’ll be something to keep everyone happy.

Available NOW: SmartClient 11 | Smart GWT 6

Blog Banner Rel 11 6 Now available

All at Isomorphic are very excited to announce the 11|6 is now generally available! In this blog, we hopefully answer many of your questions, or point you to where answers can be found.

What’s in 11 | 6 ?

SmartClient 11 | Smart GWT 6 is a major release. It includes functionality such as:

  • New adaptive UI capabilities so that your desktop web applications work beautifully on any device
  • Ability to easily resize fonts and UI controls
  • Inline operator grid filtering
  • Overhauled form controls to match current design trends
  • And much, much more.

You can find lots of details in the blogs below:

How to Get It

New Customers

Existing License Holders

When upgrading from SmartClient 10.x | Smart GWT 5.x, or earlier versions, discounts are based upon the date of your previous purchase. 

If you purchased a license within the last three months, your upgrade is FREE and your account has already been updated to reflect this. You can simply download the latest from here.

Otherwise, discount levels can be seen below.

Upgrade Discount Rel 11

 

  • To order an upgrade from a previous version & for more options, contact sales.
  • For more information on how our licenses and discounts work, see the Product & Licensing FAQ.

Once you have purchased your upgrade, Download SmartClient 11 or SmartClient 6 to get started (don’t forget to log in first)!

We would love to hear your feedback!

As always, please send us any bug reports or feedback in the Forums. Please be clear about what product and version you’re using when reporting issues, including the exact date of the build.

Thank you for being our customer. We couldn’t do it without you!

Enjoy!

The Isomorphic Team

More New Features & How to Upgrade to 11 | 6

Blog Banner Rel 11 6 batch 3

This is our third and final blog about upcoming features prior to 11|6 becoming generally available (just days away).

See our first two blogs here:

Read on to learn about:

  • More 11|6 features
  • FREE upgrades / upgrade discounts
  • How to pre-test your application with 11|6
  • How to access 11|6 live samples

New Feature: Resize Fonts and UI Controls

We recently surveyed a significant portion of our users to get feedback on font and control sizes. Thanks to all those that participated. We’ll publish a blog soon to share some of the insights. Meanwhile, in 11|6, we are providing the ability for you to easily adjust font and UI control sizes (up or down) across all or just a parts of your applications. You can therefore easily give users the layout they are asking for, or give them the ability to choose for themselves.

To give you the idea, here are a few versions of a grid with different font / control sizes.

Rel 11 Compact to Spacious

See it in action by selecting the appropriate ‘Density’ values from the dropdown in our live samples.

Density

Use our new APIs Canvas.resizeControls() (view docs) and Canvas.resizeFonts() (view docs) to do the same thing in your applications, or even offer these customization options to end users.

 

New Features: Component XML

Component XML is a format for specifying UI components declaratively in XML. Using Component XML, you can separate the layout of your application from its business logic, so that less technical users can edit the layout while JavaScript developers implement business logic. There are several new features in this area with corresponding samples for your reference.

Screen Reuse

Using createScreen(), you can load multiple copies of the same Component XML screen, and the copies will not interfere with each other. This allows Component XML screens to be treated as simple reusable components and development velocity to be increased. tryNow

Custom Components

With 11|6, you can use custom components in screens created via Component XML. Just use the “constructor” attribute to indicate that your custom class should be used. It’s also possible to declare a Component Schema so that your custom class can be used directly as the XML tag, with no need to set the constructor or declare custom properties. tryNow

Enabled and Visibility Rules

Simple XML declarations can leverage the data exposed by DataBoundComponents to control appearance or behavior. For example, to conditionally display panes, make fields editable, or display and enable buttons. tryNow

Form Rules

Form rules can now be applied which are declared directly in XML, without the need to write JavaScript code. This allows things like conditional required fields, formatting, hiding and show fields conditionally, etc. to be easily achieved. tryNow

 

How Much Does it Cost to Upgrade?

Existing Customers

If you purchased a license in the last three months, the upgrade to SmartClient 11| Smart GWT 6 is FREE. Yes, you read that correctly. It will cost you nothing. Nada. Zip. $0.00. Zilch. Jack Diddly squat. Zero. Your account has been updated and you don’t have to do anything except download the new release when it becomes available (or the pre-release version today).

If you are an existing license holder, but did not purchase in the last three months, you could still be in line for a pretty huge discount. Discounts are based on your last purchase date. See the table below for tiers, and contact us to upgrade:

Upgrade Discount Rel 11

New Customers

To learn about available editions and to purchase licenses, visit http://www.smartclient.com/product/.

 

Got Licensing Questions?

Major releases (e.g. SmartClient 11.0, Smart GWT 6.0) are paid upgrades. Minor releases (e.g. 11.1, 11.2, 11.x) are free with the major license.

See out licensing FAQs for more information.

 

Start Testing your Applications with 11|6 TODAY

The release is days away. Get a head start. Download the latest pre-release version here and test your applications NOW.

If you find any issues, please let us know through the forums, and provide as much information as possible. We will address issues ASAP.

 

Hands-on Release 11| 6 Live Samples

There is a pretty long list of live samples available for you to test out. You can access them all here.

Again, if you find any issues, please let us know through the forums, and provide as much information as possible. We will address issues ASAP.

 

Thanks for reading our blog! We hope you love the release.

The Isomorphic Team.

Even More SmartClient 11 | Smart GWT 6 Features

Email Banner Rel 11 6 with logo

 

We blogged a few weeks ago (click here) about the first batch of features in SmartClient 11 | Smart GWT 6. Below are a bunch more. Enjoy!

Beautiful input controls

First of all, we’ve overhauled the appearance of our form controls to match current design trends and take advantage of CSS3 features like box shadows and transitions, that are now supported across all common browsers.

 

To check it out for yourself, see examples here, and across many of our other samples in the pre-release sample site.

 

DataSource Navigator & Dashboards in Developer Console

You will find the new “DataSources” tab in the Developer Console to be an extremely useful tool. It enables developers & admins to view, search and edit data for any DataSource in your application, without being limited to the UI intended for normal end users. Leverage it as a:
  • Development tool
  • Troubleshooting tool for live, deployed applications (admins only)
  • Security auditing tool (log in as an ordinary user and perform operations to test for correct server-side enforcement of security rules).
It even includes the ability to save a dashboard consisting of grids configured to show interesting data, allowing admins to quickly bring up key information such as recent orders, lapsed subscriptions or other metrics that may otherwise have required a dedicated reporting tool to make available.

 

DataSources Rel 11 - V2

min and maxWidth for ListGrid auto-sizing

Space in tables is premium. You want to see as much of the data is possible at one time, but this is difficult when the size of returned data is dynamic. To resolve this, SmartClient 11 | Smart GWT 6 gives you precision control over column widths, making it possible to:

  • Autofit perfectly to typical data, but not expand for unusually long values
  • Impose a minimum size for a column that allows a title to be partially clipped (e.g. showing “Desc” may be sufficient for “Description”

Let’s look at an example:

A) The Description column in the table below only has short values. As such, the column width is narrow, taking up as little space as possible without truncating the values.

Email Grid MinMax

B) Below, one of the values in the Description column is very long. The column is wider than before, but rather than make the column unusually wide, that single long description is truncated.

Email Grid MinMax long

 

Here, all of the values in the Description column are blank. The column is therefore made as small as possible, even clipping the column title to ‘Desc …’ to free up as much space as possible.

Email Grid MinMax Blank

 

Component min and max heights & widths

Get more control over layouts with minHeight and minWidth properties on components. This makes it easy to implement scenarios like:

  • Components that should start scrolling if they grow beyond a certain size
  • Preventing components from becoming too small to be usable
  • Modal dialogs that should fill the screen, but not become overly large

Let’s look an example:

When space is not an issue, the description text and the complete table with all of the data is displayed in the layout as shown below.

Layout min max 1

As the amount of description text grows, there is less space for the table. The amount of space available for the table is reduced. the complete table is still displayed, but the user must scroll to see all rows of data.

Layout min max 2

As more description text is added, there comes a point where further decreasing the height of the table does not make sense. At this point, the table is pushed downwards and the right-hand scroll bar provides navigation to it.

Layout min max 3

 

 

This feature also provides the ability to control the size of modal dialogs. In the example below, the modal dialog has been set to take up 80% of the width of the screen. The size of the modal dialog therefore changes as the screen is resized. However, we don’t want it to get too small, or too big. Let’s look at the example:

  1. At first, the screen is very small. The dialog has to take up the full width of the screen to be readable, and it prevents the screen from being sized smaller.
  2. As the screen gets larger, the modal dialog takes up 80% of the width.
  3. As the screen gets larger still, there comes a point when it is no longer necessary for the modal dialog to grow further.

 

tryNow

 

 

More Miscellaneous Features

FormItem icons can now be “inline” on older IE (IE7 and up).  Previously, this feature was limited to IE10 and above LearnMorebutton
FormItem icons can now use text glyphs instead of CSS images or Data URLs, allowing fonts to be used as sets of icons glyphs
Space left for FormItem hints can now be explicitly controlled, to prevent excessive wrapping when forms are horizontally shrunk LearnMorebutton
Maximum file sizes are now validated within-browser (on browsers where this is possible) to avoid uploading large files only to have the file rejected after the upload completes
LearnMorebutton
Excel exports can now render “datetime” values to a particular timezone (Excel has no support for timezone-independent datetime values) LearnMorebutton
DrawPane and DrawItems now support zIndex (stack order) manipulation, at creation and on the fly LearnMorebutton
DMI can now target Java CDI (Contexts and Dependency Injection) beans LearnMorebutton

 

 Use our Pre-release features NOW!

Download our cutting-edge development pre-releases to get started using our new features now!

As always, please send us any bug reports or feedback in the Forums. Please be clear about what product and version you’re using when reporting issues.

Best,

The Isomorphic Team

First Batch of SmartClient 11 / Smart GWT 6 Features

We have been working hard on our next major release. It’s not ready yet, but check out the first batch of new features below. We hope you love them!

Grid Inline Operator Filters

With SmartClient 11 / Smart GWT 6, advanced search operations are available in any *grid that features inline filtering. Getting to important data couldn’t be easier:

  • Choose search operators such as “greater than”, “matches pattern”, “is not null” (see full list below)
  • Type a value in the existing inline filtering interface
  • Press <enter>

FilterTable2

The following operators are available:

GridFilterOperators

Note that this feature is enabled by default, so it’s an instant upgrade for your existing applications!

 

Try the Grid Operator Filter Live, Hands-on Demo >

 

Menu Embedded Components

Interactive components can now be embedded in menus to create a more streamlined, immediate user experience. This eliminates many cases where multiple steps or a modal dialog would be required to complete a menu-driven interaction. For example, see the images below:

MenuEmbeddedComponents

 In the above image:
  • The typical Cut/Copy/Paste menu items have been collapsed into a more compact row of buttons
  • The “Add Bookmark” item gives you the ability to override the default title for a new bookmark without leaving the menu.

Check out the Menu Embedded Component Live, Hands-on Demo >

 

Adaptive Layouts

The Adaptive Layout feature allows components to render in different ways according to available space.
Unlike crude “responsive design” approaches, where appearance changes based on the overall screen size, Adaptive Layout APIs allow a component to render at multiple discrete sizes based on the dynamic situation, such as:
  • How much space is needed to show dynamic data values (e.g. loaded from a database)
  • The size chosen by an end user for a re-sizable screen region
  • Labels that have different sizes in different locales

View the Adaptive Layouts API Reference >

For example, a Menu using the Adaptive Layout feature can show more or fewer menu items inline, responding on the fly as other elements on the screen require more or less space:

InlinedMenuMobile

In the image above, you can see:

  1. Menu with a candidates name and three menu items inline
  2. As available width is reduced, there is not enough space for the three menu items. The component automatically displays one of the menu item via a drop-down control
  3. With the same available width, a candidate with a longer name reduces the space available for menu items. The component reacts intelligently to the dynamic data and a second menu item is moved automatically to the dropdown control

Learn to write your own adaptive layouts >

 

Adaptive Menu Component

According to the available Space, the AdaptiveMenu component can either display menu items inline:

AdaptiveMenuInitial

or in a drop-down:

AdaptiveMenuLast

 

or mix the two modes according to available space:

AdaptiveMenuSecond

 

Go to the Adaptive Menu Live, Hands-on Demo >

Adaptive Width Button

A Button with adaptive width enabled will shrink to just an icon if there is too little space for its title, so your application will work on any size of screen.

See the example below and visit the SmartClient 11 / Smart GWT live samples to try it out.

 

ezgif.com-cropAdaptiveButton

Visit the Hands-on Demo for Adaptive Width Buttons >

 


Use our Pre-release Features Now

Download our cutting-edge development pre-releases to get started using our new features now!

As always, please send us any bug reports or feedback in the Forums. Please be clear about what product and version you’re using when reporting issues.

Look out for Part II of the SmartClient 11 / Smart GWT 6 release preview.

Best,

The Isomorphic Team

Three Problems with Agile

The essence of Agile is to ramp up communication between team members to an extreme degree. The idea behind this is to minimize the functionality gaps, design misses and rework so often encountered in waterfall development processes, with an end goal of maximizing the output of usable software.

Ramping up communication, however, has its own set of challenges. For starters, here are just three:

#1 Distributed team logistics

For a myriad of reasons (cost, morale, retention, etc.), the past ten years have seen more and more companies allow team members to work from home. However, coordinating sprints across dispersed teams is very difficult. There always seems to be someone missing or joining the conference call late and ‘catching-up’. This is causes disruption and irritation.

Now consider that the typical team these days has members spread across the world. The scrum may start at 9am in San Francisco, but it is lunchtime in New York, dinner time in London, and past bedtime in Bangalore. There is really no good compromise in this scenario. No matter what time the scrum starts, some or all of the team will not be happy.

#2 Continuous sprints

With Agile, the team is always in a “sprint”. Anyone with even basic sports awareness knows that after a sprint there should be a period of rest. However, there is never a “rest week” on an Agile schedule. For some reason it is always just ‘sprint’, ‘sprint’, ‘sprint’. This can lead to burnout and management resentment.

#3 Availability conflicts

Very often, business requirements and design validation are sourced from actual business users. However, business users actually have a day job. They can’t be in a room in a scrum all the time. If they are only available intermittently, the process starts to fall apart.

With lack of business user input, teams often end up in an intense discussion of a problem, where no one really understands the problem clearly enough to meaningfully discuss it. And this can be yet another source of team friction.

What is the solution?

It would seem that these problems and others could be solved by technology, but there are surprisingly few (no?) options out there. What would the ideal solution look like?

One thing is for certain … since different team members (e.g. designer versus developer) have different skill sets and needs, any new tools will have to be role specific.

More thoughts to follow …

Page 1 of 912345»...Last »