Entries Tagged as ''

Roy Roman

Roy Roman is a screech trumpet player who has performed with Lionel Hampton, the Benny Goodman Orchestra, Lee Morgan, and Bob Hope. Roy began playing the trumpet at age 19. After an injury to one of his front teeth, he was introduced to Roy Stevens, the teacher of a radical method of embouchure development pioneered by William Costello. This method entailed going for the highest note possible at all times and uses very little pressure. Roy performed this exercise with both sets of teeth clamped firmly against his tongue. This, he claimed, was the way that great high-note trumpet players like Bud Brisbois, Maynard Ferguson and Bill Chase played (”Chase’s astounding endurance was a result of how he bit the living crap out of his tongue,” Roman says). Eventually, this resulted in a method entitled GodlyChops, which Roman teaches.

Though his method (and Roman himself) have often been knocked as unmusical, and students who have tried the method complain that they can no longer play with good intonation, sound, articulation and musical taste, these arguments are considered irrelevant by Roman because his goal with this method is to play “really stinkin’ high.”

He is no relation to the Roy Roman who hosts segments of the Canadian television show Sex, Toys & Chocolate in which he asks people on the streets and in the clubs of Miami sexual questions.

John P. Mohr

John P. Mohr (20 April 1910—25 January 1997) was an administrator with the US Federal Bureau of Investigation.

As Assistant to the Director for Administrative Affairs, he was one of the officials chiefly responsible for the proper implementation of procurement requirements and procedures.

He retired on 30 June 1972 as the FBI’s No. 4 man.

In January 1978, United States Attorney General Griffin B. Bell issued a public report summarizing an investigation into alleged misuse of FBI funds in a “Confidential Fund.” Mohr, Clyde Tolson, and FBI Director J. Edgar Hoover could authorize disbursements from this fund, and it was found that Mohr had directed employess of the Exhibit Section to make numerous repairs and improvements ot property owned by him and his family.

The report states:

(a) Mr. Mohr was Assistant Director for the Administrative Division of the FBI and the Assistant to the Director. He was primarily responsible for using USRC as an exclusive supplier of electronics equipment to the FBI. His conduct toward§,USRC violated 28 C.F.R. 045.735-2(b) and (c)(2) (prohibiting employees from giving preferential treatment to any person outside the Department). He received a few gratuities (tape deck, Christmas gifts) from Mr. Tait. No evidence was found that he was bribed, but he violated 945.735-14(a)(1), which prohibits employees from accepting gifts from those doing business with the Department.
(b) FBI employees provided goods and services to him as described above. This arguably violated 18 U.S.C. 641 (conversion of government property to his own use), (prosecution barred by the statute of limitations), and 28 C.F.R. §45.735-16 (misuse of federal property).
(c) Mr. Mohr was also responsible, along with Mr. Callahan, for using FBI Recreation Association and Confidential Fund monies for unauthorized public relations purposes. This matter has been referred to the Department’s office of Management and Finance for appropriate action (see footnote 12 above). In 1972, he attended an expense paid hunting weekend at Remington Farms, an FBI arms supplier. This is a violation of the Department prohibition against accepting gifts from those doing business with the Department, 28 C.F.R. §45.735-14(a)(1).
(d) No action has been taken against Mr. Mohr. He retired on June 30, 1972. Criminal action under all of the above federal provisions is barred by the five year statute of limitations.


References

1978 Bell Report

Thomas, Robert McG. Jr. “John Mohr, 86, Hoover Confidant and Ally at F.B.I., Dies.” New York Times, 1 February 1997.

Absolute deviation

In statistics, the absolute deviation of an element of a data set is the absolute difference between that element and a given point. Typically the point from which the deviation is measured is the value of either the median or the mean of the data set.

<math>|D| = |x_i-\overline{x}| </math>

where

|D| is the absolute deviation,
xi is the data element
and <math>\overline{x}</math> is the chosen measure of central tendency of the data set.

The average absolute deviation (or simply average deviation) of a data set is the average (or expected value) of the absolute deviations and is a summary statistic of statistical dispersion or variability.

The average absolute deviation of a set {x1, x2, …, xn} is

<math>\frac{1}{n}\sum_{i=1}^n |x_i-\overline{x}|</math>

The choice of measure of central tendency has a marked effect on the value of the average deviation. For example, for the data set {2, 2, 3, 4, 14}:

Measure of central tendency Absolute deviation
Mean = 5 2 - 5| + |2 - 5| + |3 - 5| + |4 - 5| + |14 - 5|}{5} = 3.6</MATH>
Median = 3 2 - 3| + |2 - 3| + |3 - 3| + |4 - 3| + |14 - 3|}{5} = 2.8</MATH>
Mode = 2 2 - 2| + |2 - 2| + |3 - 2| + |4 - 2| + |14 - 2|}{5} = 3.0</MATH>

The average absolute deviation from the median is less than or equal to the average absolute deviation from the mean. In fact, the average absolute deviation from the median is always less than or equal to the average absolute deviation from any other fixed number.

The average absolute deviation from the mean is less than or equal to the standard deviation. One way of proving that relies on Jensen’s inequality.

The mean absolute deviation is the average absolute deviation from the mean and is a common measure of forecast error in time series analysis. It should be noted that although the term mean deviation is used as a synonym for mean absolute deviation, to be precise it is not the same; in its strict interpretation (namely, omitting the absolute value operation), the mean deviation of any data set from its mean is always zero.

The mean absolute deviation of a sample is a biased estimator of the mean absolute deviation of the population.


See also

  • Deviation (statistics)
  • Median absolute deviation


External links

  • Advantages of the mean absolute deviation

Mental accounting

A concept first named by Richard Thaler (1980), mental accounting attempts to describe the process whereby people code, categorise and evaluate economic outcomes. Mental accounting theorists argue that people group their assets into a number of non-fungible mental accounts.

One detailed application of mental accounting, the behavioural life cycle hypothesis (Shefrin & Thaler, 1988), posits that people mentally frame assets as belonging to either current income, current wealth or future income and this has implications for their behaviour as the accounts are largely non-fungible and marginal propensity to consume out of each account is different.


Mental accounting, utility, value and transaction

In mental accounting theory, framing means that the way a person subjectively frames a transaction in their mind will determine the utility they receive or expect. This concept is similarly used in prospect theory, and many mental accounting theorists adopt that theory as the value function in their analyses.

Another very important concept used to understand mental accounting is that of modified utility function. There are 2 values attached to any transaction - acquisition value and transaction value. Acquisition value is the money that one is ready to part with for physically acquiring some good. Transaction value is the value one attaches to having a good deal. If the price that one is paying is equal to the mental reference price for the good, the transaction value is zero. If the price is lower than the reference price, the transaction utility is positive.


Mental accounting cost

More generally, a mental accounting cost or mental transaction cost, a kind of transaction cost, is the cost of making a useful decision, especially of a consumer making a useful decision to buy, and may set a lower bound on useful price granularity in a market. In a software engineering context the latter phrase refers to the cost to the user of making a useful selection in the user interface, in contrast to a computational transaction cost such as CPU, memory, or network usage.


References

  • Benartzi, S. and Thaler, R. H. “Myopic loss-aversion and the equity premium puzzle” (1995) Quarterly Journal of Economics, CX , 75-92.
  • Kahneman, D., Knetsch, J.L., Thaler, R. H. “Experimental Tests of the Endowment Effect and the Coase Theorem” (1990) Journal of Political Economy, 98(6) , 1325-1348.
  • Kahneman, D., Knetsch, J.L., Thaler, R. H. “Anomalies: The Endowment Effect, Loss Aversion, and Status Quo Bias” (1991) Journal of Economic Perspectives, 5(1) , 193-206.
  • Shefrin, H. H. and Thaler, R. H. “The behavioral life-cycle hypothesis” (1988) Economic Inquiry, 26 , 609-643.
  • Thaler, R. H. “Towards a positive theory of consumer choice” (1980) Journal of Economic Behavior and Organization, 1, 39-60
  • Thaler, R. H. “Mental accounting and consumer choice” (1985) Marketing Science, 4 , 199-214.
  • Thaler, R. H. “Saving, fungibility and mental accounts” (1990) Journal of Economic Perspectives, 4 , 193-205.
  • Thaler, R. H. “Mental accounting matters” (1999) Journal of Behavioral Decision Making, 12(3) , 183-206.


See also

  • Micropayment
  • Preference
  • Psychological pricing
  • Transaction cost


External links

  • The three main components of Mental Accounting.

Conservative two-phase locking

In computer science, conservative two-phase locking (C2PL) is a locking method used in DBMS and relational databases.

Conservative 2PL prevents deadlocks.

The difference between 2PL and C2PL is that C2PL’s transactions obtain all the locks they need before the transactions begin. This is to ensure that a transaction that already holds some locks will not block waiting for other locks.

In heavy lock contention, C2PL reduces the time locks are held on average, relative to 2PL and Strict 2PL, because transactions that hold locks are never blocked.

In light lock contention, C2PL holds more locks than is necessary, because it is hard to tell what locks will be needed in the future, thus leads to higher overhead.

