Skip navigation
All Places > DevTest Community > Blog
1 2 3 Previous Next

DevTest Community

233 posts

Developers prefer to be able to conduct all of their work directly from their IDE.  If they have dependencies and need to create virtual services, they want to be able to manage these from their IDE as well.  Virtual services are designed to help developers emulate the missing, unavailable, or costly components or systems so that testing can happen early, errors can be identified quickly, and fixes can happen long before issues enter production systems.

 

With Service Virtualization/DevTest 10.5, we have enhanced our Eclipse Plugin to provide support for developers to create virtual services from the Eclipse IDE. With this plugin, you can do the following:

  • Create and deploy virtual services from directories of request/response pairs
  • Create and deploy virtual services from Swagger specification files
  • Augment existing virtual services with new request/response pairs
  • Create HTTP and HTTPs virtual service

 

The eclipse plugin can be downloaded and installed from eclipse marketplace.

 

 

This is a fundamental shift in the way developers create and test software today. It can be defined as a “smarter mocking” and is a new way for developers to have everything they need when they need it in order to be as efficient as possible. Learn more about our Eclipse Plugin in our documentation or our video.

Proud to announce that Service Virtualization - SV 10.5 is now GA! Super excited to announce 'The Most Developer Friendly release of Service Virtualization Ever' to enable Developers to use Service Virtualization earlier in the SDLC (Shift-Left anyone?) and as a part of their CI/CD pipeline.

 

As a part of this release, we are providing you with blogs on the exciting new features of SV 10.5. Click on each feature to read the blog posts on those features.

 

- Eclipse Plugin

- Enhanced APIs

- Jenkins Plugin

- Kubernetes Support for Docker containers

SVasCode

 

Other frequently requested features include:

- Autologin (Portal & Enterprise Dashboard)

- Support for SWIFT 2018

- Support for PostgreSQL

- Reporting Enhancements

 

Be sure to attend the webinar on What's New in SV 10.5 on May 28. See details below.

What's New with Service Virtualization 10.5?

 

'The Most Developer Friendly release of Service Virtualization Ever'  is now available for download!

CHALLENGE: Our Customers want to create & update Virtual Services through APIs without the need to log into the Workstation and/or Portal.

SOLUTION

SV API v3 simplifies and enhances the user experience - the way a new Virtual Service is created or updating an existing Virtual Service.

What's so special in this API? 

  • Create a Virtual Service
  • Supports WSDL, Swagger, RAML, WADL, RR pairs,Mar files
  • ability to provide SSL connections
  • ability to specify a port number for deployment
  • Update an existing Virtual Service
  • Supports ability to augment existing service using RR pairs
  • Download an existing Virtual Service
  • Supports ability to download a mar file using the VS name
  • Config parameters
  • Supports ability to specify the following
  • name, description, version
  • Transport Protocol (type, BasePath, SSL, Port)
  • Data Protocol (type of DPH)

 

YouTube video link - Coming Soon!

In order to build new products quickly and sustainably, automating testing practices is key.  This includes not only designing and building the tests that need to be run, the data that is needed for testing, the dependencies that an application may require that may be difficult or costly to simulate, but as Devops engineers know it also includes automating the CI/CD Pipeline to ensure these tests run consistently when new development builds are triggered.

 

The goal of continuous delivery and integration is to help ensure you always have a working build and if not to help you identify problems, performance issues, missing scenarios or other issues with your application as early as possible in the development lifecycle. 

 

With Service Virtualization/DevTest 10.4, we have introduced a Jenkins Plugin so that you can natively integrate your applications test and virtual services into your pipeline without the need of using APIs or command line scripts.

 

 

With this Jenkins plugin, you can define the virtual services you need to run/deploy, start the test or suite of tests, and stop/undeploy the virtual service after the test has run.   All of the features that are available can be scripted with the Jenkins pipeline.  Additionally, we can leverage the native Jenkins features when applicable such as support of parameterized builds and support of Jenkins Credentials.

 

 

It is now even easier to fully test your application decoupling it from dependencies, testing negative scenarios, and performance testing your solution.  You can learn more about the Jenkins plugin in our documentation or our community webcast.  Access the Jenkins plugin today.

