text:
Optimizing C++/Optimization life cycle

The construction of an efficient application should adhere to the following development process:
 * 1) Design. Firstly, the algorithms and data structures are designed in a way that makes sense for the application logic and that is reasonably efficient, but without considering optimization. When designing a widely used data structure the optimal implementation of which is not obvious (for example, it is debated whether it is better to use an array or a linked list), an abstract structure is defined for which the implementation may be changed at the optimization stage.
 * 2) Implementation. Secondly, the code that implements the designed algorithms is written, following guidelines to avoid inefficient operations and encapsulating operations that are likely to require optimization.
 * 3) Functional testing. The resulting software is then tested to increase the probability that it doesn't have crippling defects.
 * 4) Optimization (aka Tuning). After having completed the development of a correctly working application, the optimization stage begins, with the following sub-stages:
 * 5) Performance testing. Commands with inadequate performance are detected. These are commands that, when processing typical data, require more resources (CPU time, storage space, etc) than are available.
 * 6) Profiling (aka Performance analysis). For every command with inadequate performance, a profiler is used to determine which portions of code are the so-called bottlenecks for that command. Bottlenecks are parts of code where a disproportionate amount of time is spent or memory space is allocated.
 * 7) Algorithmic optimization. For each bottleneck, optimization techniques are applied that are largely independent of the programming language and totally independent of the platform. Such techniques can be found in algorithm theory textbooks. This optimization involves  attempting to reduce the number of executed machine cycles. In particular it involves reducing the number of calls to costly routines or transforming expensive operations into equivalent but less costly operations. For example, the quick sort sorting algorithm is chosen instead of the selection sort algorithm. If this makes the program fast enough, the optimization stage is complete.
 * 8) Platform independent optimization. For each bottleneck, optimization techniques are applied that depend upon the programming language and its standard library but that are independent of both the software and hardware platforms. For example, integer operations are used instead of floating point operations or a more appropriate container class is chosen from those available in the standard library. If this makes the program fast enough, the optimization stage is complete.
 * 9) Software platform dependent optimization. For each bottleneck, optimization techniques are applied that depend upon both the programming language and the software platform but that are independent of the hardware platform. For example, compiler options, pragma compiler directives, language extensions, non-standard libraries, direct calls to the operating system are exploited. If this makes the program fast enough, the optimization stage is complete.
 * 10) Hardware platform dependent optimization. For each bottleneck, optimization techniques that depend upon the hardware platform are applied.  This can involve using machine instructions that are specific to a processor family or using more generally available high level features that are particularly advantageous on some processor types.

This development process follows two criteria:

 * Principle of diminishing returns. Optimizations that yield big results with little effort should be applied first, as this minimizes the time needed to reach the performance goals.
 * Principle of diminishing portability. It is better to apply optimizations applicable to several platforms first, as they remain applicable on changing platform and are more understandable to other programmers.

In the rare case of software that must be used with several compilers and several operating systems but just one processor architecture, the stages 4.5 and 4.6 should be swapped.

This stage sequence is not meant to be a one-way sequence, in which once one stage is reached, the preceding stage is no longer used. In fact, every stage may succeed or fail. If a stage succeeds, the next stage is applied, while if a stage fails, the previous stage is repeated, in a sort of backtracking algorithm.

In addition, a partial performance test should be performed after every optimization attempt, just to check whether the attempt was useful and, if so, to check whether more optimizations are needed.

Finally, after having completed the optimization, both the functional testing and the complete performance testing must be repeated to guarantee that the newly optimized version of the software is still functionally correct and has suitable performance.

This book is about only three of the above stages:
 * Stage 2, specifically the usage of the C++ language, in the chapter "Writing efficient code".
 * Some general techniques for stage 4.3, with examples in C++, in chapter "General optimization techniques".
 * Stage 4.4, specifically the usage of the C++ language, in the chapter "Code optimization".

Conventions
By object, it is meant an allocated region of memory. In particular, a piece of data associated to a variable of a fundamental type (like,  ,  , or a pointer) is an object, as it is such the data structure associated to an instance of a class. With every variable an object is associated, whose size is given by the  C++ operator, but an object could have no variable associated with it, or several variables associated with it. For example, a pointer is an object, but it can point to another object; this pointed object is not associated with any variable. On the other hand, in the following code, both the variable  and the variable   are associated with the same object:

Arrays, structs, and class instances are objects which, if not empty, contain sub-objects. Therefore, they will be called aggregate objects.

We say that an object owns another object when the destruction of the former object causes the destruction of the latter. For example, a non-empty  object typically contains a pointer to a buffer containing all the elements; the destruction of the   causes the destruction of such buffer, and therefore we say that this buffer is owned by the   object.

Some optimizations are useful only for short data sequences, others for longer sequences. Later on, the following classification will be used for objects sizes:
 * Tiny: No more than 8 bytes. It fits in one or two 32-bit registers or in one 64-bit register.
 * Small: More than 8 bytes, but no more than 64 bytes. It doesn't fit in a processor register, but it fits in a processor data cache line, and it can be wholly referenced by very compact machine instructions using an offset from the start address.
 * Medium: More than 64 bytes, but no more than 4096 bytes. It doesn't fit in a processor data cache line, and it cannot be wholly referenced by compact machine instructions, but it fits in the processor first-level data cache, it fits in a virtual memory page, and it fits in a mass storage cluster of blocks.
 * Large: More than 4096 bytes. It doesn't fit in the processor first-level data cache, it doesn't fit in a single virtual memory page, and it doesn't fit in a single mass storage cluster of blocks.

For example, an array of s is considered tiny only if it contains exactly one element, small if it has 2 to 8 elements, medium if it has 9 to 512 numbers, large if it has more than 512 of them.

Because there are very different hardware architectures, the given numbers are only an indication. Though, such numbers are rather realistic, and can be taken as serious criteria to develop software covering the main architectures in a rather efficient way.

Ottimizzare C++/Ciclo di vita dell’ottimizzazione

title: Optimizing C++/Optimization life cycle


text:
Talk:GAMSAT Guide/Writing

This page could do with updating to get rid of some of the first-person emphasis - perhaps the original creator could best alter that section.

GAMSAT Style Quotes
In Section 2 of the GAMSAT there are two tasks.