Also, a transaction will not even obtain any locks if it cannot obtain all the locks it needs in its initial request. Furthermore, each transaction needs to declare its read and write set (data items to be read/written during transaction), which is not always possible. Because of these limitations, C2PL is not used very frequently.

Brentwood Council election, 2008


Composition of expiring seats before election

Ward Party Incumbent Elected Incumbent Standing again?
Brentwood North Conservative 2004 Paul Faragher
Brentwood South Labour 2004 Colin Elphick
Brentwood West Conservative 2004 Joan Holmes
Brizes & Doddinghurst Liberal Democrats 2004 Derek Hardy
Hutton Central
Conservative 2004 Jean McGinley
Hutton North Conservative 2004 Louise Monnickendam
Hutton South Conservative 2004 Francis Kenny
Ingatestone, Fryerning & Mountnessing Conservative 2004 Anthony Sleep
Pilgrims Hatch Liberal Democrats 2007 David Kendall
Shenfield Conservative 2004 Margaret Brehaut
Tipps Cross Conservative 2004 Dominic Good
Warley Conservative 2004 David Tee


External links

  • Brentwood Council

Linus Yale, Jr.

Linus Yale, Jr. (14 April 1821 - 25 December 1868) was an American mechanical engineer and manufacturer, best known for his inventions of locks, especially the cylinder lock.

Linus Yale, Jr. was born in Salisbury, New York. Yale’s father, Linus Yale, Sr., opened a lock shop in the 1840s in Newport, New York, specializing in bank locks. His son joined him in the business in 1850, and introduced some combination safe locks and key-operated cylinder locks around 1862. Then in 1868, he and Henry Robinson Towne founded the Yale Lock Manufacturing Company in the South End section of Stamford, Connecticut to produce cylinder locks. Yale died later that year.

Yale & Towne Lock Company later became so successful that Stamford was later nicknamed “Lock City.”

Yale’s cylinder lock, also called a pin-tumbler lock, was based on a principle similar to that of the first key-operated lock invented by the Egyptians around 2000 B.C.

Inventions patented by Linus Yale, Jr. and his estate from the U.S. Patent and Trademark Office:


Patents

  • 6 May 1851 Pat. #8,071 - Newport, New York
  • 19 Oct 1852 Pat. #9,350 - Newport, New York
  • 21 Dec 1852 Pat. #9,497 - Newport, New York
  • 12 July 1853 Pat. #9,850 - Newport, New York
  • 12 Jul 1853 Pat. #9,853 - Newport, New York
  • 3 Jun 1856 Pat. #15,031 - Newport, New York
  • 19 Oct 1858 Pat. #21,861 - Philadelphia, Pennsylvania
  • 9 Nov 1858 Pat. #22,048 - Philadelphia, Pennsylvania
  • 12 Jun 1860 Pat. #28710 - Philadelphia, Pennsylvania
  • 29 Jan 1861 Pat. #31,278 - Philadelphia, Pennsylvania
  • 14 May 1861 Pat. #32,331 - Philadelphia, Pennsylvania
  • 27 Jun 1865 Pat. #48,475 - Shelburne Falls, Massachusetts
  • 27 Jun 1865 Pat. #48,476 - Shelburne Falls, Massachusetts
  • 6 Feb 1866 Pat. #52,484 - Shelburne Falls, Massachusetts
  • 19 Nov 1867 Pat. #71,110 - Shelburne Falls, Massachusetts
  • 7 Jan 1868 Pat. #73,152 - Cooperstown, New York
  • 4 Feb 1868 Pat. #74,025 - Shelburne Falls, Massachusetts
  • 15 Sep 1868 Pat. #82,192 - Shelburne Falls, Massachusetts
  • 4 Jan 1870 Pat. #98,536 - Shelburne Falls, Massachusetts
  • 19 Sep 1871 Pat. #119,212 - Shelburne Falls, Massachusetts
  • 24 Oct 1871 Pat. #120,177 - Shelburne Falls, Massachusetts


Publication

  • R. H. Yale, Yale Genealogy and History of Wales (Beatrice, Neb., 1908)

Probabilism

For probabilists practicisng mathematical probability theory, see List of mathematical probabilists

In theology and philosophy, probabilism (from Latin probare, to test, approve) holds that in the absence of certainty, probability is the best criterion.


Theology

In moral theology, especially Catholic, it refers especially to the view in casuistry that in difficult matters of conscience one may safely follow a doctrine that is probable, for example is approved by a recognized Doctor of the Church, even if the opposite opinion is more probable.

This view was advanced by the Spanish theologian Bartolomé de Medina (1527 - 1581) and defended by many Jesuits such as Luis Molina (1528 - 1581). It was heavily criticised by Blaise Pascal in his Provincial Letters as leading to moral laxity. Opposed to probabilism is probabiliorism (Latin probabilior, “more likely”), which holds that when there is a preponderance of evidence on one side of a controversy one is obliged to follow that side, and tutiorism (Latin tutior, “safer”), which holds that in case of doubt one must take the morally safer side. A more radical view, “minus probabilissimus”, holds that an action is permissible if a single opinion allowing that action is available, even if the overwhelming weight of opinion proscribes it.


Philosophy

In philosophy the term is applied to that practical doctrine which gives assistance in ordinary matters to one who is skeptical in respect of the possibility of real knowledge: it supposes that though knowledge is impossible, a man may rely on strong beliefs in practical affairs. This view was held by the skeptics of the New Academy (see skepticism and Carneades.).

Academic skeptics accept probabilism, while Pyrrhonian skeptics do not.


See also

  • Equiprobabilism
  • Compensationism
  • Probabiliorism


Sources and references

  • Probabilism (1911)
  • J. Franklin, The Science of Conjecture: Evidence and Probability Before Pascal (Johns Hopkins University Press, 2001), ch. 4


External links

  • PhilosophyProfessor.com: Probabilism

Online transaction processing

Online transaction processing, or OLTP, refers to a class of systems that facilitate and manage transaction-oriented applications, typically for data entry and retrieval transaction processing. The term is somewhat ambiguous; some understand a “transaction” in the context of computer or database transactions, while others (such as the Transaction Processing Performance Council) define it in terms of business or commercial transactions.http://www.tpc.org/ OLTP has also been used to refer to processing in which the system responds immediately to user requests. An automatic teller machine (ATM) for a bank is an example of a commercial transaction processing application.

The technology is used in a number of industries, including banking, airlines, mailorder, supermarkets, and manufacturing. Applications include electronic banking, order processing, employee time clock systems, e-commerce, and eTrading. The most widely used OLTP system is probably IBM’s CICS.


Requirements

Online transaction processing increasingly requires support for transactions that span a network and may include more than one company. For this reason, new OLTP software uses client/server processing and brokering software that allows transactions to run on different computer platforms in a network.

In large applications, efficient OLTP may depend on sophisticated transaction management software (such as CICS) and/or database optimization tactics to facilitate the processing of large numbers of concurrent updates to an OLTP-oriented database.

For even more demanding decentralized database systems, OLTP brokering programs can distribute transaction processing among multiple computers on a network. OLTP is often integrated into service-oriented architecture and Web services.


Benefits

Online Transaction Processing has two key benefits: simplicity and efficiency.

Reduced paper trails and the faster, more accurate forecasts for revenues and expenses are both examples of how OLTP makes things simpler for businesses. It also provides a concrete foundation for a stable organization because of the timely updating.
Another simplicity factor is that of allowing consumers the choice of how they want to pay, making it that much more enticing to make transactions.

OLTP is proven efficient because it vastly broadens the consumer base for an organization, the individual processes are faster, and it’s available 24/7.


Disadvantages

It is a great tool for any organization, but in using OLTP, there are a few things to be wary of: the security issues and economic costs.

One of the benefits of OLTP is also an attribute to a potential problem. The worldwide availability that this system provides to companies makes their databases that much more susceptible to intruders and hackers.

For B2B transactions, businesses must go offline to complete certain steps of an individual process, causing buyers and suppliers to miss out on some of the efficiency benefits that the system provides. As simple as OLTP is, the simplest disruption in the system has the potential to cause a great deal of problems, causing a waste of both time and money. Another economic cost is the potential for server failures. This can cause delays or even wipe out an immeasurable amount of data.


See also

  • Data mart
  • Data warehouse
  • OLAP
  • ETL
  • Transaction processing
  • Database transaction
  • Derby in-memory Java Database
  • IBM Customer Information Control System


Contrasted To

  • Batch Processing
  • Grid Computing


References


External links

  • IBM CICS official website
  • Transaction Processing Performance Council
  • Comparison of OLTP and OLAP at gnuLAMP
  • OLTP Schema
  • Transaction Processing: Concepts & Techniques Management
  • About Processing - in Hebrew - By Yoram Azrakיורם אזרק
  • Business Intelligence OLTP

Devil’s coup

The Devil’s Coup is a declarer play in Bridge that prevents the defense from taking an apparently natural trump trick. A typical example is when the defense holds Qx opposite Jxx in trumps.

The aim is to come to a position similar to that shown below. Spades are trumps and the lead is in dummy (North):

