Why Unit Testing is Important

Whenever a new application is in development, unit testing is a vital part of the process and is typically performed by the developer. During this process, sections of code are isolated at a time and are systematically checked to ensure correctness, efficiency, and quality. There are numerous benefits to unit testing, several of which are outlined below.

1. Maximizing Agile Programming and Refactoring

During the coding process, a programmer has to keep in mind a myriad of factors to ensure that the final product correct and as lightweight, as is possible for it to be. However, the programmer also needs to make certain that if changes become necessary, refactoring can be safely and easily done.

Unit testing is the simplest way to assist in making for agile programming and refactoring because the isolated sections of code have already been tested for accuracy and help to minimize refactoring risks.

2. Find and Eliminate Any Bugs Early in the Process

Ultimately, the goal is to find no bugs and no issues to correct, right? But unit testing is there to ensure that any existing bugs are found early on so that they can be addressed and corrected before additional coding is layered on. While it might not feel like a positive thing to have a unit test reveal a problem, it’s good that it’s catching the issue now so that the bug doesn’t affect the final product.

3. Document Any and All Changes

Unit testing provides documentation for each section of coding that has been separated, allowing those who haven’t already directly worked with the code to locate and understand each individual section as necessary. This is invaluable in helping developers understand unit APIs without too much hassle.

4. Reduce Development Costs

As one can imagine, fixing problems after the product is complete is both time-consuming and costly. Not only do you have to sort back through a fully coded application’s worth of material, any bugs which may have been compounded and repeated throughout the application. Unit testing helps not only limit the amount of work that needs to be done after the application is completed it also reduces the time it takes to fix errors because it prevents developers from having to fix the same problem more than once.

5. Assists in Planning

Thanks to the documentation aspect of unit testing, developers are forced to think through the design of each individual section of code so that its function is determined before it’s written. This can prevent redundancies, incomplete sections, and nonsensical functions because it encourages better planning. Developers who implement unit testing in their applications will ultimately improve their creative and coding abilities thanks to this aspect of the process.

Conclusion

Unit testing is absolutely vital to the development process. It streamlines the debugging process and makes it more efficient, saves on time and costs for the developers, and even helps developers and programmers improve their craft through strategic planning. Without unit testing, people would inevitably wind up spending far more time on correcting problems within the code, which is both inefficient and incredibly frustrating. Using unit tests is a must in the development of any application.

Related References

How to Check Linux Version?

While researching an old install for an upgrade system requirement compliance, I discovered that I b=need to validate which Linux version was installed.  So, here is a quick note on the command I used to validate which version of Linux was installed.

Command

  • cat /etc/os-release

Example Output of the command “os-release” file

ETL Vs. EAI

Over recent years, business enterprises relying on accurate and consistent data to make informed decisions have been gravitating towards integration technologies. The subject of Enterprise Application Integration (EAI) and Extraction, Transformation & Loading (ETL) lately seems to pop up in most Enterprise Information Management conversations.

From an architectural perspective, both techniques share a striking similarity. However, they essentially serve different purposes when it comes to information management. We’ve decided to do a little bit of research and establish the differences between the two integration technologies.

Enterprise Application Integration

EAI is an integration framework that consists of technologies and services, allowing for seamless coordination of vital systems, processes, as well as databases across an enterprise.

Simply put, this integration technique simplifies and automates your business processes to a whole new level without necessarily having to make major changes to your existing data structures or applications.

With EAI, your business can integrate essential systems like supply chain management, customer relationship management, business intelligence, enterprise resource planning, and payroll. Well, the linking of these apps can be done at the back end via APIs or the front end GUI.

The systems in question might use different databases, computer languages, exist on different operating systems or older systems that might not be supported by the vendor anymore.

The objective of EAI is to develop a single, unified view of enterprise data and information, as well as ensure the information is correctly stored, transmitted, and reflected. It enables existing applications to communicate and share data in real-time.

Extraction, Transformation & Loading

The general purpose of an ETL system is to extract data out of one or more source databases and then transfer it to a target destination system for better user decision making. Data in the target system is usually presented differently from the sources.

