The subject matter described herein relates to database configurations for analytics and visualization of data.
Different companies can manage human resources data, such as employee data, in different ways. For example, they can store their human resources data in different types of databases, and in different formats, than one another. Additionally, different companies can store different types of employee data than one another. For example, many companies may store data about who is employed at a given time and their respective salaries, but companies may or may not store data about employee ages. Differences between human resources data can pose technological barriers to analyzing such data.
Automated database configurations for analytics and visualization of human resources data are provided herein.
Under some aspects, a method is provided that includes receiving, by an automated data configuration engine operating on one or more data processors, a first set of files from a plurality of respective companies. The files of the first set of files respectively can include unique identifiers for employees employed in respective jobs at respective ones of the companies on respective first dates. At least some of the files of the first set of files can have different formats than one another. The method also can include receiving, by the automated data configuration engine, a second set of files from the plurality of respective companies. The files of the second set of files respectively can include unique identifiers for employees employed in respective jobs at respective ones of the companies on respective second dates. At least some of the files of the second set of files can have different formats than one another. The method also can include parsing, by the automated data configuration engine, each file of the first set of files to extract portions of that file corresponding to the unique identifiers of employees for the employees employed in the respective jobs at the respective ones of the companies on the respective first dates. The method also can include parsing, by the automated data configuration engine, each file of the second set of files to extract portions of that file corresponding to the unique identifiers of employees for the employees employed in the respective jobs at the respective ones of the companies on the respective second dates. The method also can include generating, by the automated data configuration engine, a first set of database entries for each of the respective companies. Each database entry of the first set of database entries can include an extracted portion of the files of the first set of files and the respective first date. The method also can include generating, by the automated data configuration engine, a second set of database entries for each of the respective companies. Each database entry of the second set of database entries can include an extracted portion of the files of the second set of files and the respective second date. The method also can include obtaining, by the automated data configuration engine, employee termination data for each of the respective companies; and generating, by the automated data configuration engine, a third set of database entries for each of the companies. Each database entry of the third set of database entries can include the employee termination data of the respective company.
In some configurations, files of the first and second sets of files include flat files.
In some configurations, the first set of database entries for each company respectively includes a first column including the unique identifiers for employees employed by that company on the respective first dates and a second column including the respective first dates. The second set of database entries for each company respectively can include a third column including the unique identifiers for employees employed by that company on the respective second dates and a fourth column including the respective second dates. The first, second, third, and fourth columns can be located in the same positions for each respective company.
In some configurations, at least some files of the first and second files further include, for each employee, one or more employee descriptors selected from the group consisting of an identifier of the job of that employee, an age of that employee, a tenure of that employee at the respective company, a salary of that employee, an employment type of that employee, and a potential rating of that employee. The method further can include generating, by the automated data configuration engine, a fourth set of database entries for each of the companies. Each database entry of the fourth set of database entries can include one of the one or more employee descriptors. Optionally, the method further includes selecting, by an analytics engine operating on one or more data processors, based on the third and fourth sets of database entries, one or more of the employee descriptors as being relatively highly correlated with employee departure from the company. The method further can include generating, by the analytics engine, based on the third and fourth sets of database entries, a value representing a power of the one or more employee descriptors for predicting employee departure from the company. In some configurations, the method further can include generating, by a visualization engine operating on one or more data processors, a graphical representation of the selected one or more of the employee descriptors overlaid with the respective powers of those employee descriptors. In some configurations, the analytics engine includes a machine learning model trained using a training set of database entries based on portions of the third and fourth sets of database entries, and a test set of database entries based on other portions of the third and fourth sets of database entries.
Under another aspect, a computer system is provided that includes at least one data processor; and memory storing instructions which, when executed by the at least one data processor, result in operations. The operations can include receiving, by an automated data configuration engine, a first set of files from a plurality of respective companies. The files of the first set of files respectively can include unique identifiers for employees employed in respective jobs at respective ones of the companies on respective first dates. At least some of the files of the first set of files can have different formats than one another. The operations further can include receiving, by the automated data configuration engine, a second set of files from the plurality of respective companies. The files of the second set of files respectively can include unique identifiers for employees employed in respective jobs at respective ones of the companies on respective second dates. At least some of the files of the second set of files can have different formats than one another. The operations further can include parsing, by the automated data configuration engine, each file of the first set of files to extract portions of that file corresponding to the unique identifiers of employees for the employees employed in the respective jobs at the respective ones of the companies on the respective first dates. The operations further can include parsing, by the automated data configuration engine, each file of the second set of files to extract portions of that file corresponding to the unique identifiers of employees for the employees employed in the respective jobs at the respective ones of the companies on the respective second dates. The operations further can include generating, by the automated data configuration engine, a first set of database entries for each of the respective companies. Each database entry of the first set of database entries can include an extracted portion of the files of the first set of files and the respective first date. The operations further can include generating, by the automated data configuration engine, a second set of database entries for each of the respective companies. Each database entry of the second set of database entries can include an extracted portion of the files of the second set of files and the respective second date. The operations further can include obtaining, by the automated data configuration engine, employee termination data for each of the respective companies; and generating, by the automated data configuration engine, a third set of database entries for each of the companies. Each database entry of the third set of database entries can include the employee termination data of the respective company.
In some configurations, files of the first and second sets of files include flat files.
In some configurations, the first set of database entries for each company respectively includes a first column including the unique identifiers for employees employed by that company on the respective first dates and a second column including the respective first dates. The second set of database entries for each company respectively can include a third column including the unique identifiers for employees employed by that company on the respective second dates and a fourth column including the respective second dates. The first, second, third, and fourth columns can be located in the same positions for each respective company.
In some configurations, at least some files of the first and second files further can include, for each employee, one or more employee descriptors selected from the group consisting of an identifier of the job of that employee, an age of that employee, a tenure of that employee at the respective company, a salary of that employee, an employment type of that employee, and a potential rating of that employee. The instructions, when executed by the at least one data processor, further can result in operations that include generating, by the automated data configuration engine, a fourth set of database entries for each of the companies. Each database entry of the fourth set of database entries can include one of the one or more employee descriptors. The instructions, when executed by the at least one data processor, further can result in operations that include selecting, by an analytics engine, based on the third and fourth sets of database entries, one or more of the employee descriptors as being relatively highly correlated with employee departure from the company. The operations further can include generating, by the analytics engine, based on the third and fourth sets of database entries, a value representing a power of the one or more employee descriptors for predicting employee departure from the company. Optionally, the instructions, when executed by the at least one data processor, further result in operations that include generating, by a visualization engine, a graphical representation of the selected one or more of the employee descriptors overlaid with the respective powers of those employee descriptors. Optionally, the analytics engine can include a machine learning model trained using a training set of database entries based on portions of the third and fourth sets of database entries, and a test set of database entries based on other portions of the third and fourth sets of database entries.
Under yet another aspect, a non-transitory computer-readable medium is provided storing instructions which, when executed by at least one data processor of a computer system, result in operations. The operations can include receiving, by an automated data configuration engine, a first set of files from a plurality of respective companies. The files of the first set of files respectively can include unique identifiers for employees employed in respective jobs at respective ones of the companies on respective first dates. At least some of the files of the first set of files can have different formats than one another. The operations further can include receiving, by the automated data configuration engine, a second set of files from the plurality of respective companies. The files of the second set of files respectively can include unique identifiers for employees employed in respective jobs at respective ones of the companies on respective second dates. At least some of the files of the second set of files can have different formats than one another. The operations further can include parsing, by the automated data configuration engine, each file of the first set of files to extract portions of that file corresponding to the unique identifiers of employees for the employees employed in the respective jobs at the respective ones of the companies on the respective first dates. The operations further can include parsing, by the automated data configuration engine, each file of the second set of files to extract portions of that file corresponding to the unique identifiers of employees for the employees employed in the respective jobs at the respective ones of the companies on the respective second dates. The operations further can include generating, by the automated data configuration engine, a first set of database entries for each of the respective companies. Each database entry of the first set of database entries can include an extracted portion of the files of the first set of files and the respective first date. The operations further can include generating, by the automated data configuration engine, a second set of database entries for each of the respective companies. Each database entry of the second set of database entries can include an extracted portion of the files of the second set of files and the respective second date. The operations further can include obtaining, by the automated data configuration engine, employee termination data for each of the respective companies; and generating, by the automated data configuration engine, a third set of database entries for each of the companies. Each database entry of the third set of database entries can include the employee termination data of the respective company.
In some configurations, files of the first and second sets of files include flat files.
In some configurations, the first set of database entries for each company respectively includes a first column including the unique identifiers for employees employed by that company on the respective first dates and a second column including the respective first dates. The second set of database entries for each company respectively can include a third column including the unique identifiers for employees employed by that company on the respective second dates and a fourth column including the respective second dates. The first, second, third, and fourth columns can be located in the same positions for each respective company.
In some configurations, at least some files of the first and second files further can include, for each employee, one or more employee descriptors selected from the group consisting of an identifier of the job of that employee, an age of that employee, a tenure of that employee at the respective company, a salary of that employee, an employment type of that employee, and a potential rating of that employee. The instructions, when executed by the at least one data processor, further can result in operations that include generating, by the automated data configuration engine, a fourth set of database entries for each of the companies. Each database entry of the fourth set of database entries can include one of the one or more employee descriptors. The instructions, when executed by the at least one data processor, further can result in operations that include selecting, by an analytics engine, based on the third and fourth sets of database entries, one or more of the employee descriptors as being relatively highly correlated with employee departure from the company. The operations further can include generating, by the analytics engine, based on the third and fourth sets of database entries, a value representing a power of the one or more employee descriptors for predicting employee departure from the company. Optionally, the instructions, when executed by the at least one data processor, further result in operations that include generating, by a visualization engine, a graphical representation of the selected one or more of the employee descriptors overlaid with the respective powers of those employee descriptors. Optionally, the analytics engine can include a machine learning model trained using a training set of database entries based on portions of the third and fourth sets of database entries, and a test set of database entries based on other portions of the third and fourth sets of database entries.
Non-transitory computer program products (i.e., physically embodied computer program products) are also described that store instructions, which when executed by one or more data processors of one or more computing systems, cause at least one data processor to perform operations herein. Similarly, computer systems are also described that can include one or more data processors and memory coupled to the one or more data processors. The memory can temporarily or permanently store instructions that cause at least one processor to perform one or more of the operations described herein. In addition, process flows can be implemented by one or more data processors either within a single computing system or distributed among two or more computing systems. Such computing systems can be connected and can exchange data and/or commands or other instructions or the like via one or more connections, including but not limited to a connection over a network (e.g., the Internet, a wireless wide area network, a local area network, a wide area network, a wired network, or the like), via a direct connection between one or more of the multiple computing systems, etc.
The subject matter described herein provides many technical advantages. For example, the present subject matter can provide automated configuration of disparate employee data from different employers into a common database storage format. Such data aggregation and configuration facilitates analysis and visualization of the data, e.g., using a machine learning model, for example to identify employees who are likely to leave their respective employer in the near future.
The details of one or more variations of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features and advantages of the subject matter described herein will be apparent from the description and drawings, and from the claims.
Like reference symbols in the various drawings indicate like elements.
The systems, computer-readable media, and methods provided herein can provide automated database configuration for analytics and visualization of human resources data. For example, human resources data from multiple companies can be automatically parsed and portions thereof can be extracted into a common database, even though such data can have disparate formats as the companies can store human resources data differently than one another. The human resources data can include, for example, data describing individuals who are employed by a company on a particular date or dates, and can be extracted into the common database periodically, e.g., on a monthly basis. Analytics can be performed on such data, for example so as to identify correlations between certain employee descriptions (e.g., employee age, tenure, or salary) and termination of employees from respective companies, and so as to determine the predictive power of such employee descriptions for predicting employee departure from a company (or employee “flight risk”). Graphical representations of the results of such analytics also can be generated.
System 100 can correspond to a human resources computing system, e.g., a computing system with certain components maintained by one or more companies (which also can be referred to as an employer) and/or maintained by a third party, and can be configured so as to collect, automatically configure, analyze, and visualize data associated with employment of the employees by the employer in a manner such as provided herein. For example, in one exemplary configuration, one or more of client devices 110 corresponds to a company node including a user interface (UI) via which a company can interact with engines running on processing system 150 so as to analyze and visualize human resources data; and server(s) 140 correspond to an analytics hub including a processing system 150 configured to implement automated data configuration engine 151, analytics engine 152, and visualization engine 153 which interface with data store(s) 170 and/or respond to user input at the respective UIs of company nodes 110. Client device(s) 110 (e.g., company nodes) each can include, for example, a respective central processing unit and a computer-readable medium storing instructions for causing the respective central processing unit to perform one or more operations such as provided herein. For example, a computer-readable medium can store instructions causing the central processing unit of client device(s) 110 to receive user input, to interface with automated data configuration engine 151, analytics engine 152, and/or visualization engine 153, and to display graphical representations of the result of analysis of human resources data of the company.
Server(s) 140 can include automated data configuration engine 151 configured so as to receive (e.g., repeatedly receive) and parse human resources data from respective client devices 110, to extract certain data therefrom for generating sets of database entries describing employees employed by the companies on certain dates, and to generate and store employee termination data based on such sets of database entries. Server(s) 140 also can include analytics engine 152 configured so as to analyze the employee termination data, e.g., so as to identify certain employee data that may be highly correlated with employee departures from the company and to quantify the predictive strength of such correlations for future employee departures; and visualization engine 153 configured so as to generate graphical representations of such correlations, and the predictive strengths thereof.
Process flow diagram 200 illustrated in
The first and second sets of files can include human resources data for each of the companies, optionally on different dates than one another. For example, the files of the first set of files respectively can include unique identifiers for employees employed in respective jobs at respective ones of the companies on respective first dates, and the files of the second set of files respectively can include unique identifiers for employees employed in respective jobs at respective ones of the companies on respective second dates. Note that based on changes in employment (which also can be referred to as headcount) over time at the company, the files received from a given company at different times than one another can reflect the departure of employees from that company, e.g., between one date or dates and another date or dates. Additionally, note that the human resources data received from one company may not necessarily be formatted in the same way as the human resources data received from another company. For example, at least some of the files of the first set of files can have different formats than one another and/or at least some of the files of the second set of files have different formats than one another. Optionally, files of the first and second sets of files can include flat files, e.g., files including unstructured tables of human resources data. Within such a flat file, an arbitrary column can include unique identifiers for employees employed in respective jobs at the company from which that file is received. Additionally, or alternatively, the files of the first and second sets of files can include multidimensional data stored in any suitable format(s), which can be referred to as a cube file.
Optionally, the file (e.g., flat file or cube file) can include a date on which all of those employees were employed by the company, or can include a column or other format of dates on which each of those respectively employed by the company. Alternatively, the date or dates on which the employees were employed by the company can be separately transmitted to automated data engine 151 or otherwise known by the automated data engine. For example, automated data engine 151 can treat the date on which it receives the file as being the date on which the employees are respectively employed.
Additionally, or alternatively, the file optionally can also include one or more other employee descriptors, such as an identifier of the job of that employee (e.g., a value representing the employee's job or a job family of that job), an age of that employee, a tenure of that employee at the respective company (e.g., how long that employee has worked at the company, or in the job), a salary of that employee, an employment type of that employee (e.g., full time or part time), and a potential rating of that employee (e.g., a value representing whether the employee is considered to have a relatively high potential for progressing in the company, a relatively average potential, or a relatively low potential). As described in greater below, analytics can be performed so as to identify correlations between such employee descriptors and employee departure from respective companies. Such employee descriptors can be provided within the file, e.g., as respective columns within a flat file or cube file, or otherwise transmitted to automated data configuration engine 151.
Process flow diagram 200 illustrated in
Process flow diagram 200 illustrated in
In some configurations, each company can have a designated database table that includes respective columns for unique identifiers of employees and dates that are located in positions that are different from those in another company's database table. The automatic data configuration engine can standardize the column positions so as to facilitate further processing. As an example, Company A may have its unique identifiers of employees and dates positioned in columns 20 and 21, while company B may have the two columns located in columns 10 and 35. The automated data configuration engine can re-locate the two columns to a fixed location for both companies, e.g., columns 1 and 2 in a manner such as illustrated in
Optionally, in configurations in which the files received from the companies include one or more employee descriptors such as described herein or in which automated data configuration 151 otherwise receives such descriptors, the automated data configuration engine can be configured so as to generate a set of database entries for each of the companies that includes the employee descriptors. For example, automated data configuration engine 151 can generate, within a table corresponding to a company, columns including respective ones of the employee descriptors (e.g., a column for employee age, another column for employee salary, and the like). Note that employee descriptors can change over time, e.g., as an employee's salary, age, or employment status changes. Automated data configuration engine 151 can generate different database entries for the employee descriptors corresponding to different times than one another, e.g., can generate in a company's table a column or set of columns corresponding to employee descriptors at the first date or dates, and can generate in the company's table another column or set of columns corresponding to employee descriptors at the second date or dates.
Process flow diagram 200 illustrated in
Process flow diagram 200 illustrated in
System 100 illustrated in
In some configurations, the predictive power of an influencer (such as an employee descriptor), or the proportion of the target's variability, can be a value between 0 and 1. The higher the value, the more accurately the influencer can predict the target (such as employee termination). Each influencer can include a set of influencer categories. For example, the influencer (employee descriptor) of employee age can have categories such as 20-29 years, 30-39 years, and the like, and the influencer (employee descriptor) of employment type can have categories such as full-time and part-time. The predictive power of the influencer is defined by the aggregated contributions of the categories. The individual category contribution is measured by the category importance, which can be defined as the overall influence by a category on the target variable. In turn, the category importance can be defined by the category profit and the category frequency. The category profit can be defined as a measure of information gain over random guess; a positive profit exerts a positive influence on the target variable, and a negative profit exerts a negative influence on the target variable. The category frequency can represent the number of items included in a particular category.
The predictive power of an influencer can correspond to the capacity (or the proportion of the target's variability) to explain the target variable, e.g., likelihood of employee termination. The predictive power is a value between 0 (corresponding to no model) and 1 (corresponding to a perfect model), in which the higher the value, the greater the capacity. Each employee descriptor (e.g., age, employment status, or other employee descriptors such as provided herein) can contribute to a part of the overall predictive power. The higher the significance, the more the employee descriptor can explain the target variable, e.g., likelihood of employee termination. In one nonlimiting example, age can have a significance of 0.1795, meaning that age has 17.95% of the predictive power. The significance of all influencers can sum to 1 (corresponding to 100% of the predictive power). Each influencer can include, or can consist of, a set of influencer categories, each of which is measured by category importance, e.g., a value (positive or negative) representing the contribution of the significance of the influencer. Category importance can have two components: net profit and frequency. Net profit can represent the “lift” for the target variable, and frequency can correspond to the percentage of elements in the category. For example, ages between 35 and 44 can have a positive contribution of 0.1 and a population of 19.1%; ages between 20 and 30 can have a negative contribution of −0.05 and a population of 33.1%; and the sum of the category profit can be equal to 0.
In aspects provided herein, influencers and their categories can be combined into a single view (e.g., shown in a GUI of client device 110) seamlessly so as to provide visual effectiveness. Illustratively, an influencer and its categories can be combined. Each influencer (I) can be defined by its constituent influencer category (IC). Each IC can have two components, category profit (CP) and category frequency (CF). CP can be a measure of “lift” or “gain” in prediction accuracy, and CF can be the element count of the category. The two quantities CP and CF define the category importance (CI of the category). CP and CF can be related non-monotonically, For example, a high profit category may have a low category frequency, and vice versa. The two quantities can be visualized together for a category, e.g., by visualization engine 153. For visualization, CI can be used for positioning chart elements; for example, the higher the measure, the more prominent the position of the chart element can be (e.g., column chart, or horizontal bar). CI can be expressed as:
CI=CP*CF/NC (1)
where CP corresponds to normal profit and CF corresponds to the bin frequency, and NC is a normalization constant. NC can be expressed as:
NC=TF*(1−TF) (2)
where TF is the target frequency, which is the overall count of the target variable regardless of the category.
CP is a measure of information gain, or Profit, for a category C on predicting the target variable over a random guess. For visualization, CP can be used to highlight the contributions, e.g., with color and/or shading. In some configurations, only the CP with the highest gain is displayed. CP for a category C can be expressed as:
CP(C)=Profit(TC2)*P(TC2|C)+Profit(TC1)*P(TC1|C) (3)
where
Profit(TC1)*proba(TC1)+Profit(TC2)*proba(TC2) (4)
and where TC1 corresponds to target class 1, TC2 corresponds to target class 2, Profit corresponds to measure of information gain, P corresponds to conditional probability, C corresponds to category, and proba corresponds to probability measure.
Category frequency (CF) represents the number of items included in a category C. For visualization, CF can be used to mark the proportion on the chart element. CF for a category C can be expressed as
CF(C)=# of C elements/total # of elements (5)
where the total # of element is a union of all elements of all categories.
For example,
Accordingly, system 100 can include at least one data processor (e.g., processor(s) of client devices 110 and processing system 150) and memory (e.g., non-transitory computer-readable media of client devices 110 and processing system 150) storing instructions which, when executed by the at least one data processor, result in operations including receiving, by an automated data configuration engine, a first set of files from a plurality of respective companies. The files of the first set of files respectively can include unique identifiers for employees employed in respective jobs at respective ones of the companies on respective first dates, and at least some of the files of the first set of files have different formats than one another. The operations also can include receiving, by the automated data configuration engine, a second set of files from the plurality of respective companies. The files of the second set of files respectively can include unique identifiers for employees employed in respective jobs at respective ones of the companies on respective second dates, and at least some of the files of the second set of files have different formats than one another.
The operations also can include parsing, by the automated data configuration engine, each file of the first set of files to extract portions of that file corresponding to the unique identifiers of employees for the employees employed in the respective jobs at the respective ones of the companies on the respective first dates. The operations also can include parsing, by the automated data configuration engine, each file of the second set of files to extract portions of that file corresponding to the unique identifiers of employees for the employees employed in the respective jobs at the respective ones of the companies on the respective second dates. The operations also can include generating, by the automated data configuration engine, a first set of database entries for each of the respective companies. Each database entry of the first set of database entries can include an extracted portion of the files of the first set of files and the respective first date. The operations also can include generating, by the automated data configuration engine, a second set of database entries for each of the respective companies. Each database entry of the second set of database entries can include an extracted portion of the files of the second set of files and the respective second date. The operations also can include generating, by the automated data configuration engine, employee termination data for each of the respective companies based on differences between the first and second sets of database entries for that company. The operations also can include generating, by the automated data configuration engine, a third set of database entries for each of the companies. Each database entry of the third set of database entries can include the employee termination data of the respective company.
Accordingly, among other things, the present systems, methods, and computer-readable media can generate, from disparately formatted human resources data from different companies, data regarding employee termination; can perform analytics thereon; and can visualize the results of the analytics in an easy to understand, graphical manner providing significant amounts of useful information.
One or more aspects or features of the subject matter described herein can be realized in digital electronic circuitry, integrated circuitry, specially designed application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), computer hardware, firmware, software, and/or combinations thereof. These various aspects or features can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which can be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device. The programmable system or computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
These computer programs, which can also be referred to as programs, software, software applications, applications, components, or code, can include machine instructions for a programmable processor, and/or can be implemented in a high-level procedural language, an object-oriented programming language, a functional programming language, a logical programming language, and/or in assembly/machine language. As used herein, the term “computer-readable medium” refers to any computer program product, apparatus and/or device, such as for example magnetic discs, optical disks, solid-state storage devices, memory, and Programmable Logic Devices (PLDs), used to provide machine instructions and/or data to a programmable data processor, including a machine-readable medium that receives machine instructions as a computer-readable signal. The term “computer-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable data processor. The computer-readable medium can store such machine instructions non-transitorily, such as for example as would a non-transient solid-state memory or a magnetic hard drive or any equivalent storage medium. The computer-readable medium can alternatively or additionally store such machine instructions in a transient manner, such as for example as would a processor cache or other random access memory associated with one or more physical processor cores.
The computer components, software modules, functions, data stores and data structures described herein can be connected directly or indirectly to each other in order to allow the flow of data needed for their operations. It is also noted that a module or processor includes but is not limited to a unit of code that performs a software operation, and can be implemented for example as a subroutine unit of code, or as a software function unit of code, or as an object (as in an object-oriented paradigm), or as an applet, or in a computer script language, or as another type of computer code. The software components and/or functionality can be located on a single computer or distributed across multiple computers depending upon the situation at hand.
In one example, a disk controller 448 can interface one or more optional disk drives to the system bus 404. These disk drives can be external or internal floppy disk drives such as 460, external or internal CD-ROM, CD-R, CD-RW or DVD, or solid state drives such as 452, or external or internal hard drives 456. As indicated previously, these various disk drives 452, 456, 460 and disk controllers are optional devices. The system bus 404 can also include at least one communication port 420 to allow for communication with external devices either physically connected to the computing system or available externally through a wired or wireless network. In some cases, the communication port 420 includes or otherwise comprises a network interface.
To provide for interaction with a user, the subject matter described herein can be implemented on a computing device having a display device 440 (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information obtained from the bus 404 to the user and an input device 432 such as keyboard and/or a pointing device (e.g., a mouse or a trackball) and/or a touchscreen by which the user can provide input to the computer. Other kinds of input devices 432 can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback by way of a microphone 436, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input. In the input device 432 and the microphone 436 can be coupled to and convey information via the bus 404 by way of an input device interface 428. Other computing devices, such as dedicated servers, can omit one or more of the display 440 and display interface 424, the input device 432, the microphone 436, and input device interface 428.
In the descriptions above and in the claims, phrases such as “at least one of” or “one or more of” can occur followed by a conjunctive list of elements or features. The term “and/or” can also occur in a list of two or more elements or features. Unless otherwise implicitly or explicitly contradicted by the context in which it is used, such a phrase is intended to mean any of the listed elements or features individually or any of the recited elements or features in combination with any of the other recited elements or features. For example, the phrases “at least one of A and B;” “one or more of A and B;” and “A and/or B” are each intended to mean “A alone, B alone, or A and B together.” A similar interpretation is also intended for lists including three or more items. For example, the phrases “at least one of A, B, and C;” “one or more of A, B, and C;” and “A, B, and/or C” are each intended to mean “A alone, B alone, C alone, A and B together, A and C together, B and C together, or A and B and C together.” In addition, use of the term “based on,” above and in the claims is intended to mean, “based at least in part on,” such that an unrecited feature or element is also permissible.
The subject matter described herein can be embodied in systems, apparatus, methods, and/or articles depending on the desired configuration. The implementations set forth in the foregoing description do not represent all implementations consistent with the subject matter described herein. Instead, they are merely some examples consistent with aspects related to the described subject matter. Although a few variations have been described in detail above, other modifications or additions are possible. In particular, further features and/or variations can be provided in addition to those set forth herein. For example, the implementations described above can be directed to various combinations and subcombinations of the disclosed features and/or combinations and subcombinations of several further features disclosed above. In addition, the logic flows depicted in the accompanying figures and/or described herein do not necessarily require the particular order shown, or sequential order, to achieve desirable results. Other implementations may be within the scope of the following claims.