Coming up soon is SV 10.5! Super excited to announce 'The Most Developer Friendly release of Service Virtualization Ever' to enable Developers to use Service Virtualization earlier in the SDLC (Shift-Left anyone?) and as a part of their CI/CD pipeline.

 

As a part of this release, we are providing you with blogs on the exciting new features of SV 10.5. Click on each feature to read the blog posts on those features.

 

- Eclipse Plugin

- Enhanced APIs

- Jenkins Plugin

- Kubernetes Support for Docker containers

SVasCode

 

Other frequently requested features include:

- Autologin (Portal & Enterprise Dashboard)

- Support for SWIFT 2018

- Support for PostgreSQL

- Reporting Enhancements

 

Be sure to attend the webinar on What's New in SV 10.5 on May 28. See details below.

What's New with Service Virtualization 10.5?

Pleased to let you all know that we just presented a Webinar on Eliminating Test Environment dependencies in your CI/CD pipeline. 

 

Enormous savings and quality benefits are possible from shifting testing left to development, but dependencies can make that goal difficult to achieve. Often, services you need to test against are either still in development, cost money to hit (3rd party services) or are simply not available. Sure, you can write a simple mock, but the inherent limitations in types of services you can cover and responses that can be returned often leads to inadequate tests and potential escaped defects. 

 

Now, you can create ephemeral test environments, complete with robust virtual services. Shift unit testing left by eliminating dependencies on unavailable services, services still in development, or unavailable services right from your IDE. In this webinar we’ll discuss:

 

- Best practices for creating robust virtual services for developer use cases
- How to easily share those services throughout the organization
- Where to get started today, for free

 

Eliminate Dependencies in CI/CD Pipeline  (you need a free account with Brighttalk to listen to it)

 

Feedback Welcome!

CA Service Virtualization

Release Announcement

Release Date: 09/24/2018

Release Announcement for v10.4 

CA Service Virtualization v10.4 now GA!

We are pleased to announce the General Availability of CA Application Test and CA Service Virtualization versions 10.4. Three key items being released in this version are a new Jenkins Plugin, Open API 3.0 Support, Apache Kafka and other product enhancements.

 

Jenkins Plugin: A new Jenkins plugin lets you manage virtual services and provision tests from your Jenkins UI.  The Jenkins plug-in is compatible with CA Service Virtualization version 10.3 and greater.

         Learn more: Using Jenkins Plugin for CA Service Virtualization

 

 

CA Service Virtualization Jenkins Plugin

 

OpenAPI 3.0 Support: The OpenAPI 3.0 specifications are supported when creating virtual services and tests.

 

Apache Kafka: The Apache Kafka Transport Protocol supports the ability to create tests and virtual services.

         More on Apache Kafka.

 

Virtual Service Catalog Enhancements: Improvements to the Virtual Service Catalog include the ability to run the virtual service catalog as a service and the ability to view the response header details of a virtual service.

         Learn more from this short video: Using Virtual Service Catalog

 

CA Service Virtualization_Virtual Service Catalog

 

Identity and Access Manager Component: The Identity and Access Manager feature is now managing user creation, role creation, and component authentication for all of DevTest.

Important: Please check out our documentation to prepare for upgrading to this new component.

 

Enterprise Dashboard Authentication: Users are now required to login to view and use content in the Enterprise Dashboard.

 

Collection of Customer Experience Data: The telemetry feature is designed to help improve our product experience. Telemetry can be enabled directly from the DevTest installer to share product version and operating system information with CA.

         Learn More: Telemetry

A comprehensive list of the new and enhanced features can be found in the 10.4 Release Notes.

 

 

Before installing or upgrading to 10.4, you need to request a new license file (devtestlic.xml). Here’s how:

  • Step 1: Have a name and contact email address where the new license file will be sent.
  • Step 2: Contact the Customer Assistance Team for a new license. The process for contacting them can be found here.
  • Step 3: The team will create a new license file and send it to the email address you provide.

 

Once you have the new license file, you can download 10.4 directly from the Download Management section of the CA Support Site.

 

To prepare to upgrade to 10.4, please review our documentation.