The extracted data goes through the transformation phase, which involves checking for data integrity and converting the data into a proper storage format or structure. It is then moved into other systems for analysis or querying function.

With data loading, it typically involves writing data into the target database destination like data warehouse and operational data store.

ETL can integrate data from multiple systems. The systems we’re talking about in this case are often hosted on separate computer hardware or supported by different vendors.

Differences between ETL and EAI

EAI System

  • Retrieves small amounts of data in one operation and is characterized by a high number of transactions
  • EAI system is utilized for process optimization and workflow
  • The system does not require user involvement after it’s implemented
  • Ensures a bi-directional data flow between the source and target applications
  • Ideal for real-time business data needs
  • Limited data validation
  • Integrating operations is pull, push, and event-driven.

ETL System

  • It is a one-way process of creating a historical record from homogeneous or heterogeneous sources
  • Mainly designed to process large batches of data from source systems
  • Requires extensive user involvement
  • Meta-data driven complex transformations
  • Integrating operation is a pull, query-driven
  • Supports proper profiling and data cleaning
  • Limited messaging capabilities

Both integration technologies are an essential part of EIM, as they provide strong capabilities for business intelligence initiatives and reporting. They can be used differently and sometimes in mutual consolidation.

Personas Vs. Roles – What Is The Difference?

Personas and roles are user modeling approaches that are applied in the early stages of system development or redesign. They drive the design decision and allows programmers and designers to place everyday user needs at the forefront of their system development journey in a user-centered design approach.

Personas and user roles help improve the quality of user experience when working with products that require a significant amount of user interaction. But there is a distinct difference between technology personas vs. roles. What then exactly is a persona? What are user roles in system development? And, how does persona differ from user roles?

Let’s see how these two distinct, yet often confused, user models fit in a holistic user-centered design process and how you can leverage them to identify valuable product features.

Technology Personas Vs. Roles – The Most Relevant Way to Describe Users

In software development, a user role describes the relationship between a user type and a software tool. It is generally the user’s responsibility when using a system or the specific behavior of a user who is participating in a business process. Think of roles as the umbrella, homogeneous constructs of the users of a particular system. For instance, in an accounting system, you can have roles such as accountant, cashier, and so forth.

However, by merely using roles, system developers, designers, and testers do not have sufficient information to conclusively make critical UX decisions that would make the software more user-centric, and more appealing to its target users.

This lack of understanding of the user community has led to the need for teams to move beyond role-based requirements and focus more on subsets of the system users. User roles can be refined further by creating “user stand-ins,” known as personas. By using personas, developers and designers can move closer to the needs and preferences of the user in a more profound manner than they would by merely relying on user roles.

In product development, user personas are an archetype of a fictitious user that represents a specific group of your typical everyday users. First introduced by Alan Cooper, personas help the development team to clearly understand the context in which the ideal customer interacts with a software/system and helps guide the design decision process.

Ideally, personas provide team members with a name, a face, and a description for each user role. By using personas, you’re typically personalizing the user roles, and by so doing, you end up creating a lasting impression on the entire team. Through personas, team members can ask questions about the users.

The Benefits of Persona Development

Persona development has several benefits, including:

  • They help team members have a consistent understanding of the user group.
  • They provide stakeholders with an opportunity to discuss the critical features of a system redesign.
  • Personas help designers to develop user-centric products that have functions and features that the market already demands.
  • A persona helps to create more empathy and a better understanding of the person that will be using the end product. This way, the developers can design the product with the actual user needs in mind.
  • Personas can help predict the needs, behaviors, and possible reactions of the users to the product.

What Makes Up a Well-Defined Persona?

Once you’ve identified user roles that are relevant to your product, you’ll need to create personas for each. A well-defined persona should ideally take into consideration the needs, goals, and observed behaviors of your target audience. This will influence the features and design elements you choose for your system.

The user persona should encompass all the critical details about your ideal user and should be presented in a memorable way that everyone in the team can identify with and understand. It should contain four critical pieces of information.

