text:
Ice axe

An ice axe is a multi-purpose hiking and climbing tool used by mountaineers in both the ascent and descent of routes that involve snow, ice, or frozen conditions. Its use depends on the terrain: in its simplest role it is used like a walking stick, with the mountaineer holding the head in the center of their uphill hand.

On steep terrain it is swung by its handle and embedded in snow or ice for security and an aid to traction. It can also be buried pick down, the rope tied around the shaft to form a secure anchor on which to bring up a second climber, or buried vertically to form a stomp belay. The adze is used to cut footholds, as well as scoop out compacted snow to bury the axe as a belay anchor.

History
The ice axe of today has its roots in the long-handled alpenstock that came before it. Not only is an ice axe used as a climbing aid, but also as a means of self-arrest in the event of a slip downhill.

Most ice axes meet design and manufacturing standards of organizations such as the Union Internationale des Associations d'Alpinisme (UIAA) or European Committee for Standardization (CEN). There are two classifications of ice axe, Basic (B/Type 1) and Technical (T/Type 2).

 * Basic ice axes are designed for use in snow conditions for general mountaineering, and are adequate for basic support and self-arrest. Technical ice axes, which may have curved shafts, are strong enough to be used for steep or vertical ice climbing and belaying on such ground.
 * Specialized scaled-down ice axes used for vertical ice climbing are known as ice tools. Ice tools have shorter and more curved shafts; stronger, sharper, and more curved replaceable picks, and often ergonomic grips and finger rests. Used in a pair, one is usually equipped with an adze for chipping and clearing snow whilst the other has a hammer to aid gear placement.

For ski mountaineering and racing, where weight is of paramount concern, manufacturers have produced short (~45 cm) and light (200 - 300 g) ice axes. Some of these have aluminum alloy heads/picks which are unlikely to be as effective or robust as steel heads/picks.

Components
An ice axe consists of at least five components:
 * Head – usually made of steel and featuring a pick and adze. A hole in the center is provided for attaching a wrist leash or carabiner.
 * Pick — the toothed pointed end of the head, typically slightly curved (aiding both in ergonomics and self-arrest).
 * Adze — the flat, wide end of the head used for chopping steps in hard snow and ice.
 * Hammer — the hammer is an alternative to the adze. May be used for aiding placement of protection.
 * Shaft — straight or slightly angled, typically wider front-to-back than side-to-side, flat on the sides and smoothly rounded on the ends. Traditional shafts were made of wood, but are now almost exclusively of lightweight metals (such as aluminum, titanium and steel alloys) or composites (including fiberglass, Kevlar or carbon filament).
 * Spike, or ferrule — a point at the base of the shaft used for balance and safety when the axe is held by its head in walking stick fashion. Usually made of steel.

Accessories

Ice axe accessories include:
 * Leash – nylon webbing with an adjustable loop for securing the axe to hand. Often secured by a ring constrained to slide a limited distance on the shaft.
 * Leash stop – a rubber keeper or metal stud preventing the leash from slipping off of the ice axe.
 * Snow basket – similar to baskets on ski poles, temporarily mounted on the shaft close to the spike to keep the shaft from sinking into soft snow. Not at all common in Europe.
 * Pick and adze guard – a cover to protect from sharp edges and points when the axe is not being used.
 * Spike guard – a cover to protect from the sharp spike when the axe is not being used.

Size
Ice-axe spike-to-head lengths used to generally range from 60 - 90 cm. This is just too short to be used as a walking stick on level ground (the way its forebear, the 150 cm 19th century alpenstock, was), but is ergonomic when ascending steep slopes. For flatter ground, where consequences of a slip are not large, walking poles are more appropriate.

The old method to approximate the correct length of an ice axe was for the climber to hold the axe (spike facing the ground) at his/her side while standing relaxed. The spike of the ice axe should barely touch the ground when the climber stands fully upright holding the axe in this manner. This may still be appropriate when the ice axe is to be used on relatively flat ground, most likely in glacier travel.

Modern mountaineers often carry shorter ice axes 45 - 60 cm, for general use, with anything over 60 cm typically regarded as too large and unwieldy for chopping steps or climbing steep snow. A walking pole (providing a third point of contact), although stabilising and making a slip less likely, is unlikely to stop a fall.

History
The antecedent of the ice axe was the alpenstock, a long wooden pole with an iron spike tip, used by shepherds for travel on snowfields and glaciers in the Alps since the Middle Ages. On 8 August 1786, Jacques Balmat and Michel-Gabriel Paccard made the first ascent of Mont Blanc. Balmat, a chamois hunter and crystal collector, had experience with high mountain travel, and Paccard had made previous attempts to climb the peak. Illustrations show Balmat carrying two separate tools that would later be merged into the ice axe – an alpenstock (or baton) and a small axe that could be used to chop steps on icy slopes.

According to the earliest manufacturer of ice axes, Grivel, these two tools were merged to create the first true ice axe around 1840. Early ice axes had a vertical adze, with the cutting edge aligned with the direction of the shaft, as in a conventional axe. This design lasted until at least 1860, but eventually the adze was rotated to the current position, perpendicular to the direction of the shaft. The Italian Alpine Club published a book in 1889 entitled Fiorio e Ratti – The dangers of mountaineering and rules to avoid them, which recommended ice axes as among "the inseparable companions of the mountaineer".

In the late 19th century, the typical ice axe shaft measured 120 - 130 cm in length. British climber Oscar Eckenstein started the trend toward shorter ice axes with a lighter model measuring 85 - 86 cm. Initially, this innovation was criticized by well-known climbers of the era, including Martin Conway, a prominent member of the Alpine Club, who was the leader of an early expedition to the Baltoro region near K2 in 1892 of which Eckenstein was a member.

Early ice axes had picks and adzes of about equal lengths. By the beginning of the 20th century, the pick lengthened to about twice the length of the adze. Improvements in crampon design (pioneered by Eckenstein in 1908) and ice climbing technique led to use of shorter, lighter ice axes appropriate to steeper ice climbs in the period between the world wars.

A famous rescue involving an ice axe took place during the Third American Karakoram Expedition to K2 in 1953. One of the climbers, Art Gilkey, was incapacitated by thrombophlebitis. The other climbers attempted to rescue him by lowering him down the mountain by rope, wrapped in a sleeping bag. While crossing a steep ice sheet, a slip caused Gilkey and five other climbers to begin falling down a steep slope. Climber Pete Schoening wedged his ice axe alongside a boulder, and managed to belay the roped climbers, saving their lives. (Gilkey, however, later in the same descent was swept away by an avalanche. Remains of his lost corpse were discovered in 1993. ) Schoening's ice axe is now on display at the Bradford Washburn American Mountaineering Museum in Golden, Colorado.

In 1966, Yvon Chouinard led a significant redesign of ice axes, working with initially reluctant manufacturer Charlet to develop a 55 cm ice axe with a dramatically curved pick. Chouinard believed that "a curve compatible with the arc of the axe's swing would allow the pick to stay put better in the ice. I had noticed that a standard pick would often pop out when I placed my weight on it." Chouinard's idea worked and began a period of innovation in ice axe design.

In 1978, the Safety Commission of the Union Internationale des Associations d'Alpinisme (UIAA) established formal standards for ice axe safety and performance. This led to the replacement of the traditional wooden shaft by metal alloy shafts. Ergonomically curved handles became widespread in 1986. Use of modern aluminum alloys have led to a dramatic reduction in the weight of some ice axes. One model now on the market, the C.A.M.P. Corsa, weighs only 205 g with a 50 cm shaft. One expert rated this lightweight ice axe as "ideal for low angle glacier travel" but said he "craved the solid and secure heft of a true steel mountain ax" in more demanding steep alpine conditions.

Attachment to a pack

When not in use an ice axe is stored on the outside of a pack (rucksack). Many models come with a nylon webbing loop sewn on its rear base (off to one side to allow the pick to stay behind the hiker), together with a means to restrain its shaft. Rucksacks with attachment points for two ice axes are also available, popular in ice climbing where two tools are used.

title: Ice axe


text:
User:Daniel Quinlan/redirects

Concept
Find broken links that are easily fixed by matching with very similarly named articles. The work of finding these links is largely done. One or more methods work to fix them:
 * adding redirects
 * correcting links to point at the right article
 * moving articles (less common)

Explanation of broken link listings
Format:
 * Right-hand-side is broken links
 * Left-hand-side is existing articles that look like they might apply
 * (number) means that broken link appears next to multiple articles

Convention for working on these:
 * Please don't remove any lines.
 * strike broken links (only the link) you believe cannot be made a valid redirect
 * if you create a redirect, the broken link will no longer be red, so no change is needed to show you finished a line
 * if you need to strike a long list of lines, go ahead and use a single big fat strike grouping

Thanks in advance for any help. You don't need any special qualifications to work through the list. I've been doing it like this:
 * 1) Click on the article and see who or what it is about
 * 2) Click on each broken link (in red), then click on "What links here" (on the left) and note the context of the broken link (for people, look at professions, locations, dates, and so on).
 * 3) Decide if the two are the same or not.  If they are, add a redirect to the broken link by inserting  #REDIRECT name of article  and if not, put <s> and </s> around the broken link so nobody else will check it.

Broken links
I split this into multiple articles to help avoid edit conflicts a bit:

 * Missing middle name, word, or initial A to M
 * Missing middle name, word, or initial N to Z
 * Middle name, word, and initial close matches
 * Case mismatches
 * Probable plurals
 * Other approximate string matches: A B C D E F G H I J K L M N O P
 * length of both is longer than 5 characters
 * doesn't start or end with a number
 * length of broken link is not less than 2/3 the length of the article title
 * longest common substring is not less than 2/3 the length of the article title
 * 8% approximate string match in both directions (using String::Approx)
 * not including case mismatches and possible plurals

You can assume any broken link that is not struck through deserves a look. I suggest picking a letter at random.