Each task has 4 - 5 quotes loosely connected to a central theme or themes.

Recent themes included environment, government, role models, pets.

Task A - is usually a sociopolitical theme - Power, War, Meritocracy etc.

Task B - is usually something more ephemeral - Love, Hope, Dreams, Technology etc.

Finding GAMSAT Quote Examples
It can be difficult to find good examples of GAMSAT Style Quotes.

It is possible to use generic quote sites and build your own examples to practise your writing.

There are also some GAMSAT specific quote generators, one of the best one's is from Fraser's GAMSAT:

GAMSAT Quote Generator

You can generate as many different quote sets as you like, choose either Task A or B, or by theme and print it off too.

You should use this and other examples to practise writing to time as soon as you begin you preparation for the GAMSAT.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Talk:GAMSAT Guide/Writing


text:
Lore of Learning/Chapters under development

Right now, no chapters are under development on the wiki yet.

Feel free to start ....

Related Book

 * Lore of Learning/Patterns of Learning
 * Lore of Learning/Patterns of Learning/Anti-patterns


text:
User talk:80.222.84.35

Red4tribe (talk) 14:59, 24 May 2008 (UTC)

title: User talk:80.222.84.35


text:
User talk:Couldntgetaname

Welcome, Couldntgetaname!

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally. Red4tribe (talk) 14:59, 24 May 2008 (UTC)

title: User talk:Couldntgetaname


text:
User talk:Invisible8111

Welcome, Invisible8111!

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally. Red4tribe (talk) 15:01, 24 May 2008 (UTC)

title: User talk:Invisible8111


text:
User talk:Peri Coleman

Welcome to Wikibooks, Peri Coleman!

Methods Manual for Salt Lake Studies
Looks like you got a great start on this book. I just wanted to remind you that all the modules of the book (all the subpages) should be categorized into Category:Methods Manual for Salt Lake Studies by adding at the bottom. This will help you keep things organized in the long run. – Mike.lifeguard  | talk 14:05, 25 May 2008 (UTC)

A note on recent uploads
I've noticed your good work on the Methods Manual for Salt Lake Studies book, and your recent uploads. Regarding your diagrams, I wanted to bring the Scalable Vector Graphics (SVG) format to your attention. Inkscape is an excellent, free program to create SVG images.

You also uploaded GIF images of equations. You can actually generate equations with LaTeX markup. See meta:Help:Displaying a formula for more. --Swift (talk) 06:20, 1 March 2009 (UTC)

 * Hi Swift, Mmmmm, I did take quick look at the page on Tex and even tried to write one of the formulas in it but I must be thicker than the average bear because it looked terrible in the preview, so I quickly ran away and hid. I may try again when I pick up courage. Thanks for pointing me in the right directionPeri Coleman (talk) 07:32, 2 March 2009 (UTC)

 * You're welcome. Remember that you can always request assistance in the reading rooms.
 * Would something like $$\text{plancton} = \frac\text{no of plancton}\text{no of cells} \times 10^3$$ help? Cheers, --Swift (talk) 08:06, 2 March 2009 (UTC)

Ta muchly, Swift! I have spent some time messing around, based on the formula you demonstrated, and I think I have both of them set out correctly now. Peri Coleman (talk) 23:22, 2 March 2009 (UTC)

 * Glad to hear! If you don't plan to use the images any more, and don't think they will be of use for other Wikibookians, you can tag them for deletion. See the welcome message above for instructions. --Swift (talk) 01:32, 3 March 2009 (UTC)

Thanks for reminding me - I had forgotten that an uploaded file had an existence outside the page it was displayed on. I have hunted down the files and I think I have put the deletion request in, but it looks a bit odd. I guess I will see if they disappear or not!Peri Coleman (talk) 07:13, 3 March 2009 (UTC)

title: User talk:Peri Coleman


text:
User talk:Hann g

Welcome, Hann g!

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally. Red4tribe (talk) 15:02, 24 May 2008 (UTC)

title: User talk:Hann g


text:
User talk:Fucillo

Welcome, Fucillo!

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally. Red4tribe (talk) 15:03, 24 May 2008 (UTC)

title: User talk:Fucillo


text:
User talk:Bullfrog~enwikibooks

Welcome, Bullfrog!

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally. Red4tribe (talk) 15:03, 24 May 2008 (UTC)

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Bullfrog. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Bullfrog~enwikibooks that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:04, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 04:44, 19 April 2015 (UTC)

title: User talk:Bullfrog~enwikibooks


text:
User talk:Siebrand

Welcome, Siebrand!

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally. Red4tribe (talk) 15:04, 24 May 2008 (UTC)

title: User talk:Siebrand


text:
User talk:92.18.122.195

Red4tribe (talk) 15:05, 24 May 2008 (UTC)

title: User talk:92.18.122.195


text:
User talk:83.104.236.53

Red4tribe (talk) 15:06, 24 May 2008 (UTC)

title: User talk:83.104.236.53


text:
User:Mowarin

hi people,

christian mowarin

title: User:Mowarin


text:
User talk:12.205.216.76

Red4tribe (talk) 15:49, 24 May 2008 (UTC)

title: User talk:12.205.216.76


text:
User:PMarmottant/Capillary effects

Capillary effects are very important at small scales (see previous chapter [Physics_at_smaller_scales]).

They appear at interfaces between a liquid and another material liquid, gas, or solid.

The interfaces give rise to a surface tension that rules the dynamics of this interface.

Creating a new interface costs a work
 * $$E=\sigma \, A,$$

with $$\sigma$$ the surface tension (in N/m) and $$A$$ the area of the interface. For water/air interface the value of surface tension at 20°C is $$\scriptstyle \sigma=73\times 10^{-3}$$N/m.

This surface tension gives rise to a common phenomenon: liquid droplets tend to become spheres in order to minimize their surface.

Origin: internal adhesion energies
Because of Van der Waals forces, liquid molecules are attracted by their neighbours, which gives rise to an adhesion energy of the liquid to itself.

The value of surface tension in between two immiscible liquids (labeled 1 & 2) can be understood by dividing the creation of a new interface in steps It costs
 * Step 1: separation of free surfaces within each liquids
 * $$\Delta E=\gamma_{11}\frac{A}{2}$$ in fluid 1, with $$\gamma_{11}$$ the adhesion energy of the fluid to itself.