1. The header

The header aid in improving memorability and creating a connection between the design team and the user. The header should include:

  • A fictional name
  • An image, avatar or a stock photo
  • A vivid description/quote that best describes the persona as it relates to the product.

2. Demographic Profile

Unlike the name and image, which might be fictitious, the demographic profile includes factual details about the ideal user. The demographic profile includes:

  • Personal background: Age, gender, education, ethnicity, persona group, and family status
  • Professional background: Occupation, work experience, and income level.
  • User environment. It represents the social, physical, and technological context of the user. It answers questions like: What devices do the user have? Do they interact with other people? How do they spend their time?
  • Psychographics: Attitudes, motivations, interests, and user pain points.

3. End Goal(s)

End goals help answer the questions: What problems or needs will the product solution to the user? What are the motivating factors that inspire the user’s actions?

4. Scenario

This is a narrative that describes how the ideal user would interact with your product in real-life to achieve their end goals. It should explain the when, the where, and the how.

Conclusion

For a truly successful user-centered design approach, system development teams should use personas to provide simple descriptions of key user roles. While a distinct difference exists in technology personas vs. roles, design teams should use the two user-centered design tools throughout the project to decide and evaluate the functionality of their end product. This way, they can deliver a useful and usable solution to their target market.

denodo SQL Type Mapping

denodo 7.0 saves some manual coding when building the ‘Base Views’ by performing some initial data type conversions from ANSI SQL type to denodo Virtual DataPort data types. So, where is a quick reference mapping to show to what the denodo Virtual DataPort Data Type mappings are:

ANSI SQL types To Virtual DataPort Data types Mapping

ANSI SQL TypeVirtual DataPort Type
BIT (n)blob
BIT VARYING (n)blob
BOOLboolean
BYTEAblob
CHAR (n)text
CHARACTER (n)text
CHARACTER VARYING (n)text
DATElocaldate
DECIMALdouble
DECIMAL (n)double
DECIMAL (n, m)double
DOUBLE PRECISIONdouble
FLOATfloat
FLOAT4float
FLOAT8double
INT2int
INT4int
INT8long
INTEGERint
NCHAR (n)text
NUMERICdouble
NUMERIC (n)double
NUMERIC (n, m)double
NVARCHAR (n)text
REALfloat
SMALLINTint
TEXTtext
TIMESTAMPtimestamp
TIMESTAMP WITH TIME ZONEtimestamptz
TIMESTAMPTZtimestamptz
TIMEtime
TIMETZtime
VARBITblob
VARCHARtext
VARCHAR ( MAX )text
VARCHAR (n)text

ANSI SQL Type Conversion Notes

  • The function CAST truncates the output when converting a value to a text, when these two conditions are met:
  1. You specify a SQL type with a length for the target data type. E.g. VARCHAR(20).
  2. And, this length is lower than the length of the input value.
  • When casting a boolean to an integertrue is mapped to 1 and false to 0.

Related References

denodo 7.0 Type Conversion Functions

Analytics Model Types

Every day, businesses are creating around 2.5 quintillion bytes of data, making it increasingly difficult to make sense and get valuable information from this data. And while this data can reveal a lot about customer bases, users, and market patterns and trends, if not tamed and analyzed, this data is just useless. Therefore, for organizations to realize the full value of this big data, it has to be processed. This way, businesses can pull powerful insights from this stockpile of bits.

And thanks to artificial intelligence and machine learning, we can now do away with mundane spreadsheets as a tool to process data. Through the various AI and ML-enabled data analytics models, we can now transform the vast volumes of data into actionable insights that businesses can use to scale operational goals, increase savings, drive efficiency and comply with industry-specific requirements.

We can broadly classify data analytics into three distinct models:

  • Descriptive
  • Predictive
  • Prescriptive

Let’s examine each of these analytics models and their applications.

Descriptive Analytics. A Look Into What happened?

How can an organization or an industry understand what happened in the past to make decisions for the future? Well, through descriptive analytics.