Background
Brion was kind enough to prepare me some listings of articles and broken links and I wrote a program to find broken links that appear to be related to an already existing article. It's not 100% accurate and there are some conflicts, so humans are needed to figure out what's valid and what's not. I found some 1678 articles that could be linked from 2073 different broken links. When done with this list, I believe a good 500 broken links will be turned into valid and useful redirects. (Ha, everyone who said I was a rabid deletionist is proven wrong!)

Right now, the list is just based on middle names which I have noticed to be a frequent cause of broken links. However, I'll probably write some more complicated programs to find other near-matches if this turns out well.

Anyway, I could use some help. The lists (it's broken into two sub-pages now) are located at User:Daniel Quinlan/redirects1 and User:Daniel Quinlan/redirects2. Please follow the convention for noting when a broken link cannot be connected to an article (other than that, the page shouldn't really need to be edited aside from questions, notes, etc.) and have fun. I've already done about 70 or so, but need to sleep now. Daniel Quinlan 06:46, Nov 6, 2003 (UTC)

Since putting up the first two pages, I added another 11600 articles that can possibly be matched to an even larger number of redirects. Daniel Quinlan 05:22, Nov 10, 2003 (UTC)

Other notes
Category:Wikipedia maintenance Category:Redirects
 * If you run into any September 11th victims, just put (September 11th victim) after the redirect and leave it alone for now. We can handle the lot of them en masse later.
 * Likewise, you can put (not sure) or other notes if necessary after a redirect.

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

title: User:Daniel Quinlan/redirects


text:
Kʼinich Kan Bahlam II

Kʼinich Kan Bahlam II, also known as Chan Bahlum II, (May 23, 635 – February 20, 702) was ajaw of the Maya city-state of Palenque, in what is now the state of Chiapas, Mexico. He acceded to the throne in January, 684, several months after the death of his father and predecessor, Kʼinich Janaab Pakal I and ruled until his death.

Biography
He continued the ambitious project of adorning Palenque with fine art and architecture begun by his father; his most important addition to the city of Palenque was the Temple of the Cross which is the center piece of the Temple of the Cross Complex. He was succeeded by his younger brother, Kʼinich Kʼan Joy Chitam II, another brother was probably Tiwol Chan Mat. The monuments and text associated with Kʼinich Kan Bahlam II are: Tablets and Alfardas of the Temples of the Cross, Sun and Foliated Cross; tablets and facade of the Temple of the Inscriptions; Temple 17 Panel; Death's Head; Jonuta Panel; Temple of the Cross Stela.

title: Kʼinich Kan Bahlam II


text:
Bobby Hatfield

Robert Lee Hatfield (August 10, 1940 – November 5, 2003) was an American singer. He and Bill Medley were the Righteous Brothers. He sang the tenor part for the duo and sang solo on the group's 1965 recording of "Unchained Melody".

Early life
Born in Beaver Dam, Wisconsin, Hatfield moved with his family to Anaheim, California, when he was four. He attended Anaheim High School, where he played football and baseball and was co-captain of the basketball team. He was student body president in the 1957–1958 school year, graduating in 1958.

Baseball
Hatfield was scouted by the Los Angeles Dodgers. He briefly considered signing as a professional ballplayer, but his passion for music led him to pursue a singing career while still attending high school. He attended Fullerton College.

He eventually encountered his singing partner, Bill Medley, while attending California State University, Long Beach. Hatfield was an alumnus of Sigma Alpha Epsilon fraternity.

Career
Bobby Hatfield initially was in a group from Anaheim called the Variations.

Paramours: 1962–1963
In 1962, Hatfield joined with Medley, who was in a group called the Paramours, and formed a five-member group using the same name: Paramours. They first performed at a club called John's Black Derby in Santa Ana. They were signed to a small record label Moonglow in 1962. They released a single "There She Goes (She's Walking Away)" in December 1962. However, the Paramours did not have much success and soon broke up, leaving Hatfield and Medley to perform as a duo in 1963.

The Righteous Brothers: 1963–1968
Later, Hatfield and Medley performed as a duo and named their singing act The Righteous Brothers. They were often told they sounded like African-American gospel singers and chose the name after black Marines remarked of their singing, "that's righteous, brothers" and called them "righteous brothers". Their first charted single as the Righteous Brothers was "Little Latin Lupe Lu" released under the label Moonglow Records, and they appeared regularly on the television show Shindig!

In 1964, they appeared in a show at the Cow Palace near San Francisco and met the music producer Phil Spector, whose group The Ronettes was also in the show. Spector was impressed and signed them to his own label Philles Records. Their first No. 1 was "You've Lost That Lovin' Feelin'," produced by Phil Spector in 1964. Follow-up hits included "Unchained Melody," which was actually a Hatfield solo performance. After the success of "Unchained Melody", Spector then started recording older standards with the Righteous Brothers such as "Ebb Tide", which Hatfield also performed solo, and it reached the Top 5. Both "Unchained Melody" and "Ebb Tide" were songs he had performed with his first group, the Variations. Another two of the last songs the duo recorded with Philles Records, "The White Cliffs of Dover" and "For Sentimental Reasons", were performed solo by Hatfield.

In 1966, the Righteous Brothers left Spector and signed with Verve/MGM Records, and had a hit with "(You're My) Soul and Inspiration". However the duo broke up in 1968, and Hatfield teamed with singer Jimmy Walker (from The Knickerbockers) using the Righteous Brothers name on the MGM label. The new partnership released an album but did not have much success.

Solo career
Hatfield recorded a number of singles as a solo artist. In 1963, Hatfield released an uncharted single, "Hot Tamales"/"I Need a Girl" on Moonglow Records. He released the self-penned "Hang Ups" and covers of older songs, but "Only You" was his only charted single, peaking at No. 95. In 1969, Hatfield also appeared in the TV movie The Ballad of Andy Crocker.

In 1971, he released a solo album, Messin' in Muscle Shoals, recorded at the FAME Studios in Muscle Shoals in August 1970. However, MGM was in financial trouble, a scheduled single "The Promised Land"/"Woman You Got No Soul" was not released, and with little promotion the album largely went unnoticed.

Reunion
Hatfield and Medley reunited in 1974, and had another hit, the No. 3 "Rock and Roll Heaven." A hiatus followed between 1976 and 1981 when Medley retired from music after his ex-wife died, but they reunited for an anniversary special on American Bandstand in 1981 to perform an updated version of "Rock and Roll Heaven".

In 1990, after the success of the film Ghost in which "Unchained Melody" was used, Hatfield re-recorded the song and remarked to friends that he had not lost any of the high notes in his tenor range since the original recording, but had actually gained one note. The duo then toured extensively all through the 1990s and early 2000s.

The Righteous Brothers were inducted into the Rock and Roll Hall of Fame in March 2003 by Billy Joel.

Personal life
Hatfield had a short marriage with Joy Ciro, who appeared as a dancer on the T.A.M.I. Show and Where the Action Is. They had two children, Bobby, Jr. and Kalin. Hatfield married Linda Torrison on August 4, 1979, and they remained married until his death. Linda suffered from lupus, and Hatfield set up an annual golf tournament, the Bobby Hatfield Charity Golf Classic, to raise funds for charities for the disease. The couple had two children, Vallyn and Dustin.

Death
Hatfield died at the Radisson Hotel in downtown Kalamazoo, Michigan, on November 5, 2003. He was found by Bill Medley and the Righteous Brothers' road manager Dusty Hanvey. A security guard let them into Hatfield's room after he had failed to show up at the concert venue when expected. He apparently died in his sleep, hours before a scheduled Righteous Brothers concert. In January 2004, a toxicology report concluded that cocaine use had precipitated a fatal heart attack. The initial autopsy found that Hatfield had advanced coronary disease. The medical examiner stated that "in this case, there was already a significant amount of blockage in the coronary arteries."

Discography
This is Hatfield's discography as a solo artist. See The Righteous Brothers for his discography as part of the duo.

Singles
Film soundtracks
 * Zig Zag (Original Motion Picture Score) (MGM, 1970)

title: Bobby Hatfield


text:
Panzer General

Panzer General is a 1994 computer wargame developed and published by Strategic Simulations Inc. (SSI). It simulates conflict during World War II. The designers of Panzer General were heavily influenced by the Japanese wargame series Daisenryaku.

Panzer General was a major commercial hit: 250,000 units were sold at full price, and long tail sales continued in the years ahead. It became and remained SSI's best-selling game across all genres, and was named the best-selling computer wargame of all time in 2007. It is the first in the commercially successful Panzer General series.

Gameplay
Panzer General is a turn-based game, set on operational level hex maps. One plays lone scenarios from either Axis or Allied side and against a computer or human opponent. In Campaign Mode, the player assumes the role of a German Generalissimus against the Allied computer.

Panzer General is an operational-level game, and units approximate battalions, although the unit size and map scale from one scenario to the next are elastic. While the names and information for the units are reasonably accurate, the scenarios only approximate historical situations.

Its novel feature was to link individual scenarios into a campaign spanning World War II from 1939 to 1945. Units are able to gain experience and become stronger, where success in one battle would award the player prestige to upgrade units, acquire additional units, and select a better scenario for the next battle.

The game requires the player to use combined-arms tactics, where each unit is strong against some unit types but very vulnerable to others. Dug-in enemy positions must be softened by artillery, which is vulnerable and needs protection. Before attacking the infantry and anti-tank, one needs first to destroy the enemy artillery that protects them from behind. If no tanks can get within range, one does this mostly by bombers, but then it is advantageous to destroy the air defense units first. The fighter planes must negotiate dual roles: destroying the enemy air force and protecting their own bombers.

The player must carefully observe the road system to speed the advance, or may use Bridge engineers to cross the rivers. The game rewards a Blitzkrieg strategy - penetrating deep into the enemy positions while postponing the destruction of some of the encountered enemy units for later.

The performance of units is increased by their experience points, which are acquired through combat. In Campaign mode particularly, one then has to protect the experienced units as the most valuable assets.

Campaigns
Panzer General has 38 scenarios based on real or fictitious battles from World War II. The player can engage in a single battle or a campaign mode.

