OpenLLM-France/wikimedia huggingface dataset:
# ROSE Compiler Framework/Best Practices

The goal of this page is to collect input, feedback and comments about best practices in software development. We periodically review the best practices to see if any of them can be applied to ROSE.

## Development Process

"For most modern software development projects, some kind of spiral-based methodology is used over a waterfall process. ...Having a process is better than not having one at all, and in many cases it is less important on what process is used than how well it is executed."
Quoted from...
Wikipedia Article on Software Development Processes
Waterfall Model
Spiral Model
Agile Model
Extreme Programming Model

## Requirements

Gathering and agreeing on requirements. A good way is to use Use Cases. Wikipedia On Use Cases

## Design

Apply tried and true design patterns. Be aware of anti-patterns which usually fail.
Wikipedia on Design Patterns from the Gang of Four Book

## Peer Review

Benefits: problems are eliminated earlier this way and reviews are as effective or even more effective than testing.
What to review: any artifact from the development process, including plans, requirements, architecture, design, code, and test cases, etc.

## Testing

An integral part of software development. Testing is used to ensure the software meet functionality and performance requirements.
There are testing patterns.
Testing should cover performance/overload testing to catch design or coding problems.

## Project Management

Be aware of best practices in project management
* lessons learned
References:
* Rapid Development by Steve McConnell

## References

* Best practices for software development projects
# Robotics and the World/Robot Control
## Control software

There are many ways to design software for controlling a robot. The focus is not on low-level coding issues, but on high level concepts about the special situations robots will encounter and ways to address these peculiarities. The approach taken here proposes and examines some control software architectures that will comprise the brains of the robot.

## System reliability and failures

Probably the biggest problem facing a robot is overall system reliability. A robot might face any combination of the following failure modes:
Mechanical Failures - These might range from temporarily jammed movements to wedged geartrains or a serious mechanical breakdown.
Electrical Failures - We hope it is safe to assume that the computer itself will not fail but loose connections of motors and sensors are a common problem.
Sensor Unreliability - Sensors will provide noisy data (data that is sometimes accurate, sometimes not) or data that is simply incorrect (touch sensor fails to be triggered).
The first two of the above problems can be minimized with careful design, but the third category, sensor unreliability, warrants a closer look. Before discussing control ideas further, here is a brief analysis of the sensor problem.
An example of robot control is when it interacts with a wall. In a worst-case scenario, what could happen while a robot was merrily running along, following a wall? Several possibilities:
* The robot could run into an object or a corner, properly triggering a touch sensor.
* The robot could run into an object or corner, not triggering a touch sensor.
* The robot could wander off away from the wall.
* The robot could slam into the wall, get stuck, and conditionally trigger a touch sensor.
* The proximity sensor could fall off its mount, causing a series of incorrect sensor readings.
Ideally, control software should expect occurrences of cases like those numbered #1 through #4 and be able to detect case #5.

## Examples of control failures

* An outlier in sensor data can be difficult to differentiate from sensor failure.
# Robotics and the World/Mathematics of Robot Control
## Robot Kinematics

Mathematics in robotics mainly involves robot kinematics. Robot kinematics is the study of the motion (kinematics) of robots. In a kinematic analysis the position, velocity and acceleration of all the links are calculated without considering the forces that cause this motion. The relationship between motion, and the associated forces and torques is studied in robot dynamics. One of the most active areas within robot kinematics is the screw theory.
Robot kinematics deals with aspects of redundancy, collision avoidance and singularity avoidance. While dealing with the kinematics used in the robots we deal each parts of the robot by assigning a frame of reference to it and hence a robot with many parts may have many individual frames assigned to each movable parts. For simplicity we deal with the single manipulator arm of the robot. Each frames are named systematically with numbers, for example the immovable base part of the manipulator is numbered 0, and the first link joined to the base is numbered 1, and the next link 2 and similarly till n for the last nth link.
Robot kinematics are mainly the following two types: forward kinematics and inverse kinematics. Forward kinematics is also known as direct kinematics. In forward kinematics, the length of each link and the angle of each joint is given and we have to calculate the position of any point in the work volume of the robot. In inverse kinematics, the length of each link and position of the point in work volume is given and we have to calculate the angle of each joint.

## Examples

* An animation showing an example of robot direct kinematics.
* An animation showing an example of robot inverse kinematics.
# Robotics and the World/Programming Concepts
## 2. Programming Concepts