Descriptive analytics is the gateway to the past. It helps us gain insights into what has happened. Descriptive analytics allows organizations to look at historical data and gain actionable insights that can be used to make decisions for “the now” and the future, upon further analysis.

For many businesses, descriptive analytics is at the core of their everyday processes. It is the basis for setting goals. For instance, descriptive analytics can be used to set goals for better customer experience. By looking at the number of tickets raised in the past and their resolutions, businesses can use ticketing trends to plan for the future.

Some everyday applications of descriptive analytics include:

  • Reporting of new trends and disruptive market changes
  • Tabulation of social metrics such as the number of tweets, followers gained over some time, or Facebook likes garnered on a post.
  • Summarizing past events such as customer retention, regional sales, or marketing campaigns success.

To enhance their decision-making capabilities businesses have to reduce the data further to allow them to make better future predictions. That’s where predictive analytics comes in.

Predictive Analytics takes Descriptive Data One Step Further

Using both new and historical data sets predictive analytics to help businesses model and forecast what might happen in the future. Using various data mining and statistical algorithms, we can leverage the power of AI and machine learning to analyze currently available data and model it to make predictions about future behaviors, trends, risks, and opportunities. The goal is to go beyond the data surface of “what has happened and why it has happened” and identify what will happen.

Predictive data analytics allows organizations to be prepared and become more proactive, and therefore make decisions based on data and not assumptions. It is a robust model that is being used by businesses to increase their competitiveness and protect their bottom line.

The predictive analytics process is a step-by-step process that requires analysts to:

  • Define project deliverables and business objectives
  • Collect historical and new transactional data
  • Analyze the data to identify useful information. This analysis can be through inspection, data cleaning, data transformation, and data modeling.
  • Use various statistical models to test and validate the assumptions.
  • Create accurate predictive models about the future.
  • Deploy the data to guide your day-to-data actions and decision-making processes.
  • Manage and monitor the model performance to ensure that you’re getting the expected results.

Instances Where Predictive Analytics Can be Used

  • Propel marketing campaigns and reach customer service objectives.
  • Improve operations by forecasting inventory and managing resources optimally.
  • Fraud detection such as false insurance claims or inaccurate credit applications
  • Risk management and assessment
  • Determine the best direct marketing strategies and identify the most appropriate channels.
  • Help in underwriting by predicting the chances of bankruptcy, default, or illness.
  • Health care: Use predictive analytics to determine health-related risk and make informed clinical support decisions.

Prescriptive Analytics: Developing Actionable Insights from Descriptive Data

Prescriptive analytics helps us to find the best course of action for a given situation. By studying interactions between the past, the present, and the possible future scenarios, prescriptive analytics can provide businesses with the decision-making power to take advantage of future opportunities while minimizing risks.

Using Artificial Intelligence (AI) and Machine Learning (ML), we can use prescriptive analytics to automatically process new data sets as they are available and provide the most viable decision options in a manner beyond any human capabilities.

When effectively used, it can help businesses avoid the immediate uncertainties resulting from changing conditions by providing them with fact-based best and worst-case scenarios. It can help organizations limit their risks, prevent fraud, fast-track business goals, increase operational efficiencies, and create more loyal customers.

Bringing It All Together

As you can see, different big data analytics models can help you add more sense to raw, complex data by leveraging AI and machine learning. When effectively done, descriptive, predictive, and prescriptive analytics can help businesses realize better efficiencies, allocate resources more wisely, and deliver superior customer success most cost-effectively. But ideally, if you wish to gain meaningful insights from predictive or even prescriptive analytics, you must start with descriptive analytics and then build up from there.

Windows – Host File Location

Occasionally, I need to update the windows hosts files, but I seem to have a permanent memory block where the file is located. I have written the location into numerous documents, however, every time I need to verify and or up the host file I need to look up the path. Today, when I went to look it up I discovered that I had not actually posted it to this blog site. So, for future reference, I am adding it now.

Here is the path of the Windows Hosts file, the drive letter may change depending on the drive letter on which the Windows install was performed.

C:\WINDOWS\system32\drivers\etc