In Campaign Mode, a series of battles unfold as a campaign heads to victory. There is one long campaign as Germany, with five starting locales:

 * Poland (1939); from Poland, through Norway, to the West with possible amphibious invasion in Britain.
 * North Africa (1941); from North Africa to the Middle East.
 * Barbarossa (1941); from the initial invasion of the Soviet border to Moscow.
 * Italy (1943); from the Allied landing on Sicily to the end of the war.
 * Kharkov (1943); from the German spring offensive to the end of the war.

The task in most scenarios is to take all objective cities in a given number of turns; taking them at least five turns earlier is considered a major victory. In scenarios from later stages of war, the Germans try to hold positions against a stronger enemy. A typical task is then "hold at least two of our objective cities for 20 turns; for a major victory, hold at least five".

All campaigns branch out and end either by the general being sacked for incompetence or end of the war. In Campaign Mode, a major victory could possibly change known historical events. For example, after a major victory over France, the player invades Britain. Later in the game, after a major victory in Barbarossa, the player can convince the German High Command to attack Moscow immediately (which costs him or her much prestige) rather than diverting to Kiev before Moscow.

If the player achieves a major victory both in Britain and in Moscow, he or she is allowed to carry out an invasion of the United States and reach Washington. In any other case, he/she must fight well in many battles to get another chance to attack them. If either Britain or USSR survive this attack, they drive the Germans all the way back to Berlin. The best the player can do is to fight well in each battle to have enough prestige for the next one - and to achieve a major victory in the final defense of Berlin.

Development
The design of Panzer General was based on the Japanese wargame Daisenryaku. The Strategic Simulations (SSI) team had played a Japanese-language version of the game's Sega Genesis release extensively, and were inspired by its streamlined design. Scenario designer Chuck Kroegel later described Panzer General's structure as "diametrically opposed to the Gary Grigsby type of game that SSI was used to making". He noted that SSI founder Joel Billings was initially hesitant to adopt the design style. The company's Graeme Bayless later wrote of Daisenryaku: "The genius in this game was the fact that it took the highly complex subject (WWII conflict on land) and boiled it down to the pertinent parts".

Daisenryaku would go on to serve as the inspiration for the entire Panzer General series.

Sales
Panzer General was a commercial success. By November 1995, it had sold over 100,000 copies in the United States and 50,000 in Europe. According to William R. Trotter of PC Gamer US, it was particularly popular in Germany. By August 1996, sales had surpassed 250,000 copies. Describing the situation at the time, Computer Gaming World columnist Terry Coleman wrote: "When you consider that a new Windows 95 and Macintosh version has just been released, it seems fair to say that PG will be incontestably the best-selling historical wargame of all time". The following year, T. Liam McDonald of GameSpot reiterated that the game had sold over 250,000 copies, and noted that 60,000 of these sales came from its PlayStation release. In 2007, Retro Gamer dubbed Panzer General "greatest-selling true wargame of all time", and SSI's most successful title across all genres. The magazine noted that it had accrued 250,000 full-price units sold "and many more in the following years".

Computer versions
Panzer General won Computer Gaming Worlds 1994 "Wargame of the Year" and PC Gamer USs "Best Wargame" awards, and was a runner-up for the former magazine's overall "Game of the Year" award, which went to X-COM: UFO Defense. The editors of Computer Gaming World called Panzer General "the first wargame since 1987 to garner the #1 spot on the CGW Top 100 poll—a fine endorsement for the most exciting wargame in a long time".

In 1996, Next Generation listed it as number 51 on their "Top 100 Games of All Time", contending that though the game's interface is simple, the complexity of the strategy is exceptional. In 1996, Computer Gaming World declared Panzer General the 15th-best computer game ever released, and listed the Game Over scene as #8 on its list of "the 15 best ways to die in computer gaming". The magazine's wargame columnist Terry Coleman named it his pick for the best computer wargame released by late 1996.

In 1996, Panzer General won the Origins Award for Best Military or Strategy Computer Game of 1995.

Console ports
Reviews for the 3DO version were generally positive. The four reviewers of Electronic Gaming Monthly remarked that the game's high level of complexity makes it difficult to get into and unappealing to anyone but enthusiasts of the genre, but that the gameplay design is solid and there is a strong dose of variety to the campaigns. A critic for Next Generation argued that while the music and battle animations quickly wear thin, the game allows them to be turned off and "what it lacks in style, it makes up in substance". He made particular note of the impressive depth of the strategy and the ability to control nearly every land and aircraft used in the World War II European theater. Sir Garnabus of GamePro complimented the accuracy of the 3DO port but otherwise panned the game, contending that war strategy games in general are poor due to their minimalist graphics and focus on thinking rather than acting.

In their brief review of the PlayStation version, Next Generation remarked: "One of the best PC wargames of all time and still highly thought of, this version doesn't miss a trick".

Legacy
In 1996, Robert Mayer of Computer Games Strategy Plus argued:

"In the years to come, computer wargamers may divide the world into two epochs, Before Panzer General, and After. Before Panzer General, wargames were supposed to be complex, intimidating things, accessible only by the anointed few, the grognards, veterans of decades of board gaming and masters of military arcana. SSI's Panzer General, however, shattered that view, with excellent graphics and animation, and sheer fun that drew in grizzled campaigners as well as green novices. Not surprisingly, there seems to be a rush now towards kindlier, gentler wargames."

Bruce Geryk of GameSpot argued that Panzer General resurrected the computer wargaming genre.

Direct sequels
Panzer General was the first game in the Panzer General series, which grew in the years after its release. It was followed by Allied General (Panzer General II in Germany), which allows play from the Allied point of view and features four new campaigns. Other sequels include Fantasy General, Pacific General and Star General. Its mainline sequel, Panzer General II (titled Panzer General 3D in Germany), upgraded the interface to use an overlay of photorealistic terrain, and to display different unit facings, resulting in an improved appearance. In the April 2000 issue of PC Gamer, it was voted the 44th best computer game of all time.

The series continued with People's General, an upgraded version of Panzer General II based on a World War III scenario between China and the UN. Panzer General also provided a Play by Email (PBEM) system. Panzer General 3D Assault arrived in 1999, with fully 3D graphics. Panzer General III: Scorched Earth was released in 2000, with better graphics and a redesigned interface.

title: Panzer General


text:
Northrop T-38 Talon

The Northrop T-38 Talon is a two-seat, twinjet supersonic jet trainer designed and produced by the American aircraft manufacturer Northrop Corporation. It was the world's first supersonic trainer as well as the most produced.

The T-38 can be traced back to 1952 and Northrop's N-102 Fang and N-156 fighter aircraft projects. During the mid-1950s, Northrop officials decided to adapt the N-156 to suit a recently issued general operating requirement by the United States Air Force (USAF) for a supersonic trainer to replace the Lockheed T-33. The bid was successful, in no small part on its lower lifecycle cost comparisons to competing aircraft, and the company received an initial order to build three prototypes. The first of these, designated YT-38, made its maiden flight on 10 April 1959. The T-38 was introduced to USAF service on 17 March 1961. The USAF is the largest operator of the T-38. Additional operators of the T-38 include NASA and the United States Navy. U.S. Naval Test Pilot School in Patuxent River, Maryland, is the principal US Navy operator. Other T-38s were previously used by the US Navy for dissimilar air combat training until replaced by the similar Northrop F-5 Tiger II. Pilots of other NATO nations have commonly flown the T-38 during joint training programs with American pilots. The T-38 remains in service with several air forces. , the T-38 has been in service for over 60 years with the USAF, its original operator. In September 2018, USAF announced the replacement of the Talon by the Boeing–Saab T-7 Red Hawk with phaseout to begin in 2023.

Development

In 1952, Northrop began work on a fighter project, the N-102 Fang, with shoulder-mounted delta wing and a single engine. The proposed General Electric J79 engine, weighing nearly two tons, meant the resulting aircraft would be large and expensive. During 1953, representatives from General Electric Aviation's newly created Small Aircraft Engine Department showed Northrop a relatively compact engine, around 400 lb installed weight, capable of 2,500 lb of thrust. Upon seeing the engine, Northrop VP-Engineering Edgar Schmued saw the possibility of reversing the trend toward the large fighters.

Schmued and chief engineer Welko Gasich decided on a small, twin-engined "hot-rod" fighter, the N-156. Northrop launched its N-156 project in 1954, aiming for a small, supersonic fighter jet capable of operating from the US Navy's escort carriers. When the Navy chose not to pursue equipping its fleets in such a fashion, favoring large fleet carriers instead, Northrop opted to continue work on the N-156 using in-house funding. It was instead recast as a lightweight fighter, referred to as the N-156F, that was primarily aimed at the export market.

In the mid-1950s, the USAF issued a general operating requirement for a supersonic trainer, seeking to retire its 1940s-era Lockheed T-33s for an aircraft better suited to training pilots to fly its high speed fighter aircraft. Northrop officials decided to adapt the N-156 to this competition. The only other candidate was the two-seat version of the North American F-100 Super Sabre. Although the F-100 was not considered the ideal candidate for a training aircraft (it is not capable of recovering from a spin), NAA was still considered the favorite in the competition due to that company's favored-contractor status with the USAF, but Northrop officials presented lifecycle cost comparisons that proved to be highly persuasive amongst USAF officials. Accordingly, Northrop was awarded an initial contract in June 1956 to produce three prototypes, designated YT-38.

On 10 April 1959, the first YT-38 performed its maiden flight at the hands of test pilot Lew Nelson.

The type was quickly adopted. The first production examples were delivered in 1961, entering service on 17 March 1961, complementing the Cessna T-37 Tweet primary jet trainer. When production ended in 1972, 1,187 T-38s had been built, plus two N-156T prototypes. Since its introduction, an estimated 50,000 military pilots have trained on this aircraft. The USAF remains one of the few armed flying forces using dedicated supersonic final trainers, as most, such as the US Navy, use high-subsonic trainers.

During 1962, the T-38 set absolute time-to-climb records for 3,000, 6,000, 9,000, and 12,000 meters, beating the records for those altitudes set by the F-104 in December 1958. The F-4 Phantom beat the T-38's records less than a month later.