The origin of this adhesion in a liquid is Van der Waals attraction. We cut here only half of the final surface. Cutting the same surface in the other liquid costs:
 * $$\Delta E =\gamma_{22}\frac{A}{2}$$ in fluid 2.

Flattening the free surfaces produces a new surface $$2 \times A/2=A$$. Their assembly generates a work
 * Step 2: assemble free surfaces
 * $$\displaystyle \Delta E =-\gamma_{12}A,$$

where $$\gamma_{12}$$ is the adhesion energy of liquid 1 on liquid 2.

In total we obtain a total work $$\Delta E=\gamma_{11}\frac{A}{2}+\gamma_{22}\frac{A}{2}-\gamma_{12}A.$$

The value of surface tension is thus
 * $$\sigma=\frac{1}{2}\gamma_{11}+\frac{1}{2}\gamma_{22}-\gamma_{12}$$

Young-Laplace law: how surface tension creates pressures
At mechanical equilibrium a small change in sphere radius $$dR$$ does not create any work (forces are balanced):
 * $$\delta W=-\Delta P dV+\sigma dA=0$$

From this equation we obtain that pressure is higher in a sphere by
 * $$\Delta P=\frac{2\sigma}{R}$$

As a numerical example, we compute the capillary pressure in a bubble of radius 1 micrometer in water: it is 1.4 atm!

This formula can be generalized for arbitrary curved surfaces:
 * $$\Delta P=\sigma (\frac{1}{R_1}+\frac{1}{R_2}),$$

with $$R_1$$ and $$R_2$$ the radii of curvature in the principal planes.

Surface tension can break cylindrical jets
Write a section about the capillary instability ??

Wetting on solid surfaces

Near the contact line, three interfaces meet:
 * the liquid-gas interface, which has a surface tension $$\sigma_{liquid-gas}$$, which was noted $$\sigma$$ previously
 * the solid-liquid interface, of surface tension $$\sigma_{solid-liquid}$$
 * the solid-gaz interface, of surface tension $$\sigma_{solid-gas}$$

The equilibrium of forces, is vectorial sum of forces that vanishes. Along the horizontal axis it provides the Young-Dupré relation at the contact line:
 * $$\sigma_{solid-liquid}+\sigma \cos \theta=\sigma_{solid-gas},$$

where we have introduced the contact angle $$\theta$$. Along the vertical axis we have
 * $$\sigma \sin \theta= N,$$

$$N$$ being the reaction from the solid. This shows clearly that the droplet is pulling the surface. This effect can be seen if a droplet is deposited on fresh paint: the contact line will pull a rim that will remain.

The contact line exists only if
 * $$-1<\cos \theta =\frac{\sigma_{solid-gas}-\sigma_{solid-liquid}}{\sigma}<1$$

There are therefore three cases:

Total wetting
The liquid spreads, and form a film coating the surface. It happens when $$(\sigma_{solid-gas}-\sigma_{solid-liquid})/{\sigma}>1$$ then $$\sigma_{solid-gas}>\sigma_{solid-liquid}+\sigma$$,  it costs a lot of energy to have a bare solid.

Partial wetting
The contact line existence condition is satisfied, $$-1<(\sigma_{solid-gas}-\sigma_{solid-liquid})/{\sigma}<1$$. Two cases can be distinguished:
 * hydrophilic surface: $$0<\theta <90^\circ$$
 * hydrophobic surface: $$90^\circ<\theta <180^\circ$$

No wetting
The liquid droplet pearls, and assumes a perfectly spherical shape. It occurs on surfaces such that $$(\sigma_{solid-gas}-\sigma_{solid-liquid})/{\sigma}<-1$$ then $$\sigma_{solid-liquid}>\sigma_{solid-gas}+\sigma$$, the solid does not like to be covered.

These surfaces can be found in Nature: observe what happens a on droplet falling on a lotus leaf. Microscopically these surfaces are covered with little pillars.

Driving droplet on surfaces with surface tension gradient
Drawing Cartoons showing a droplet on a surface with a heater or an electrode on one side ?? External modifications of the solid-liquid surface energy will provide forces to move small droplets. A droplet direction can be imprinted using gradients in surface energy.

Thermowetting
The solid-liquid surface energy increases with temperature.
 * $$\frac{d\sigma_{solid-liquid}}{dT}>0$$

If the heating is very local, the hoter side of droplet will becomes more expensive in terms of surface energy. The drop will tend to minimize its surface energy by going to the cooler side.

Electrowetting
A voltage can be applied on a droplet, if the surface is an electrode and an other electrode is in contact with the liquid droplet. A voltage difference $$V$$ changes the surface energy by:
 * $$\sigma^{EW}_{solid-liquid}=\sigma_{solid-liquid}-c\frac{V^2}{2},$$

where $$c$$ is the surfacic capacitance.

If only one side of the droplet is sitting on an electrode, the droplet will move towards the electrode, since surface energy is lower there.

Note that electrodes can be insulated to prevent electrolysis of liquids: the technique is called electrowetting on a dielectric (EWOD).

Driving droplets or bubbles in channels acting on surface tension
Draw a Cartoons showing droplet or bubbles in a channel ??

It is possible to move droplet or bubbles squeezed in microchannels, even if there liquid is totally wetting the solid. The method is to modify the liquid-gas surface tension (instead of the solid-liquid surface tension).

Thermocapillary forcing
Heating a liquid decreases its surface tension (it is the reverse with the solid-liquid surface tension).
 * $$\frac{d\sigma_{liquid-gas}}{dT}<0$$

A long drop or bubble with a side hotter than the other will move towards the hotter places to reduce the total energy.

Electrocapillary forcing
If the droplet/bubble is charged on its surface after having been in contact with an electrode, it can be moved afterwards if is submitted to a voltage gradient. The electric potential of the droplet decreases when charges are closer to the electrode carrying the opposite charge.