The development of robot programming concepts is almost as old as the development of robot manipulators itself. As the ultimate goal of industrial robotics has been the development of sophisticated production machines with the hope to reduce costs in manufacturing areas like material handling, welding, spray-painting and assembly, tremendous efforts have been undertaken by the international robotics community to design user-friendly and at the same time powerful methods. The evolution reaches from early control concepts on the hardware level via point-to-point and simple motion level languages to motion-oriented structured robot programming languages. The robot programming languages can be classified according to the robot reference model, the type of control structure used for data, type of motion specification, the sensors, the interfaces to external machines, and the peripherals used. The following types of programming languages are available.
Point to point motion language, Basic motion languages at assembler level, Non-structured high level programming languages, Structured high level programming languages, NC type languages, Object oriented languages, Task oriented languages.
# Robotics and the World
## Table of Contents

* The Future of Robots
* Programming Concepts
* Robot Control
* Robot Hardware
* Mathematics of Robot Control
* Robot Programming
* Obstacle Avoidance
* Task Planning and Navigation
* Robot Vision
* Knowledge Based Vision Systems
* Robots and Artificial Intelligence

## Resources
### Related Wikibooks

* Robotics has details on how to build small robot hardware.
* Artificial Intelligence
* Future
* Embedded Systems has details on typical robot CPUs, and how to program them.
# Robotics and the World/Knowledge Based Vision Systems
## 10. Knowledge Based Vision Systems

Knowledge Based Vision Systems are described as which configurates automatically programs for image processing and supports the recognition of objects. The system runs in two phases. In the first phase based on the primitives (curved edges, corners etc.) and the explicit specification of the content of the image given by the user a sequence of operators will be generated and all their free parameters will be computed adaptivelly. In this phase the system uses a rule base composed of knowledge of visual processing operators, their parameters, and their interdependence. In the second phase a hierachical object model is formulated and edited by the user based on the primitives selected in the first phase. The system editor is specially provided for this purpose. Using the hierachical object model facilitates a rapid interpretation of the result obtained from the previous image processing for the subsequent object recognation.
# Robotics and the World/Obstacle Avoidance
## 7. Obstacle Avoidance

Obstacle Avoidance is a robotic discipline with the objective of moving vehicles on the basis of the sensorial information. The use of these methods front to classic methods (path planning) is a natural alternative when the scenario is dynamic with an unpredictable behaviour. In these cases, the surroundings do not remain invariable, and thus the sensory information is used to detect the changes consequently adapting moving.
The research conducted faces two major problems in this discipline. The first is to move vehicles in troublesome scenarios, where current technology has proven limited applicability. The second one is to understand the role of the vehicle characteristics (shape, kinematics and dynamics) within the obstacle avoidance paradigm.
Most obstacle avoidance techniques do not take into account vehicle shape and kinematic constraints. They assume a punctual and omnidirectional vehicle and are doomed to rely on approximations. Our contribution is a framework to consider shape and kinematics together in a exact manner, in the obstacle avoidance process, by abstracting these constraints from the avoidance method usage. Our approach can be applied to many non holonomic vehicles with arbitrary shape.
For these vehicles, the configuration space is 3 dimensional, while the control space is 2-dimensional. The main idea is to construct (centered on the robot at any time) the two-dimensional manifold of the configuration space that is defined by elementary circular paths. This manifold contains all the configurations that can be attained at each step of the obstacle avoidance and is thus general for all methods. Another important contribution of the paper is the exact calculus of the obstacle representation in this manifold for any robot shape (i.e. the configuration regions in collision). Finally, we propose a change of coordinates of this manifold in such a way that the elementary paths become straight lines. Therefore, the 3-dimensional obstacle avoidance problem with kinematic constraints is transformed into a simple obstacle avoidance problem for a point moving in a 2-dimensional space without any kinematic restriction (the usual approximation in obstacle avoidance). Thus, existing avoidance techniques become applicable.
# Quest for Glory

Quest for Glory is a series of computer games that hybridize the adventure and role-playing genres. Five games in the series were produced by Sierra On-Line. The first four games' hybridness tended more towards adventure than role-playing, while the fifth and final game turned the scale more towards role-playing than adventure.
Outside of the official games, there were also fan versions of spinoffs, a semi-sequel, and even a VGA remake of the second game (the only one in the series lacking an official VGA version).
The first game in the series was originally titled Hero's Quest I: So You Want To Be a Hero?, but the name of the series was changed with subsequent editions of the game.

## Contents

* Basics
* Plot
* Games
# Quest for Glory/Games