The majority of T-38s built were of the T-38A variant. The USAF had a small number of aircraft converted for weapons training, designated AT-38B, which were fitted with a gunsight and could carry a gun pod, rockets, or bombs on a centerline pylon. By the end of September 2017, 503 T-38s were still operational with the USAF, while many more remained in operation around the world.

Most of the USAF's aircraft, T-38A and AT-38B, have been converted to the T-38C through an avionics upgrade program. Improvements include the addition of a head-up display, global satellite positioning, inertial navigation system, and traffic collision avoidance system. Most aircraft have received a propulsion modification to improve low-altitude engine thrust. Around a third of the fleet, those that experience more severe usage, are currently undergoing structural replacements and upgrades, as well as receiving new wings, to extend their service life to 2029.

The fighter version of the N-156 was selected for the US Military Assistance Program and produced as the F-5 Freedom Fighter. Many of these have since reverted to a weapons-training role, as various air forces have introduced newer types into service. The F-5G was an advanced single-engined variant later renamed the F-20 Tigershark. In 2018, the Iranian Air Force announced that an outwardly similar aircraft, named the Kowsar, had been constructed within Iran.

Design
The Northrop T-38 Talon is of a conventional configuration, with a small, low-mounted, long-chord wing, a single vertical stabilizer, and tricycle undercarriage. The cockpit accommodates a student pilot and instructor in a tandem seating arrangement. The flight controls were hydraulically-powered and lacked manual reversion, and thus the aircraft would be unflyable in the event of both engines failing mid-flight.

Its handling was relatively conventional and viceless. While it was originally considered to be too easy to fly compared with frontline fighters of the 1960s, by the twenty-first century, it had become regarded as the most challenging aircraft in the USAF's inventory. The aircraft's nimble performance earned it the nickname "white rocket". It had been considered by trainee pilots to be a somewhat unforgiving aircraft from an aerodynamic standpoint.

The T-38 can be visually distinguished from both the F-5B and F-5F, which are also derived from the N-156, by the wings. The wing of the T-38 meets the fuselage straight and ends square, while the F-5 has leading edge extensions near the wing roots and wingtip launch rails for air-to-air missiles. The wings of both the T-38 and the F-5 family use conventional skin over spar-rib structure. The T-38's wings were originally designed to withstand 7.33-G loads and for a fatigue life of 4,000 flight hours. This proved sufficient for the majority of the training syllabus, but was a major limiting factor when the aircraft was used for aggressive dogfighting-style maneuvering. Incidents of wing tips separating mid-flight were reported. Northrop resolved this via the installation of new wings with thickened skins.

Throughout the development process, a strict weight control regime was exercised by the design team. This was one reason for the T-38's relative simplicity; only basic systems for navigation and communication were provided. No fuel was housed within the wings while no provision for external stores was made. The aircraft's twin General Electric J85-5A turbojet engines were accommodated within the fuselage to exert less drag and produce fewer aerodynamic disturbances. The J85-5A engine, despite generating up to 3,850 lb of static thrust, was relatively compact and lightweight for the era, weighing less than 600 pounds. Air was supplied to the engines via intakes at the wing roots. A twin-engine arrangement had been pursued to provide a greater margin of safety.

Various design decisions were taken and features were incorporated to simplify the T-38 and make it as easy to maintain as possible. To avoid removing the vertical fin while changing an engine, the fin was attached directly to the keel structure between the engines, and instead detaching the horizontal stabilizer along with the entire aft shell of the fuselage that surrounds the engines, which could be removed relatively easily via undoing several fasteners that hold the fuselage shell together and disconnecting two push rods that connect the pilot's control stick to the horizontal stabilizer's hydraulic actuators.

To avoid having to break and reconnect multiple hydraulic lines during an engine swap, designers mounted the hydraulic pump and other accessory drives on the fuselage which joined to the engine by a short driveshaft. Several internal check valves prevented a loss of hydraulic fluid. The engines hung from rails on either side of the central keel. This design enabled ground crews to remove and replace an engine in roughly one hour.

Military
The USAF Strategic Air Command (SAC) had T-38s in service from 1978 until SAC's 1991 inactivation. These aircraft were used to enhance the career development of bomber and tanker copilots through the Accelerated Copilot Enrichment Program. They were later used as proficiency aircraft for all B-52, B-1, Lockheed SR-71, U-2, Boeing KC-135, and KC-10 pilots. SAC's successors, the Air Combat Command (ACC) and the Air Force Global Strike Command (AFGSC) retain T-38s as proficiency aircraft for U-2 pilots and B-2 pilots, respectively.

The Air Training Command's successor, the Air Education and Training Command (AETC), uses the T-38C to prepare pilots for the F-15C Eagle and F-15E Strike Eagle, the F-16 Fighting Falcon, B-52 Stratofortress, B-1B Lancer, B-2 Spirit, A-10 Thunderbolt, F-22 Raptor, and F-35 Lightning II. The AETC received T-38Cs in 2001 as part of the Avionics Upgrade Program. The T-38Cs owned by the AETC have undergone propulsion modernization, which replaces major engine components to enhance reliability and maintainability, and an engine inlet/injector modification to increase available takeoff thrust. These upgrades and modifications, with the Pacer Classic program, were to extend the service life of T-38s past 2020. The T-38 has an availability goal of 75%, which it maintained in 2011. In 2015, its availability was 60%.

After graduating from basic flying on the Cessna T-37 Tweet, pilots were trained on more advanced aspects, including supersonic flight, blind flying, formation flight, handling stalls, single-engine flight procedures, low speed flight, and landing techniques. Prior to the USAF ceasing the practice of trainees flying within icy conditions, the T-38's engines were prone to being damaged by ingesting ice. The relatively small engine intakes are also known to be problematic when flown at low speeds under 'hot and high' conditions.

The landing gear's brakes have been criticised for being relatively weak, one of several factors that necessitates care while landing. Several incidents, including fatalities, have occurred due to imprecise management of the throttles and air speed during landing attempts. Despite these factors, the T-38 has been regarded as a relatively safe trainer aircraft even into the twenty-first century. Between 1961 and 2005, the fleet has cumulatively flown 25 million hours, during which 150 of the 1,187 T-38s built between 1961 and 1972 were recorded as lost, resulting in 45 deaths.

Besides the USAF and the USN, other military operators of the T-38 have included the German Air Force, the Portuguese Air Force, the Republic of China Air Force, and the Turkish Air Force.

During late 2010, the USAF launched the T-X program to procure a replacement for its T-38s. Bidders included a joint venture of BAE Systems and Rolls-Royce, offering the Hawk trainer, equipped with Rolls' Adour Mk951 engine with FADEC. Lockheed Martin and Korea Aerospace Industries, offered the T-50. Raytheon and Alenia Aermacchi offered the T-100, an aircraft whose design originated with the M-346.

Boeing and Saab offered a new-technology design powered by the General Electric F404 turbofan engine. The Boeing/Saab bid first flew in December 2016. It was declared the winner of the T-X competition in September 2018.

NASA
NASA operates a fleet of 32 T-38 trainers. The fleet is typically used to train its astronauts and as a chase plane. NASA's fleet is housed primarily at Ellington Field in Houston, Texas. NASA's internal projections showed the number of operational jet trainers falling to 16 by 2015. The agency spends $25–30 million annually to fly and maintain the T-38s.

In 1966, two Project Gemini astronauts, Elliot See and Charles Bassett, died when their T-38 hit the roof of a McDonnell Douglas fabrication building at Lambert Field in St. Louis. Visibility was poor, but a later investigation concluded that the cause of the crash was likely pilot error. During the Space Shuttle era, an established NASA tradition was for astronauts to arrive at the Kennedy Space Center in T-38 Talons.

Civil
Seven privately owned T-38s are in the U.S. Boeing owns two T-38s, which are used as chase planes. Thornton Corporation owns two T-38s, and the National Test Pilot School owns one T-38. Two others are in private ownership.

Variants

 * N-156T: Northrop company designation.
 * YT-38: Prototypes, two built with YJ85-GE-1 engines, later designated YT-38A and four pre-production aircraft with YJ-85-GE-5 engines, later designated T-38A.
 * T-38A: Two-seat advanced training aircraft, production model, 1,139 built.
 * T-38A(N): Two-seat astronaut training version for NASA. See T-38N below.
 * DT-38A: A number of US Navy T-38As were converted into drone directors.
 * GT-38A: Permanently grounded aircraft, often due to flight or ground mishap, converted into ground procedural trainers or aircraft maintenance trainers.
 * NT-38A: A small number of T-38As were converted into research and test aircraft.
 * QT-38A: Unmanned target drone aircraft.
 * AT-38B: Two-seat weapons training aircraft.
 * T-38C: A T-38A with structural and avionics upgrades.
 * T-38M: Modernized Turkish Air Force T-38As with full glass cockpit and avionics, upgraded by Turkish Aerospace Industries under the project codename "ARI" (Arı, for Bee).
 * T-38N: Former USAF T-38As bailed to NASA and T-38As directly assigned to NASA that received an Avionics Upgrade Program (AUP), modernizing communications and navigation systems, replacing outdated avionics, and adding a weather radar, flight management system, altitude alert systems, and modern controls and displays.
 * ST-38 or N-205: A proposal to be fitted with 3 rocket engines in the 10,000lb thrust range burning hydrogen peroxide and JP-5, capable of Mach 3.2 and a maximum altitude of 200,000 feet (61,000 m) and only requiring modification to 25% of the airframe. It was to be used for training astronauts as part of the ARPS (Aerospace Research Flight School). It was first proposed in May 1958 and then again in 1963, however the Air Force showed no interest and instead selected the NF-104A.
 * T-38 VTOL Proposed vertical takeoff variant with four lift nozzles behind the pilot.

Current

 * German Air Force – 46 T-38A in 1968, now upgraded to T-38C. All aircraft are stationed at Sheppard AFB, Texas and are painted in US markings.
 * Turkish Air Force – 33 T-38M in service.
 * United States Air Force – 497 T-38 trainers in service.
 * United States Navy – 9 aircraft in use.
 * United States Naval Test Pilot School
 * NASA – approximately 32 aircraft transferred from USAF
 * United States Navy – 9 aircraft in use.
 * United States Naval Test Pilot School
 * NASA – approximately 32 aircraft transferred from USAF