The 3 is lead. If East ruffs low, then declarer overruffs low and cashes the Ace and King of spades. If East ruffs high, declarer overruffs with the K and finesses West for the Q to make the remaining two tricks.

Devil’s coups are fairly rare: not only the trump suit but the side suits must lie well for declarer.


See also

  • Smother play
  • Trump coup

Southcote Lock

Southcote Lock is a lock on the River Kennet at Southcote within the town of Reading in Berkshire, England.

Southcote Lock was built between 1718 and 1723 under the supervision of the engineer John Hore of Newbury, and this stretch of the river is now administered by British Waterways and known as the Kennet Navigation. It has a rise/fall of 5 ft 3 in (1.65 m).

The Victorian brick building that overseas Southcote Lock is the redundant Southcote Pumping Station which, when it opened in 1850, was the key to Reading’s demanding water needs.


References


See also

  • Locks on the Kennet and Avon Canal

Articles Declaratory of the Constitution of the Church of Scotland

The Articles Declaratory of the Constitution of the Church of Scotland – often known as the Declaratory Articles - were drawn up early in the 20th century to facilitate the union of the Church of Scotland and the United Free Church of Scotland. The “declaratory” nature of the Articles means that they are intended to define or “declare” a status that already existed, but explicitly spelt out for the avoidance of doubt. By an Act of Parliament – The Church of Scotland Act 1921 – the Articles Declaratory were held to be lawful, thus recognising the Church of Scotland as the national church in Scotland but independent from the state in matters spiritual. They are still in force. Special procedures are required to amend the Articles Declaratory (see Article VIII), but Article I cannot be altered.

The Articles Declaratory can be read in full at this Wikisource page: Articles Declaratory


See also

  • Separation of church and state


External links

  • Church of Scotland – Practice and Procedure

Source: The Constitution and Laws of the Church of Scotland, edited by the Very Rev Dr James L. Weatherhead, published by the Board of Practice and Procedure of the General Assembly of the Church of Scotland (Edinburgh, 1997), ISBN 0-86153-246-5

Conservative two-phase locking

In computer science, conservative two-phase locking (C2PL) is a locking method used in DBMS and relational databases.

Conservative 2PL prevents deadlocks.

The difference between 2PL and C2PL is that C2PL’s transactions obtain all the locks they need before the transactions begin. This is to ensure that a transaction that already holds some locks will not block waiting for other locks.

In heavy lock contention, C2PL reduces the time locks are held on average, relative to 2PL and Strict 2PL, because transactions that hold locks are never blocked.

In light lock contention, C2PL holds more locks than is necessary, because it is hard to tell what locks will be needed in the future, thus leads to higher overhead.

Also, a transaction will not even obtain any locks if it cannot obtain all the locks it needs in its initial request. Furthermore, each transaction needs to declare its read and write set (data items to be read/written during transaction), which is not always possible. Because of these limitations, C2PL is not used very frequently.

Small-c conservative

A small-c conservative is anyone who believes in the philosophy of conservatism but does not necessarily identify with an official Conservative Party.


Canadian context

The term was especially popular in Canada during the 1990s when the Progressive Conservative Party was centre-right with the Reform Party (later, the Canadian Alliance) further to the right. Members and supporters of the Reform Party/Canadian Alliance would thus describe themselves as small-c conservatives.


UK context

This term is also used in the United Kingdom to describe right wingers who do not support the UK Conservative Party.


See also

  • small-l liberal
  • small-l libertarianism
  • Blue Tory
  • Red Tory

Bisoprolol

Bisoprolol is a drug belonging to the group of beta blockers, a class of drugs used primarily in cardiovascular diseases. More specifically, it is a selective type β1 adrenergic receptor blocker FASS (Swedish official drug catalog) (labeling as “Selektiv beta1-blockerare” = selective beta1-blocker).


Indications

Bisoprolol (Monocor) can be used to treat cardiovascular diseases such as hypertension, coronary heart disease, arrhythmias, ischemic heart diseases and treatment of myocardial infarction after the acute event. Patients with compensated congestive heart failure may be treated with Bisoprolol as a comedication (usually together with an ACE inhibitor, a diuretic and a digitalis-glycosid, if indicated). In patients with congestive heart failure, it reduces the need for and the consumption of oxygen of the heart muscle. It is very important to start with low doses, as bisoprolol reduces also the muscular power of the heart, which is an undesired effect in congestive heart failure.

The drug is also used to treat other conditions, including dysautonomia, anxiety and hyperthyroidism (overfunction of the thyroid gland).


References

Conditional limitation

Conditional Limitation, in law, a phrase used in two senses.

(1) The qualification annexed to the grant of an estate or interest in land, providing for the determination of that grant or interest upon a particular contingency happening. An estate with such a limitation can endure only until the particular contingency happens; it is a present interest, to be divested on a future contingency. The grant of an estate to a man so long as he is parson of Dale, or while he continues unmarried, are instances of conditional limitations of estates for life.

(2) A use or interest in land limited to take effect upon a given contingency. For instance, a grant to X. and his heirs to the use of A., provided that when C. returns from Rome the land shall go to the use of B. in fee simple. B. is said to take under a conditional limitation, operating by executory devise or springing or shifting use.

In American law, this creates a fee simple on condition subsequent.

Method signature

In computer programming, especially object-oriented programming, a method is commonly identified by its unique method signature. This usually includes the method name, the number and type of its parameters, and its return type. A method signature is the smallest type of a method.

In the Objective-C programming language, method signatures for an object are declared in the interface header file. For example,

- (id)initWithInt:(int)value;

defines a method initWithInt that returns a general object (an id) and takes one integer argument. Objective-C only requires a type in a signature to be explicit when the type is not id; this signature is equivalent:

- initWithInt:(int)value;

In the Java programming language, method signatures for an object is the method name and the number and type of its parameters. Return types are not considered to be a part of the method signature.

- return_type method_name(parameters) {...}


See also

  • Type signature

Chicago Lock

Chicago Lock Co. is a lock manufacturer. Since 1933, it has sold a tubular lock marketed under the registered trademark “Ace.” Millions of Ace locks have been sold; for instance, these locks are used in Northwestern Corporation’s Triple Play bulk vending machine.

Chicago Lock was acquired in November 1999 by CompX.


External links

  • Chicago Lock Co. v. Fanberg

Resummation

In mathematics and theoretical physics, resummation is a procedure to obtain a finite result from a divergent sum (series) of functions. Resummation involves a definition of another (convergent) function in which the individual terms defining the original function are rescaled, and an integral transformation of this new function in order to obtain the original function. Borel resummation is probably the most well-known example.

Trading while insolvent (UK)

In many legal systems, once a company becomes insolvent, the directors have to take particular care. Under UK law, trading while insolvent can trigger several provisions under the Insolvency Act 1986 which may have the effect of making directors of a company personally liable to contribute to the assets of a company.

The relevant provisions of the Insolvency Act 1986 include:

  • Wrongful trading - Section 214
  • Transaction at an undervalue - Section 238
  • Preferences - Section 239
  • Extortionate credit transactions - Section 244

Under wrongful trading legislation in the UK, if the company continues to trade while it is insolvent the directors of the company may become personally liable to contribute to the company’s assets and help meet the deficit to unsecured creditors if the company’s financial position is made worse by the directors continuing to trade instead of putting the company immediately into liquidation.

In most legal systems, the liability in respect of other transactions only extends for a certain period of time prior to the company going into liquidation. In the UK, directors are exposed in respect of transaction at an undervalue, preferences, and extortionate credit transactions if the transaction occurred: a) while the company was insolvent; and b) within 2 years before the onset of liquidation if the transaction was with a connected person, and 6 months if the transaction was with an unconnected person.

Directors who continue to trade while insolvent may face disqualification under the Company Directors Disqualification Act 1986. Under the provision of this act, when a company goes into liquidation, the liquidator must make a report to the Disqualification Unit of the Department of Trade and Industry on the conduct of all directors. If the liquidator has come across conduct which makes the director unfit to be involved in the management of a company in the future (which things would include trading while insolvent) the DTI will apply to the Court for an order disqualifying the director or directors from acting as a company director for a certain period.

Many other countries have similar laws, often referred to as ‘insolvent trading’ or wrongful trading.


External link

  • Insolvency Service website

Algoma (provincial electoral district)

Algoma was a provincial electoral district in northern Ontario, Canada that elected one member to the Legislative Assembly of Ontario. It existed from 1867 to 1884, 1902 to 1934 and from 1967 to 1999. In 1999, the riding was abolished into Algoma—Manitoulin.


Members of the Legislative Assembly/Members of Provincial Parliament

This riding elected the following members of the Legislative Assembly of Ontario:

  1. Frederick William Cumberland, Conservative (1867-1874)
  2. Simon James Dawson, Liberal (1875-1878)
  3. Robert Adam Lyon, Liberal (1878-1884)
  1. William Smyth, Conservative (1902-1908)
  2. Albert Grigg, Conservative (1908-1915)
  3. John Robb, Conservative (1915-1934)
  1. Bernt Gilbertson, Progressive Conservative (1967-1975)
  2. Bud Wildman, New Democrat (1975-1999)