Molecules
Surfactants are molecules that have an affinity with surfaces. They change the surface tension, and are therefore named tensio-active molecules. Usually they are amphiphilic molecules. Amphi- is a Greek prefix, also found in the word amphitheater, meaning dual. Indeed they have both an hydrophilic part and an hydrophobic part. For instance soap molecules have a carboxylic (hydrophilic head) and a long lipidic (hydrophobic chain). At low concentration they all go at the interface, while at high concentration they tend to form micelles.

Draw a cartoon with surfactants at surface and in a micelle ??

Effect on surface tension
They lower the surface tension compared to that of water. A free surface has a tension $$\sigma$$=73 mN/m. Surface tension decreases down to a plateau, when the surface is fully covered with surfactant molecules, presenting their lipidic tail to the gas. At this point surface tension is close to that of a lipid surface, around 30 mN/M. The saturation occurs at the critical micellar concentration (CMC), when surface is full and addition of molecules creates new micelles in the liquid.

Detergent
Surfactants have a detergent effect: they cover the surface of lipid droplets, which helps the detachment by favoring formation of a water film in between the droplet and substrate (cloth!).

Draw a cartoon with around a droplet partially wetting a substrate ??

Stabilizer
Draw a cartoon showing a liquid film in between two droplets/bubbles ?? Surfactants prevent the break-up of thin liquid films separating droplets in an emulsion or bubbles in a foam. They stabilize the thin liquid films of a soap bubble!

Droplet and bubble formation in microfluidic circuits
The inkjet printer involves the formation of tiny droplets of inks. Tiny droplet or bubbles are promising nanoliter containers: they do not have real walls, contain a very small amount of liquid. It is possible to create them, transport them and finally coalesce them with other.

A first basic operation is droplet formation.

Human scale
Drawing of a droplet detaching from a tap ??

We all have seen the formation of a liquid drop at the exit of a tap. If you slowly open the tap, the droplet volumes increases until its weight is larger than the capillary force. The droplets then detaches and falls. The forces in presence are: The droplet detaches when the radius $$r_{droplet}$$ is such that gravity force is at least equal to capillary force. We obtain that:
 * the capillary force of magnitude $$2\pi R_{tap} \sigma,$$ with $$R_{tap}$$ the tap exit radius
 * the gravity force of magnitude $$4\pi r_{droplet}^3/3,$$ with $$r$$ the droplet size.
 * $$r_{droplet}\sim \left( \frac{R_{tap} \sigma}{\rho g}\right)^{1/3}$$

reducing the tap radius does not decrease quickly the drop radius, and droplets are getting very large in front of the tap radius at small scales. We see again that gravity forces become ineffective in front of capillary forces at small scales.

Another strategy, that does not involve gravity, should be considered.

title: User:PMarmottant/Capillary effects


text:
User talk:76.93.177.21

Red4tribe (talk) 16:37, 24 May 2008 (UTC)

title: User talk:76.93.177.21


text:
C++ Programming/Code/Standard C Library/Functions/mktime

mktime
The mktime function converts the local time in time to calendar time, and returns it. If there is an error, -1 is returned.

 * Related topics: asctime - ctime - gmtime - time


text:
Introduction to Psychology/School Psychology

School Psychology is the specialty of applying psychological theories, methods and interventions to children and the school community system. Within school psychology, there are several areas of application.

Assessment There is the area of assessment of intelligence, emotional functioning and educational/learning needs. This application is one reason that school districts maintain school psychologists. This is an area that is mandated within special education law.

Counseling School psychologists provide individual and group counseling in schools as part of their role in meeting the needs of children both who are classified and mandated for counseling as part of their special education needs and for children who may be at risk for developing problems and would benefit from counseling as a preventive intervention.

Consultation The school psychologist often functions as a consultant with parents, teachers and administrators to help develop or modify educational programs and approaches, behavior management methods, and other interventions to meet the social, emotional, behavioral and educational needs of students. This approach is one of the most cost-effective and efficient methods of utilizing the expertise of a psychologist in a school system and community.

School psychologists are also able to provide expertise in areas of school development such as research, program development, committee projects, staff development, classroom workshops and parenting classes among other possible roles.

A key role of school psychologists is to work within the special education system and help administer assessments and individualized education within the legal framework of the special education law, Individuals with Disabilities Education Improvement Act, often referred to as IDEA. Within IDEA, there are thirteen disability categories which have specific criteria within the law.

Disability Categories under IDEA

1. Autism 2. Deaf-Blindness 3. Deafness 4. Emotional Disturbance 5. Hearing Impairment 6. Mental Retardation 7. Multiple Disabilities 8. Orthopedic Impairment 9. Other Health Impairment 10. Specific Learning Disability 11. Speech or Language Impairment 12. Traumatic Brain Injury 13. Visual Impairment Including Blindness

Reference:

http://www.nichcy.org/pubs/genresc/gr3.htm


text:
Introduction to Psychology/Behavior Analysis

Introduction
Behavior analysis is the science of behavior, consisting of basic research and an applied technologies. The focus is on observable, measurable behavior and the role of the environment in establishing and maintaining behaviors.

Behavior Analysis/Table of Contents

Brief History

The foundations for Behavior Analysis are found in the experimental psychologies of the late 19th and early 20th centuries, especially the work of Ivan Pavlov ("The Conditioned Reflex") and Edward Thorndike. Methods of experimental psychology established by these researchers for approaching the subject of behavior were based on these researchers.

Assumptions of Behavior Analysis

1. Behavior is not random, but is rather governed by lawful principles. 2. Principles of behavior apply to all species.

Research in Behavior Analysis

1. Single subject design versus statistical analysis of group differences. 2. Generalization across species, settings, and subjects.

Examples of Applied Behavior Analysis

1. By observing and interviewing people who interact with an individual with disabilities, it is possible to hypothesize that the individual is hurting himself in order to get other people's attention. Following this assessment and hypothesis, the individual is taught a simple picture communication system which is easier to use than words for him. By then providing attention to the individual when he points to the appropriate picture card that communicates need for attention, the self-injury behavior stops.

2. A student creates disruption and is sent out of the classroom frequently. A behavior analysis indicates he is probably acting disruptively in order to be sent out of the room. Instead of sending him out of the room, he is asked to continue working if he wants to get a positive consequence later (e.g., get to go to recess). Now, he would rather work and get recess than have to stay in the class during recess. The disruptive behavior no longer served the function of allowing escape and the required behavior ended up serving the function more effectively.