Former

 * Portuguese Air Force – 12 aircraft in 1977. Initially operated by 201 Sqn. "Falcões" (Falcons) at Air Base No. 5, in 1980 they were transferred to 103 Sqn. "Caracóis" (Snails) being stationed in Air Base No. 11. They were retired in 1993, replaced by Dassault/Dornier Alpha Jet
 * Republic of Korea Air Force – 30 T-38A from the US in April 1999. All units were returned to the US by 2009 after near completion of production of T-50 Golden Eagle supersonic trainer.
 * Republic of China Air Force – former operator, all aircraft returned to the US in 1998.
 * Republic of Korea Air Force – 30 T-38A from the US in April 1999. All units were returned to the US by 2009 after near completion of production of T-50 Golden Eagle supersonic trainer.
 * Republic of China Air Force – former operator, all aircraft returned to the US in 1998.
 * Republic of China Air Force – former operator, all aircraft returned to the US in 1998.

Accidents and incidents
More than 210 aircraft losses and ejections have been documented over the lifetime of the T-38. The USAF has recorded 149 fatalities since operations began in 1960.

 * 19 February 1962 – The first crash of a T-38 occurred, near Webb AFB, Texas. One pilot was killed, and one occupant ejected safely.
 * 31 October 1964 – Astronaut Theodore Freeman was killed as a result of a bird strike on a NASA operated T-38.
 * 28 February 1966 (1966 NASA T-38 crash) – Astronauts Elliot See and Charles Bassett were killed when they struck a building in fog.
 * 5 October 1967 – Astronaut Clifton "C.C." Williams was killed in a crash of a NASA operated T-38 due to an aileron jam.
 * 18 January 1982 – Diamond Crash – Four T-38As of the U.S. Air Force Thunderbirds crashed while practicing for an airshow. After this crash, the T-38 was replaced in this role by the front line F-16A Fighting Falcon.
 * 21 May 2009 – One pilot was killed and the other ejected with serious injuries after a rudder malfunction caused the crash of a USAF T38A.
 * 19 July 2013 – The plane went down south of Sheppard Air Force Base at approximately 6:48 a.m., near Pecanway Drive and Horton Lane in Wichita County and the pilots ejected safely with minor injuries.
 * 21 November 2019 – Two pilots killed during a collision while landing.
 * 19 February 2021 – The two-person USAF crew of a T-38 was killed in a landing crash near Montgomery Regional Airport in Alabama. The aircraft was assigned to the USAF 14th Flying Training Wing at Columbus AFB, Mississippi. The crash was later attributed to pilot error.
 * 19 November 2021 – Two aircraft collided on approach to Laughlin Air Force base, resulting in the death of one student.
 * 7 November 2022 – A T-38C crashed near Columbus AFB, Mississippi, with one pilot safely ejecting.

Aircraft on display

 * YT-38A
 * 58-1192 – South Dakota Air and Space Museum at Ellsworth AFB, South Dakota

 * T-38A
 * 58-1196 – California Science Center, in Los Angeles, California
 * 59-1600 – Phoenix–Mesa Gateway Airport
 * 59-1601 – On base display, Air University area, Maxwell AFB, Alabama
 * 59-1602 – On base display, United States Air Force Academy, in Colorado Springs, Colorado. Painted as "Thunderbird 1"
 * 59-1604 – National Naval Aviation Museum, NAS Pensacola, Florida; former USAF aircraft bailed to USN and utilized by the U.S. Naval Test Pilot School at NAS Patuxent River, Maryland.
 * 59-1605 – On base display, USAF Airman Heritage Museum, Lackland AFB, Texas
 * 60-0549 – Prairie Aviation Museum, in Bloomington, Illinois
 * 60-0551 – On display at the National Air and Space Museum in Washington, DC
 * 60-0558 – American Legion Post 233 in Edinburgh, Indiana
 * 60-0570 – Edward F. Beale Museum, Beale AFB, California
 * 60-0573 – On display, Owatonna Degner Regional Airport, Owatonna, Minnesota (with 60-0589 and 61–0828)
 * 60-0574 – On base display, Laughlin AFB, Texas
 * 60-0589 – On display, Owatonna Degner Regional Airport, Owatonna, Minnesota (with 60-0573 and 61–0828)
 * 61-0817 – Oklahoma Welcome Station, adjacent to Tinker AFB, Oklahoma.
 * 61-0825 – On display, U.S. Space & Rocket Center, Huntsville, AL (as N999NA, not original paint scheme). Appeared on Shipping Wars TV Show being transported to Huntsville, AL from NASA Houston.
 * 61-0828 – On display, Owatonna Degner Regional Airport, Owatonna, Minnesota (with 60-0573 and 60–0589)
 * 61-0829 – Gallup Municipal Airport, Gallup, New Mexico
 * 61-0838 – On base display, in front of Randolph Inn Visiting Officers Quarters (VOQ), Randolph AFB, Texas
 * 61-0854 – Pima Air and Space Museum, adjacent to Davis-Monthan AFB in Tucson, Arizona, on display in the markings of the 479th Tactical Training Wing at Holloman AFB, NM, circa 1982.
 * 61-0858 – Sheppard AFB Air Park, Sheppard AFB, Texas
 * 61-0902 – Science Spectrum in Lubbock, Texas.
 * 61-0926 – Salina Oklahoma, lawn of American Legion post #240
 * 62-3673 – Mason County Airport (Michigan) Construction Number (C/N)- N.5378, built 1962, painted blue and gray camouflage static displayed on a pedestal along US10 showing USAF tail markings of the 434th Fighter Training Squadron when it was located at Holloman Air Force Base between 1977 and 1991
 * 63-8125 – Sheppard AFB Air Park, Sheppard AFB, Texas
 * 63-8224 – Evergreen Aviation & Space Museum in McMinnville, Oregon; painted in NASA colors, suspended from the ceiling in the Air and Space Exhibit Hall.
 * 64-13198 – Hangar 25 Museum, (former Webb AFB) in Big Spring, Texas
 * 65-10405 – On base display, Columbus AFB, Mississippi
 * 65-10426 – On base display, Vance AFB, Oklahoma
 * 66-8381 / NASA 901 (N901NA) – Assigned directly to NASA as the second NASA T-38 to be designated as 'NASA 901' and 'N901NA'; on display at Aviation Heritage Park, Bowling Green, Kentucky

 * GT-38A
 * 60-0592 – Dyess Linear Air Park, Dyess AFB, Texas
 * 60-0593 – March Field Air Museum at March ARB (former March AFB) in Riverside, California, on display in Thunderbirds markings.
 * 61-0824 – Hill Aerospace Museum adjacent to Hill AFB, Utah.

 * AT-38B
 * 60-0576 – On base display, Holloman AFB, New Mexico.
 * 65-10441 – National Museum of the United States Air Force at Wright-Patterson AFB in Dayton, Ohio. This aircraft was retired in 1991, came to the museum in 1999, and was placed on display in 2004.

 * T-38N
 * 65-10329 / NASA 969 (N969NA) – On display at Kennedy Space Center Visitor Complex, NASA/John F. Kennedy Space Center, Merritt Island, Florida
 * 65-10355 / NASA 913 (N913NA) – On display at the Intrepid Sea, Air & Space Museum, New York, New York
 * 65-10402 / NASA 968 (N968NA) – On display at Space Center Houston
 * 66-8381 / NASA 901 (N901NA) – Assigned directly to NASA as the second NASA T-38 to be designated as NASA 901 and N901NA; on display at Aviation Heritage Park, Bowling Green, Kentucky

title: Northrop T-38 Talon


text:
Short octave

The short octave was a method of assigning notes to keys in early keyboard instruments (harpsichord, clavichord, organ), for the purpose of giving the instrument an extended range in the bass range. The rationale behind this system was that the low notes F♯ and G♯ are seldom needed in early music. Deep bass notes typically form the root of the chord, and F♯ and G♯ chords were seldom used at this time. In contrast, low C and D, both roots of very common chords, are sorely missed if a harpsichord with lowest key E is tuned to match the keyboard layout. A closely related system, the broken octave, added more notes by using split keys: the front part and the back part of the (visible) key controlled separate levers and hence separate notes.

First type
In one variant of the short octave system, the lowest note on the keyboard was nominally E, but the pitch to which it was tuned was actually C. Nominal F♯ was tuned to D, and nominal G♯ was tuned to E. Thus, in playing the keys:

 * E F♯ G♯ F G A B C

the player would hear the musical scale of C major in the bass:

 * C D E F G A B C

The actual note assignments can be seen in the following diagram, which shows the lowest eight keys of an early keyboard:

 * ShortOctaveOnC.svg

The rationale behind this system was that the low notes F♯ and G♯ are seldom needed in early music. Deep bass notes typically form the root of the chord, and F♯ and G♯ chords were seldom used at this time. In contrast, low C and D, both roots of very common chords, are sorely missed if a harpsichord with lowest key E is tuned to match the keyboard layout. When scholars specify the pitch range of instruments with this kind of short octave, they write "C/E", meaning that the lowest note is a C, played on a key that normally would sound E.

Second type
A second type of short octave used the keys
 * B C♯ D♯ C D E F♯ G

to play the G major scale
 * G A B C D E F♯ G.

Here, the exotic bass notes C♯ and D♯ are sacrificed to obtain the more essential A and B. The notation for the pitch range of such an instrument is "G/B". The following diagram illustrates this kind of short octave:

 * ShortOctaveOnG.PNG

In stringed instruments like the harpsichord, the short octave system created a defect: the strings which were tuned to mismatch their keyboard notes were in general too short to sound the reassigned note with good tone quality. To reach the lower pitch, the strings had to be thickened, or tuned too slack. During the 17th and 18th centuries, harpsichord builders gradually increased the size and bass range of their instruments to the point where every bass note could be properly played with its own key.