Write-Read conflict

In computer science, in the field of databases, Write-Read Conflict, also known as reading uncommitted data, is a computational anomaly associated with interleaved execution of transactions.

Given a schedule D

<math>D = \begin{bmatrix}

T1 & T2 \\
R(A) & \\
W(A) & \\

& R(A) \\
& W(A)\\
& R(B) \\
& W(B) \\
& Com. \\

R(B) & \\
W(B) & \\
Com. & \end{bmatrix}</math>

T2 could read a database object A, modified by T1 which hasn’t committed. This is a dirty read.

T1 may write some value into A which makes the database inconsistent. It is possible that interleaved execution can expose this inconsistency and lead to inconsistent final database state, violating ACID rules.

Strict 2PL overcomes this inconsistency by locking T2 out from performing a Read/Write on A. Note however that Strict 2PL can have a number of drawbacks, such as the possibility of deadlocks.


See also

  • Concurrency control
  • Read-Write conflict
  • Write-Write conflict

Molecular computer

Molecular computers are massively parallel computers taking advantage of the computational power of molecules (specifically biological).

Molectronics specifically refers to the sub-field of physics which addresses the computational potential of atomic arrangements.


See also

  • Chemical computer
  • Analog computer
  • DNA computer
  • Digital computer
  • Quantum computer
  • Computation


External links

  • Introduction text

Goring Lock

Goring Lock is a lock and weir situated on the River Thames at the Goring Gap in England. The lock is located between the twin villages of Goring-On-Thames, Oxfordshire, and Streatley, Berkshire, and is adjacent to Goring and Streatley Bridge. The lock is owned and managed by the Environment Agency.


Access to the lock

The lock is situated almost under the bridge and is easily accessible from both Goring and Streatley


Reach above the lock

The reach is only just over half a mile long. The Thames Path crosses the bridge to Streatley and continues on the western bank to Cleeve Lock.


See also

  • Locks on the River Thames

Chisholm High School

Chisholm High School (Founded in 1973) is the second largest high school in Enid, Oklahoma and is located in the northern part of the city.
With a student body of approximately 300 students in grades 9-12, Chisholm offeres a variety of normal and AP academic courses.
Chisholm also offers a variety of sports including football, basketball, baseball, softball, track and field, cross country, bowling, and cheerleading.
Chisholm holds a state championship banner for 1989 in Track and Field. The school’s predecessor “Carrier High School” holds a banner in Girls Basketball from 1970.

The school board members are:

  • President - Terri Keuchel
  • Vice President - Dr. Scott Tefft
  • Clerk - David Stubbs
  • Jack Kehnemund (member)
  • Dr. Rolfe Reitz (member)
  • Superintentant Roydon Tilley
  • Principal - Jaymie Morely (High School)
  • Principal - Shane Dent (Middle School)
  • Principal - Cyndy Crites (Elementary School)


External page

  • Home page

The Priciple of the middle school is Shane Dent
Scot Trower is not the princeiple.

Forward-forward agreement

In business and contract law, a future-forward agreement (FFA) is a form of forward rate agreement in which party A agrees to lend party B the m1 amount of money, at future time t1. In return, B will pay to A a larger monetary amount m2 at time t2 > t1.

The name “future-forward agreement” derives from the fact that both issuing and repayment of the loan take place in the future. A regular forward rate agreement lends the money at once.

A quoted forward rate is associated with every future-forward agreement. This can be thought of as the interest rate earned by party A for lending the money to B.


Example

John goes to his bank today. He agrees to take out a loan of $10,000 from the bank in one year’s time, and will pay back the loan with $10,800 in two years’ time. The forward rate would be ($10,800/$10,000)-1=8%.


See also

  • Futures contract
  • Forward contract
  • Arbitrage

Cyclin-dependent kinase complex

A cyclin-dependent kinase complex (abbreviated cdkc, also called cyclin-CDK) is a protein complex formed by the association of cyclin with cyclin-dependent kinase. These complexes are able to phosphorylate other compounds under consumption of ATP, and are thereby involved in the regulation of the cell cycle. Depending on the type of cyclin attached to CDK, it has a different function. These serve as markers in each phase which are integral for the correct sequence of events, as well as facilitating the transition to the next phase.


Classes

There are three classes of cdkc depending on the phase of the cell cycle.

  • G1 phase cdkc.
  • S phase cdkc.
  • M phase cdkc


See also

  • Cell cycle

Corecursion

In computer science, corecursion is a type of operation that is dual to recursion. Corecursion is typically used (in conjunction with lazy evaluation) to generate infinite data structures.

The rule for primitive corecursion on codata is the dual to that for primitive recursion on data. Instead of descending on the argument, we ascend on the result. Notice that corecursion creates (potentially infinite) codata, whereas ordinary recursion analyses (necessarily finite) data. Ordinary recursion is not applicable to the codata because it might not terminate. Conversely, corecursion is not applicable if the result type is data, because data must be finite.

Here is an example in Haskell. The following definition produces the list of Fibonacci numbers in linear time:

fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

The infinite list is produced by corecursion — the latter values of the list are computed on demand starting from the initial two items 0 and 1. This kind of definition is possible only because of lazy evaluation, which allows algorithms on parts of codata to terminate; such techniques are an important part of Haskell programming.


References


See also

  • Bisimulation
  • Coinduction

Credit Memo

A Credit Memo (short for “credit memorandum”) is a commercial document issued by a seller to a buyer, indicating the products, quantities and agreed prices for products or services that the seller provided the buyer with, but the buyer returned or did not receive. It may also be issued in the case of damaged goods, errors or allowances. A Credit Memo can reduce or eliminate the amount that the buyer has to pay the seller in respect of the original invoice issued earlier.

The Credit Memo usually contains: PO #, Date, Billing Address, Shipping Address, Terms of Payment, List of products with quantites and prices. Usually it also references the original Invoice and sometimes it states the reason for issue.

Credit Memos are often called Credit Notes or just Credits.

The seller usually issues a Credit Memo for the same or lower amount than the invoice, and then repays the money to the buyer or sets it off against a balance due from other transactions.

The term may also refer to the document provided by a bank to a depositor to indicate that the depositor’s balance is being increased because of some event other than a deposit, such as the collection by the bank of the depositor’s note receivable.

Code momentum

In computing, code momentum is the situation where large amounts of code dependency are repeated in programming code creating a stubborn dependency. That is a sort of momentum. The more things are done one way, the more definitely you’re headed in that direction, and the harder it is to change course. Some claim that minimizing dependencies limits momentum and makes it easier to change course.

Code momentum is alleged to be an example of an anti-pattern.


Criticism

However, coding to an API with multiple implementations to choose from is not necessarily harmful. For example, JDBC is the de-facto standard for communicating with relational databases in Java (when not using object-relational mapping). Although using JDBC creates a dependency on JDBC, that is not necessarily a big deal - as opposed to using some non-standard, vendor-specific extensions or SQL syntax, which does create a dependency on one database and makes it harder to shift.

Moreover, trying to reduce external dependencies too much may result in Not invented here syndrome, which can be counterproductive.


See also

Adapt to adapt for an anti code momentum checklist.


References

  • Code Momentum from Perl Design Patterns Book

Days Go By

Days Go By” is a song by the band Dirty Vegas from their eponymous album. The song became a radio hit in 2002 and received the Grammy Award for Best Dance Recording. “Days Go By” received significant public exposure in a commercial for a Mistubishi car that year as a 2003 model. The music video for the song is unusual in that it largely consists of two dancers representing one character performing a routine of popping, locking, the robot and breakdancing in front of a restaurant in East Los Angeles, California. The video was also filmed there. The young dancer in the video is Garland Spencer.


Pop culture occurrences

  • In a commercial for the 2003 Mitsubishi Eclipse in which a young woman dances while in the passenger seat.

    • The Eclipse commercial was in turn parodied by a skit on Chappelle’s Show in which Dave Chappelle leaves the dancer by the side of the road. This was for the 2004 Eclipse.
  • In the video game DDRMAX2: Dance Dance Revolution
  • On the November 28 2006 episode of Standoff entitled Peer Group, the acoustic version of Days Go By (which was featured on Dirty Vegas’ self-titled album as a bonus track) was played at the end of the episode.
  • In 2006 a promotional video for HBO featured the acoustic version of the song.

ISAM

ISAM stands for Indexed Sequential Access Method, a method for storing data for fast retrieval. ISAM was originally developed by IBM for mainframe computers and today forms the basic data store of almost all databases, both relational and otherwise.

In an ISAM system, data is organized into records which are composed of fixed length fields. Records are stored sequentially, originally to speed access on a tape system. A secondary set of hash tables known as indexes contain “pointers” into the tables, allowing individual records to be retrieved without having to search the entire data set. This is a departure from the contemporary navigational databases, in which the pointers to other data were stored inside the records themselves. The key improvement in ISAM is that the indexes are small and can be searched quickly, allowing the database to then access only the records it needs. Additionally modifications to the data do not require changes to other data, only the table and indexes in question.