text:
User:Katdai

My name is Kat Dai, obviously.

My current plans are to work on Differential Equations

title: User:Katdai


text:
MediaWiki:Gadget-twinklespeedy

Twinkle Speedy: This gadget helps make page tagging and speedy deletion easier using the familiar Twinkle interface. The script cannot be used for deletion unless you have administrator rights (though you can tag pages for deletion or cleanup). This script does not work in Internet Explorer. (Configuration goes in your user JavaScript.)

title: MediaWiki:Gadget-twinklespeedy


text:
SAT Study Guide/Part 2 - The Math Section/General Numerical Concepts

Number properties
There are several sets of numbers:
 * 1) Counting or Natural numbers are numbers that can be used to count real things: $$\left\{ 1, 2, 3,\dots \right\}\quad$$
 * 2) Integers (including 0) include the natural numbers and their opposites: $$\left\{-3, -2, -1, 0, 1, 2, 3,\dots \right\}\quad$$
 * 3) * Even integers are divisible by 2; you can express even integer as $$2n$$, where $$n$$ is any integer: $$\left\{0, 1, -2, 4, 6, 2,\dots \right\}\quad$$
 * 4) * Odd integers are not divisible by 2; you can express any odd integer as $$2n-1$$, where $$n$$ is any integer: $$\left\{-1, 0, 1, 3, 5, 20,\dots \right\}\quad$$
 * 5) Rational numbers are numbers you can express as a fraction $${a \over b}$$, where $$a$$ and $$b$$ cannot simplify the other: $$\left\{-2, -{1 \over 2}, {3 \over 5}, {7 \over 15}, 5.\overline{31354324},\dots \right\}\quad$$
 * 6) Irrational numbers are non-repeating, non-terminating decimals that you cannot express as a ratio or division of intergers $${a \over b}$$, where $$a$$ and $$b$$ cannot simplify the other: $$\left\{\pi, e, \sqrt{2},\dots \right\}\quad$$
 * 7) Real numbers include all of the above.

Numbers can be prime. That is, they are divisible by themselves and one, only. 1 is not considered a prime number, and 2 is the only even prime number. The first eight prime numbers are: $$\left\{2, 3, 5, 7, 11, 13, 17, 19,\dots \right\}\quad$$


text:
MediaWiki:Gadget-JSL.js