Short octaves were very common in the early organ. Here, the practice would not have yielded poor tone quality (since the associated pipes would have to be built with the correct length in any event). Far more than on stringed instruments the financial savings would have been quite considerable, as the long pipes entailed quite an expense, even in materials alone. But as harmonic music developed more complexity in the late 17th and 18th centuries and the desire arose for completely chromatic bass octaves, short octaves ultimately came to be abandoned in organs as well.

History
The 18th-century author Quirinus van Blankenburg suggested that the C/E short octave originated as an extension of keyboards that went down only to F; the addition of just one key (nominal E) and the reassignment of the F♯ and G♯ added three new notes to the bass range. Van Blankenburg says that when the short octave was invented, it was called the "new extension" for this reason. According to Frank Hubbard, harpsichords and organs of the 16th and 17th centuries "almost always" had short octaves.

Edward Kottick notes that the short octave persisted for a long time, suggests that a kind of mutual inertia between composers and instrument builders may have been responsible: Our forebears were much more practical than we are. Since nobody wrote music that required those notes, why go to the expense of putting them in? And what composer would bother to write them if few keyboard instruments had them?

A transitional stage toward the final adoption of chromatic keyboards was seen in certain English virginals of the later 17th century. On these the lowest key could pluck two different strings, depending on the slot in which its jack was placed. One of these strings was tuned to low G (the normal pitch of this key in the G/B short octave) and the other to whatever missing chromatic pitch was desired. The player could then move the jack to the slot that provided the desired note, according to the piece being played.

Broken octave
A variant of the short octave added more notes by using split keys: the front part and the back part of the (visible) key controlled separate levers and hence separate notes. Assume the following keys:

 * E F F♯ G G♯ A

with both F♯ and G♯ split front to back. Here, E played C, the front half of the F♯ key played D, and the (less accessible) rear half played F♯. The front half of the G♯ key played E, and the rear half played G♯. As with the short octave, the key labeled E played the lowest note C. Thus, playing the nominal sequence

 * E F♯(front) G♯(front) F F♯(back) G G♯(back) A

the player would hear:

 * C D E F F♯ G G♯ A

The actual note assignments can be seen in the following diagram:

 * BrokenOctaveOnC.svg

It can be seen that only two notes of the chromatic scale, C♯ and D♯, are missing. An analogous arrangement existed for keyboards with G instead of C at the bottom.

According to Trevor Pinnock, the short octave is characteristic of instruments of the 16th century. He adds, "in the second half of the 17th century, when more accidentals were required in the bass, 'broken octave' was often used."

Viennese bass octave
The short/broken octave principle not only survived, but was even developed further in one particular location, Vienna. The "Viennese bass octave" (German: "Wiener Bass-oktave") lasted well into the second half of the 18th century. describes this keyboard arrangement as follows: The notes leading down to F1 were accommodated on the keys of a "short-scaled octave" from c to C (only F♯1 and G♯1, as well as C♯ and E♭ continued to be omitted. The assignment of notes to keys, which strikingly included a triple-split key, was as shown in the following diagram, adapted from :

 * VienneseBassOctave.PNG

Richard Maunder (who uses the term "multiple-broken short octave") observes that the Viennese bass octave, like its predecessors, imposed distortions on the string scaling of the harpsichord: it "leads to extreme foreshortening of the scale in the bass." Hence, it required unusually thick strings for the bottom notes, on the order of 0.6 to 0.7 mm.

The Viennese bass octave gradually went out of style. However, Maunder notes instruments with Viennese bass octave built even in 1795, and observe that advertisements for such instruments appear even up to the end of the century.

Music written specifically for short-octave instruments
While the short octave seems primarily to have been an economy measure, it does have the advantage that the player's left hand can in certain cases span a greater number of notes. The composer Peter Philips wrote a pavane in which the left hand plays many parallel tenths. This is a considerable stretch for many players, and become even harder when (as in Philips's pavane), there sometimes other notes included in the chord. Of this piece harpsichord scholar Edward Kottick writes, "The sensuality of effortlessly achieving tenths is so strong, so delightful, that one cannot really claim to know the piece unless it has been played on a short-octave keyboard."

A later composer who wrote music conveniently playable only on a broken-octave instrument was Joseph Haydn, whose early work for keyboard was intended for harpsichord, not piano. As points out, Haydn's "Capriccio in G on the folk song 'Acht Sauschneider müssen sein, H. XVII:1 (1765) is evidently written for a harpsichord employing the Viennese bass octave. The work terminates in a chord in which the player's left hand must cover a low G, the G an octave above it, and the B two notes higher still. On orthodox keyboards this would be an impossible stretch for most players, but as on the Viennese bass octave it would have been easy to play, with the fingers depressing keys that visually appeared as D–G–B (see diagram above).

When Haydn's Capriccio was published by Artaria in the 1780s, the Viennese bass octave had mostly disappeared (indeed, the harpsichord itself was becoming obsolete). The publisher accordingly included alternative notes in the places where the original version could be played only on a short octave instrument, presumably to accommodate the needs of purchasers who owned a harpsichord or piano with the ordinary chromatic bass octave.

Notes and references
Notes

References

Sources
 * Vol. I, Vol. II – via Internet Archive

title: Short octave


text:
Test-driven development

Test-driven development (TDD) is a way of writing code that involves writing an automated unit-level test case that fails, then writing just enough code to make the test pass, then refactoring both the test code and the production code, then repeating with another new test case.

Alternative approaches to writing automated tests is to write all of the production code before starting on the test code or to write all of the test code before starting on the production code. With TDD, both are written together, therefore shortening debugging time necessities.

TDD is related to the test-first programming concepts of extreme programming, begun in 1999, but more recently has created more general interest in its own right.

Programmers also apply the concept to improving and debugging legacy code developed with older techniques.

History
Software engineer Kent Beck, who is credited with having developed or "rediscovered" the technique, stated in 2003 that TDD encourages simple designs and inspires confidence.

"The original description of TDD was in an ancient book about programming. It said you take the input tape, manually type in the output tape you expect, then program until the actual output tape matches the expected output. After I'd written the first xUnit framework in Smalltalk I remembered reading this and tried it out. That was the origin of TDD for me. When describing TDD to older programmers, I often hear, 'Of course. How else could you program?' Therefore I refer to my role as 'rediscovering' TDD."

Coding cycle

The TDD steps vary somewhat by author in count and description, but are generally as follows. These are based on the book Test-Driven Development by Example, and Kent Beck's Canon TDD article.

 * 1. List scenarios for the new feature
 * List the expected variants in the new behavior. “There’s the basic case & then what-if this service times out & what-if the key isn’t in the database yet &…” The developer can discover these specifications by asking about use cases and user stories. A key benefit of TDD is that it makes the developer focus on requirements before writing code. This is in contrast with the usual practice, where unit tests are only written after code.

 * 2. Write a test for an item on the list
 * Write an automated test that would pass if the variant in the new behavior is met.

 * 3. Run all tests. The new test should fail for expected reasons
 * This shows that new code is actually needed for the desired feature. It validates that the test harness is working correctly. It rules out the possibility that the new test is flawed and will always pass.

 * 4. Write the simplest code that passes the new test
 * Inelegant code and hard coding is acceptable. The code will be honed in Step 6. No code should be added beyond the tested functionality.

 * 5. All tests should now pass
 * If any fail, fix failing tests with minimal changes until all pass.

 * 6. Refactor as needed while ensuring all tests continue to pass
 * Code is refactored for readability and maintainability. In particular, hard-coded test data should be removed from the production code. Running the test suite after each refactor ensures that no existing functionality is broken. Examples of refactoring:
 * moving code to where it most logically belongs
 * removing duplicate code
 * making names self-documenting
 * splitting methods into smaller pieces
 * re-arranging inheritance hierarchies

 * Repeat
 * Repeat the process, starting at step 2, with each test on the list until all tests are implemented and passing.

Each tests should be small and commits made often. If new code fails some tests, the programmer can undo or revert rather than debug excessively.

When using external libraries, it is important not to write tests that are so small as to effectively test merely the library itself, unless there is some reason to believe that the library is buggy or not feature-rich enough to serve all the needs of the software under development.

Test-driven work
TDD has been adopted outside of software development, in both product and service teams, as test-driven work. For testing to be successful, it needs to be practiced at the micro and macro levels. Every method in a class, every input data value, log message, and error code, amongst other data points, need to be tested. Similar to TDD, non-software teams develop quality control (QC) checks (usually manual tests rather than automated tests) for each aspect of the work prior to commencing. These QC checks are then used to inform the design and validate the associated outcomes. The six steps of the TDD sequence are applied with minor semantic changes:
 * 1) "Add a check" replaces "Add a test"
 * 2) "Run all checks" replaces "Run all tests"
 * 3) "Do the work" replaces "Write some code"
 * 4) "Run all checks" replaces "Run tests"
 * 5) "Clean up the work" replaces "Refactor code"
 * 6) "Repeat"

Development style
There are various aspects to using test-driven development, for example the principles of "keep it simple, stupid" (KISS) and "You aren't gonna need it" (YAGNI). By focusing on writing only the code necessary to pass tests, designs can often be cleaner and clearer than is achieved by other methods. In Test-Driven Development by Example, Kent Beck also suggests the principle "Fake it till you make it".

To achieve some advanced design concept such as a design pattern, tests are written that generate that design. The code may remain simpler than the target pattern, but still pass all required tests. This can be unsettling at first but it allows the developer to focus only on what is important.

Writing the tests first: The tests should be written before the functionality that is to be tested. This has been claimed to have many benefits. It helps ensure that the application is written for testability, as the developers must consider how to test the application from the outset rather than adding it later. It also ensures that tests for every feature gets written. Additionally, writing the tests first leads to a deeper and earlier understanding of the product requirements, ensures the effectiveness of the test code, and maintains a continual focus on software quality. When writing feature-first code, there is a tendency by developers and organizations to push the developer on to the next feature, even neglecting testing entirely. The first TDD test might not even compile at first, because the classes and methods it requires may not yet exist. Nevertheless, that first test functions as the beginning of an executable specification.