Relational databases can be easily built on an ISAM framework with the addition of logic to maintain the validity of the links between the tables. Typically the field being used as the link, the foreign key, will be indexed for quick lookup. While this is slower than simply storing the pointer to the related data directly in the records, it also means that changes to the physical layout of the data do not require any updating of the pointers — the entry will still be valid.

ISAM is very simple to understand and implement, as it primarily consists of direct, sequential access to a database file. It is also very inexpensive. The tradeoff is that each client machine must manage its own connection to each file it accesses. This, in turn, leads to the possibility of conflicting inserts into those files, leading to an inconsistent database state. This is typically solved with the addition of a client-server framework which marshals client requests and maintains ordering. This is the basic concept behind a DBMS (Database Management System), which is a client layer over the underlying data store.

ISAM was replaced at IBM with a methodology called VSAM (Virtual Storage Access Method). Still later, IBM developed DB2, which, as of 2004, IBM promotes as their primary database management system. VSAM is the physical access method used in DB2.

MySQL implements and extends ISAM as MyISAM.

The RMS file system included with the OpenVMS operating system is one example of an ISAM file system. Borland Paradox is another.


See also

  • Virtual storage access method
  • MyISAM
  • Extensible Storage Engine
  • B-tree
  • Flat file

Readspel

Readspel is a new script or writing system invented by Kingsley Read. It is based on the Roman alphabet, but with new meanings for the letters, so that each symbol represents a distinct phoneme in the English language, and, more importantly, each phoneme in English can be represented with only one symbol. This allows English to be written with the following advantages:

  • Spellings are based on how words sound, simplifying the process of learning to read and write for both children and those learning English as a second language.
  • Pronunciation is evident from the spelling, making it easier for native speakers to learn new words, as well as for non-native speakers to learn the language from written sources.
  • Writing is more compact.

The adoption of Readspel would constitute a spelling reform.


External links

  • Kingsley Read’s Scripts

Nisir

The Assyrian king Ashurbanipal claimed that he had been to Mount Nisir and saw the boat of Utnapishtim. His army and he then took artifacts from the boat and put them in his museum of ancient artifacts. However, this museum has long since been destroyed so archaeology doesn’t know how much truth there is in the story. Mount Nisir is supposedly in modern-day Iran.

The word nişir (spelled with a dot under the s) may have come from the Akkadian word nişirtu which, with reference to localities, had the “connotation of hidden, inaccessible, secluded” and also meant arcane and secret.Brinkman and others (editors), The Assyrian Dictionary, University of Chicago (1980), vol Š-2, page 22, upper left column. In other words, nişir could be descriptive, in addition to being a proper name. The partly translated sentence in line 141a of the Gilgamesh flood myth is “KUR-ú KUR ni-şir held tight the boat.” The first KUR is followed by a phonetic complement -ú which indicates that KUR-ú is to be read in Akkadian as šadú (hill). The second KUR without the complement is read mātu (country). Since šadú (sha-doo) can mean mountain as well as hill, and scholars were familiar with the expression Mount Ararat, it has become customary to translate “KUR-ú KUR ni-şir” as Mount Nisir or Mount Nimush.

This noun phrase was probably derived from an earlier Sumerian edition and was first written in clay about 2600 BC when the only written language was the Sumerian language. Therefore, we should read KUR as a Sumerian word, not as Akkadian. In Sumerian, KUR did not mean mountain. The Sumerian word for mountain was HURSAG. In Sumerian, KUR meant land, or hill, or country, especially a foreign country. Hence the sentence “KUR-ú KUR ni-şir held tight the boat” should be read as “A mound in an inaccessible country held the boat tight.”Robert M. Best, Noah’s Ark and the Ziusudra Epic (1999), page 277. A sand bar in a marsh would qualify.


See also

Gilgamesh flood myth


References

Conservative two-phase locking

In computer science, conservative two-phase locking (C2PL) is a locking method used in DBMS and relational databases.

Conservative 2PL prevents deadlocks.

The difference between 2PL and C2PL is that C2PL’s transactions obtain all the locks they need before the transactions begin. This is to ensure that a transaction that already holds some locks will not block waiting for other locks.

In heavy lock contention, C2PL reduces the time locks are held on average, relative to 2PL and Strict 2PL, because transactions that hold locks are never blocked.

In light lock contention, C2PL holds more locks than is necessary, because it is hard to tell what locks will be needed in the future, thus leads to higher overhead.

Also, a transaction will not even obtain any locks if it cannot obtain all the locks it needs in its initial request. Furthermore, each transaction needs to declare its read and write set (data items to be read/written during transaction), which is not always possible. Because of these limitations, C2PL is not used very frequently.

Av drive

An Av drive is a hard disk drive which is designed specifically for audio and video purposes. They were used in the late 1990s for sustained media transfers: they delayed thermal recalibration so it would not interfeer with the transfer.

They are now obsolete, as normal hard drives are designed to handle realtime media through servo calibration to monitor head alignment and through the use of larger memory buffers.

Energy-momentum relation

In special relativity, the energy-momentum relation is a relation between the energy, momentum and the mass of a body:

<math> E^2 = m^2 c^4 + p^2 c^2 , \;</math>

where c is the speed of light, <math>E \;</math> is total energy, <math>m \;</math> is invariant mass, and <math>p\;</math> is momentum.

For a body in its rest frame, the momentum is zero, so the equation simplifies to

<math> E = mc^2 \;</math>

If the object is massless then the energy momentum relation reduces to

<math> E = pc \;</math>

as is the case for a photon.

In natural units the energy-momentum relation can be expressed as

<math> \omega^2 = m^2 + k^2 \;</math>

where <math>\omega \;</math> is angular frequency, <math>m \;</math> is rest mass and <math>k \;</math> is wave number.

In Minkowski space, energy and momentum (the latter multiplied by a factor of c) can be seen as two components of a Minkowski four-vector. The norm of this vector is equal to the square of the rest mass of the body, which is a Lorentz invariant quantity and hence is independent of the frame of reference.

When working in units where c = 1, known as the natural unit system, the energy-momentum equation reduces to

<math>m^2 = E^2 - p^2 \,\!</math></br>

In particle physics, energy is typically given in units of electron volts (eV), momentum in units of eV/c, and mass in units of eV/c2. In electromagnetism, and because of relativistic invariance, it is useful to have the electric field E and the magnetic field B in the same unit (gauss), using the cgs (gaussian) system of units, where energy is given in units of erg, momentum in g.cm/s and mass in grams.

Energy may also in theory be expressed in units of grams, though in practice it requires a large amount of energy to be equivalent to masses in this range. For example, the first atomic bomb liberated about 1 gram of heat, and the largest thermonuclear bombs have generated a kilogram or more of heat. Energies of thermonuclear bombs are usually given in tens of kilotons and megatons referring to the energy liberated by exploding that amount of trinitrotoluene (TNT).


See also

  • Mass-energy equivalence
  • Four-momentum

Chargeback

A chargeback occurs when a consumer requests a refund from their credit card company. The merchant is billed by its merchant bank, which has been billed initially by the card issuer. This may happen for a number of reasons, but is most often the result of fraud.


Reasons for chargeback

There are many different reasons why a merchant might receive a chargeback. Most are initiated by the cardholder, who may contact his card issuing bank regarding an inconsistency in his monthly credit card statement. This begins the dispute process that may eventually lead to a chargeback, and a reinstatement of credit to the cardholder’s account.

One of the most common reasons for a chargeback is known as a fraudulent transaction. A credit card is used without the consent or proper authorization of the card holder. In most cases, a merchant is responsible for charges fraudulently imposed on a customer.

Chargebacks are often the result of a customer dispute over credit. This type of chargeback is usually described as credit not processed. A customer may have returned merchandise to a merchant in return for credit, but credit was never posted to the account. In this example, the merchant is responsible for issuing credit to its customer, and would be charged back.

Other types of chargebacks are related to technical problems between the merchant and the issuing bank, whereby a customer was charged twice for a single transaction (duplicate processing) or other various mistakes. Yet other chargebacks are related to the authorization process of a credit card transaction, for example, if a transaction is declined by its issuing bank and the account is still charged.

Another reason for chargebacks are when a customer does not receive the item they paid for. In this case, a chargeback is initiated and the payment to the merchant is reversed.

List of reasons for a chargeback:

  • Card holder requests a copy of the transaction receipt.
  • Card holder did not authorize the transaction.
  • Non-matching account number.
  • Transaction was processed more than once.
  • Transaction receipt was not imprinted.
  • Refund not processed.
  • No authorization.
  • Customer never received merchandise/services.
  • Card not used within valid expiration date.
  • Services not rendered.
  • Error in transaction amount.
  • Transaction receipt is incorrect, incomplete, or illegible.
  • Transaction processed for incorrect amount.
  • Product different from what was described or promised.
  • Counterfeit transaction.
  • Transaction not processed within Visa or MasterCard time frames.
  • Failure to obtain card-holder signature.
  • Signature on the card was blank.
  • Signature on receipt different from card.
  • Card-holder never authorized transaction.
  • Card-holder claims merchant changed transaction amount without permission.
  • Merchant knowingly participated in a fraudulent transaction.
  • Incorrect Transaction Date.
  • Card-holder claims invalid mail or telephone order transaction.
  • Card-holder was denied ability to return item.
  • Transaction was not canceled successfully.
  • Card-holder not satisfied with quality of product or services.