* Quest for Glory I: So You Want To Be A Hero?
* Quest for Glory II: Trial By Fire
* Quest for Glory III: Wages of War
* Quest for Glory IV: Shadows of Darkness
* Quest for Glory V: Dragon Fire
The games were known to get released quite untested (which, especially in the fourth game, sometimes even prevented finishing the games), but over the years it was fans that released fixes and patches. The GOG version already contains most external fixes, while playing the games in ScummVM solves even further issues. Prior to that, it was highly suggested to collect fixes from places such as Quest for Glory Updates and Patches for Sierra SCI games. AGD Interactive released a VGA remake of Quest for Glory II as well.
# Starting A Website/Creating a Website

There are several different kinds of websites. You might want to make a website for your personal biography, a website that contains articles, a blog, or another kind of website for something else. There are also a few different ways to make a website, depending on whether you want to pay money, or use a free hosting service. This page covers the different kinds of websites that can be made.

## Starting a free website

If you do not wish to pay for a domain name and for your website to be hosted, there are several free online website editing services such as FreeWebs and Yolasite that allow you to start your own web page. However these websites usually have a large banner at the top of the page containing adds, as well as notices at the bottom of the page saying "this site was made by [insert name of web service here] - get your free website today!" Aside from that, you will mostly not be allowed to have your own domain name; the web service will give your web page a name that looks something like this: www.nameofwebservice.com/yournamehere, or www.yournamehere.nameofwebservice.com. While sites made like this are a no-go zone for businesses and other professional services, they are great for things like your personal biography, your interests, a bunch of links to your favorite sites, a or fan fiction site, etc.

## Starting a professional website

If you feel like you want a professional website and have no problem paying up to $50.00 a year, then you should make a professional website. This process has three main steps:
* Buy your domain name - in this step, you should use an online service such as GoDaddy to reserve a domain name for you. Your domain name will allow you to get youraddress.com
* Buy your hosting - in this step, you then hire an online hosting service such as BlueHost or DreamHosting to host your website for you. Hosting sites have places where you can edit the code (or use drag and drop editors) to place content up on the domain name that you have reserved.
* Design your site! - in this step, you actually make your site. Most hosting services have code editing features as well as drag and drop editors that allow you to design your site layout and content. Additionally, you can use programs such as Adobe Dreamweaver to edit your site offline, then publish to your online site.
# Starting A Website/Understanding the Internet

In starting a website, one should understand the Internet. The Internet is a worldwide, publicly accessible series of interconnected computer networks that transmit data by packet switching using the standard Internet Protocol (IP). It is a "network of networks" that consists of millions of smaller domestic, academic, business, and government networks, which together carry various information and services, such as electronic mail, online chat, file transfer, and the interlinked web pages and other resources of the World Wide Web (WWW).
The Internet has also become a large market for companies; some of the biggest companies today have grown by taking advantage of the efficient nature of low-cost advertising and commerce through the Internet, also known as e-commerce. It is the fastest way to spread information to a vast number of people simultaneously. The Internet has also subsequently revolutionized shopping—for example; a person can order a CD online and receive it in the mail within a couple of days, or download it directly in some cases. The Internet has also greatly facilitated personalized marketing which allows a company to market a product to a specific person or a specific group of people more so than any other advertising medium.
# Starting A Website/Server-Side Services
## Frameworks

When designing an application there may be a discussion of using a so called framework or not. A framework is simply a bunch of functions and/or classes that makes common tasks simpler to do. Though a framework may not always be necessary because if a developer is good at reusing code it might have developed a own small framework of reusable code.
Example of one page:

### Smarty

The only framework that is really useful for this project is the Smarty template engine. There are a bunch of other frameworks around, but from experience a framework can sure bring all kind of glory and bells and whistles. Though when it comes to performance and such everything depends on the framework, and if something goes wrong you probably do not want to go inside a framework and mess around with the code. The thing is, If you have code it yourself you can also fix it.

### jQuery

Smarty is a way of splitting HTML-layout from PHP-logic. Though when an application grows, the need for JavaScript might increase and clutter the html-code. A framework named jQuery might solve this since it separates JavaScript from the html itself. It also simplifies common tasks such as the commonly used ajax-technology.

### How to do ajax with jQuery

A common use of ajax is to load a chunk of html to somewhere on a web page. This may be a problem since XHTML is not that descriptive of the information. Then it is better to load XML information from ajax and transform it to XHTML. Then you have the XML left on the client side to reuse. Therefore minimizing the database calls needed.
# Starting and Running a Business

So you want to start a business? Perhaps, you want to make money. Perhaps, you want to change the world. Perhaps, you don't want to work the "typical" job. This book will guide you through the process of starting and running your own business successfully.

## Table of Contents