Each test case fails initially: This ensures that the test really works and can catch an error. Once this is shown, the underlying functionality can be implemented. This has led to the "test-driven development mantra", which is "red/green/refactor", where red means fail and green means pass. Test-driven development constantly repeats the steps of adding test cases that fail, passing them, and refactoring. Receiving the expected test results at each stage reinforces the developer's mental model of the code, boosts confidence and increases productivity.

Code visibility
Test code needs access to the code it is testing, but testing should not compromise normal design goals such as information hiding, encapsulation and the separation of concerns. Therefore, unit test code is usually located in the same project or module as the code being tested.

In object oriented design this still does not provide access to private data and methods. Therefore, extra work may be necessary for unit tests. In Java and other languages, a developer can use reflection to access private fields and methods. Alternatively, an inner class can be used to hold the unit tests so they have visibility of the enclosing class's members and attributes. In the .NET Framework and some other programming languages, partial classes may be used to expose private methods and data for the tests to access.

It is important that such testing hacks do not remain in the production code. In C and other languages, compiler directives such as  can be placed around such additional classes and indeed all other test-related code to prevent them being compiled into the released code. This means the released code is not exactly the same as what was unit tested. The regular running of fewer but more comprehensive, end-to-end, integration tests on the final release build can ensure (among other things) that no production code exists that subtly relies on aspects of the test harness.

There is some debate among practitioners of TDD, documented in their blogs and other writings, as to whether it is wise to test private methods and data anyway. Some argue that private members are a mere implementation detail that may change, and should be allowed to do so without breaking numbers of tests. Thus it should be sufficient to test any class through its public interface or through its subclass interface, which some languages call the "protected" interface. Others say that crucial aspects of functionality may be implemented in private methods and testing them directly offers advantage of smaller and more direct unit tests.

Fakes, mocks and integration tests
Unit tests are so named because they each test one unit of code. A complex module may have a thousand unit tests and a simple module may have only ten. The unit tests used for TDD should never cross process boundaries in a program, let alone network connections. Doing so introduces delays that make tests run slowly and discourage developers from running the whole suite. Introducing dependencies on external modules or data also turns unit tests into integration tests. If one module misbehaves in a chain of interrelated modules, it is not so immediately clear where to look for the cause of the failure.

When code under development relies on a database, a web service, or any other external process or service, enforcing a unit-testable separation is also an opportunity and a driving force to design more modular, more testable and more reusable code. Two steps are necessary:

 * 1) Whenever external access is needed in the final design, an interface should be defined that describes the access available. See the dependency inversion principle for a discussion of the benefits of doing this regardless of TDD.
 * 2) The interface should be implemented in two ways, one of which really accesses the external process, and the other of which is a fake or mock. Fake objects need do little more than add a message such as "Person object saved" to a trace log, against which a test assertion can be run to verify correct behaviour. Mock objects differ in that they themselves contain test assertions that can make the test fail, for example, if the person's name and other data are not as expected.

Fake and mock object methods that return data, ostensibly from a data store or user, can help the test process by always returning the same, realistic data that tests can rely upon. They can also be set into predefined fault modes so that error-handling routines can be developed and reliably tested. In a fault mode, a method may return an invalid, incomplete or null response, or may throw an exception. Fake services other than data stores may also be useful in TDD: A fake encryption service may not, in fact, encrypt the data passed; a fake random number service may always return 1. Fake or mock implementations are examples of dependency injection.

A test double is a test-specific capability that substitutes for a system capability, typically a class or function, that the UUT depends on. There are two times at which test doubles can be introduced into a system: link and execution. Link time substitution is when the test double is compiled into the load module, which is executed to validate testing. This approach is typically used when running in an environment other than the target environment that requires doubles for the hardware level code for compilation. The alternative to linker substitution is run-time substitution in which the real functionality is replaced during the execution of a test case. This substitution is typically done through the reassignment of known function pointers or object replacement.

Test doubles are of a number of different types and varying complexities:
 * Dummy – A dummy is the simplest form of a test double. It facilitates linker time substitution by providing a default return value where required.
 * Stub – A stub adds simplistic logic to a dummy, providing different outputs.
 * Spy – A spy captures and makes available parameter and state information, publishing accessors to test code for private information allowing for more advanced state validation.
 * Mock – A mock is specified by an individual test case to validate test-specific behavior, checking parameter values and call sequencing.
 * Simulator – A simulator is a comprehensive component providing a higher-fidelity approximation of the target capability (the thing being doubled). A simulator typically requires significant additional development effort.

A corollary of such dependency injection is that the actual database or other external-access code is never tested by the TDD process itself. To avoid errors that may arise from this, other tests are needed that instantiate the test-driven code with the "real" implementations of the interfaces discussed above. These are integration tests and are quite separate from the TDD unit tests. There are fewer of them, and they must be run less often than the unit tests. They can nonetheless be implemented using the same testing framework.

Integration tests that alter any persistent store or database should always be designed carefully with consideration of the initial and final state of the files or database, even if any test fails. This is often achieved using some combination of the following techniques:
 * The  method, which is integral to many test frameworks.
 * exception handling structures where available.
 * Database transactions where a transaction atomically includes perhaps a write, a read and a matching delete operation.
 * Taking a "snapshot" of the database before running any tests and rolling back to the snapshot after each test run. This may be automated using a framework such as Ant or NAnt or a continuous integration system such as CruiseControl.
 * Initialising the database to a clean state before tests, rather than cleaning up after them. This may be relevant where cleaning up may make it difficult to diagnose test failures by deleting the final state of the database before detailed diagnosis can be performed.

Keep the unit small
For TDD, a unit is most commonly defined as a class, or a group of related functions often called a module. Keeping units relatively small is claimed to provide critical benefits, including:
 * Reduced debugging effort – When test failures are detected, having smaller units aids in tracking down errors.
 * Self-documenting tests – Small test cases are easier to read and to understand.

Advanced practices of test-driven development can lead to acceptance test–driven development (ATDD) and specification by example where the criteria specified by the customer are automated into acceptance tests, which then drive the traditional unit test-driven development (UTDD) process. This process ensures the customer has an automated mechanism to decide whether the software meets their requirements. With ATDD, the development team now has a specific target to satisfy – the acceptance tests – which keeps them continuously focused on what the customer really wants from each user story.

Test structure
Effective layout of a test case ensures all required actions are completed, improves the readability of the test case, and smooths the flow of execution. Consistent structure helps in building a self-documenting test case. A commonly applied structure for test cases has (1) setup, (2) execution, (3) validation, and (4) cleanup.
 * Setup: Put the Unit Under Test (UUT) or the overall test system in the state needed to run the test.
 * Execution: Trigger/drive the UUT to perform the target behavior and capture all output, such as return values and output parameters. This step is usually very simple.
 * Validation: Ensure the results of the test are correct. These results may include explicit outputs captured during execution or state changes in the UUT.
 * Cleanup: Restore the UUT or the overall test system to the pre-test state. This restoration permits another test to execute immediately after this one. In some cases, in order to preserve the information for possible test failure analysis, the cleanup should be starting the test just before the test's setup run.

Individual best practices
Some best practices that an individual could follow would be to separate common set-up and tear-down logic into test support services utilized by the appropriate test cases, to keep each test oracle focused on only the results necessary to validate its test, and to design time-related tests to allow tolerance for execution in non-real time operating systems. The common practice of allowing a 5-10 percent margin for late execution reduces the potential number of false negatives in test execution. It is also suggested to treat test code with the same respect as production code. Test code must work correctly for both positive and negative cases, last a long time, and be readable and maintainable. Teams can get together and review tests and test practices to share effective techniques and catch bad habits.

Practices to avoid, or "anti-patterns"

 * Having test cases depend on system state manipulated from previously executed test cases (i.e., you should always start a unit test from a known and pre-configured state).
 * Dependencies between test cases. A test suite where test cases are dependent upon each other is brittle and complex. Execution order should not be presumed. Basic refactoring of the initial test cases or structure of the UUT causes a spiral of increasingly pervasive impacts in associated tests.
 * Interdependent tests. Interdependent tests can cause cascading false negatives. A failure in an early test case breaks a later test case even if no actual fault exists in the UUT, increasing defect analysis and debug efforts.
 * Testing precise execution, behavior, timing or performance.
 * Building "all-knowing oracles". An oracle that inspects more than necessary is more expensive and brittle over time. This very common error is dangerous because it causes a subtle but pervasive time sink across the complex project.
 * Testing implementation details.
 * Slow running tests.

TDD and ATDD
Test-driven development is related to, but different from acceptance test–driven development (ATDD). TDD is primarily a developer's tool to help create well-written unit of code (function, class, or module) that correctly performs a set of operations. ATDD is a communication tool between the customer, developer, and tester to ensure that the requirements are well-defined. TDD requires test automation. ATDD does not, although automation helps with regression testing. Tests used in TDD can often be derived from ATDD tests, since the code units implement some portion of a requirement. ATDD tests should be readable by the customer. TDD tests do not need to be.

TDD and BDD
BDD (behavior-driven development) combines practices from TDD and from ATDD. It includes the practice of writing tests first, but focuses on tests which describe behavior, rather than tests which test a unit of implementation. Tools such as JBehave, Cucumber, Mspec and Specflow provide syntaxes which allow product owners, developers and test engineers to define together the behaviors which can then be translated into automated tests.

Software for TDD
There are many testing frameworks and tools that are useful in TDD.

xUnit frameworks
Developers may use computer-assisted testing frameworks, commonly collectively named xUnit (which are derived from SUnit, created in 1998), to create and automatically run the test cases. xUnit frameworks provide assertion-style test validation capabilities and result reporting. These capabilities are critical for automation as they move the burden of execution validation from an independent post-processing activity to one that is included in the test execution. The execution framework provided by these test frameworks allows for the automatic execution of all system test cases or various subsets along with other features.

TAP results
Testing frameworks may accept unit test output in the language-agnostic Test Anything Protocol created in 1987.