We are proud to announce the new Jenkins plug-in for CA Service Virtualization available as of August 2018 and can be downloaded directly from the Jenkins Plugins Index [https://plugins.jenkins.io/ca-service-virtualization]

 

This new plug-in allows CA Service Virtualization users to integrate directly with Jenkins. This Jenkins plug-in offers out-of-the-box ready-built steps that may be used to trigger actions directly in CA Service Virtualization (Version 10.3 and above), including:

  • Deploy virtual Services
  • Deploy test cases or test suites
  • Start, Stop or un-deploy virtual services
  • Display test result report as part of the completed Jenkins Build Report.

 

Using the Jenkins plug-in helps automate and control CA Service Virtualization directly from Jenkins without the need to manually call any HTTP API. Jenkins plug-in for CA Service Virtualization provides a simple UI screens to define all of the necessary attributes to perform particular actions in CA Service Virtualization.

 

This tight integration allows users to easily create automation flows to check-out artifacts from repository, deploy them, run them and act upon the results. This flow  brings CA Service Virtualization even closer to the Continuous Integration or Continuous Delivery flows built using what is now nearly an industry standard in Jenkins Automation.

 

In addition, Jenkins plug-in for CA Service Virtualization fully supports Jenkins Pipeline support with domain specific commands that can be used directly in Jenkins Pipeline scripts - there is no longer the need to script manual HTTP request and response handling in order to trigger actions on remote CA Service Virtualization systems.

 

Here is a quick overview video so you can see some of the functionality we are launching today. You can also replay the community webcast on the use of CA Service Virtualization Jenkins Plugin - here.

 

If you would like to read more about Jenkins Plug-in for CA Service Virtualization you can check out our DocOps page here [Using Jenkins Plugin for CA Service Virtualization]

 

In order to download your own Jenkins Plug-in for CA Service Virtualization visit the Jenkins Plugin Index page here [https://plugins.jenkins.io/ca-service-virtualization]

 

If you have any questions or comments on the Plug-in for CA Service Virtualization make sure to tag your comment/suggestion with the appropriate “CA Service Virtualization Jenkins Plugin” tag on your CA DevTest Community post.

 

Go ahead and build great things continuously together with CA Service Virtualization and Jenkins. And don’t forget to let us know what you think here on our community.

CA Service Virtualization

Release Announcement

Release Date: 03/30/2018

Release Announcement for v10.3

CA Service Virtualization v10.3 now GA!

 

We are pleased to announce the General Availability of CA Application Test and CA Service Virtualization versions 10.3. Three key items being released on this version are the Virtual Service Catalog, Enhanced Enterprise Dashboard, and ROI Calculator.

 

Virtual Service Catalog: We are proud to introduce CA Service Virtualization’s Virtual Service Catalog, which provides a central repository for viewing and sharing all virtual services that have been deployed to a Virtual Service Environments (VSEs) within the enterprise.

 

Customers can now from a single dashboard, quickly see the available services that are deployed to a VSE and accessible in any Enterprise Dashboard that is connected to the Virtual Service Catalog. This is important because it now allows for a much easier and faster way for teams to share existing virtual assets.   

 

 

Learn more from this short video: http://cainc.to/O4Mj6X

 

Enterprise Dashboard Update: Provides the ability to view more granular transaction and virtual service data within the Enterprise Dashboard by viewing transactions running on specific VSE or virtual service.

 

Customers have a better understanding on their usage of CA Service Virtualization with much more detailed view of transaction consumption per VSE and by each virtual service.


 

 

 

ROI Calculator Enhancement: Improved the customization and usability of the built in ROI calculator.

 

Customers are now able to make more granular ROI calculations by:

·        Allowing manual insertion of their own organization’s rates (i.e. FTE Rate).

·        Allowing the exclusion of calculations that are unimportant or may not apply.

·        Allowing users to export ROI calculations, where multiple teams may have their own set of calculations apart from the tool itself.

 

 

SV Community Edition to SV Enterprise EditionProvides the ability to deploy a Virtual Service created in the free Community Edition to the SV Enterprise Edition. 

 

 

 

 

 

 

A few other highlights of this currently worth mentioning are:

 

·        API Functionality Update: Enhanced API Functionality in Test Execution and Reporting.

 

·        Additional Enhancements:

o   Certification for IBM MQ 9

o   Added support for Proxy servers when recording virtual services through Gateway mode

o   Platform update: Added support for SUSE 12 Enterprise Server SP3, Mac OSX 10.13, Linux RHEL 6.9, Linux RHEL 7.4

A comprehensive list of the new and enhanced features can be found in the 10.3 Release Notes.

Before installing or upgrading to 10.3, you need to request a new license file (devtestlic.xml). Here is the link that walks you through the process - License Administration - DevTest Solutions - 10.3 - CA Technologies Documentation 

 

Once you have the new license file, you can download 10.3 directly from the Download Management section of the CA Support Site.

 

Take this version for a spin and let us know what you think!

Business decisions are run by numbers, and these numbers are often compared over time. One of the most important values for making decisions is Return on Investment, or ROI, and it can be a very powerful tool to track value.

 

SV is valuable because it simulates unavailable systems and applications across the software development lifecycle, allowing developers and testers to work in parallel for faster application delivery, higher quality, and improved reliability. SV greatly reduces costs and accelerates time to market, thereby improving overall investment return. OK, so how do we prove the value of SV using numbers so we can make better business decisions?

 

Have you heard the phrase “back of the envelope” or “back of the napkin” before? Sure, you have. It’s a way of rounding out numbers and estimating so you can quickly determine a value. It’s useful because it’s fast, easy, and fairly accurate. We’ll use this method to calculate ROI for SV in our example below.

 

Engineering cost assumptions

Let’s start by calculating the average cost of one engineering hour. You can of course calculate separate software developer or QA engineer costs, but I’ll combine them for simplicity. We can assume their average salary combined is $100,000 and they work eight hours per day. We all know there are 365 days per a year, but excluding weekends and holidays there are only about 250 working days per year (don’t get me started with the Gregorian calendar, leap years, and working nights and weekends to launch a major release). The rest of the time you get to spend with friends and family, mowing the lawn, and ferrying your children from one game to the next. Done! Not too bad, huh?

 

 

So far, we have:

Hourly cost per full-time software or QA engineer

$50/hr

Bug fixing costs

OK, so, what about the average cost to fix a defect prior to release? How’d you get that number? Well, there’s no “right” answer. There are several studies and published reports and of course we have recent industry surveys. The numbers vary between sources but not by as much as you might expect.

Obviously, the cost of a bug goes up based on how far down the Software Development Lifecycle (SDLC) the bug is found since it must go back to the beginning to be fixed, hence the “shift left” saying that is all the rage these days. Interestingly, the cost per bug also goes up as quality improves since less bugs are found (but this is not a reason to skimp on quality!). And don’t forget that some bugs take longer or more people to fix than others, so you see this isn’t cut and dry.

 

OK, then. What do we know? Well, I’m glad you asked! There’s a widely-cited study from the Systems Sciences Institute at IBM claiming that errors cost about seven times as much to fix if found in production compared to pre-release testing (Dawson, Burrell, Rahim, & Brewster, 2010). Barry Boehm explains in his book Software Engineering Economics that an error in the wild is somewhere around 10 times costlier to fix than if found during testing (Boehm, 1981).

Furthermore, CA’s research into public sources has developed an industry average cost ratio per defect at each stage of testing.

 

This gives us an average of being eight times costlier to fix a bug in production than during testing.

 

Putting real money behind our example, if a bug found before release takes one engineer 10 hours to fix ($50/hr x 10 hours), the cost to fix the error is $500. If this same error were found at a customer site, it could cost $4,000 to fix. This is because troubleshooting takes time from customers and multiple technical support, development, and quality assurance engineers as it restarts the SDLC.

 

 

Let’s add this to our list:

Cost to fix a defect before release

$500

Cost to fix a defect after release

$4,000

 

Are you starting to see why testing early and often is so important? It’s more cost effective to test sooner rather than later!

 

Putting it all together

Now, after just two rough estimates, we can compile a simple ROI assessment! Let’s use SV to “shift left” and assume we found half the bugs reported in production before release when using SV compare to not using SV. We’ll add to our assumptions that we release a new software version quarterly and calculate the total savings per year. We might also say that we will find more bugs pre-release because of more thorough testing and increasing the number of test cases, coverage percentage, or otherwise, but we’re trying to be simplistic. Use your own numbers and try a few different iterations and see what you come up with! Are you with me?

 

Our assumptions:

Hourly cost per full-time software or QA engineer

$50/hr

Cost to fix a defect before release

$500

Cost to fix a defect after release

$4,000

Number of defects found before to release

400

Number of defects found after release

100

 

 

 

Wow!!! Can that be? We reduced costs in defect remediation due to shifting left, improved staff productivity due to accessibility, and reduced overall time to market due to earlier release!

 

Did we really save the company $175,000 last year?

 

YES! Yes, we did! Roughly. Now go show your manager and ask him or her to hire two more developers with the savings so you can improve your ROI even further. Multiply the savings by the number of years you’re using SV. Don’t forget to subtract hardware and third-party licensing costsHappy saving!

 

Please note, any ROI analysis is only as accurate as the data you put in. Check out our SV Benefits Calculator or use the ROI Tool in the DevTest Enterprise Dashboard to run your own ROI analysis. You can also contact your CA account representative for a more thorough analysis by our specialized team.

 

DISCLAIMER:  

The numbers/percentages used to calculate savings are representative of data found across CA Service Virtualization customers and various industry studies/reports. The values expressed are not a guarantee of achievable results and will vary depending upon your current infrastructure, people, and processes.

 

REFERENCES

Boehm, B. W. (1981). Software Engineering Economics. Prentice-Hall.

Dawson, M., Burrell, D., Rahim, E., & Brewster, S. (2010). Integrating Software Assurance into the Software Development Life Cycle (SDLC). Journal of Information Systems Technology and Planning (Vol. 3).

Please join us February 13, 2017 at 11am ET for an informative discussion on proven approaches that bring both the cloud experience and modern DevOps approaches to mainframe development. Hear from leading analyst Jason Bloomberg, Intellyx, and CA DevOps experts Serge Lucio and Jean-Louis Vignaud to learn how you can make your mainframe platform accessible to a new generation of developers, agile in speed of development and automated for faster time to market.

We at CA want to learn from you! 

 

We want to get insights from you on how mainframe and distributed systems and teams work together in your organization.

 

When you help us better understand your organization, we will send you a link to a series of educational videos that introduces you to virtualization and automated testing functionality for mainframe that has its roots in distributed systems.

Just click the link below to start the survey.  It should take no more than 5 minutes of your time to complete.

 

Thanks for your help!

 

Survey Link: Modern Software Delivery Including Mainframe

 

We are pleased to announce the General Availability of CA Application Test and CA Service Virtualization versions 10.2. The latest version can be downloaded directly from the CA Support Site, once logged in you will be able to select the latest version from Download Management.

 

Among the many enhancements offered in our latest release, a few worth highlighting are listed here:

  • Improved Visibility of transaction usage and virtual service count across all VSE’s in the Enterprise Dashboard

  • Self-service high-level ROI calculator 

  • Improvements to Session Tracking and Inspection View.

 

A comprehensive list of the new and enhancement features can be found in the V10.2 release notes.

 

We also hope you can join us the DevTest Community Webcast to learn what is new and how to upgrade to 10.2.

Have you ever noticed that it’s the high-performing teams that ask the best questions of themselves? They challenge themselves, think ahead and consistently work to validate team direction and priorities by asking the right questions—frequently. 

 

For service virtualization (SV), perhaps the most important questions teams can ask are, “What does our organization want our SV solution to look like?” and “What changes should we pursue at key milestones along our SV journey?” Teams that don’t ask these questions early and frequently in their journey and that don’t consider various scenarios will lag behind teams and their organizations that pursue SV progress by openly debating these questions.

 

Roles and Responsibilities

In a previous post, I pointed to the need to establish a maturity model. Within this model lies the development of roles, templates, processes and procedures that drive the scale organizations desire. Organizations that recognize the importance of establishing rules for delivering SV capability adopt SV more quickly with better alignment to desired business outcomes. These organizations define strategies and establish processes and procedures that address questions such as:

 

  • Who owns a given service?
  • How is the service federated and supported?
  • What criteria determine whether a service is managed through the service catalog?
  • What is the governance and support model that best suits the way we deliver SV projects?
  • How are skills, infrastructure, knowledge, maintenance and support managed and by whom?

 

Federation

Most organizations create some form of SV federation, but few examine the extent to which they should federate versus manage centrally. Fewer still create a single factory concept that delivers all aspects of SV to other departments. Establishing a federated model is important because it combines strength and scale with the flexibility of autonomy by creating natural divisions of work that maximize organizational investment. Using the list of functions below, think about your organizations and whether federating these functions would provide new benefits:

 

 

One approach to defining the most appropriate federation model is to align the functions listed above into a RACI model that maps to the existing organization. For example, skill development and self-learning might be the responsibility of an education department, whereas SV project and program management activities align with project management office functions. The RACI model drives the conversation about role identification and results in development of a potential execution model depicting the best way to support the SV-related activities.

 

Communities of Practice

More organizations are beginning to understand the value of implementing an online community of practice (aka learning network, domain or practice area) for sharing ideas and improving performance. People need a forum where members can ask questions, exchange ideas, learn from others, and mine SV intelligence to solve issues specific to the organization’s use of SV. In a community that’s limited to your organization, you and your colleagues can share and reuse proprietary information, governance processes and procedures, and sample SV patterns. The community of practice is an integral element of federation and self-learning.

 

As always, questions and comments are welcome.

 

Learn more about how CA Services helps customers with their Service Virtualization implementations.

 

Prior series posts:  Maximizing Your DevTest Investment on Your Way to SV MaturityMaking the Most of Your Service Virtualization Assets; Change Management: A Key Element of Your SV Strategy; SV Requires Transformation at Scale to Drive Maturity; On the Path to Service Virtualization Maturity: Measure Outcomes, Not Output

Hello Continuous Delivery practitioners! As CA World ’17 fast approaches, excitement is building.

If you plan to attend, please visit my colleague krath05 at the Agility Zone, or attend his session on aligning Agile and DevOps initiatives (see below). Also on hand, practice leads for our Continuous Delivery Services, my colleague Raja_Chockalingam and I SummerWeisberg will be hosting customer meetings.

We’re in for a leading-edge conference that’s all about removing barriers between your ideas and your desired business outcomes. Luminaries will share fresh perspectives and show the powerful features of CA Continuous Delivery solutions.

If you’re attending #CAWorld, check out the session list and plan ahead to get into your preferred sessions. Below is a preview of some of the hot topics I recommend. If you have any questions please contact Adam.Frary@ca.com.

 

Automation Tech Talk: Release Automation, Continuous Integration with an Eye on a Strategic DevOps Plan

Wellcare’s goal was to use CA Release Automation to automate software deployments. The company transformed release processes across 24,000 deployments by the end of 2017. This session covers Wellcare’s challenges and outcomes, including saving millions in release costs. An incremental, value-based roadmap and support from CA Services rewrote the way WellCare releases software.

Government in Your Hands: Using Digital to Reduce Costs and Improve the Citizen Experience

The GPM initiative was designed and developed by CA, based on challenges reported by citizens and governments in Brazil. GPM combines CA products and services to establish and provide a better connection between government agencies and their constituents, reducing costs and improving the user experience.

Case Study: Building a Wall Around Sensitive Customer Data: Strategic Insights from Economical Insurance Using CA Test Data Manager and Services in a Guide Wire Environment

Economical Insurance introduced CA Test Data Manager to mask and protect customer data and improve data quality and quantity through automated synthetic data generation. The ability to create robust, on-demand, highly customizable data generated cost savings by minimizing time between request and consumption across the company’s continuous delivery pipeline. CA Services established a Test Data Management (TDM) Centre of Enablement and grew Economical’s TDM team to enable self-sufficiency.

Assess and Guide Your DevOps Journey Leveraging Industry-Leading DevOps Research

DORA, a group of preeminent DevOps researchers, scientists and experts, is the force behind the annual State of DevOps Report. CA has partnered with DORA to offer a unique assessment service for organizations in any stage of DevOps maturity. By leveraging DORA’s expertise and research, the assessment service can help you understand the strengths and weaknesses in your DevOps program, helping you craft a roadmap for achieving your DevOps objectives. You will gain an understanding of how the assessment works and how to create a roadmap to more fully integrate all levels of testing, including security, into your secure software development lifecycle.

Accelerate Your Plans to Become a Modern Software Factory by Aligning Agile and DevOps Initiatives

Initiatives dedicated to Agile and DevOps are largely run on different cadences with sometimes competing objectives. Each transformation needs the other to be successful, and neither transformation can meet its objectives without being aligned with the other. In this session we will share real experiences where we challenged customers to align these efforts and the business results that occurred.

Speaker: Thomas Krall

 

For related information, check out the #CASERVICES Continuous Delivery blog series featuring a number of posts from J_NeSmith.