Handling chargebacks

A merchant is billed for chargebacks as they occur, along with other fees and settlements associated with credit card acceptance. Because a merchant may be charged back in error, and because chargebacks may often involve complicated customer disputes, a chargeback may be appealed by the merchant. This process varies by credit card. If the chargeback is found to have been in error, a merchant will be granted a reversal.

Thieves occasionally abuse the chargeback system. For example, in a “Friendly Fraud”, an unscrupulous customer will make a purchase over the Internet with his own credit card and then issue a chargeback once the product or service is received. In such cases merchants can have difficulty recovering payment.

Chargeback processing (handling) is complex as a result of frequent rule changes by the major credit card companies (MasterCard, Visa, American Express, etc.). There is an emerging market for business software that simplifies the chargeback process as well as separate chargeback processing services.


See also

  • Credit card
  • Credit card fraud
  • CVV2
  • Fraud
  • Merchant account
  • Chargeback insurance

Combination tone

A combination tone, also called a sum tone or a difference tone, can be any of at least three similar psychoacoustic phenomena. When two tones are played simultaneously, a listener can sometimes perceive an additional tone whose frequency is a sum or difference of the two frequencies. The discovery of one of these phenomena is credited to the violinist Giuseppe Tartini, and so the tones are also called Tartini tones.

One way a difference tone can be heard is when two tones with fairly complete sets of harmonics make a just fifth. This can be explained as an example of the missing fundamental phenomena (Beament 2001). If <math>f</math> is the missing fundamental frequency, then <math>2f</math> would be the frequency of the lower tone, and its harmonics would be <math>4f, 6f, 8f,</math> etc. Since a fifth corresponds to a frequency ratio of 2:3, the higher tone and its harmonics would then be <math>3f, 6f, 9f,</math> etc. When both tones are sounded, there are components with frequencies of <math>2f, 3f, 4f, 6f, 8f, 9f,</math> etc. The missing fundamental is heard because so many of these components refer to it.

The specific phenomenon that Tartini discovered was physical. Sum and difference tones are thought to be caused sometimes by the non-linearity of the inner ear. This causes intermodulation distortion of the various frequencies which enter the ear. They are combined linearly, generating relatively faint components with frequencies equal to the sums and differences of whole multiples of the original frequencies. Any components which are heard are usually lower, with the most commonly heard frequency being just the difference tone, <math>f_2-f_1</math>, though this may be a consequence of the other phenomena. Although much less common, the following frequencies may also be heard:

<math>2f_1 - f_2, 3f_1 - 2f_2, …, f_1 - k(f_2 - f_1)</math>


External links

  • Sum and Difference Tones
  • Titchener Difference Tones Training
  • Difference tones on the harmonica


References

Beament, James. How We Hear Music, The Boydell Press, 2001. ISBN 0-85115-813-7

Component Object Model