TDD for complex systems
Exercising TDD on large, challenging systems requires a modular architecture, well-defined components with published interfaces, and disciplined system layering with maximization of platform independence. These proven practices yield increased testability and facilitate the application of build and test automation.

Designing for testability
Complex systems require an architecture that meets a range of requirements. A key subset of these requirements includes support for the complete and effective testing of the system. Effective modular design yields components that share traits essential for effective TDD.

 * High Cohesion ensures each unit provides a set of related capabilities and makes the tests of those capabilities easier to maintain.
 * Low Coupling allows each unit to be effectively tested in isolation.
 * Published Interfaces restrict Component access and serve as contact points for tests, facilitating test creation and ensuring the highest fidelity between test and production unit configuration.

A key technique for building effective modular architecture is Scenario Modeling where a set of sequence charts is constructed, each one focusing on a single system-level execution scenario. The Scenario Model provides an excellent vehicle for creating the strategy of interactions between components in response to a specific stimulus. Each of these Scenario Models serves as a rich set of requirements for the services or functions that a component must provide, and it also dictates the order in which these components and services interact together. Scenario modeling can greatly facilitate the construction of TDD tests for a complex system.

Managing tests for large teams
In a larger system, the impact of poor component quality is magnified by the complexity of interactions. This magnification makes the benefits of TDD accrue even faster in the context of larger projects. However, the complexity of the total population of tests can become a problem in itself, eroding potential gains. It sounds simple, but a key initial step is to recognize that test code is also important software and should be produced and maintained with the same rigor as the production code.

Creating and managing the architecture of test software within a complex system is just as important as the core product architecture. Test drivers interact with the UUT, test doubles and the unit test framework.

Advantages
Test Driven Development (TDD) is a software development approach where tests are written before the actual code. It offers several advantages:

 * 1) Comprehensive Test Coverage: TDD ensures that all new code is covered by at least one test, leading to more robust software.
 * 2) Enhanced Confidence in Code: Developers gain greater confidence in the code's reliability and functionality.
 * 3) Well-Documented Code: The process naturally results in well-documented code, as each test clarifies the purpose of the code it tests.
 * 4) Requirement Clarity: TDD encourages a clear understanding of requirements before coding begins.
 * 5) Facilitates Continuous Integration: It integrates well with continuous integration processes, allowing for frequent code updates and testing.
 * 6) Boosts Productivity: Many developers find that TDD increases their productivity.
 * 7) Reinforces Code Mental Model: TDD helps in building a strong mental model of the code's structure and behavior.
 * 8) Emphasis on Design and Functionality: It encourages a focus on the design, interface, and overall functionality of the program.
 * 9) Reduces Need for Debugging: By catching issues early in the development process, TDD reduces the need for extensive debugging later.
 * 10) System Stability: Applications developed with TDD tend to be more stable and less prone to bugs.

Disadvantages
However, TDD is not without its drawbacks:

 * 1) Increased Code Volume: Implementing TDD can result in a larger codebase as tests add to the total amount of code written.
 * 2) False Security from Tests: A large number of passing tests can sometimes give a misleading sense of security regarding the code's robustness.
 * 3) Maintenance Overheads: Maintaining a large suite of tests can add overhead to the development process.
 * 4) Time-Consuming Test Processes: Writing and maintaining tests can be time-consuming.
 * 5) Testing Environment Set-Up: TDD requires setting up and maintaining a suitable testing environment.
 * 6) Learning Curve: It takes time and effort to become proficient in TDD practices.
 * 7) Overcomplication: An overemphasis on TDD can lead to code that is more complex than necessary.
 * 8) Neglect of Overall Design: Focusing too narrowly on passing tests can sometimes lead to neglect of the bigger picture in software design.
 * 9) Increased Costs: The additional time and resources required for TDD can result in higher development costs.

Benefits
A 2005 study found that using TDD meant writing more tests and, in turn, programmers who wrote more tests tended to be more productive. Hypotheses relating to code quality and a more direct correlation between TDD and productivity were inconclusive.

Programmers using pure TDD on new ("greenfield") projects reported they only rarely felt the need to invoke a debugger. Used in conjunction with a version control system, when tests fail unexpectedly, reverting the code to the last version that passed all tests may often be more productive than debugging.

Test-driven development offers more than just simple validation of correctness, but can also drive the design of a program. By focusing on the test cases first, one must imagine how the functionality is used by clients (in the first case, the test cases). So, the programmer is concerned with the interface before the implementation. This benefit is complementary to design by contract as it approaches code through test cases rather than through mathematical assertions or preconceptions.

Test-driven development offers the ability to take small steps when required. It allows a programmer to focus on the task at hand as the first goal is to make the test pass. Exceptional cases and error handling are not considered initially, and tests to create these extraneous circumstances are implemented separately. Test-driven development ensures in this way that all written code is covered by at least one test. This gives the programming team, and subsequent users, a greater level of confidence in the code.

While it is true that more code is required with TDD than without TDD because of the unit test code, the total code implementation time could be shorter based on a model by Müller and Padberg. Large numbers of tests help to limit the number of defects in the code. The early and frequent nature of the testing helps to catch defects early in the development cycle, preventing them from becoming endemic and expensive problems. Eliminating defects early in the process usually avoids lengthy and tedious debugging later in the project.

TDD can lead to more modularized, flexible, and extensible code. This effect often comes about because the methodology requires that the developers think of the software in terms of small units that can be written and tested independently and integrated together later. This leads to smaller, more focused classes, looser coupling, and cleaner interfaces. The use of the mock object design pattern also contributes to the overall modularization of the code because this pattern requires that the code be written so that modules can be switched easily between mock versions for unit testing and "real" versions for deployment.

Because no more code is written than necessary to pass a failing test case, automated tests tend to cover every code path. For example, for a TDD developer to add an  branch to an existing   statement, the developer would first have to write a failing test case that motivates the branch. As a result, the automated tests resulting from TDD tend to be very thorough: they detect any unexpected changes in the code's behaviour. This detects problems that can arise where a change later in the development cycle unexpectedly alters other functionality.

Madeyski provided empirical evidence (via a series of laboratory experiments with over 200 developers) regarding the superiority of the TDD practice over the traditional Test-Last approach or testing for correctness approach, with respect to the lower coupling between objects (CBO). The mean effect size represents a medium (but close to large) effect on the basis of meta-analysis of the performed experiments which is a substantial finding. It suggests a better modularization (i.e., a more modular design), easier reuse and testing of the developed software products due to the TDD programming practice. Madeyski also measured the effect of the TDD practice on unit tests using branch coverage (BC) and mutation score indicator (MSI),  which are indicators of the thoroughness and the fault detection effectiveness of unit tests, respectively. The effect size of TDD on branch coverage was medium in size and therefore is considered substantive effect. These findings have been subsequently confirmed by further, smaller experimental evaluations of TDD.

Psychological benefits to programmer

 * 1) Increased Confidence: TDD allows programmers to make changes or add new features with confidence. Knowing that the code is constantly tested reduces the fear of breaking existing functionality. This safety net can encourage more innovative and creative approaches to problem-solving.
 * 2) Reduced Fear of Change, Reduced Stress: In traditional development, changing existing code can be daunting due to the risk of introducing bugs. TDD, with its comprehensive test suite, reduces this fear, as tests will immediately reveal any problems caused by changes. Knowing that the codebase has a safety net of tests can reduce stress and anxiety associated with programming. Developers might feel more relaxed and open to experimenting and refactoring.
 * 3) Improved Focus: Writing tests first helps programmers concentrate on requirements and design before writing the code. This focus can lead to clearer, more purposeful coding, as the developer is always aware of the goal they are trying to achieve.
 * 4) Sense of Achievement and Job Satisfaction: Passing tests can provide a quick, regular sense of accomplishment, boosting morale. This can be particularly motivating in long-term projects where the end goal might seem distant. The combination of all these factors can lead to increased job satisfaction. When developers feel confident, focused, and part of a collaborative team, their overall job satisfaction can significantly improve.

Limitations
Test-driven development does not perform sufficient testing in situations where full functional tests are required to determine success or failure, due to extensive use of unit tests. Examples of these are user interfaces, programs that work with databases, and some that depend on specific network configurations. TDD encourages developers to put the minimum amount of code into such modules and to maximize the logic that is in testable library code, using fakes and mocks to represent the outside world.

Management support is essential. Without the entire organization believing that test-driven development is going to improve the product, management may feel that time spent writing tests is wasted.

Unit tests created in a test-driven development environment are typically created by the developer who is writing the code being tested. Therefore, the tests may share blind spots with the code: if, for example, a developer does not realize that certain input parameters must be checked, most likely neither the test nor the code will verify those parameters. Another example: if the developer misinterprets the requirements for the module they are developing, the code and the unit tests they write will both be wrong in the same way. Therefore, the tests will pass, giving a false sense of correctness.

A high number of passing unit tests may bring a false sense of security, resulting in fewer additional software testing activities, such as integration testing and compliance testing.

Tests become part of the maintenance overhead of a project. Badly written tests, for example ones that include hard-coded error strings, are themselves prone to failure, and they are expensive to maintain. This is especially the case with fragile tests. There is a risk that tests that regularly generate false failures will be ignored, so that when a real failure occurs, it may not be detected. It is possible to write tests for low and easy maintenance, for example by the reuse of error strings, and this should be a goal during the code refactoring phase described above.

Writing and maintaining an excessive number of tests costs time. Also, more-flexible modules (with limited tests) might accept new requirements without the need for changing the tests. For those reasons, testing for only extreme conditions, or a small sample of data, can be easier to adjust than a set of highly detailed tests.

The level of coverage and testing detail achieved during repeated TDD cycles cannot easily be re-created at a later date. Therefore, these original, or early, tests become increasingly precious as time goes by. The tactic is to fix it early. Also, if a poor architecture, a poor design, or a poor testing strategy leads to a late change that makes dozens of existing tests fail, then it is important that they are individually fixed. Merely deleting, disabling or rashly altering them can lead to undetectable holes in the test coverage.

Conference
First TDD Conference was held during July 2021. Conferences were recorded on YouTube

title: Test-driven development