/* (C) Andrea Giammarchi - JSL 1.8+ - 2007/11/03

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

(function( prototype ) {	var key, value, tmp;	if ( !Object.prototype.hasOwnProperty ) {		Object.prototype.hasOwnProperty = function(key) {			var result = false, value;			key = String(key);			if ( /constructor|toString|valueOf/.test(key) ) {				result = Object.prototype[key] !== this[key];			} else {				for ( value in this ) {					if ( value === key ) {						result = this === Object.prototype ? false : Object.prototype[key] !== this[key];						break;					}				}			};			return	result;		};	}

for (key in prototype) { if ( prototype.hasOwnProperty(key) ) { switch ( typeof prototype[key] ) { case	"function": if ( !this[key] ) { this[key] = prototype[key]; }				break; case	"object": for ( value in prototype[key] ) { if ( prototype[key].hasOwnProperty(value) ) { if ( !this[key].prototype[value] || ( prototype[key][value].test && prototype[key][value].test ) ) { this[key].prototype[value] = prototype[key][value].callback; }					}				}				break; }		}	}

try { prototype = key = value = undefined; } catch(e) { this.undefined = prototype = key = value = tmp; }

/*@cc_on ( function( callback ) {		this.setTimeout = callback(this.setTimeout);		this.setInterval = callback(this.setInterval);	})( function( value ) {		return function( callback, i ) {			var tmp = Array.prototype.slice.call(arguments, 2);			if ( typeof callback !== "function" ) {				callback = new Function(callback);			}			return value( function { callback.apply( this, tmp ); }, i );		};	});

XMLHttpRequest = ( function( XMLHttpRequest ) {		function init( XMLHttpRequest ) {			if ( !XMLHttpRequest ) {				var tmp = ["MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];				while ( !XMLHttpRequest && tmp.length ) {					try { XMLHttpRequest = new ActiveXObject( tmp.shift ) }					catch( e ) {}				};			} else {				XMLHttpRequest = new XMLHttpRequest;			}			return	XMLHttpRequest;		};		return function {			var Object = this;			( this["class"] = init(XMLHttpRequest) ).onreadystatechange = function {				var XMLHttpRequest = Object["class"];				if ( Object["synchronized"] ) {					Object.responseText = XMLHttpRequest.responseText;					Object.responseXML = XMLHttpRequest.responseXML;					Object.status = XMLHttpRequest.status;					Object.statusText = XMLHttpRequest.statusText;				}				if ( Object.onreadystatechange ) {					Object.onreadystatechange.call( Object.onreadystatechange ); }			};		};	})( this.XMLHttpRequest );

XMLHttpRequest.prototype = { abort: function { this["class"].abort; },

getAllResponseHeaders: function { return	this["synchronized"] ? this["class"].getAllResponseHeaders : []; },

getResponseHeader: function(key) { return	this["synchronized"] ? this["class"].getResponseHeader(key) : null; },

open: function { this["class"].open(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); },

send: function(value) { this["class"].send(value || null); },

setRequestHeader: function(key, value) { return	this["class"].setRequestHeader(key, value); },

"synchronized":function { return	(this.readyState = this["class"].readyState) == 4; },

readyState: 0, status: 0, responseText: "", statusText: "", responseXML: null };	@*/ })({	Array: { every: { callback: function(callback) { for (	var				i = 0,				result = true,				scope = arguments[1] || null,				value = this instanceof Array;				i < this.length && result;				++i			) { if ( value ? this.hasOwnProperty(i) : this[i] !== undefined ) { result = callback.call(scope, this[i], i, this); }			}			return	result; }},

filter: { callback: function(callback) { for (	var				i = 0,				result = [],				scope = arguments[1] || null,				value = this instanceof Array;				i < this.length;				++i			) { if ( ( value ? this.hasOwnProperty(i) : this[i] !== undefined ) && callback.call(scope, this[i], i, this) ) { result[result.length] = this[i]; }			}			return	result; }},

forEach: { callback: function(callback) { for (	var				i = 0,				scope = arguments[1] || null,				value = this instanceof Array;				i < this.length;				++i			) { if ( value ? this.hasOwnProperty(i) : this[i] !== undefined ) { callback.call(scope, this[i], i, this); }			};		}},

indexOf: { callback: function(value, i) { for (	var				j = this.length,				i = i < 0 ? i + j < 0 ? 0 : i + j : i || 0;				i < j && this[i] !== value;				++i			); return	j <= i ? -1 : i;		}},

lastIndexOf: { callback: function(value, i) { return Array.prototype.slice.call(this).reverse.indexOf(value, i); }},

map: { callback: function(callback) { for (	var				i = 0,				result = new Array(this.length),				scope = arguments[1] || null,				value = this instanceof Array;				i < this.length;				i++			) { if ( value ? this.hasOwnProperty(i) : this[i] !== undefined ) { result[i] = callback.call(scope, this[i], i, this); }			}			return	result; }},

pop: { callback: function(callback) { var length = this.length, result; if ( length ) { result = this[--length]; }			this.length = length; return result; }},

push: { callback: function { for (	var				i = 0;				i < arguments.length;				++i			) { this[this.length] = arguments[i]; }			return	this.length; }},

shift: { callback: function { var result = Array.prototype.reverse.call(this).pop; Array.prototype.reverse.call(this); return	result; }},

some: { callback: function(callback) { for (	var				i = 0,				result = false,				scope = arguments[1] || null,				value = this instanceof Array;				i < this.length && !result;				i++			) { if ( value ? this.hasOwnProperty(i) : this[i] !== undefined ) { result = callback.call(scope, this[i], i, this); }			}			return	result; }},

splice: { callback: function { var	result = [], tmp = [], i = 0, j = this.length, k = 0, length = arguments.length;

switch ( length ) { case 0: break; case 1: arguments[1] = !length++ || this.length - arguments[0]; default: k = arguments[0] + arguments[1]; for (i < j; ++i) { if ( i < arguments[0] || i >= k ) { if ( i === k && length > 2 ) { for ( i = 2; i < length; ++i ) { tmp[tmp.length] = arguments[i]; }								i = k;							} tmp[tmp.length] = this[i]; } else { result[result.length] = this[i]; }					}					for ( i = 0, j = tmp.length; i < j; ++i ) { this[i] = tmp[i]; }					this.length = i;					break; }			return	result; }},

unshift: { test: function { var Array = [4,5]; return !( Array.unshift(1,2,3) === 5 && Array.join("-") === "1-2-3-4-5" ); },			callback: function { var length = arguments.length; Array.prototype.reverse.call(this); while (length--) { this[this.length] = arguments[length]; }				return	Array.prototype.reverse.call(this).length }		}	},

Date: { getYear: { test: function { return String( (new Date).getYear ).length === 4; },			callback: function { return this.getFullYear - 1900; }		},

setYear: { test: function { return String( (new Date).getYear ).length === 4; },			callback: function(setYear) { return	this.setFullYear(setYear + 1900); }		}	},

Function: { apply: { callback: function(scope, arguments) { var	i = arguments ? arguments.length : 0, result = new Array(i), call;

switch ( typeof scope ) { case	"boolean":	scope = new Boolean(scope); break; case	"number":	scope = new Number(scope); break; case	"string":	scope = new String(scope); break; default:		scope = scope || ( function { return this } ); break; }

do { call = "*" + Math.random; } while ( scope[call] !== undefined );

while ( --i ) { result[i] = "arguments[" + i + "]"; }

scope[call] = this; result = eval( "scope[call](" + result.join(",") + ")" ); try { delete scope[call] } catch(e) { scope[call] = undefined }; return	result; }},

call: { callback: function(scope) { for ( var i = 1, result = [], l = arguments.length; i < l; ++i ) { result[result.length] = arguments[i]; }			return	this.apply(scope, result); }}	},

Number: { toFixed:{ callback: function(max) { var	result = Math.pow(10, parseInt(max)), tmp = new Array(2);

result = String( Math.round( this * result ) / result ); if ( max > 0 ) { tmp = result.split( "." ); tmp[1] = (tmp[1] || "") + new Array(++max - (tmp[1] ? tmp[1].length : 0)).join( "0" ); result = tmp.join( "." ); }			return	result; }}	},

String: { lastIndexOf: { callback:function(tmp, i) { var	value = String(this), result = value.split("").reverse.join("").indexOf(String(tmp).split("").reverse.join(""), i || 0); return	result < 0 ? result : value.length - result; }},

replace: { test: function { return	"aa".replace(/a/g,function(a,b){return b + " "}) != "0 1 "; },			callback: ( function(replace) { return function(key, callback) {				var	value = String(this),					result = value;				if ( typeof callback !== "function" ) {					result = replace.apply(value, arguments);				} else {					var	k = !/\/.*g.*$/.test(key),						i = 0,						tmp = [];					while ( arguments = key.exec(result) ) {						tmp[tmp.length] = result.substr(0, arguments.index);						tmp[tmp.length] = callback.apply(null, arguments.concat([value.indexOf(arguments[0], i), value]));						result = value.substring(i += (arguments.index + arguments[0].length));						if ( k ) {							break;						}					}					result = tmp.join("") + result;				}				return	result			}})(String.prototype.replace) }	},

decodeURIComponent: function(value) { return String(value).replace(			/(%F[0-9A-F]%E[0-9A-F]%[A-B][0-9A-F]%[8-9A-B][0-9A-F])|(%E[0-9A-F]%[A-B][0-9A-F]%[8-9A-B][0-9A-F])|(%[C-D][0-9A-F]%[8-9A-B][0-9A-F])|(%[0-9A-F]{2})/g,			function( value, key, k, j, i ) { return String.fromCharCode( i ? parseInt(i.substr(1, 2), 16) : j ? ((parseInt(j.substr(1, 2), 16) - 0xC0) << 6) + (parseInt(j.substr(4, 2), 16) - 0x80) : k ? ((parseInt(k.substr(1, 2), 16) - 0xE0) << 12) + ((parseInt(k.substr(4, 2), 16) - 0x80) << 6) + (parseInt(k.substr(7, 2), 16) - 0x80) : ((parseInt(key.substr(1, 2), 16) - 0xF0) << 18) + ((parseInt(key.substr(4, 2), 16) - 0x80) << 12) + ((parseInt(key.substr(7, 2), 16) - 0x80) << 6) + (parseInt(key.substr(10, 2), 16) - 0x80) )}		);	},

encodeURIComponent: function(value) { function charCodeAt( i, length ) { var	result = i.toString(16).toUpperCase; length = (length || 2) - result.length; return	length == 0 ? result : new Array(++length).join("0").concat(result); };

return	String(value) .replace(/[\x00-\x20]|[\x25|\x3C|\x3E|\x5B|\x5D|\x5E|\x60|\x7F]|[\x7B-\x7D]|[\x80-\uFFFF]/g, function(value) {				var	i = value.charCodeAt(0),					tmp = [];				if (i < 128) {					tmp[tmp.length] = charCodeAt(i);				} else if (i < 2048) {					tmp[tmp.length] = charCodeAt(0xC0 + (i >> 6));					tmp[tmp.length] = charCodeAt(0x80 + (i & 0x3F));				} else if (i < 65536) {					tmp[tmp.length] = charCodeAt(0xE0 + (i >> 12));					tmp[tmp.length] = charCodeAt(0x80 + (i >> 6 & 0x3F));					tmp[tmp.length] = charCodeAt(0x80 + (i & 0x3F));				} else {					tmp[tmp.length] = charCodeAt(0xF0 + (i >> 18));					tmp[tmp.length] = charCodeAt(0x80 + (i >> 12 & 0x3F));					tmp[tmp.length] = charCodeAt(0x80 + (i >> 6 & 0x3F));					tmp[tmp.length] = charCodeAt(0x80 + (i & 0x3F));				}				return	"%" + tmp.join("%");			}) .replace(/[\x23|\x24|\x26|\x2B|\x2C|\x2F|\x3A|\x3B|\x3D|\x3F|\x40]/g, function(value) {				return	"%" + charCodeAt(value.charCodeAt(0));			}) .replace(/"/g, "%22")			.replace(/\\/g, "%5C");	},

execScript: function(value) { var tmp = document.createElement("script"); tmp.type = "text/javascript"; tmp.appendChild(document.createTextNode(value)); with (document.documentElement) { removeChild(appendChild(tmp)); }	} });

title: MediaWiki:Gadget-JSL.js


text:
MediaWiki:Gadget-JSL

JavaScript: Full support for JavaScript 1.6 for web browsers that lack it, including Internet Explorer, Opera, and Safari.

title: MediaWiki:Gadget-JSL


text:
User:Kmill064

Thank you for visiting my user page!! My name is Kendall Miller, and I am currently residing in Williamsburg, VA. Dancing is my passion, although never having professional training, and I love going to hear live music. In the previous year, I enjoyed my position as a Recreation Leader for the before and after school program in James City County Schools. My involvement with the program continues, and obviously I view it as a precursor to a lifelong career in teaching. My grade level preference is ranging between 3rd and 6th grade, even realizing the spectacular variances among the span.

I firmly support the notion that each child embodies innate and purposeful qualities, which upon discovering, makes him or her a valuable contributor in the learning process. I often witness that students' confidence level parallels their learning capabilities in elementary and middle school, therefore I place much importance on enabling students to see themselves as individuals with specific positive abilities. With the basic understanding that no two children learn in exactly the same manner, it is the teacher's responsibility to help students relate to the material.

I believe that those with special needs deserve to be considered on a 'case-by-case' premise to ensure the best fitting circumstances are put-forth. The inclusion of special needs students with the majority of the class is valuable, because sensitivity can increase on the part of the non-special needs children. This integration encourages them to view disabled or challenged students similarly to themselves. Of course challenging scenarios will arise, yet as long as the educator promotes positive interactions and respect, the benefits can be tremendous. Right now, since I do not have experience teaching, my opinion on grouping according to skill level wavers. In segregating and labeling, students come to know themselves as having a particular level of intelligence. On the other hand, working within different comfort levels serves to ease pressure. I expect to be formulating more precise ideas on these and other topics, so stay tuned!

title: User:Kmill064


text:
User talk:Sthur002

How am I doing so far ''I hope everyone is having as much fun creating their wikibook user pages and articles as I am. I would really appreciate your opinions as to how I am doing so far, what you think or my layout, etc... So please take a few minutes, or longer, and tell me what you think and please be as brutal or nice as you want to be. I appreciate any and all comments!''

RE: Reader Response

Hi Stacy!

Thank you for taking the time to read and respond to my article on including GLBTQ students in the classroom. It was a very interesting topic to explore and an important one. I agree with your sentiment these students should be taken care of and treated the same as any other student. My hope is, as more students decide to come out at younger ages, that teachers will learn more and come to accept them. Mworr002 (talk) 00:56, 30 June 2008 (UTC)

Hi Stacy. My name is Jessica, and I'm a music education major. Although social studies has never been my favorite subject, one of my favorite teachers taught the subject. :-) You discussed that you wanted to include non-biased multicultural information and activities in your teaching, are their any specific cultural subjects you feel teachers tend to ignore or show bias toward?  Have you or do you intend to study or teach abroad?  If so, where did you go and how was the experience?  If you could teach anywhere in the world, where and what would you teach?  Jmetc001 (talk) 02:49, 2 June 2008 (UTC)

Hey Stacy. You have a great user page. I agree, 100%, that a classroom should be a democracy with the teacher acting as the president. It is vital that the students have a voice and feel like they matter in their class. It helps ease any apprehension about asking questions and so forth. Good luck with everything :) Tre' (Abroo015 (talk) 03:05, 10 June 2008 (UTC))

Stacy! I love the fact that you can identify with and take parts from different philosophies. The way you plan to run your classroom sounds idealistic but very possible with organization. Everything you mentioned in your teaching philosophy is absolutely necessary for students to become more than just little people, for them to learn how to be responsible citizens and effective learners. You mentioned multiculturalism and exposing students to different views; do you think differentiation will be hard to achieve in your larger classes? Also, I'm subbing too, right now, to meet some administration. What has been your biggest challenge, just out of curiosity? Good luck with the class. Have a great one!

Brandie (Bthom039 (talk) 03:05, 2 June 2008 (UTC))

Welcome to Wikibooks, Sthur002!

Image:DSCN0152.JPG is missing license or source information

 * Would you please also re-upload this with a descriptive filename? Thanks. – Mike.lifeguard  | talk 03:49, 25 May 2008 (UTC)
 * Please check all your uploads, and re-upload them with descriptive names as well. Thanks. – Mike.lifeguard  | talk 03:50, 25 May 2008 (UTC)

I appreciate the help! This is what happens when I am trying to do 3 to 4 things at once, I forget a step! I will re-load my photos and add in the necessary requirements!

Author Response Jmetc001 (talk) 20:55, 15 June 2008 (UTC)
Hey Stacy,

It's Jessica again responding to your last post:

'''Jessica, Hi this is Stacy you reviewed my article, Educational Milestones of the 21st Century. First off I wanted to say that I really appreciate the time and effort that you put into reading my article and making notes on areas to which I could improve I really appreciate it. I next wanted to respond back to a comment that you had made about one of the possible answers to a multiple choice question of mine. In my research for the article my husband and I started talking about Darpanet and how it is associated with what he does in the air force. I put down that possible answer just as a goofy thing that I do, there are no more classrooms that use darpanet. I did not want you to think that I was crazy or anything. Sthur002 (talk) 21:06, 14 June 2008 (UTC)'''

I didn't think you were crazy. :-) I had actually never heard of Darapnet, until I read it as one of the question answers.  I had to look it up online.  I think it's great to include things outside the box.  It made me learn something new.  I'm curious though, does anybody use darapanet?  And what is the basic difference between that and the internet network we use today?

Jmetc001 (talk) 20:55, 15 June 2008 (UTC)

title: User talk:Sthur002


text:
Lojban/Anaphora/Subscription

Anaphora subscription is the process by which one (the narrator) may unambiguously refer a sumti or bridi/selbri by using a cmavo instead (such as a pro-sumti or pro-bridi, respetively), but in some manner other than the default of the pro-sumti/pro-bridi. This method employs Lojban numerals and the entire cmavo-subscript-numeral reference is usually written as one word.

Vocabulary
xi              (cmavo) with sub(script)/further previous reference (numeral) Where any of the above word(s) is/are enclosed in parenthesis and is/are underlined, replace the said word with that intended

Additional Notes and/or Examples

 * [lo smuci .i lo forca .i la rik. pilno rixire .i la .alis. pilno riximu]
 * = A spoon.  A fork.  Rick uses (ri-sub-two = repeat penultimate = a fork ).  Alice uses (ri-sub-five = repeat fifth-from-last/second from antepenultimate = a spoon ).

 * [go'ixire] is the same as [go'e].
 * [faxixa] refers to the 6th sumti position of a brivla.

title: Lojban/Anaphora/Subscription


text:
Methods Manual for Salt Lake Studies/Scope and Introduction

Scope and Introduction
Salt lakes provide an excellent opportunity to study systems that are relatively unstudied. The unique features of these lakes - the arid environments in which they occur, the varied ionic composition of their brines, and the ephemericity of many of these lakes, provide challenges for the researcher.

Methods developed for use in freshwater environments may not provide usable, or reliable, results in saline systems. Many analyses require dilution of samples to reduce salt effects, and this reduces the sensitivity of the analysis, sometimes to the point of uselessness. The challenges of measuring the characteristics of saline and hypersaline systems have been addressed by many authors over the years, however the modified methods they have proposed are scattered throughout the literature.

It is hoped that this manual will provide researchers and students of salt lakes with a comprehensive reference to methods used in salt lake studies.


text:
Methods Manual for Salt Lake Studies/Authors

Authors
The authors who have contributed to this manual are encouraged to list their names and institutions here.

Peri SJ Coleman, Principal Consultant, Delta Environmental Consulting, 12 Beach Road, St Kilda SA, AUSTRALIA

Brian V Timms, Honorary Research Associate, Australian Museum, 6 College St, Sydney NSW, AUSTRALIA

Fuland123


text:
Trainz/Appendixes/The Trainz Asset Repair Library (TARL)

TARL, the topic of this page is beyond obsolete, it is now defunct. The private individual, Steve Forget hosting and running the Trainzhaven website, at http://trainz.ws/tarl/ was doing so as a Greater Trainz Community service despite becoming relatively disinterested in regular Trainzing due to the time demands of a busy life. Unfortunately, after over three years of good citizenship Steve's site (TARL MK1) fell victim to a lightning strike, which also took out many of the backups. He and all contributors certainly earned all our thanks; especially valuable hard work was put in by Ianwoodmore, Bob Weber, Pencil42 and Spruce—who among others such as Pcas1986 are behind TARDIS (or parts of it), the current replacement.

Steve Forget advised the community he was pulling the plug on efforts to reconstitute the services (known as TARL MK2) August 17th, 2007, though there was an interval when some others tried to manage the load while he continued to host it. Subsequently, TARL six years after TARL began brightening the day of Trainzers it was superseded by (newset upgrade release is 3.7) scripts running on AssetX, again community efforts spear-headed by a few determined Trainz lovers. There is a full description at this N3V Blog page.

History
TARL begun back in the Trainz boom days before TRS2006 was the place to find out what to do to fix a config.txt file, or to find a missing asset. People could and would also post your fixes to a for other people. TARL MK1, in the 3 years it was available, hosted some 8,000 repairs from ~500 authors' assets. Only one author declined to participate and his creations were regrettably excluded to the detriment of the Trainz Community in the opinion of many.

TARL was undergoing a thorough repair, upgrade and review back in 2007, but TARL MK2 never fully recovered the library amassed in TARL MK1. TARL was corrupted during a severe electrical storm in 2007. Many fixits were lost and some of the functionality. We hope to resume uploads by the end of 2008, but first we have to determine what's missing.

Notes and footnotes

 * All technical and many HowTo references are normally sourced
 * 1) from the ,
 * 2) it's
 * 3) or the various  (0nline or in Trainz releases of yore).