Component Object Model (COM) is a platform for software componentry introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in any programming language that supports the technology. The term COM is often used in the software development world as an umbrella term that encompasses the OLE, OLE Automation, ActiveX, [[#COM+|COM+]] and DCOM technologies. Although COM was introduced in 1993, Microsoft did not begin emphasizing the name COM until 1997.

The essence of COM is a language-neutral way of implementing objects such that they can be used in environments different from the one they were created in, even across machine boundaries. For well-authored components, COM allows reuse of objects with no knowledge of their internal implementation because it forces component implementers to provide well-defined interfaces that are separate from the implementation. The different allocation semantics of languages are accommodated by making objects responsible for their own creation and destruction through reference-counting. Casting between different interfaces of an object is achieved through the QueryInterface() function. The preferred method of inheritance within COM is the creation of sub-objects to which method calls are delegated.

Although it has been implemented on several platforms, COM is primarily used with Microsoft Windows. COM is expected to be replaced to at least some extent by the Microsoft .NET framework, and support for Web Services through the Windows Communication Foundation (WCF). However, COM objects can still be used with all .NET languages without problems. Networked DCOM uses binary proprietary formats, while WCF encourages the use of XML-based SOAP messaging. COM also competes with CORBA and Java Beans as component software systems.


History

One of the first methods of interprocess communication in Windows was DDE which allowed sending and receiving messages in so-called “conversations” between applications. This technology was the base of OLE (Object Linking and Embedding) which in turn was one of the leading technologies introduced with Windows 3.0. Text conversations and Windows messages proved not to be as flexible as to allow sharing application features in a robust and extensible way. By the time version 3.1 of Windows was released, COM was created as a new foundation and OLE changed to OLE2.

Visual Basic introduced the VBX (packaged extensions in the form of dynamically linked libraries) which allowed the creation of objects to be graphically placed in a form and manipulated by properties and methods. These were later adapted for use by other languages such as [[Visual C++]]. OLE custom controls (OCXs) would be the replacement for the widely popular VBX.

Antony Williams, one of the more notable thinkers involved in the creation of the COM architecture, distributed a couple of internal papers in Microsoft that embraced the concept of software components; Object Architecture: Dealing With the Unknown – or – Type Safety in a Dynamically Extensible Class Library in 1988 and On Inheritance: What It Means and How To Use It in 1990. These provided the foundation of many, if not all, of the ideas behind the basics of COM.

From many of these ideas spawned Microsoft’s first object-based framework, OLE, which is short for Object Linking and Embedding. OLE was built on top of dynamic data exchange (DDE) and designed specifically for compound documents. It was introduced with Word for Windows and Excel in 1991, and was later included with Windows, starting with version 3.1 in 1992.
An example of a compound document is a spreadsheet embedded in a Word for Windows document; as changes are made to the spreadsheet within Excel, they appear automatically inside the Word document.

In 1991, Microsoft introduced Visual Basic Extensions (VBX) with Visual Basic 1.0.

In 1993, Microsoft released OLE 2 with underlying object model. While OLE 1 was focused on compound documents, COM and OLE 2 were designed to address software components in general. In 1994 OLE controls (OCX) were introduced as the successor to VBX controls. At the same time, Microsoft stated that OLE 2 would just be known as “OLE”, and that OLE was no longer an acronym, but a name for all of the company’s component technologies.

In early 1996, Microsoft found a new use for OLE Custom Controls, expanding their Web browser’s capability to present content, renamed some parts of OLE relating to the Internet ActiveX, and gradually renamed all OLE technologies to ActiveX, except the compound document technology that was used in Microsoft Office. Later that year, DCOM was introduced as an answer to CORBA.


Related technologies

COM was the major software development platform for Windows and, as such, influenced development of a number of supporting technologies.


COM+

In order to provide developers with support for distributed transactions, resource pooling, disconnected applications, event publication and subscription, better memory and processor (threads) management, as well as to position Windows as an alternative to other enterprise-level operating systems, Microsoft introduced a technology called Microsoft Transaction Server on Windows NT Service Pack 4.

With Windows 2000, that significant extension to COM was incorporated into the operating system (as opposed to the series of external tools provided by MTS) and renamed COM+. At the same time, Microsoft deemphasized DCOM as a separate entity. Transactional COM components were then handled more directly by the added layer of COM+. COM+ components were then added through the Component Services application interface.

An advantage of COM+ was that it could be run in “component farms”. A component, if coded properly, could be reused by new calls to its initializing routine without unloading it from memory. Components could also be distributed (called from another machine) as was previously only possible with DCOM.

COM+ also introduced a subscriber/publisher event mechanism called COM+ Events, and provided a new way of leveraging MSMQ (inter-application asynchronous messaging) with components called Queued Components. COM+ events extend the COM+ programming model to support late-bound events or method calls between the publisher or subscriber and the event system.


.NET

The COM platform has largely been superseded by the Microsoft .NET initiative, and Microsoft now focuses its marketing efforts on .NET. COM was often used to hook up complex, high performance code to front end code implemented in Visual Basic or ASP.

To some extent, COM is now deprecated in favor of .NET. Since .NET provides rapid development tools similar to Visual Basic for both Windows Forms and Web Forms with just-in-time compilation, back-end code can be implemented in any .NET Language including C#, Visual Basic and [[C++]].

Despite this, COM remains a viable technology with an important software base. As of this writing, Microsoft has no plans for discontinuing either COM or support for COM. COM is also ideal for script control of applications such as Office or Internet Explorer since it provides an interface for calling COM object methods from a script rather than requiring knowing the API at compile time. The GUID system developed for COM has wide uses any time a unique ID is needed.

Several of the services that COM+ provides, such as transactions and queued components, are still important for enterprise .NET applications.

There is limited support for backward compatibility. A COM object may be used in .NET by implementing a runtime callable wrapper (RCW). [1] .NET objects that conform to certain interface restrictions may be used in COM objects by calling a COM callable wrapper (CCW). [2] From both the COM and .NET sides, objects using the other technology appear as native objects.

.NET’s remoting model solves a number of COM’s remote execution shortcomings, allowing objects to be transparently marshalled by reference or value across process or machine boundaries.


Internet security

Microsoft’s idea of embedding active content on web pages as COM/ActiveX components (rather than e.g. Java applets) created a combination of problems in the Internet Explorer web browser that has led to an explosion of computer virus, trojan and spyware infections. These malware attacks mostly depend on ActiveX for their activation and propagation to other computers. Microsoft recognized the problem with ActiveX as far back as 1996 when Charles Fitzgerald, program manager of Microsoft’s Java team said “If you want security on the ‘Net’, unplug your computer. … We never made the claim up front that ActiveX is intrinsically secure.” [3]
As COM and ActiveX components are run as native code on the user’s machine, there are fewer restrictions on what the code can do. Many of these problems have been addressed by the introduction of “code Signing” (based on digital signatures), and later by the .NET platform as well. Also, before an ActiveX control is installed, the user is prompted whether to allow the installation or not, enabling the user to disallow the installation of controls from sites that the user doesn’t trust. Additionally, it is possible to disable ActiveX controls altogether, or to only allow a selected few.


Technical details

COM programmers build their software using COM-aware components. Different component types are identified by class IDs (CLSIDs), which are Globally Unique Identifiers, or GUIDs. Each COM component exposes its functionality through one or more interfaces. The different interfaces supported by a component are distinguished from each other using interface IDs (IIDs), which are also GUIDs.

COM interfaces have bindings in several languages, such as C, [[C++]], Visual Basic, and several of the scripting languages implemented on the Windows platform. All access to components is done through the methods of the interfaces. This allows techniques such as inter-process, or even inter-computer programming (the latter using the support of DCOM).


Interfaces

All COM components must (at the very least) implement the standard IUnknown interface, and thus all COM interfaces are derived from IUnknown. The IUnknown interface consists of three methods: AddRef() and Release(), which implement reference counting and controls the lifetime of interfaces; and QueryInterface(), which by specifying an IID allows a caller to retrieve references to the different interfaces the component implements. The effect of QueryInterface() is similar to dynamic_cast<> in [[C++]] or casts in Java and C#.

A COM component’s interfaces are required to exhibit the reflexive, symmetric, and transitive properties. The reflexive property refers to the ability for the QueryInterface() call on a given interface with the interface’s ID to return the same instance of the interface. The symmetric property requires that when interface B is retrieved from interface A via QueryInterface(), interface A is retrievable from interface B as well. The transitive property is similar to the symmetric property, but requires that if interface B is obtainable from interface A and interface C is obtainable from interface B, then interface C should be retrievable from interface A.

An interface consists of a pointer to a virtual function table that contains a list of pointers to the functions that implement the functions declared in the interface, in the same order that they are declared in the interface. This technique of passing structures of function pointers is very similar to the one used by OLE 1.0 to communicate with its system libraries.

COM specifies many other standard interfaces used to allow inter-component communication. For example, one such interface is IStream, which is exposed by components that have data stream semantics (e.g. a FileStream component used to read or write files). It has the expected Read and Write methods to perform stream reads and writes. Another standard interface is IOleObject, which is exposed by components that expect to be linked or embedded into a container. IOleObject contains methods that allow callers to determine the size of the component’s bounding rectangle, whether the component supports operations like ‘Open’, ‘Save’ and so on.


Classes

A class in COM is referred to as a coclass which is the contracted form of Component Object class. A coclass is COM’s language-independent way of defining a class in the object-oriented sense.

A coclass supplies concrete implementation(s) of one or more interfaces. In COM, such concrete implementations can be written in any programming language that supports COM component development, e.g. C++, Visual Basic, etc.

One of COM’s major contributions to the world of Windows development is the awareness of the concept of separation of interface from implementation. This awareness has no doubt influenced the way programmers build systems today. An extension of this fundamental concept is the notion of one interface, multiple implementations. This means that at runtime, an application can choose to instantiate an interface from one of many different concrete implementations.


Interface Definition Language and type libraries

Type libraries contain metadata that represent COM types. However, these types must first be described using Microsoft Interface Definition Language.

This is the common practice in the development of a COM component, i.e. to start with the definition of types using IDL. An IDL file is what COM provides that allows developers to define object-oriented classes, interfaces, structures, enumerations and other user-defined types in a language independent manner. COM IDL is similar in appearance to C/C++ declarations with the addition of keywords such as “interface” and “library” for defining interfaces and collections of classes, respectively. IDL also requires the use of bracketed attributes before declarations to provide additional information, such as the GUIDs of interfaces and the relationships between pointer parameters and length fields.

The IDL file is compiled by the MIDL compiler into a pair of forms for consumption from various languages. For C/C++, the MIDL compiler generates a compiler-independent header file containing struct definitions to match the vtbls of the declared interfaces and a C file containing declarations of the interface GUIDs. C++ source code for a proxy module can also be generated by the MIDL compiler. This proxy contains method stubs for converting COM calls into Remote Procedure Calls, thus enabling DCOM.

An IDL file may also be compiled by the MIDL compiler into a type library (.TLB file). The binary metadata contained within the type library is meant to be processed by language compilers and runtime environments (e.g. VB, Delphi, the .NET CLR etc). The end result of such TLB processing is that language-specific constructs are produced that represent the COM class defined in the .TLB (and ultimately that which was defined in the originating IDL file).


COM as an object framework

The fundamental principles of COM have their roots in Object-Oriented philosophies. It is a platform for the realization of Object-Oriented Development and Deployment.

Because COM is a runtime framework, types have to be individually identifiable and specifiable at runtime. To achieve this, globally unique identifiers (GUIDs) are used. Each COM type is designated its own GUID for identification at runtime (vis compile time).

In order that information on COM types be accessible at both compile time and runtime, COM presents the type library. It is through the effective use of type libraries that COM achieves its capabilities as a dynamic framework for the interaction of objects.

Consider the following example coclass definition in an IDL :

coclass MyObject
{
  [default] interface IMyObject;
  [default, source] dispinterface _IMyObjectEvents;
};

The above code fragment declares a COM class named MyObject which must implement an interface named IMyObject and which supports (not implements) the event interface _IMyObjectEvents.

Ignoring the event interface bit, this is conceptually equivalent to defining a C++ class like this :

class CSomeObject : public ISomeInterface
{
  ...
  ...
  ...
};

where ISomeInterface is a C++ pure virtual class.

Referring once again to the MyObject COM class: once a coclass definition for it has been formalized in an IDL, and a Type Library compiled from it, the onus is on the individual language compiler to read and appropriately interpret this Type Library and then produce whatever code (in the specific compiler’s language) necessary for a developer to implement and ultimately produce the binary executable code which can be deemed by COM to be of coclass MyObject.

Once an implementation of a COM coclass is built and is available in the system, next comes the question of how to instantiate it. Now, in languages like C++, we can use the CoCreateInstance() API in which we specify the CLSID (CLSID_MyObject) of the coclass as well as the interface (specified by the IID IID_IMyObject) from that coclass that we want to use to interact with that coclass. Calling CoCreateInstance() like this:

CoCreateInstance
(
  CLSID_MyObject,
  NULL,
  CLSCTX_INPROC_SERVER,
  IID_IMyObject,
  (void**)&m_pIMyObject
);

is conceptually equivalent to the following C++ code :

ISomeInterface* pISomeInterface = new CSomeObject();

In the first case, we are saying to the COM sub-system that we want to obtain a pointer to an object that implements the IMyObject interface and we want coclass CLSID_MyObject’s particular implementation of this interface. In the second case, we are saying that we want to create an instance of a C++ class that implements the interface ISomeInterface and we are using CSomeObject as that C++ class.

A coclass, then, is an object-oriented class in the COM world. The main feature of the coclass is that it is (1) binary in nature and consequently (2) programming language-independent.


Registry

In Windows, COM classes, interfaces and type libraries are listed by GUIDs in the registry, under HKEY_CLASSES_ROOT\CLSID for classes and HKEY_CLASSES_ROOT\interface for interfaces. The COM libraries use the registry to locate either the correct local libraries for each COM object or the network location for a remote service.


Reference counting

The most fundamental COM interface of all, i.e. IUnknown (from which all COM interfaces must be derived), supports two main concepts: feature exploration through the QueryInterface method, and object lifetime management by including AddRef() and Release(). Reference counts and feature exploration apply to objects (not to each interface on an object) and thus must have a centralized implementation.

The COM specifications require a technique called reference counting to ensure that individual objects remain alive as long as there are clients which have acquired access to one or more of its interfaces and, conversely, that the same object is properly disposed of when all code that used the object have finished with it and no longer require it. A COM object is responsible for freeing its own memory once its reference count drops to zero.

For its implementation, a COM Object usually maintains an integer value that is used for reference counting. When AddRef() is called via any of object’s interfaces, this integer value gets incremented. When Release() is called, this integer gets decremented. AddRef() and Release() are the only means by which a client of a COM object is able to influence its lifetime. The internal integer value remains a private member of the COM object and will never be directly accessible.

The purpose of AddRef() is to indicate to the COM object that an additional reference to itself has been affected and hence it is necessary to remain alive as long as this reference is still valid. Conversely, the purpose of Release() is to indicate to the COM object that a client (or a part of the client’s code) has no further need for it and hence if this reference count has dropped to zero, it may be time to destroy itself.

Certain languages (e.g. Visual Basic) provide automatic reference counting so that COM object developers need not explicitly maintain any internal reference counter in their source codes. Using COM in C language, explicit reference counting is needed. In C++ you can do it by yourself or choose to use a smart pointer that will manage all the reference counting for you.

The following is a general guideline calling AddRef() and Release() to facilitate proper reference counting in COM object :

  • Functions (whether object methods or global functions) that return interface references (via return value or via “out” parameter) should increment the reference count of the underlying object before returning. Hence internally within the function or method, AddRef() is called on the interface reference (to be returned). An example of this is the QueryInterface() method of the IUnknown interface. Hence it is imperative that developers be aware that the returned interface reference has already been reference count incremented and not call AddRef() on the returned interface reference yet another time.
  • Release() must be called on an interface reference before that interface’s pointer is overwritten or goes out of scope.
  • If a copy is made on an interface reference pointer, AddRef() should be called on that pointer. After all, in this case, we are actually creating another reference on the underlying object.
  • Addref() and Release() must be called on the specific interface which is being referenced since an object may implement per-interface reference counts in order to allocate internal resources only for the interfaces which are being referenced.
  • Extra calls to these functions are not sent out to remote objects over the wire; a proxy keeps only one reference on the remote object and maintains its own local reference count.

To facilitate and promote COM development, Microsoft introduced ATL (Active Template Library) for C++ developers. ATL provides for a higher-level COM development paradigm. It also shields COM client application developers from the need to directly maintain reference counting by providing smart pointer objects.

Other libraries and languages that are COM-aware include the Microsoft Foundation Classes, VBScript, Visual Basic, ECMAScript (JavaScript) and Borland Delphi.


Instantiation

COM standardizes the instantiation (i.e. creation) process of COM objects by requiring the use of Class Factories. In order for a COM object to be created, two associated items must exist :

  • A Class ID.
  • A Class Factory.

Each COM Class or CoClass must be associated with a unique Class ID (a GUID). It must also be associated with its own Class Factory (that is achieved by using a centralized registry). A Class Factory is itself a COM object. It is an object that must expose the IClassFactory or IClassFactory2 (the latter with licensing support) interface. The responsibility of such an object is to create other objects.

A class factory object is usually contained within the same executable code (i.e. the server code) as the COM object itself. When a class factory is called upon to create a target object, this target object’s class id must be provided. This is how the class factory knows which class of object to instantiate.

A single class factory object may create objects of more than one class. That is, two objects of different class ids may be created by the same class factory object. However, this is transparent to the COM system.

By delegating the responsibility of object creation into a separate object, a greater level of abstraction is promoted, and the developer is given greater flexibility. For example, implementation of the Singleton and other creation patterns is facilitated. Also, the calling application is shielded from the COM object’s memory allocation semantics by the factory object.

In order for client applications to be able to acquire class factory objects, COM servers must properly expose them. A class factory is exposed differently, depending on the nature of the server code. A server which is DLL-based must export a DllGetClassObject() global function. A server which is EXE-based registers the class factory at runtime via the CoRegisterClassObject() Windows API function.

The following is a general outline of the sequence of object creation via its class factory :

  • The object’s class factory is obtained via the CoGetClassObject() API (a standard Windows API).
    As part of the call to CoGetClassObject(), the Class ID of the object (to be created) must be supplied. The following C++ code demonstrates this:
     IClassFactory* pIClassFactory = NULL;
    
     CoGetClassObject
     (
       CLSID_SomeObject,
       CLSCTX_ALL,
       NULL,
       IID_IClassFactory,
       (LPVOID*)&pIClassFactory
     );

    The above code indicates that the Class Factory object of a COM object, which is identified by the class id CLSID_SomeObject, is required. This class factory object is returned by way of its IClassFactory interface.

  • The returned class factory object is then requested to create an instance of the originally intended COM object. The following C++ code demonstrates this:
     ISomeObject* pISomeObject = NULL;
    
     if (pIClassFactory)
     {
       pIClassFactory -> CreateInstance
       (
         NULL,
         IID_ISomeObject,
         (LPVOID*)&pISomeObject
       ); 
    
       pIClassFactory -> Release();
    
       pIClassFactory = NULL;
     }

    The above code indicates the use of the Class Factory object’s CreateInstance() method to create an object which exposes an interface identified by the IID_ISomeObject GUID. A pointer to the ISomeObject interface of this object is returned. Also note that because the class factory object is itself a COM object, it needs to be released when it is no longer required (i.e. its Release() method must be called).

  • The above demonstrates, at the most basic level, the use of a class factory to instantiate an object. Higher level constructs are also available, some of which do not even involve direct use of the Windows APIs.

    For example, the CoCreateInstance() API can be used by an application to directly create a COM object without acquiring the object’s class factory. However, internally, the CoCreateInstance() API itself will invoke the CoGetClassObject() API to obtain the object’s class factory and then use the class factory’s CreateInstance() method to create the COM object.

    VBScript supplies the New keyword as well as the CreateObject() global function for object instantiation. These language constructs encapsulate the acquisition of the class factory object of the target object (via the CoGetClassObject() API) followed by the invocation of the IClassFactory::CreateInstance() method.

    Other languages, e.g. PowerBuilder’s PowerScript may also provide their own high-level object creation constructs. However, CoGetClassObject() and the IClassFactory interface remain the most fundamental object creation technique.


    Reflection

    At the time of the inception of COM technologies, the only way for a client to find out what features an object would offer, was to actually create one instance and call into its QueryInterface method (part of the required IUnknown interface).

    This way of exploration became awkward for many applications, including the selection of appropriate components for a certain task, and tools to help a developer understand how to use methods provided by an object.

    As a result, COM Type Libraries were introduced, through which components can describe themselves. A type library contains information such as the CLSID of a component, the IIDs of the interfaces the component implements, and descriptions of each of the methods of those interfaces. Type libraries are typically used by RAD environments such as Visual Basic or Visual Studio to assist developers of client applications.


    Programming

    COM is a binary standard (also said to be language agnostic) and may be developed in any programming language capable of understanding and implementing its binary defined data types and interfaces.

    Runtime libraries (in extreme situations, the programmers) are responsible for entering and leaving the COM environment, instantiating and reference counting COM objects, querying objects for version information, coding to take advantage of advanced object versions, and coding graceful degradation of function when newer versions aren’t available.


    Application and network transparency

    COM objects may be instantiated and referenced from within a process, across process boundaries within a computer, and across a network, using the DCOM technology. Out-of-process and remote objects may use marshalling to send method calls and return values back and forth. The marshalling is invisible to the object and the code using the object.


    Threading in COM

    In COM, threading issues are addressed by a concept known as “apartment models“. Here the term “apartment” refers to an execution context wherein a single thread or a group of threads is associated with one or more COM objects.

    Apartments stipulate the following general guidelines for participating threads and objects:

    • Each COM object is associated with one and only one apartment. This is decided at the time the object is created at runtime. After this initial setup, the object remains in that apartment throughout its lifetime.
    • A COM thread (i.e., a thread in which COM objects are created or COM method calls are made) is also associated with an apartment. Like COM objects, the apartment with which a thread is associated is also decided at initialization time. Each COM thread also remains in its designated apartment until it terminates.
    • Threads and objects which belong to the same apartment are said to follow the same thread access rules. Method calls which are made inside the same apartment are performed directly without any assistance from COM.
    • Threads and objects from different apartments are said to play by different thread access rules. Method calls made across apartments are achieved via marshalling. This requires the use of proxies and stubs.

    There are three types of Apartment Models in the COM world: Single-Threaded Apartment (STA), Multi-Threaded Apartment (MTA), and Neutral Apartment. Each apartment represents one mechanism whereby an object’s internal state may be synchronized across multiple threads.

    The Single-Threaded Apartment (STA) model is a very commonly used model. Here, a COM object stands in a position similar to a desktop application’s user interface. In an STA model, a single thread is dedicated to drive an object’s methods, i.e. a single thread is always used to execute the methods of the object. In such an arrangement, method calls from threads outside of the apartment are marshalled and automatically queued by the system (via a standard Windows message queue). Thus, there is no worry about race conditions or lack of synchronicity because each method call of an object is always executed to completion before another is invoked.

    If the COM object’s methods perform their own synchronization, multiple threads dedicated to calling methods on the COM object are permitted. This is termed the Multiple Threaded Apartment (MTA). Calls to an MTA object from a thread in an STA are also marshaled. A process can consist of multiple COM objects, some of which may use STA and others of which may use MTA. The Thread Neutral Apartment allows different threads, none of which is necessarily dedicated to calling methods on the object, to make such calls. The only proviso is that all methods on the object must be serially reentrant.


    Criticisms

    Since COM has a fairly complex implementation, programmers can be distracted by some of the “plumbing” issues.


    Message pumpi