* Introduction
* Kinds of Business
* Functions of a Business
* Legal forms of a Business
* Business laws and regulations
* Laws related to raising capital
* Other business laws and regulations
* Management and ownership

## See Also

* The Maryland Entrepreneur's Guide
# Starting and Running a Business/Functions of a Business
## Functions of a business

Most businesses must accomplish similar functions regardless of size, legal structure or industry. These functions are often organized into departments. Common departments include (but are not limited to):

### Accountancy

    typically responsible for financial reporting, financial controls and the raising of the capital necessary to run the business.

### Human Resources

    typically responsible for hiring, firing, payroll, benefits, etc.

### Marketing and sales

    responsible for selling the business' goods or services to the customer and for managing the relationships with the customer

      ### Marketing

          typically responsible for promoting interest in, and generating demand for, the business' products or services, and positioning them within the market

      ### Sales

          finding likely purchasers and obtaining their agreement (known as a contract) to buy the business' products or services

### Operations

    makes the product or delivers the service

      ### Production, costs, and pricing|Production

          produces the raw materials into the delivered goods, if they require processing

      ### Customer service

          supports customers who need help with the goods or services

### Procurement

    responsible for acquiring the goods and services necessary for the business. Sometimes organized as:

      ### Strategic sourcing

          determines the business' needs and plans for acquiring the necessary raw materials and services for the business

      ### Purchasing

          processes the purchase orders and related transactions

### Research and Development

    tests to create new products and to determine their viability (e.g. pilot plants)

### Information Technology

    manages the business' computer and data assets

### Communications/Public Relations

    responsible for communicating to the outside world

### Administration

    provides administrative support to the other departments (such as typing, filing, etc)

### Internal Audit

    an independent control function typically accountable to the Board of Directors for reporting on the proper functioning of the other departments
Management is sometimes listed as a "department" but typically refers to the top level of leadership within the business regardless of their functional role.
# Starting and Running a Business/Business laws and regulations
## Business laws and regulations

Most commercial transactions are governed by a very detailed and well-established body of rules that have evolved over a very long period of time, it being the case that governing trade and commerce was a strong driving force in the creation of law and courts in Western civilization.
As for other laws that regulate or impact businesses, in many countries it is all but impossible to chronicle them all in a single reference source. There are laws governing treatment of labor and generally relations with employees, safety and protection issues (OSHA or Health and Safety), anti-discrimination laws (age, gender, disabilities, race, and in some jurisdictions, sexual orientation), minimum wage laws, union laws, workers compensation laws, and annual vacation or working hours time.
In some specialized businesses, there may also be licenses required, either due to special laws that govern entry into certain trades, occupations or professions, which may require special education, or by local governments who just want your money. Professions that require special licenses run the gamut from law and medicine to flying airplanes to selling liquor to radio broadcasting to selling investment securities to selling used cars to roofing. Local jurisdictions may also require special licenses and taxes just to operate a business without regard to the type of business involved.
Some businesses are subject to ongoing special regulation. These industries include, for example, public utilities, investment securities, banking, insurance, broadcasting, aviation, and health care providers. Environmental regulations are also very complex and can impact many kinds of businesses in unexpected ways.
# Starting and Running a Business/Introduction
## Introduction

In economics, business is the social science of managing people to organize and maintain collective productivity toward accomplishing particular creative and productive goals, usually to generate profit.

### Definition of business

The etymology of "business" refers to the state of being busy, in the context of the individual as well as the community or society. In other words, to be busy is to be doing commercially viable and profitable work.
The term "business" has at least three usages, depending on the scope — the general usage (above), the singular usage to refer to a particular company or corporation, and the generalized usage to refer to a particular market sector, such as "the record business," "the computer business," or "the business community" -- the community of suppliers of goods and services.
The singular "business" can be a legally-recognized entity within an economically free society, wherein individuals organize based on expertise and skills to bring about social and technological advancement.
In predominantly capitalist economies, businesses are typically formed to earn profit and grow the personal wealth of their owners. Notable exceptions to this rule include many cooperatives, non-profit organizations, and government institutions.
In other words, the owners and operators of a business have as one of their main objectives the receipt or generation of a financial return in exchange for their work — that is, the expense of time and energy — and for their acceptance of risk — investing work and money without certainty of success.
However, the exact definition of business is disputable, as is business philosophy; for example, most Marxists use "means of production" as a rough synonym for "business." Socialists advocate either government, public, or worker ownership of most sizable businesses. Some advocate a mixed economy of private and state-owned enterprises. Others advocate a capitalist economy where all, or nearly all, enterprises are privately owned.