This is a brief introduction to chemistry. It is like a summary, or "cheat sheet". It includes a small introduction to organic chemistry.
This summary is primarily based on the material in Beginning Chemistry.
It is handy to always have a browser tab open with the Periodic Table.
Matter is anything that has mass and takes up space. A substance is matter that has the same physical and chemical properties throughout.
An element is a substance that cannot be broken down into simpler chemical substances by ordinary chemical means.
The smallest piece of an element that maintains the identity of the element is called an atom. Hence all matter is made from atoms.
Each atom contains:
If the atom is uncharged, it has the same number of protons as electrons.
All known elements occur in the periodic table, in a purposely chosen layout. For each element, the following data (and more) is found in the periodic table:
An atomic mass unit (u) is approximately the mass of 1 proton or neutron. More precisely, an atomic mass unit is one-twelfth of the mass of a carbon-12 atom, which is a carbon isotope having 6 protons and 6 neutrons. The mass number of an isotope of an element is the exact number of protons plus the exact number of neutrons (which clearly is a whole number for the isotope). Given that isotopes of an element occur in a given ratio, the atomic mass of an element is the weighted average mass number for that element.
There is more interesting data in the periodic table, but for that we need to know more about electron configurations. In a quantum-mechanical model of an atom, the state of an electron is described by 4 quantum numbers:
The Pauli exclusion principle states that no 2 electrons in an atom can have the same set of 4 quantum numbers.
Keep that in mind below, when talking about electron configurations. Note that for subshell l (in a given shell)
there can be 2 * l + 1
different magnetic quantum numbers, so 2 * (2 * l + 1)
electrons
(taking the 2 different spin quantum numbers in mind).
The quantum numbers lead to the electron configuration of an element in the periodic table. First give the subshells a letter instead of number, namely s, p, d and f for subshell 0, 1, 2 and 3, respectively. Remember this as SPeeD, Fine, for example. The electron configuration repeats the pattern shell-subshell-(electron-count). For example:
Note that for uncharged atoms, the number of electrons and protons are the same, which makes sense because protons and electrons have the opposite charge (1 and -1, respectively). Hence, the number of electrons is the same as the atomic number. Note that the number of electrons also easily follows from the electron configuration.
Also note that electrons start to fill the "lowest energy positions" that are not filled. This is clearly visible in the periodic table, for increasing atomic numbers.
The electron configuration of an element tells us a lot about reactivity. When shells and subshells are completely filled, the atom is so stable that it hardly reacts, if at all. That's the case for noble gases, like He, Ne, Ar, Kr and Xe. The octet rule says that atoms like to have 8 electrons in their valence shell. More about that (and exceptions) later.
For each element, the highest numbered shell is called the valence shell. The electrons in the valence shell, plus the electrons in the last unfilled subshell are called valence electrons (but beware of double counting). Elements with similar electron configuration in their valence shells have similar chemistry. This is represented in the periodic table by elements having the same column. For example, the noble gases all have fully filled shells and subshells, and they are all found in the rightmost column.
One trend in the periodic table is that the atomic radius goes up if we go down in one column (group), but goes down if we go to the right in one row (period). The reasons are: going down in one group means an extra shell, increasing the atomic radius, but going to the right in one period means more protons and therefore more positive charge attracting the valence electrons.
The ionization energy is the amount of energy required to remove an electron from an atom in the gas phase. Going down in the periodic table means decreasing ionization energy, because the valence electron is further away from the nucleus, due to it being in a higher numbered shell. Going to the right in the periodic table means increasing ionization energy, due to the increasing pull on the electrons by the increasing number of protons.
There is more than one IE (ionization energy), for removing successive electrons (if the atom has them). These successive IE's increase, due to the larger net positive charge.
The opposite of IE is electron affinity (EA). That is the energy change when a gas-phase atom accepts an electron. The general trend (in kJ/mol) is obvious, but there is no definitive trend.
Electronegativity is a qualitative scale for judging how much an atom of a given element attracts electrons to itself in a chemical bond. Electronegativity (Pauling scale) is the highest for fluorine, that is the top right corner of the periodic table with the exception of the noble gas group (at the last column). It is the lowest at the botton left corner. Obviously, due to the octet rule, halogens (in the column directly left of the noble gases) have high electronegativity. These elements "want to attract" an electron to fully fill their valence shell with 8 instead of 7 electrons. Indeed, going from left to right in the periodic table tends to increase the electronegativity. In left columns, the metals there want to shed electrons rather than attract them, according to the octet rule. When going down, electronegativity decreases, which makes sense in that valence electrons are further away from the positively charged nucleus.
Strictly, electronegativity is a property of an atom within a molecule, rather than an inherent property of an atom.
There are different groups of elements in the periodic table. Most elements are metals. Subgroups are alkali metals, alkaline earths and transition metals, for example. Most metals are solid, shiny, with high density and with high melting points. Mercury (Hg) is liquid at room temperature, however. Most metals have valence electrons that are easily removed, so electronegativity is low. Most metals conduct heat and electricity well.
Nonmetals other than H occur on the upper right side of the periodic table. They have high electronegativity. They poorly conduct heat and electricity. If solid, they are typically brittle. Two subtypes stand out:
Another group of nonmetals is semimetals (or: metalloids). They are in between metals and nonmetals in the periodic table, and therefore also in electronegativity, ionization energy etc. Reactivity typically depends on the element with which they react.
A molecule is the smallest part of a substance that has the physical and chemical properties of that substance. They combine atoms in whole-number ratios. Molecules have no charge, and their atoms are bound by covalent bonds. That is, their atoms share electrons, instead of one atom stealing the other atom's electrons (which would instead lead to ionic compounds).
There are 2 kinds of molecules:
Some elements exist naturally as molecules (2-atom or having more than 2 atoms), for example H2, O2, P4 and S8.
Molecules (with a given molecular formula) have a molecular mass which trivially follows from the atomic mass of the elements in the formula and their quantities in the formula.
A compound combines at least 2 different elements. There are 2 types of compounds:
Ions are either cations (positively charged, more protons than electrons) or anions (negatively charged, more electrons than protons). Ions form by atoms gaining or losing electrons.
Ignoring the charge (positive or negative), there are 2 types of ions:
The periodic table helps a lot in understanding ionic compounds. Take for example table salt. It combines Na+ and Cl- ions, through ionic binding. Table salt disassociates in water, breaking it down into its component ions. The periodic table shows that sodium "wants to be" the Na+ ion and chlorium "wants to be" the Cl- ion. After all, given the octet rule and the fact that sodium has one valence electron, it "wants to get rid of" this single electron, giving the resulting ion more of the stability of the neon noble gas. Likewise, chlorium has 7 valence electrons, so it is "more than willing" to receive that extra electron.  So, from the periodic table and the octet rule it is easy to see that sodium ions have charge 1+ (Na+), magnesium ions have charge 2+ (Mg2+), chloride ions have charge 1- (Cl-) and sulfide ions have charge 2- (S2-).
Electronegativity helps in understanding covalent bonds (molecules) vs. ionic bonds. The difference in electronegativity between atoms determines the kind of bond. If this difference is less than 2, the bond is covalent. A difference still makes the molecule polar, where part of the molecule is positively charged, and part of the molecule is negatively charged. If this difference is greater than 2, as is the case between metals and nonmetals, the bond between the atoms is ionic. Recall that in covalent bonds, electrons are shared, whereas in ionic bonds, electrons move from one atom to the other, thus leading to a bond between ions. Organic compounds (having elements such as C, H, O, N etc.) tend to be molecular, due to the electronegativity differences between them being smaller than 2. Note that the difference in electronegativity between F and H is almost 2, so a covalent binding between the 2 elements is highly polar.
Many compounds exist as molecules. Especially, when nonmetals connect with other nonmetals, the resulting compounds are molecules. Binary molecular compounds are named as follows:
Take for example the substance with molecular formula SO2 (recall that the elements in the molecular compound occur in whole-number ratios, and 1 is implicit and can therefore be left out in the formula). This substance is called sulfur dioxide. Not surprisingly, SO3 is called sulfur trioxide. Sometimes we use common names instead, like water for H2O, ammonia for NH3 and methane for CH4.
Naming monatomic ions is simple. The cations are simply named as the element (possibly adding the word ion), whereas the anions change names (similarly to binary molecular compounds): chlorine becomes the chloride ion (Cl-) and nitrogen becomes the nitride ion (N3-). If an element has more than one possible charge, this charge becomes part of the name. For example: Fe2+ is the iron(II) cation, and Fe3+ is the iron(III) cation.
Chemical formulas for ionic compounds are called ionic formulas. Like molecular formulas, they show the numbers of atoms of the different elements in the formula. Unlike molecular formulas, ionic formulas have a cation and anion, and the net charge must be 0. For example, take the ionic compound between Mg2+ ions and Cl- ions. To balance the charges, the number of chloride ions must be twice the number of magnesium ions, and the ionic formula is MgCl2. Note that the charges of the ions are implicit and not visible in the ionic formula.
Naming ionic compounds is simple. Combine the names of the ions (leaving out the word "ion"). If the cations can have more than one charge (like iron cations), the charge becomes part of the name of the ionic compound. For example, FeS is iron(II) sulfide (and indeed sulfide has charge 2-), and Fe2S3 is iron(III) sulfide (where again sulfide has charge 2- per ion). So the charge can be part of the name of the ionic compound, whereas it is implicit in the ionic formula.
If molecular formulas and ionic formulas look so much alike, how can we tell them apart? Molecular compounds form between nonmetals and nonmetals, whereas ionic compounds form between metals and nonmetals.
Some well-known polyatomic ions are:
Ionic formulas involving polyatomic ions typically need parentheses. For example, Ca(NO3)2 for calcium nitrate, which combines calcium ions (Ca2+) and nitrate ions (NO3-).
Acids are an interesting group of compounds. Initially, they are defined as ionic compounds of the H+ cation dissolved in water. Acids have their own naming scheme. For example, HCl(aq) is called hydrochloric acid, and H2S(aq) is called hydrosulfuric acid. If the anion is polyatomic, we get names like acetic acid (HC2H3O2(aq)), chloric acid (HClO3(aq)), nitric acid (HNO3(aq)) and nitrous acid (HNO2(aq)).
A concise representation of a chemical reaction is its chemical equation. The initial substances are the reactants and the final substances are the products. For example:
2 H2 + O2 ⟶ 2 H2O
This equation is balanced, as it must be. That means that it has the same numbers of atoms (for the different elements involved) left and right of the arrow. In other words, the law of conservation of matter has been satisfied.
A more complex chemical equation would be:
2 NaHCO3(s) ⟶ Na2CO3(s) + CO2(g) + H2O(l)
A single-replacement reaction substitutes one element for another one in a compound. For example:
2 HCl(aq) + Zn(s) ⟶ ZnCl2(aq) + H2(g)
or:
2 NaCl(aq) + F2(g) ⟶ 2 NaF(s) + Cl2(g)
The periodic table helps understand which single-replacement reactions involving halogens will occur and which ones will not occur. Elements higher in the halogen column of the periodic table will replace ones lower in the column, but not the other way around. The elements higher in the halogen column have more electronegativity, so attract the electrons of a bond to a larger extent than elements lower in the halogen column do.
A double-replacement reaction exchanges parts of 2 ionic compounds. For example:
CuCl2(aq) + 2 AgNO3(aq) ⟶ Cu(NO3)2(aq) + 2 AgCl(s)
One type of double-replacement reaction is predictable, namely the precipitation reaction, leaving a solid precipitate. To predict whether some precipitation reaction occurs, the solubility rules are of help. Whatever does not dissolve can be a solid precipitate, and therefore one of the products in a double-replacement reaction.
For the solubility rules, see solubility rules. Also see the following 2 tables:
| Compound | Exceptions |
|---|---|
| Compounds of Li+, Na+, K+, Rb+, Cs+, NH4+ | None |
| Compounds of NO3- and C2H3O2- | None |
| Compounds of Cl-, Br |
Ag+, Hg22+ and Pb2+ |
| Compounds of SO42- | Hg22+, Pb2+, Sr2+ and Ba2+ |
| Compound | Exceptions |
|---|---|
| Compounds of CO32- and PO43- | Compounds of Li+, Na+, K+, Rb+, Cs+ and NH4+ |
| Compounds of OH- | Compounds of Li+, Na+, K+, Rb+, Cs+, NH4+, Sr2+ and Ba2+ |
When molecular compounds dissolve in water, the individual molecules drift apart from each other. Yet when ionic compounds dissolve, the ions physically separate from each other (dissociation). For example:
NaCl(s) ⟶ Na+(aq) + Cl-(aq)
or:
CaCl2(s) ⟶ Ca2+(aq) + 2 Cl-(aq)
Similar remarks apply when polyatomic ions are involved.
When chemicals in a solution react (dissolved ionic compounds), it is therefore most appropriate to write a complete ionic equation, where dissolved ionic compounds are written as separate ions. For example:
Na+(aq) + Cl-(aq) + Ag+ + NO3- ⟶
AgCl(s) + Na+(aq) + NO3-(aq)
The so-called spectator ions (that are the same on both sides of the equation) can be left out, leaving the net ionic equation:
Cl-(aq) + Ag+ ⟶ AgCl(s)
A composition reaction (or combination reaction, or synthesis reaction) produces a single substance from multiple reactants. For example:
2 H2(g) + O2 ⟶ 2 H2O(l)
A decomposition reaction starts from a single substance and produces more than one substance. For example:
2 NaHCO3(s) ⟶ Na2CO3(s) + CO2(g) + H2O(l)
In a combustion reaction a reactant combines with oxygen, producing oxides as products. Any nitrogen in the reactant converts to elemental nitrogen. Many reactants, called fuels, containing mostly carbon and hydrogen atoms, produce CO2 and H2O in the combustion reacion. Examples of combustion reactions:
CH4 + 2 O2 ⟶ CO2 + 2 H2O
2 C12H26 + 37 O2 ⟶ 24 CO2 + 26 H2O
C2H5OH + 3 O2 ⟶ 2 CO2 + 3 H2O
2 C2H2N2O4 + O2 ⟶
4 CO2 + 2 H2O + 2 N2
An Arrhenius definition of an acid or of a base is as follows: an acid is any compound that increases the amount of hydrogen ion (H+) in an aqueous solution. Example: HCl. A base is any compound that increases the amount of hydroxide ion (OH-) in an aqueous solution. A base is the chemical opposite of an acid. Note that H+ is a proton, but if a hydrogen ion is attached to water molecules, we would represent this as a hydronium ion (H3O+).
A reaction of an acid and a base is called a neutralization reaction. The reactants are the acid and base, and the products are water and a salt. A salt is any ionic compound (whether soluble or insoluble) that is formed from a reaction between an acid and a base. Example neutralization reaction (where the salt is MgCl2):
2 HCl(aq) + Mg(OH)2(aq) ⟶ 2 H2O(l) + MgCl2(aq)
Of course, we could instead have written the complete or net ionic reaction.
We are all familiar with rusty iron. Rusting is formally called corrosion. In many cases, it is a reaction with oxygen that causes the disintegration. That is an example of oxidation, yet the term oxidation is far more general than its meaning in the context of corrosion reactions involving oxygen. In general, oxidation has nothing to do with oxygen.
Consider the following chemical reaction:
Mg(s) + Cl2(g) ⟶ MgCl2
In this reaction, the reactants are neutral (having the same number of electrons as protons), but the product is ionic. The product consists of Mg2+ and Cl- ions. So, the Mg atoms lose 2 electrons to make the cation, and the Cl atoms gain an electron to become the anion. In other words, this reaction involves the transfer of electrons between atoms.
Let's first separate the loss and gain of electrons from each other. Oxidation is the loss of electrons by an atom. Reduction is the gain of electrons by an atom. Combining these terms again, the chemical reaction involving oxidation and reduction is called an oxidation-reduction reaction or redox reaction.
How can we remember whether the loss of electrons is oxidation or reduction? One way to remember is to consider the special case of composition reactions where the reactants are neutral substances and the product is an ionic compound, like the reaction above. In this reaction reduction can be seen as reduction in charge, which is the case for the chlorine atoms. Then oxidation would be an increase in charge, which is the case for the magnesium atoms. Increased charge means loss of electrons, so oxidation is indeed loss of electrons.
Another way to remember is to consider the special case of corrosion involving oxygen, like the rusting of iron. We say that the iron oxides. This is again a composition reaction where the reactants are neutral and the product is ionic. If the iron oxidizes, and the iron becomes a cation, then indeed oxidation is the loss of electrons. By the way, rusting of iron has the following equation:
4 Fe + 3 O2 ⟶ 2 Fe2O3
To reason about redox reactions we must keep track of electrons assigned to each atom in the reaction. To that end, oxidation numbers are used to keep track of electrons in atoms. Oxidation numbers are not necessarily the same as the charge on the atom. Charge and oxidation numbers are separate concepts, especially for atoms in molecular compounds. Oxidation numbers are assigned to atoms in reactions as follows:
In a redox reaction, if the oxidation number of an atom increases, this atom is being oxidized. If the oxidation number of the atom decreases, the atoms is being reduced. That's also a way to remember which is which: reduction is reduction in oxidation number, so oxidation is an increase in oxidation number.
Stoichiometry is about relating one chemical substance to another using a balanced chemical reaction.
A mole is a number of "things" (without unit) just like a dozen is 12 "things". A mole stands for
6.02214179 * 1023
. This number is known as Avogadro's number or Avogadro's constant.
This number is equal to the number of atoms in exactly 12 g
of carbon-12. In other words, it is about
the same as 1 g
of protons or neutrons. Put differently, a mole of a substance has the same mass in grams as
one unit (atom or molecules) has in atomic mass units. Moles let us express amounts of atoms and molecules in visible
amounts that we can understand. In a chemical equation, we can interpret any amount of reactant or product in terms of
moles. That is, chemical equations are also balanced in terms of moles. After all, in a balanced equation we can multiply
each amount of reactants/products with one and the same factor and the result would still be a balanced equation.
A Lewis electron dot diagram (or: Lewis diagram) represents valence electrons as dots around the symbol of the element. Per side, there can be no more than 2 dots (which means indeed that there can be no more than 8 valence electrons per atom). Note that Lewis diagrams must correspond to the electron configuration, ignoring all electrons other than the valence electrons.
In Lewis diagrams for monatomic ions we simply add electrons (for anions) or remove electrons (for cations) in the diagram. When representing cations, electrons are first lost from the highest numbered shell, not necessarily the last subshell filled. That's the case in the electron configuration, and in the corresponding Lewis diagram.
Recall the octet rule, stating that atoms like to have 8 electrons in their valence shell. Having 8 electrons in the valence shell is an energetically stable arrangement of electrons.
The octet rule can be violated. Sodium in its elemental form is stable, in spite of it having 1 valence electron. On the other hand, sodium reacts easily, and removing that 1 valence electron only takes little energy, making the Na+ cation. Removing one more electron takes more energy than available to most reactions, however, so in this case the octet rule holds. When a sodium atom meets a chlorine atom, the sodium atom loses its single valence electron to the chlorine atom. Both atoms, that thus became ions, "benefit", in that both ions obey the octet rule. These ions that have opposite charge do attract each other, leading to an ionic bond between them.
How strong is an ionic bond? That depends on the magnitude of the charges and the size of the ion. The greater the magnitude of the charge, the stronger the ionic bond. The smaller the ion, the stronger the ionic bond.
In a covalent bond there is no transfer of electrons, but sharing of electrons instead. Shared electrons also count as valence shell electrons, for both atoms involved in the bond. In a Lewis diagram, it is common to replace the 2 dots of shared electrons by a dash.
Hydrogen is one of the diatomic elements. It makes sense that it is, because hydrogen (when sharing electrons) can have at most 2 electrons in its s subshell. This sharing of 1 pair of electrons is called a single bond. While hydrogen cannot obey the octet rule (it can at best fill the s subshell, by sharing another electron), fluorine can. Fluorine is also diatomic, but when forming the diatomic molecule, both atoms have a complete octet of electrons, even if both shared electrons are counted twice, once per atom.
In a covalent bond, there are bonding electron pairs and lone pair electrons. It is the bonding electron pairs that make the covalent bond. In a Lewis diagram, the bonding electron pairs would typically be drawn as dashes. Each dash is a pair of electrons.
How can we determine a Lewis diagram of a simple molecule? The following steps can be followed:
If a covalent bond is polar, the Lewis diagram can represent that by using "dashes that are much thicker at one end than at the other end". Recall the electronegativity difference scale from nonpolar covalent via polar covalent to ionic. That is, from nonpolar electron sharing via polar electron sharing to electron transfer.
The approximate amount of energy needed to break a covalent bond is called the bond energy of that bond. Breaking a covalent bond is always endothermic, whereas making a bond is always exothermic.
The 3 major types of violations against the octet rule are:
So far molecules were regarded as 2-dimensional constructs. They do have shapes, however, which follows from observed physical properties and chemical behavior. The basis of molecular shapes is VSEPR which stands for valence shell electron pair repulsion. This is not further explained here.
Organic compounds are molecules that contain carbon atoms (and other atoms). The elements besides carbon are mostly hydrogen, and often oxygen and/or nitrogen as well. These elements do not differ greatly in electronegativity, so they mostly form covalent bonds rather than ionic bonds. In other words, the formed compounds are mostly molecules.
Recall that in Lewis diagrams the atoms should all have full valence shells. Typically, but not always, this implies that the octet rule is obeyed. Also note that for molecules the valence shells include the shared electrons from covalent bonds with other atoms. Note that both shared electrons in a covalent bond count as valence electrons in both participating atoms. How many covalent bonds do atoms of the elements mentioned above have in organic compounds? Note that each covalent bond contains 1 electron of the atom itself, and 1 electron from the other atom participating in the bond. Hence, each covalent bond increments the valence shell electron count by 1. In particular:
This pattern of H, O, N, C atoms in organic compounds having 1, 2, 3, 4 covalent bonds, respectively, is clearly visible in Lewis diagrams of organic compounds (if all atoms are visible, including the H atoms). Lone electron pairs are often not shown.
Organic chemistry is about studying organic compounds, which are molecules containing carbon. That is, they are compounds containing carbon in covalent binding.
The simplest organic compounds contain only the elements carbon and hydrogen. They are called hydrocarbons. There are 2 main types of hydrocarbons:
Aliphatic hydrocarbons mainly come in 3 types:
The occasional aliphatic hydrocarbons with a ring of C atoms are called cycloalkanes/cycloalkenes/cycloalkynes.
Normal alkanes are the simplest alkanes, having their C atoms bonded in a straight chain. They are named after the number of C atoms, starting with methane, which is a molecule with formula CH4. With increasing numbers of C atoms we get the following names (for normal alkanes):
These normal alkanes all obey the formula template CH3(CH2)nCH3 (where n can be 0), except for methane (which is simply CH4).
Alkanes are also called saturated hydrocarbons, because they have the maximum number of H atoms possible according to the rules of covalent bonds.
Alkenes have a C-C double bond, so they are examples of unsaturated hydrocarbons.
Alkenes have names that are similar to alkane names: ethene, propene, butene, pentene etc. Yet how do we express in the name where the double C-C bond is located? That is done by adding a number to the name, e.g. 1-butene and 2-butene. Note that 1-butene and 2-butene have the same molecular formula, namely C4H8, yet they have different physical and chemical properties. Such different molecules having the same molecular formula are called isomers. Note that the common name for ethene is ethylene.
Naming for alkynes is quite similar to naming for alkenes, e.g. 1-butyne and 2-butyne.
Aromatic compounds contain the benzene unit. It is a ring of 6 C atoms, with alternating single and double (covalent) C-C bonds. The molecular formula of benzene is C6H6.
Most hydrocarbons are nonpolar because of the close electronegativities of carbon and hydrogen. They dissolve only sparingly in polar solvents such as water. They are also rather unreactive. They do react with halogens. For example:
CH4 + Cl2 ⟶ CH3Cl + HCl
Example of an addition reaction:
(CH2)2 + Cl2 ⟶ (CH2Cl)2
Example of a hydrogenation reaction:
(CH2)2 + H2 ⟶ (CH3)2
Example of a combustion reaction:
2 C8H18 + 25 O2 ⟶ 16 CO2 + 18 H2O
Some hydrocarbons are not straight chains, but are branched. They could still be isomers of straight-chain alkanes, but they do have different chemical and physical properties. They are called branched hydrocarbons. How do we name them?
Let's first discuss naming for the branches, the substituents. If they are like alkanes, but minus one hydrogen atom, they are called alkyl groups. For example, "methyl-" for methane minus one hydrogen atom, "ethyl-" for ethane minus one hydrogen atom, "propyl-" for propane minus one hydrogen atom, etc. These substituents can substitute individual hydrogen atoms in alkanes, for example.
Consider a molecule which is a hexane, except that it has a branch from the 2nd carbon atom, where the branch replaces the hydrogen atom by a methyl group. Then the name would be 2-methylhexane.
There can be more than 1 branch, though. Take a pentane where the 2nd carbon atom binds to a methyl group and the 3rd carbon atom binds to an ethyl group. This molecule would then be named 3-ethyl-2-methylpentane. Note the alphabetical order of alkyl groups in the name.
Possibly the same alkyl group occurs more than once. Then we need prefixes like "di-", "tri-", "tetra-", "penta-". If there are methyl groups binding to the 2nd and 3rd carbon atom in a butane, we get a 2,3-dimethylbutane. A somewhat more complex branched alkane is 3-ethyl-2,2-dimethylheptane.
For branched alkenes and alkynes a similar naming scheme is used. For example, 2,4-dimethyl-3-heptene.
Naming branched benzene molecules is relatively simple. For example:
If a benzene ring is considered the substituent in an otherwise aliphatic carbohydron, this ring is called phenyl-. For example, 3-phenylpentane.
A functional group is a collection of atoms and/or bonds with certain characteristic chemical reactions. For example: a C-C double bond, or a C-C triple bond. A typical chemical reaction is the addition of a halogen across the multiple bond.
One of the simplest functional groups is the presence of a halogen atom (e.g. F, Cl, Br or I). Alkyl halides are organic compounds containing a halogen atom. Simple alkyl halides can be named as "ions", which they are not. For example, CH3Cl is called methyl chloride, CH3CH2Br is called ethyl bromide, and CH3CH2CH2I is called propyl iodide.
The systematic way of naming alkyl halides is similar to naming hydrocarbons with alkyl groups, using prefixes like "fluoro-", "chloro-", "bromo-" and "iodo-". For example, 2-bromobutane, 2,3-dichloropentane. If alkyl groups are present, substituents are listed alphabetically (but ignoring numerical prefixes in this ordering).
The alcohol functional group is the covalently bonded OH group. In organic chemistry, this is not a negatively charged hydroxide ion!
The common (more simple) naming scheme is similar to that of alkyl halides. For example, CH3OH is called methyl alcohol, CH3CH2OH is ethyl alcohol, and CH3CH2CH2OH is propyl alcohol.
The formal naming scheme for alcohols is familiar, if we know one of the names. For example, CH3OH is called methanol, CH3CH2OH is called ethanol, and CH3CH(OH)CH3 is 2-propanol. The carbon chain is numbered to give the OH group the lowest number.
If we name alcohols as substituted alkanes, then the OH substitution is called hydroxy.
Most alkyl halides are insoluble in water. Small alcohols are very soluble in water, due to hydrogen bonding with H2O. In larger alcohols the polar OH group is overwhelmed by the nonpolar alkyl part.
A common reaction for alcohols and alkyl halides is elimination, which removes the functional group (either X or OH) and a H atom from an adjacent carbon. This causes the formation of a double C-C bond. For alkyl halides, the catalyst for the reaction is a strong base, whereas for alcohols it is a strong acid.
A carbonyl group is formed when an O and C atom are joined by a double bond. The 2 other bonds on the C atom are attached to other atoms. The O atom has 2 lone pairs of electrons, besides the double bond to the C atom. Thus, both atoms (C and O) have full octets in the valence shells.
Compounds containing a carbonyl group are called carbonyl compounds. Some sub-types are:
An aldehyde has one bond of the carbonyl group to a hydrogen atom. The carbonyl group is at the end of a carbon chain. They are named methanal, ethanal, propanal etc. (for "alkanes with an ending carbonyl group"). Methanal is also known as formaldehyde.
A ketone has both bonds of the carbonyl group to carbon atoms. In other words, the carbonyl group is in the middle of a carbon chain, and not at the end. They are named propanone, butanone, pentanone etc. (for "alkanes with a carbonyl group in the middle"). Of course, numbering is mostly needed to locate the carbonyl group. For example, 3-pentanone. Propanone is also known as acetone.
Ketones also have another naming scheme, naming the alkyl groups attached to the carbonyl group. For example, propanone is also called dimethyl ketone, and 2-butanone is also known as methyl ethyl ketone.
The combination of a carbonyl group and an OH group is a carboxyl group. Molecules containing a carboxyl group are called carboxylic acids. Like is the case for aldehydes, the functional group is at the end of a carbon chain. They are named methanoic acid, ethanoic acid, propanoic acid etc. ("for alkanes with an ending carboxyl group"). Methanoic acid is also called formic acid, and ethanoic acid is also called acetic acid.
Carboxylic acids are not strong acids, but they do act like acids in the presence of a base, resulting in carboxylate ions (which are the carboxyl group minus H+ ion). These ions are named methanoate ion, ethanoate ion, propanoate ion, etc.
Under the proper conditions, a carboxylic acid and an alcohol react. The carboxylic acid loses a hydrogen atom, and the alcohol loses the OH group. The result is water and covalent binding between the remainders of the carboxylic acid (minus H) and the alcohol (minus OH). This binding is called an ester. The naming scheme for esters is the alkyl group name from the alcohol followed by the carboxylate name from the acid. For example, CH3CH2COOCH2 is called methyl propanoate.
Finally, the ether functional group is an oxygen atom bonded to 2 organic groups. Naming is like the alternative naming for ketones. For example, CH3OCH3 is called dimethyl ether, and CH3OCH2CH3 is called methyl ethyl ether.
An amine is an organic derivative of ammonia (NH3). In amines, 1, 2 or 3 of the H atoms in NH3 are substituted by an organic group:
Other examples of amine names are diethylamine and ethyldipropylamine (replacing 2 and 3 H atoms, respectively).
The N atom in amines can accept a proton (H+) onto the single lone electron pair of the N atom. That is, amines act as bases (as in: proton acceptors). The amine becomes an ion, the organic counterpart of the ammonium (NH4+) ion. The reaction equation is:
N(CH3)3 + H2O ⟶ N(CH3)3H+ +
OH-
All amines are weak bases, comparable in weakness to carboxylic acids. All N-containing organic compounds are weak bases. For example: caffeine, nicotine, morphine, quinine.
An amide functional group combines an amine group and a carbonyl group. Amides are typically formed when an amine-containing molecule and a carboxylic acid-containing molecule are brought together. A molecule of H2O is lost, analogous to the formation of an ester. The bond between the N of the amine group and the C of the carbonyl group is called an amine bond. Amide bonds are important in proteins, which are composed of strings of amino acids, which have an amine group and a carboxylic group within them.
Sulfur is below oxygen in the same column in the periodic table, so some similar chemistry is to be expected. For example, the sulfur analog of an alcohol is called a thiol (replacing OH by SH). In naming, the suffix "-ol" for alcohols becomes "-thiol" for thiols. Examples: methanethiol (CH3SH), ethanethiol (C2H5SH), propanethiol (C3H7SH).
An older naming scheme for simple thiols, analogous to the alternative naming scheme for simple alcohols, uses the name mercaptan (instead of alcohol). For example, methyl mercaptan, ethyl mercaptan and propyl mercaptan for the thiols mentioned above.
Cysteine is an example of an amino acid that is also a thiol. So it contains an amine group, a carboxylic group (combining a carbonyl group and OH), and a thiol group.
Consider a molecule with a double bond, such as ethylene (ethene). The double bond between the carbons may open up and "attack" another ethylene molecule, and so on. This may result in a long seemingly endless molecule, which is called a polymer. The original part (the ethylene) is called the monomer. The process of making the polymer from the monomers is called polymerization. Polymers are examples of macromolecules.
Simple polymers are named after their monomers. For example, the ethelyne polymer is called poly(ethylene) or (without parentheses) polyethylene. Polyethylene is an example of an addition polymer. Poly(ethylene oxide) is also an addition polymer, yet it is not formed by opening of double bonds, but by opening of a ring in the monomer.
Some examples of monomers that can be polymerized are ethylene, propylene, styrene (ethyl linked to a benzene ring), and ethylene oxide.
Another type of polymer is the condensation polymer. It is formed when 2 different monomers react together and release another small molecule (like water) as a product. For example, an amide bond.
Copolymers are made from more than one type of monomer. For example, ethylene and propylene can be combined into a polymer which is a mixture of both. Note that propylene is also known as propene (analogous to ethylene and ethene).
Polymers are typically based on a backbone of carbon atoms. Yet another class of polymers is based on Si-O bonds instead of C atoms. Note that silicon has the same valence shell electron configuration as carbon (except for the valence shell number), and indeed it typically makes 4 covalent bonds just like carbon does. These polymers are called silicones. The silicon atoms still have organic groups linked to them (e.g. benzene rings), so these polymers are still organic.
Many polymers are what we would think of as a "plastic". Yet there are also very many polymers that are biological materials, in particular proteins and carbohydrates. Proteins are polymers of amino acids, which are monomers that have an amine functional group and a carboxylic acid functional group. These 2 groups react to create a condensation polymer, forming an amide bond. Proteins are polymers formed by hundreds or thousands of amino acids forming amide bonds.
Carbohydrates are molecules with general formula Cn(H2O)n. Glucose is a rather small molecule, but hundreds of glucose molecules linked together create a polymer called starch. Linking glucose molecules in another way may produce cellulose.
Deoxyribonucleic acid (DNA) and ribonucleic acid (RNA) are polymers of nucleotides. Each nucleotide is a long 3-part chain consisting of:


We redefine infrastructure!
- unleash global eyeballs
- enhance robust convergence
- unleash robust markets
- whiteboard real-time applications
- utilize world-class action-items
- harness revolutionary action-items
- engage user-centric interfaces
- reintermediate B2C infomediaries
- incentivize bleeding-edge schemas
- enable integrated infomediaries
- whiteboard e-business methodologies
- enable out-of-the-box content


Jeremy Rubin Contributor Share on Twitter Jeremy Rubin is currently a technical advisor to Stellar, a Bitcoin Core Contributor, investor and advisor to early-stage crypto startups, starting a company for Bitcoin scalability and privacy solutions, and a freelance consultant fo...


Event Location:
Crowne Plaza
Downing St
Cambridge, , United Kingdom
Abstract:
Do you want to speed up your reports over your large tables by 10, 20 or even 50x? Those are the performance improvements that Columnstore indexes can give you – when used properly. Often touted as a “BI” feature, in reality columnstore indexes can benefit any workload that involves some sort of reporting on large tables. In this session, we’ll first discuss how columnstore indexes work. Once past the basics, we’ll dive in and get dirty, looking at how to rewrite existing queries and change database designs to get the most out of this new index type. If you are running SQL Server 2012, you can add a columnstore index to your large tables and gain maybe 4x performance – or you can attend this session and make things really fly.
Speaker(s): Hugo Kornelis,
Abstract:
Since SQL Server 2005, we've been able to use the vardecimal data type to store decimals efficiently. With SQL Server 2008 came row and page compression, resulting in much better options for compressing our data. However, neither row nor page compression are panaceas! In this session I'll walk you through the internals of row and page compression, and based on that knowledge, enable you to better evaluate when to use which type of compression, if compression should be used at all. Once used, how do we determine its effectiveness? What are the pitfalls? I'll give you a full tool belt of knowledge to bring home and put to use on your databases.
Speaker(s): Mark S. Rasmussen,
Abstract:
SQL is fundamental to every deployment of SharePoint, and increasingly many organisations have or are planning some form of SharePoint deployment. As a SQL Professional you can't ignore SharePoint, and instead you should be actively engaged in its implementation to be to better support the solution. This session will be an introduction to some of the key considerations around SQL for SharePoint including different database, sizing, naming and a few common issues encountered. It will also introduce the SharePoint integration to Reporting Services which has been enhanced in SQL 2012. Finally it will make the case that you how and why you should get actively in your organisations SharePoint deployment.
Speaker(s): Peter Baddeley,
Abstract:
Never given time or care, never forming good relationships, becoming bloated, corrupt and rife with indistinguishable copies, and all so horrifyingly pervasive in society. But enough about the Kardashians, what about YOUR DATA? If you want to straighten it out and prevent it from going too far in the first place, this session is for you. We will cover constraint basics (not null, check, primary key/unique, foreign keys), provide standard use cases, and address misconceptions about constraint use and performance. We will also look at triggers and application logic and why these are NOT substitutes for (but can effectively complement) good constraint usage. Attendees will enjoy learning how to keep THEIR data off the tabloid page!
Speaker(s): Rob Volk,
Abstract:
"Practical Powershell – How to design and build larger scripts"The best Powershell scripts, in my humble opinion, will think like you would and will solve a problem or do a task for you in such a way that you can call the script nine out of ten times with minimal parameters and let it figure out what smart defaults to use.In this session we’ll build a (1) Powershell script to automate one of our many (dba/dev) tasks in order to save us a lot of time.I’ll show you how I design, build, test and debug the bigger scripts and we’ll put in all the bells and whistles that those scripts commonly have. (Like support for –WhatIf and get-help etc.)
Speaker(s): André Kamman,
Abstract:
Are You remember "Sliders"? In my opinion Licensing World is similar to this series. How many time You tried to understand licensing? How many times You heard different opinions about same question? I'm sure, that You know what is CPU, CORE, SOCKET. Are You familiar with Processor / User / Device? And CAL / SAL/ SA too? Are You use SPLA program or just OEM or MOLP? Physical Instance, Virtual Instance, 90 Days, EULA, SPUR, LAR, Multiplexing, 5 Dollars (not 5 Cents)... It's not all the possibilities, if we are talking about licenses. Let's talk about it, from the Licensing Point of View
Speaker(s): Tobiasz Koprowski,
Abstract:
The T-SQL Merge statement provides a world of opportunities to save a lot of time.In this session we’ll look at how merge can be used to perform complex multi-stage tasks such as loading data into data warehouse dimensions, including the handling of type 0, 1 2 slowly changing dimensions.I’ll present a summary of my MSc dissertation findings, comparing the performance of using T-SQL Merge against other more traditional methods of loading slowly changing dimensions in SSIS.We’ll also look at how we can use dynamic SQL to completely automate the generation of the merge statement, resulting in an incredibly simple meta-data configured dimension loads in your data warehouse.
Speaker(s): Alex Whittles,
Abstract:
In this session we will deep an in-depth look at some of the most common query plan operators. We'll look at what they do, how they do it and the circumstances in which they are chosen. We will look at the good and bad aspects of each and why sometimes they aren't the right tool for the job. Using lots of examples we'll investigate the usage and impact they have on your SQL Server. Hopefully you'll walk away from this session with the knowledge which will give you a deeper understanding of your query plans
Speaker(s): David Morrison,
Abstract:
There are very few applications which are being developed from zero, the most are apps are simply inherited from previous development teams. This session serves to show some easy implementable practices to follow after inheriting a database. Those practices allow to check some if the database design was done in regards to the actual data, or if while implementing some of the constraints and checks some tables were left behind. :) The practices shown in this session will allow to check the database design and identify some of the possible performance degradations.
Speaker(s): Niko Neugebauer,
Abstract:
Always On offers a huge leap forward in terms of high availability. This sessions is a demo based introduction to the high availability changes in Denali emphasising key features and benefits. During the demonstration we will show how to seamlessly upgrade a database from SQL 2005+ to Denali with ZERO down time and then use the Always on features to simplify reporting, availability and disaster recovery. This session will be useful for anyone who is working in a high availability environment or currently using replication to provide reporting and looking for a neater solution.
Speaker(s): Bob Duffy,
Abstract:
A basic introduction of SQL Servers XML Capabilities, it will cover access of XML using .value and exist with variations of XPATH that can potentially improve the queries, explaining Typed and Untyped XML and cover the use of Primary and Secondary Indexes with XML and how these may (or may not) affect performance, and considerations to take before using XML at all.
Speaker(s): Phil Quinn,
Abstract:
Extended Events is the replacement for profiler in many respects, and will be the choice of capturing data from within SQL Server now and in future editions, so we need to understand the differences it has to profiler "old guard" and why we should be using this new feature for this purposeI'll take you on a Guided tour of the key aspects, and show you simply how in just minutes you can up and running and capturing data using this new method and how to analyze it effectivelyFollow me to the "new age" of understanding your systems activity
Speaker(s): Neil Hambly,
Abstract:
In this “demo-tastic” presentation, SSIS trainer, author, and consultant Andy Leonard explains the what, why, and how of an SSIS framework that delivers metadata-driven package execution, connections management, and centralizes logging. Key takeaways: 1) Developers can migrate packages from Development, through their lifecycle, to Production without editing SSIS Connection Managers properties. 2) A metadata-driven approach to SSIS package execution. 3) Demonstration of a centralized logging reporting application.
Speaker(s): Andy Leonard,
Abstract:
Keeping track of database versions, deployment scripts, and any number of ad hoc database changes is a pain. In this session, you’ll see how to manage database changes easily using source control within SQL Server Management Studio. Source controlling databases is faster than you think with SQL Source Control; you can track who made database changes, what they changed, when, and why.
Speaker(s): Red Gate,
Abstract:
2AM. We sleeping well. And our mobile ringing and ringing. Message: DISASTER! In this session (on slides) we are NOT talk about potential disaster (such BCM); we talk about: What happened NOW? Which tasks should have been finished BEFORE. Is virtual or physical SQL matter? We talk about systems, databases, peoples, encryption, passwords, certificates and users. In this session (on few demos) I'll show which part of our SQL Server Environment are critical and how to be prepared to disaster. In some documents I'll show You how to be BEST prepared.
Speaker(s): Tobiasz Koprowski,
Abstract:
This fast paced and fun session is a journey through business intelligence with SQL Server 2012 and SharePoint. It begins in Excel and shows how PowerPivot can be used to build useful information, how the data can be fed to the desktop, and how a user can develop their own notifications from that data. It then moves on to transform the data into a more cube-like experience by using external data and shows how dashboards and presentation-quality visualisations can be built easily from tabular models. Although this session is mildly technical, it is easy to grasp and uses 100% demos.
Speaker(s): Duncan Sutcliffe,
Abstract:
TBD
Speaker(s): James Boother,
Abstract:
In this session we will go over several bad habits that are quite pervasive in the SQL Server community, and show with demos and samples why these habits can be bad. We'll also illustrate some good habits that are less common and why they should be adopted. The goal is to have every user in the room walk away with immediately actionable knowledge to improve their existing stored procedures, raise their overall T-SQL skill, and change the way they think about writing code.
Speaker(s): Aaron Bertrand,
Abstract:
We are storing more and more data FACT We have less time to move data around our environment FACT Businesses want close to real-time analytics FACT. We therefore need to plan our data movement strategy better. In this session I will show you the improvements to CDC being made in SQL Server 2012 and suggest why this is something you will want to know.
Speaker(s): Allan Mitchell,
Abstract:
Do you really understand SQL Servers’ Concurrency behaviour?  Do you believe Read operations cannot start a Transaction? Do you really know if READ_UNCOMMITTED is safe for reporting? Is being Optimistic really better than being Pessimistic? Can SQL Server 2012 be the solution to all our problems or our worst nightmare? I look forward to you joining me in this very revealing and thought provoking session where I will provide answers to all these questions and more and make you wish you had known all of this sooner.
Speaker(s): Mark Broadbent,
Abstract:
Microsoft has made serious commitments to mobile Business Intelligence, announced at SQLPass Summit 2011. What is the roadmap? What's available right now, and how can it be implemented at your organisation? Come to this session to learn about mobilising Business Intelligence using Sharepoint, Reporting Services, SQL Azure, Excel Services and Power Pivot. Yes, it is possible to have mobile Business Intelligence in your organisation, and come to this session in order to learn how!
Speaker(s): Jen Stirrup,
Abstract:
In this session we will run through the history of SQL Server Management Studio Add-ins, then goto through the step by step process of creating an Add-in for SQL Server Management Studio 2012. We will look at some of the cool things you can do and break. This session is for people who have some C# knownledge and want to extend SQL Server Management Studio.
Speaker(s): Mark Pryce-Maher,
Abstract:
Partitioning your data allows a whole host of benefits to the performance and maintainability of your databases but still seems to be a dark art known only to a few people. With every release of SQL Server more features become available to help solve various problems and a lot of them require that your database has been partitioned for that feature to be used effectively. The most recent feature requiring partitioning is Column Store indexes, without partitioning you would be required to drop them before modifying any data in the base table and then recreating them from scratch.
Speaker(s): Martin Cairns,
Abstract:
This session describes how SQL Server internally stores table data. Although you can use SQL without understanding the internals of data storage, a deep knowledge of how data is stored will improve the development of efficient applications. This session explores the basic of metadata that keeps track of data and index storage information.
Speaker(s): Bruno Basto,
Abstract:
Session Details not available
Speaker(s): n/a n/a,
Abstract:
With the release of SQL Server 2012, the T-SQL language has been extended further to enable greater productivity and more optimal queries. Following the ANSI SQL standard support has been included for PAGING and SEQUENCES. Many cumbersome sub-queries will be banished by the clutch of new analytic functions, but perhaps the biggest is the window framing extensions. These now allow a true sliding window of data to process such common problems as rolling balances. This will be a high-level look session, but will be diving a bit deeper to highlight some caveats as we go as its not all plain sailing.
Speaker(s): Dave Ballantyne,
Abstract:
Session Details not available
Speaker(s): n/a n/a,
Abstract:
The Tabular model in Analysis Services 2012 is the new alternative to building cubes: it’s easier to develop with (especially if you come from a relational database background) and its in-memory, column-store database provides blindingly fast performance. This session will provide a basic introduction to building Tabular models and discuss their strengths and weaknesses compared to cubes.
Speaker(s): Chris Webb,
Abstract:
In this session you will first get wowed by Red Gate by a 30 minute session of 'How to Slash Your Storage Costs with SQL Storage Compress' and if that wasn't enough you will then be dazzled by several 5 minute lightning talks from a selection for SQL Experts and first timers! Join us for a non-stop ride of SQL goodness in 5 minute chunks. Who will win the showdown ...Professional software company Redgate or the motley selection of lightning speakers! Join us and find out!
Speaker(s): Mark Broadbent,
Abstract:
Windows Azure is an incredibly large set of features that technical professionals can use to solve almost any computing need. With that breadth of features, what can the data professional use to help their organizations with small, disconnected datasets all the way to "Big Data"? Buck Woody, Senior Technical Professional on the Windows Azure Platform at Microsoft and a technical professional with close to 30 years of data implementations shows you what you need to know to leverage Windows Azure from a data perspective - when to use it, when to leave your data on-site, and how to create hybrid solutions that encompass both architectures.
Speaker(s): Buck Woody,
This is a list of speakers from the XML Guidebook records. The details and URLs were valid at the time of the event.
Contact: http://tsqltidy.blogspot.com
Mark Pryce-Maher is an Azure SQL Data Warehouse Architect at Microsoft with lots of database /azure experience.
LinkedIn: http://pt.linkedin.com/in/webcaravela/
Contact: http://www.nikoport.com
Niko Neugebauer is a Data Platform Consultant. A SQL Server MVP with over 20 years of experience in IT, he is passionate about the Microsoft Data Platform and community. Founder of the Portuguese SQL Server User Group and the main organizer of the first SQLSaturday event outside of North America (#78 Portugal), Niko speaks regularly at events such as PASS Summit, SQLRally, SQLBits, and SQLSaturday events around the world. Niko loves sharing information and knowledge and has authored over 130 blog posts on Columnstore Indexes, and regularly contributes to the open-sourced CISL library focused on Columnstore Indexes.
LinkedIn: http://uk.linkedin.com/in/neilhambly
Contact: http://dataidol.com/NeilHambly
Neil Hambly is a SQL Server consultant, founder and consultant at Datamovements, a Gold Microsoft Data Analytics Consulting company. Neil has 20+ years in a variety of SQL Server roles and is an MCT. He is a regular presenter (200+ events) at user groups, and PASS events, including PASS Summit and SQLSaturday, and many UK events (SQLBits, SQLRelay). Neil is the leader of PASS London (UK), a Professional Development VC, a Melissa Data MVP, and a SQL Cruise Technical Lead, who loves Guinness, whisky, and dancing.
LinkedIn: http://www.linkedin.com/in/retracement
Contact: http://tenbulls.co.uk
Mark Broadbent is a Data Platform MVP and SQL Server MCM with more than 20 years of experience working with SQL Server and principal of SQLCloud, a consultancy specializing in concurrency control and highly available solutions. He is the founder of the UK's SQLSaturday Cambridge (its first and largest), SharePoint Saturday Cambridge, the Hybrid Virtual Chapter and the East Anglia SQL User Group.
Contact: https://onlysearch.wordpress.com/
Allan Mitchell is a SQL Server MVP and runs elastio, a small consultancy helping customers to make informed decisions about their data storage and integration. His focus is on enterprise search as well as real-time data integration.
Contact: https://blogs.sentryone.com/author/AaronBertrand
Aaron, Product Manager at SentryOne, produces performance and optimization tools for the entire Microsoft data platform, as well as Plan Explorer, a free tool for SQL Server execution plan analysis. In his spare time, he is either playing volleyball, curling, blogging at sqlperformance.com and blogs.sentryone.com, or contributing to SQL Server conversations on Twitter and dba.stackexchange.com. He has worked with SQL Server since 6.5 and has been an MVP since 1997.
LinkedIn: http://www.linkedin.com/in/markrasmussen
Contact: http://improve.dk
Mark S. Rasmussen, a SQL Server MVP, has worked extensively with SQL Server, primarily focused on performance optimization and internals. Besides SQL Server, he is also proficient in the Microsoft .NET development stack, with a decade of experience. Fueled by his interest in the nitty-gritty details, Mark started the OrcaMDF open-source project, which aims to provide a completely standalone parser for SQL Server MDF files. He actively blogs at http://improve.dk and tweets at @improvedk.
Contact: http://www.coeo.com/
James Boother is a senior consultant for Coeo a Microsoft Gold Partner delivering SQL Server Consultancy services covering the entire IT lifecycle - including design, implementation and management of complex and mission critical environments, . He's a passionate .NET, PowerShell and SQL developer, a formula 1 fan and Dad to three.
LinkedIn: http://www.linkedin.com/in/buckwoody
Contact: http://buckwoody.wordpress.com/
Born helpless, naked, and unable to provide for himself, Buck Woody overcame these amazing handicaps to become a software developer, data professional, teacher, and a productive invertebrate member of society.
Contact: http://blogs.prodata.ie/author/bob.aspx
Bob Duffy is a SQL Server MVP from Dublin, Ireland who is MCA, MCM. and Analysis Services Maestro certified. Bob works as a Database Architect at the Prodata SQL Centre of Excellence where he specializes in business intelligence and performance tuning.
Contact: http://koprowskit.eu/geek/
Community leader focused on SQL Server, SharePoint, security, collaboration, and ITIL, DR, BCM and SLA. Love licensing stuff. MCT, Freelancer, consultant. Conducts audit projects, consulting and implementation in Poland and across Europe. Technical Team Leader in GITCA. Member of such Microsoft Terminology Community, Friends of RedGate, PASS, ISSA, ACM and several communities in the world. MVP for SQL Server. President of the Polish SQL Server USer Group. Creator of SQLDAY Conference.
Contact: http://sqlbyparts.com
LinkedIn: http://www.linkedin.com/in/AndyLeonard
Contact: https://andyleonard.blog
Andy Leonard is founder and Chief Data Engineer at Enterprise Data Analytics, Microsoft Data Platform MVP, creator of the DILM (Data Integration Lifecycle Management) Suite, an SSIS trainer, consultant, developer, Business Intelligence Markup Language (Biml) developer and BimlHero, SQL Server database and data warehouse developer, community mentor, engineer, and farmer. He is a co-author of "The Biml Book and SQL Server Integration Services Design Patterns" and author of "Managing Geeks - A Journey of Leading by Doing", "Data Integration Lifecycle Management with SSIS", "Building Custom Tasks for SSIS", and the "Stairway to Integration Services". Andy blogs at andyleonard.blog where you can learn more on the About Andy page.
Contact: http://www.jenstirrup.com
Jen is a database strategist, small business owner, SQLFamily and community advocate, public speaker and blogger. Jen was elected Director-At-Large (elect) for the Professional Association of SQL Server, responsible for the EMEA regions plus the Virtual Chapter portfolio. Jen is passionate about all things data and business intelligence, helping leaders derive value from their Microsoft SQL Server, SharePoint and Office365 investments.
LinkedIn: https://uk.linkedin.com/in/alexwhittles
Contact: http://www.PurpleFrogSystems.com/blog
Alex is a Data Platform MVP, and is the owner and lead consultant at Purple Frog, a SQL Server Business Intelligence consultancy in the UK. He specializes in Data Warehouse modelling, ETL, Cubes, MDX amp; DAX. He#39;s a chartered engineer amp; has an MSc in Business Intelligence. He runs the Birmingham (UK) SQL Pass chapter amp; Azure user groups, and is on the SQLBits and SQL Relay committees in the UK. Alex is a regular speaker at global events including SQLBits, PASS Summit, SQL Relay, SQLSaturdays as well as numerous SQL Pass chapters around Europe
Phil Quinn is a Database Developer working at UCAS currently developing systems producing prospectús for educational establishments. He has been working on SQL Server since version 2000, and has an MCITP Database Developer 2008.
LinkedIn: https://uk.linkedin.com/in/retracement
Contact: http://tenbulls.co.uk
Mark Broadbent is a Microsoft Certified Master in SQL Server, Chapter Leader, Virtual Chapter Leader, SQLSaturday Cambridge and SharePoint Saturday Cambridge founder (the UKs first SQLSaturday) and awarded Microsoft#39;s Community Contributor award in 2011 and the PASS Outstanding Volunteer award in 2012. Mark is a regular speaker at both International and National events and is an expert in HADR solutions, SQL Server migration, and SQL Server Concurrency control.
Dave has been working in the IT field for over 20 years, the past 15 of which has been specialising within SQLServer environment. Tuning and optimizing SQLServer processes is his particular talent but no newbie either when it comes to database development and design. Dave regularly contributes to online forums and is a regular speaker at UK events such as SQL Bits and user groups. He also is founder of the SQL Lunch UK user group
Bruno Basto, senior consultant #160;and senior trainer #160;at Rumos. SQL certified since 6.5 version (1998). Work with MSFT tools and infrastructure since 1992 in the financial, banking and insurance areas. Responsible for several training projects for software solutions with MSFT infrastructure. Speaker at several MSFT and SQLPass events.
Contact: http://sqlblog.com/blogs/hugo_kornelis/default.aspx
Hugo is co-founder and RD lead of perFact BV, a Dutch company that improves analysis methods and develops computer-aided tools to generate completely functional applications from the analysis deliverable. The platform for this development is SQL Server. In his spare time, Hugo likes to share and enhance his knowledge of SQL Server by frequenting newsgroups and forums, reading and writing books and blogs, and attending and speaking at conferences. Hugo is also a SQL Server MVP since 2006.
Contact: http://www.baddaz.com
Peter is a Solution Architect focusing on delivering Microsoft solutions including SharePoint, Dynamics CRM and Office 365. He has been working with SharePoint since 2004, lives in Cambridgeshire (United Kingdom) and can often be found on Twitter (@Baddaz) or his blog (www.baddaz.com). Peter is one of the organisers of East Anglia Region of the SharePoint User Group UK. His working life is spent leading a team of consultants delivering Microsoft Solutions to companies across UK and Ireland.
Contact: http://koprowskit.eu/geek/
Community leader focused on SQL Server, SharePoint, security, collaboration, and ITIL, DR, BCM and SLA. Love licensing stuff. MCT, Freelancer, consultant. Conducts audit projects, consulting and implementation in Poland and across Europe. Technical Team Leader in GITCA. Member of such Microsoft Terminology Community, Friends of RedGate, PASS, ISSA, ACM and several communities in the world. MVP for SQL Server. President of the Polish SQL Server USer Group. Creator of SQLDAY Conference.
Contact: http://andrekamman.com
André Kamman is a DBA and SQL Server Solutions Architect for CloudDBA. He has done a lot of DBA work on 1000’s of servers where he discovered his love for Powershell, architecting SQL Server solutions, building and tuning ETL processes (with BIML). He also likes to work with MPP platforms APS and AzureDW. André is a Data Platform MVP, Dutch PASS Chapter Leader and organiser of SQLSaturday Holland.
LinkedIn: https://www.linkedin.com/in/rob-volk-134ba81
Contact: http://weblogs.sqlteam.com/robv/
Rob Volk is a SQL Server DBA in the Metro Atlanta area since 2001. He also moderates and answers the forums on SQLTeam.com. While an old-time cranky DBA, he no longer considers quot;business intelligencequot; an oxymoron or quot;the cloudquot; as merely atmospheric moisture, and is delightedly dipping his toes into both of these new oceans, and loves to do things in new and and unusual ways.
Contact: http://www.duncansutcliffe.com
I'm a senior architect for Microsoft business intelligence solutions at Hitachi Consulting, working with clients such as Tesco, the Bank of England, Sky, Experian Footfall and Betfair. With a good twelve years or more designing BI solutions under my belt, I specialise in architecture design, development frameworks and very high quality code. I spoke at SQLbits 8 and 9 (including a precon), various UK user groups, and at SQLRelay 2012.
Contact: http://www.red-gate.com
Since 1999, Red Gate Software has produced ingeniously simple tools for over 500,000 technology professionals worldwide.We currently specialize in MS SQL Server, .NET, and Oracle tools.We are based in the beautiful, if rather flat, university town of Cambridge, UK.Our philosophy is to design highly usable, reliable tools that solve the problems of DBAs and developers.
Contact: http://tsqlninja.wordpress.com
David is a senior BI consultant at Coeo. Having worked in some for of database development or another for around 14 years his areas of specialisation are sql server engine internals, tsql and query performance tuning. David has spoken at numerous conferences including several SQLBits and SQLSaturday events as well as user group meetings. He is a a confident speaker who uses humor and a down to earth approach to make even the most technical subject matters easily attainable and engagin
LinkedIn: https://www.linkedin.com/in/chriswebb6/
Contact: https://blog.crossjoin.co.uk/
Chris Webb is a member of the Power BI CAT team. He is the author of "Power Query for Power BI and Excel" and a co-author of "SQL Server Analysis Services 2012: The BISM Tabular Model", "Expert Cube Development with SQL Server 2008 Analysis Services", and "MDX Solutions with Microsoft SQL Server Analysis Services 2005 and Hyperion Essbase".
The following is a list of sponsors that helped fund the event.


|
My Project
|
Automatically generated file. More...
Packages | |
| package | test |
| Automatically generated file. | |
Classes | |
| class | ApplicationTest |
| Testing Fundamentals More... | |
| class | BuildConfig |
| class | ExampleUnitTest |
| To work on unit tests, switch the Test Artifact in the Build Variants view. More... | |
| class | GameOfLifeActivity |
| This is the main Android Activity for the application. More... | |
| class | GameOfLifeModel |
| This class encapsulates an arbitrary number of cells which apply the logic (rules) for the Game of Life documented at http://www.bitstorm.org/gameoflife/. More... | |
| class | GameOfLifeView |
| Each instance of this class encapsulates and instance of GameOfLifeModel and displays the current state of the encapsulated GameOfLifeModel each time the onDrawPanned() method is called. More... | |
| class | PanCapableView |
| This class is inspired by sample code provided at http://vivin.net/2011/12/04/implementing-pinch-zoom-and-pandrag-in-an-android-view-on-the-canvas/8/ Author: Vivin Paliath modified by Erik M. More... | |
| class | R |
Automatically generated file.
DO NOT MODIFY


| About Dailyrotten |
|
Feedback
If you like this page, hate it, or would like to suggest changes,
<EMAIL_ADDRESS>is listening. This page
is experimental and somewhat different from what we usually offer, so please
do send your feedback.
Adding Stories
If you are a rotten newshound and you would like to suggest a story,
visit our submit page to
send us the URL. Stories that are accepted will have your name credited.
Viewership
On the first full day this page went live, 100,000 people visited this Rotten
News page. Of course that was the day after the WTC attacks, so that number is
somewhat distorted. Right now this page gets between 50,000 and 75,000 people
every day.
Linking
We encourage everyone to link to this page; if you like it, others probably
will as well.
Other Rotten
Rotten
Gaping Maw
Celebrity Morgue
Mugshots
Rotten Store
Shockumentary
Rate My Poo
Rate My Kitten
Rate My Finger
Penny Postcards
Phallic
Dr. Sputnik
Boners
Dead Pool
NNDB
Home
Make Dailyrotten your start page
|
|
|
June 15, 2003
Ugandan rebels make example of villager
Observer | Submitted by: wingnut
"The rebels considered taking his eyes and legs but settled for his hands, nose, lips and ears. On his hospital bed, head swathed in bandages, Oryem is grateful they did not take his life. Three days earlier he was abducted from his sister's home in Oryang, a village in northern Uganda, and tied up by the side of a dirt road while six rebels took turns: an axe for the hands, a scalpel for the face and a machete-like tool called a panga for the legs. One of the younger rebels, a boy called Odel who had identified Oryem, 31, as a former soldier, persuaded his comrades to stop chopping his shins and to leave the eyes. 'They left me alive to feel the pain and to set an example to the others.'"
|
|
Read article...
|
|
Federal government thwarting David Nelson
wireservice.wired.com | Submitted by: optional
David Nelsons in at least four states, including California, Oregon, Alaska and South Dakota, have reported getting stopped. ... In April, Transportation Security Administration spokesman Nico Melendez said those on the no-fly list pose, or are suspected of posing, a threat to civil aviation and national security. ... Melendez told the Daily News that the 'David Nelson' problem is due to a name-matching technology used by many airlines. He said it's not the name but letters in the name that are randomly flagged by the software." [Um.... what?]
|
|
Read article...
|
|
American forces again exempted from war crimes prosecution
truthout.org | Submitted by: Crazy Quagga
"The U.N. Security Council today approved another one-year exemption for American peacekeepers from prosecution by the new international war crimes tribunal... U.N. Secretary-General Kofi Annan spoke out strongly against any attempt to try to make the exemption permanent -- which the United States initially sought."
|
|
Read article...
|
|
Company president resigns over anti-dreadlock policy
St. Louis Today | Submitted by: Tim Howard
"John E. 'Jack' Lueders, who has headed the company that runs the Cheshire Inn for over 10 years, resigned Thursday and turned L&S Properties over to his son and his daughter-in-law, Gina Lueders. ... When questioned about the incident last week, John Lueders told a Post-Dispatch reporter in a tape-recorded interview that the inn had a policy of excluding people with dreadlocks if their hair was determined to be 'dirty and stinky.' 'You can't wash that hair, and it stinks, and we're a crowded bar, and we don't want stinky people in the bar,' he said in the interview."
|
|
Read article...
|
|
Pet industry on bleeding edge of genetic engineering
Observer | Submitted by: wingnut
"Scientists have created the ultimate pet: genetically modified fish that glow in the dark. In future, there will be no need for aquarium lights -- fluorescent fish will provide their own illumination. And that is just the start. Scientists believe Night Pearl bio-fish represent the shape of pets to come. Our household animals will come with extra genes that will stop them shedding fur or triggering allergic reactions. And when one dies, its owner will simply clone it."
 Albert Rampaul, 51, was charged with raping and indecently assaulting the 74 year-old woman at Yardley Green Hospital in August of last year. ... During the court hearing both prosecution and defence agreed that the grandmother HAD suffered a sex attack at the Avonside Unit, run by North Birmingham Mental Health Trust. But police found no DNA evidence at the scene because the attacker had used a condom."
|
|
Read article...
|
|
Netscape pays $100k for spying on New Yorkers
Wired | Submitted by: NRTM
"Netscape, as part of a settlement with the New York Attorney General's office, will pay $100,000 for tracking what users downloaded online. The settlement comes after a two-year probe, begun in 2002, into Netscape's collection and retention of information that identified files downloaded by users, which contradicted its statement to consumers that none of the information was saved."
|
|
Read article...
|
|
Nobody deterred by posted "prostitution sting" signs
Sacramento Bee | Submitted by: Tim Howard
"At least once a month, someone from the West Sacramento Police Department posts 3-by-3-foot warning signs along the town's busiest street. 'Prostitution Decoy Operation In Progress,' the signs say in big red letters. ... As if on cue, johns drive by and solicit the female officers who pose as prostitutes. Police say every sting operation results in the arrest of six to eight men on suspicion of soliciting prostitution. 'I just don't think they see the signs,' said police Sgt. Ray Bombardier. 'They're looking for the girls. They're preoccupied.'"
|
|
Read article...
|
|
Tips on avoiding wrong-side surgeries
canada.com | Submitted by: Tim Howard
"Some hospitals have begun ensuring surgeons and nurses sign checklists and special forms before a single incision is made, and that the correct body part is marked in black marker before the patient is wheeled into the operating room. Canadian bone surgeons are already signing hips, legs and other body parts in a practice known as 'cutting through the initials.' In a letter in the current issue of the Canadian Medical Association Journal, a family medicine resident at McMaster University says medical staff should go further by writing 'Cut me' on the correct limb, and 'Malpractice' on the other. 'Writing "Do not cut me" on the unaffected limb could lead to surgical errors if a drape is placed such that it covers the first two words.'"
|
|
Read article...
|
|
Wife kills herself after giving birth to a girl
CNN | Submitted by: Ryan B.
"An Egyptian woman married to a man with six daughters from previous marriages drowned herself Saturday just hours after giving birth to a girl because she feared her husband's reaction to fathering another daughter. ... Before his wife gave birth, her husband had threatened to kill or divorce her if the couple had any more daughters, police said. ... The husband, 38, had been married three times before. In each case, he divorced his wives after they gave birth to girls." [Somehow it's the wife's fault even though the sperm carries the sex-determining chromosome.]
|
|
Read article...
|
|
Woman promotes 'cyber safety' with dorky hand puppet
Orlando Sentinel | Submitted by: Tim Howard
"A few years ago, she had a dream about a geek with a cape and a superhero suit. The super-geek later became E-Man. Yzer decided to become a computer and Internet expert and took courses. 'I learned a lot about the Internet,' she said. 'Then I decided to use what I know to help children.' She came up with a set of rules to help children understand what a powerful tool the Internet is and how dangerous it can be. Many Broward schools have adopted her E-Man Cyber Safety and Ethics Curriculum." Part of her message to fourth graders is the harm they could cause by creating computer viruses.
|
|
Read article...
|
|
12-year Coke employee fired for drinking Pepsi on duty
KNBC-TV 4 Los Angeles | Submitted by: NRTM
"Rick Bronson, a driver who had been with the Coca-Cola Bottling Company for 12 years, had just completed a delivery to a California store called Smart and Final. Bronson purchased a Pepsi at the store and headed to a back room to take a break. Bronson was wearing his Coke uniform and was on company time when he drank the offending Pepsi. Someone spotted Bronson and notified the company... The Teamsters' spokesman claims that Bronson was actually dismissed because he promoted his union to non-union workers."
|
|
Read article... and
This article...
|
|
5 years waiting for trial, 15 minutes for acquittal
Chicago Sun-Times | Submitted by: Tim Howard
"Bill White spent five years in Cook County Jail awaiting trial for murder. But it took a judge only 15 minutes to rule the state's key witness 'worthless' and set White free. One week later, White's co-defendants, Otis English, 32, and Roland Gray, 50, walked out of the jail when the state dropped their cases, too."
|
|
Read article...
|
|
TSA cracking down on drunk pilots
Newsday | Submitted by: Tim Howard
"For the third time in six months, an airline pilot had shown up for work at Little Rock National Airport reeking of alcohol. As the federal security director for commercial airports in Arkansas, Henderson oversees hundreds of screeners who work for the Transportation Security Administration. Their job is to keep weapons and bombs off airplanes. Henderson and his employees have found themselves on the front lines of another battle: protecting the public from pilots who have been drinking."
|
|
Read article...
|
|
Australian girls even more intoxicated than boys
News Corporation | Submitted by: Tim Howard
"A study of several surveys into teenage girls' risk-taking behaviour has found 70 percent of young women engage in binge drinking -- consuming five or more drinks on one occasion -- and 19 per cent do so on a weekly basis. An alarming 22 percent of girls aged 14 to 19 drink between nine and 30 alcoholic drinks in a day. And twice the number of teenage girls use drugs, compared with boys."
|
|
Read article...
|
|
Irish reality TV show dead in the water
Sky News | Submitted by: Fish - Castlebar
"A ship sailing around Ireland as part of a reality television show sank off the coast of County Donegal less than a week into its voyage. Nine of the programme's contestants, who are bidding for a £70,000 prize, and two skippers were rescued when the tall ship Cabin Fever I hit rocks near Tory Island." No fatalities.
|
|
Read article...
|
|
Prince William target of road rage, briefly
News Corporation | Submitted by: Tim Howard
"Prince William has been involved in an amazing road-rage incident...  'There was an argument between the Prince and the other driver who was obviously furious and pursued William's car sounding his horn,' a witness said. 'Then soon a Royal Protection car, a Vauxhall Omega with two plain clothes officers inside, chased the Discovery down a gravel track and forced him off the road.'"
|
|
Read article...
|
|
George W. Bush's former career as a movie executive
City Pages | Submitted by: John
"'When George got on the board at Silver Screen in 1983, we didn't expect a whole lot,' says a formerly high-ranking Disney production executive who wished to remain anonymous. 'But it's funny how the squeaky wheel gets the grease.' ... 'He said he had two kinds of things he always liked to see,' asserts a junior White House aide.  You don't have to look too far to figure out where that comes from. The other was the story where the uptight yuppie guy learns to relax with the help of a funny sidekick -- often a sidekick of color. Sister Act had that, and so did Down and Out in Beverly Hills. [Bush] just went nuts for that formula.'"
|
|
Read article...
|
|
|
|
|


InputBarAccessoryView
Features
- [x] Autocomplete text with @mention, #hashtag or any other prefix
- [x] A self-sizing
UITextView
with an optional fixed height (can be replaced with any other view) - [x] Image paste support
- [x] Autocomplete attributed text highlighting
- [x] Reactive components that respond to given events
- [x] Top/Bottom/Left/Right
InputStackView
s that act as toolbars to place buttons - [x]
RxSwift
/RxCocoa
Support - [x] Drop in attachment view for file/photo management
- [x] Plugin support for your own
InputPlugin
s - [x] Compatible with all iPhones and iPads
- [x] RTL Support
Installation via CocoaPods
# Swift 5.0
pod 'InputBarAccessoryView'
# Swift 4.2
pod 'InputBarAccessoryView', '4.2.2'
Installation via Carthage
# Swift 5.0
github "nathantannar4/InputBarAccessoryView"
# Swift 4.2
github "nathantannar4/InputBarAccessoryView" "4.2.2"
Requirements
iOS 9.0+ Swift 5.0
The latest Swift 4.2 release is v4.2.2
Documentation
See the Example project to see how you can make the iMessage, Slack, Facebook and GitHawk input bars!
Example Usage
Featured In
Add your app to the list of apps using this library and make a pull request.
MessageKit (renamed to MessageInputBar)
MessageViewController (Autocomplete Highlighting Algorithm)
See Also
iMessage style TypingIndicator for chat apps
Latest Releases
- 5.0.0
- Swift 5 support
- 4.2.2
- Fixed image paste orientation issue in
InputTextView
- Fixed image paste orientation issue in
- 4.2.1
- Fixed autocompletes of completions that contain spaces
- Depricated
isCaseSensitive
in favor of a function asignment to pre-process autocompletions
- 4.2.0
- Added new API for overriding the main middle view, normally the
InputTextView
so it can be replaced with views such as aJoin
button",setMiddleContentView(_ view: UIView?, animated: Bool)
- Added new API for overriding the main middle view, normally the
- 4.1.2
- Add RxSwift/RxCocoa support through extensions and delegate proxies in
RxInputBarAccessoryView
, requiresRxSwift
andRxCocoa
- AddInputBarViewController
which contains anInputBarAccessoryView
as theinputAccessoryView
by default with a convenientisInputBarHidden: Bool
property to show/hide it - 4.1.1
- Add
frameInsets: HorizontalEdgePadding
property toInputBarAccessoryView
to inset the view to be compatible withUISplitViewController
or other custom containers where the view should not be the full width - 4.1.0
- Fix issue where setting long strings in
viewDidLoad
broke inital layout, Issue #41 - AdddeleteCompletionByParts: Bool
flag toAutocompleteManager
to allow for partial deletions of autocompletes rather than just the entire substring. - AddInputBarSendButton
to use as thesendButton
inInputBarAccessoryView
. This subclass ofInputBarButtonItem
has aUIActivityIndicatorView
to show a spinner when making HTTP requests
CHANGELOG
Find a bug? Open an issue!
Layout
The layout of the InputBarAccessoryView
is made of of 4 InputStackView
‘s and an InputTextView
. The padding of the subviews can be easily adjusted by changing the padding
and textViewPadding
properties. The constraints will automatically be updated.
It is important to note that each of the InputStackView
’s to the left and right of the InputTextView
are anchored by a width constraint. This way the InputTextView
will always fill the space inbetween in addition to providing methods that can easily be called to hide all buttons to the right or left of the InputTextView
by setting the width constraint constant to 0. The bottom and top stack views are not height constraint and rely on their intrinsicContentSize
func setLeftStackViewWidthConstant(to newValue: CGFloat, animated: Bool)
func setRightStackViewWidthConstant(to newValue: CGFloat, animated: Bool)
Reactive Hooks
Each InputBarButtonItem
has properties that can hold actions that will be executed during various hooks such as the button being touched, the UITextView
text changing and more! Thanks to these easy hooks with a few lines of code the items can be easily resized and animated similar to that of the Facebook messenger app.
// MARK: - Hooks
public typealias InputBarButtonItemAction = ((InputBarButtonItem) -> Void)
private var onTouchUpInsideAction: InputBarButtonItemAction?
private var onKeyboardEditingBeginsAction: InputBarButtonItemAction?
private var onKeyboardEditingEndsAction: InputBarButtonItemAction?
private var onKeyboardSwipeGestureAction: ((InputBarButtonItem, UISwipeGestureRecognizer) -> Void)?
private var onTextViewDidChangeAction: ((InputBarButtonItem, InputTextView) -> Void)?
private var onSelectedAction: InputBarButtonItemAction?
private var onDeselectedAction: InputBarButtonItemAction?
private var onEnabledAction: InputBarButtonItemAction?
private var onDisabledAction: InputBarButtonItemAction?
Author
Nathan Tannar - https://nathantannar.me
License
Distributed under the MIT license. See LICENSE
for more information.


HOME
NEWS
BLOG
ARTICLES
CLUBS
STANDINGS
UEFA GAME
CONTACT
Top
Select your favorite team:
OPEN WINDOW
CLOSE WINDOW
Choose a player
CHANGE COLOR
Your browser does not support the HTML5 canvas tag.


Traditional city planning has in large part been supplanted by enterprise based startups. Think Uber, Airbnb. Historical statistical data about cities has been augmented by a bewildering array of real time data. Tweet locations versus time, real time traffic movement, social media mining.
A bit like rats in a maze, there is an assumption in most city planning that the physical environment is a major determinant of behaviour. Place people in the right environment with the right connections and the right transport and a great city will emerge. There is an alternative view that favours instead emergence and evolution. That perhaps even despite the physical enviroment that movements and cultures have their own momentum. Rather than being passive absorbers that instead the city is full of actors and shapers remaking itself continuously.
The sheer volume of data makes it difficult to comprehend. There is a need for an intermediate understanding. Ideally, new categories - mutant millenials are needed to describe groups of individuals that share certain attributes in addition to a birth period. Also ideally we would like to gain some deeper understanding of the evolution of these groups along the lines of early in the week they are multi-modal : they mostly bus then tram. This is distinct from simple statistical processing of the data. An entrepeneur can gain an edge from new trends, and offer services targetted at that emering trend. Or in the alternative understanding, better comprehension of data can amplify and transform the city in ways that we cannot imagine.


(This is a form inside of an iframe.)
(This is a form inside of an iframe.)
Go ahead, try to copy or paste
Go ahead, try to copy or paste:


ANSI Isolation Levels - DBMS Vendors don't 100% agree
Before we get into this we need to note there is some debate over relating
ANSI isolation levels with databases that support multi-level concurrency control (MCC).
Quoting from wikipedia:
http://en.wikipedia.org/wiki/Snapshot_isolation
"Unfortunately, the ANSI SQL-92 standard was written with a lock-based
database in mind, and hence is rather vague when applied to MCC systems.
Berenson et al. wrote a paper in 1995 [3] critiquing the SQL standard, and
cited snapshot isolation as an example of an isolation level that did not
exhibit the standard anomalies described in the ANSI SQL-92 standard, yet
still had anomalous behaviour when compared with serializable transactions."
Basically ANSI Isolation levels are not the be all and end all for some DBMS Vendors.
ANSI SQL 1999 doesn't mention Lost Updates, Read Consistency or Snapshot Isolation for example.
Effects on Lazy Loading
You should be aware of the effects of the Transaction Isolation levels on all statements
but it is worth looking specifically at
Lazy loading here.
I think this issue has been clouded by some other vendor documentation and it is worth
being a bit more explicit about how lazy loading is effected by the transaction isolation
level.
When do you want a higher Isolation Level
So if the default is READ_COMMITTED when would you want a higher Isolation level such as
SERIALIZABLE?
I think there are two cases and I'm only going to answer one of them. Specifically those
cases are where you want a "read only/query only" transaction and when you want a "updatable"
transaction.
Read Only/Query Only SERIALIZABLE
There is an Oracle term called "Transaction level Read Consistency" and that is essentially
what you get when you get a transaction at SERIALIZABLE. It is probably worth researching this
term but the guts is that every statement in the transaction "sees the database as at the
transaction start time". For me this is a good explanation of why we would want a
"Read Only SERIALIZABLE Transaction".
For an example of when you want "Transaction level Read Consistency" lets take an accounting
trial balance report and say that 2 queries are used to build the report. The first queries
for the Debits and the second for the Credits. What we explicitly do not want is for a transaction
to occur during our report and have the new data included in the second query but not the first.
If this occured then our Total Debits would not match our Total Credits.
In summary we want both queries to see the database as at the same time (transaction start time).
Another approach to achieve the same goal but without using a SERIALIZABLE Transaction is
to use predicates on the queries to make sure they both see "consistent" data and exclude newly
commited data. What this means is that with some knowledge of the the application Developers can
use Date or Timestamp type predicates to make sure the queries are consistent with respect to
each other.
Another approach available in some environments is to ensure that updates do not occur during the
reporting. This can happen if you have a job system and serialise the updating and reporting so that
they don't occur concurrently.
Updatable SERIALIZABLE
Unfortunately I am not going to explain why you want to do this. What I can say is that you should
be aware that you will now have to use pessimistic locking and that you may be leaving the
"sweet spot" of your database implementation with higher chances of facing deadlocks etc.
Good luck :)
Using Transaction Isolation Level
// use the default Isolation level.
// Likely to be READ_COMMITTED
//Ebean.beginTransaction();
// start a transaction at SERIALIZABLE
Ebean.beginTransaction(Transaction.SERIALIZABLE);
...
To start a transaction at SERIALIZABLE you just need to specify it in
the beginTransaction. Otherwise it will default to your default setting
which is likely to be READ_COMMITTED.
You do not need to set the Isolation level back if you are using Ebeans
connection pool. That will reset the Isolation level back automatically.
|


Building the search¶
Now we have our database populated with some values, it is time for the code to search the database and display some results.
We want to take some text from the user, and search for it in the database; to do that we need to convert it into a Xapian Query, which you will recall is a tree made up of terms (which in this case will be the stemmed forms of words in the text from the user), and operations such as AND, OR and so forth.
There are many ways to go from the user’s text to a Query, but the most simple of these is to use the QueryParser. We then pass the Query to an Enquire object, which also needs setting up with a database, and is where you’d set various other options that affect how the query is run (such as sorting, for instance) which we won’t address here.
static void
search(const string & dbpath, const string & querystring,
Xapian::doccount offset = 0, Xapian::doccount pagesize = 10)
{
// offset - defines starting point within result set.
// pagesize - defines number of records to retrieve.
// Open the database we're going to search.
Xapian::Database db(dbpath);
// Set up a QueryParser with a stemmer and suitable prefixes.
Xapian::QueryParser queryparser;
queryparser.set_stemmer(Xapian::Stem("en"));
queryparser.set_stemming_strategy(queryparser.STEM_SOME);
// Start of prefix configuration.
queryparser.add_prefix("title", "S");
queryparser.add_prefix("description", "XD");
// End of prefix configuration.
// And parse the query.
Xapian::Query query = queryparser.parse_query(querystring);
// Use an Enquire object on the database to run the query.
Xapian::Enquire enquire(db);
enquire.set_query(query);
// And print out something about each match.
Xapian::MSet mset = enquire.get_mset(offset, pagesize);
clog << "'" << querystring << "'[" << offset << ":" << offset + pagesize
<< "] =";
for (Xapian::MSetIterator m = mset.begin(); m != mset.end(); ++m) {
Xapian::docid did = *m;
cout << m.get_rank() + 1 << ": #" << setfill('0') << setw(3) << did
<< ' ';
const size_t DOC_FIELD_TITLE = 1;
const string & data = m.get_document().get_data();
cout << get_field(data, DOC_FIELD_TITLE) << endl;
// Log the document id.
clog << ' ' << did;
}
clog << endl;
}
A full copy of this code is available in code/c++/search1.cc.


How to play
Turn your hardware acceleration on to fully enjoy this game. See "chrome://gpu" and "chrome://flags" on your chrome to check if your hardware acceleration is enabled.
Thanks for all the images and musics.
Source code


[ link, separator, menu link, link ]Format and details of each type are explained below.
{ "type": "link", "title": "Google", "address": "http://www.google.com/search?q=%s" }As stated earlier, whitespace doesn't matter, so you may write this on a single line.
{ "type": "menu", "title": "Additional Links", "entries": [] }Regarding braces, quotes, and commas, the same rules apply here as they did with the link type. The "type" and "title" keys also work the same way as they did for links, except "type" is not optional here.
{ "type": "separator" }Separators will not appear if there is nothing to separate.
[ { "type": "link", "title": "Google", "address": "http://www.google.com/search?q=%s" } ]
[ { "title": "Google", "address": "http://www.google.com/search?q=%s" }, { "title": "Google Images", "address": "http://www.google.com/search?tbm=isch&q=%s" }, { "type": "separator" }, { "title": "Wikipedia", "address": "http://www.wikipedia.org/wiki/%s" } ]You can see in this example that commas not only separate key-value pairs, but they separate the types as well.
[ { "title": "Google", "address": "http://www.google.com/search?q=%s" }, { "title": "Google Images", "address": "http://www.google.com/search?tbm=isch&q=%s" }, { "type": "separator" }, { "type": "menu", "title": "Menu 1", "entries": [ { "title": "Amazon", "address": "http://www.amazon.com/s/field-keywords=%s" }, { "title": "eBay", "address": "http://www.ebay.com/sch/i.html?_nkw=%s" } ] } ]
[ { "type": "menu", "title": "Menu 1", "entries": [ { "type": "menu", "title": "Menu 2", "entries": [ { "title": "Amazon", "address": "http://www.amazon.com/s/field-keywords=%s" } ] }, { "title": "Wikipedia", "address": "http://www.wikipedia.org/wiki/%s" } ] }, { "title": "Google", "address": "http://www.google.com/search?q=%s" } ]Having many nested menus can get quite confusing!
Copyright (c) 2018, Ching Chow


WCAG Luminosity Contrast Ratio Analyzer
Options page
Installed or Updated Version
What's new:
Resolved deprecated jQuery methods affecting "Challenged Visions" selectors.

Use
left-click
for background,
right-click
for foreground.
Toolbars and Test Page
Color-value panel visible
Show text sample
Test Page Url:
Try it
Thank you
If you like it, or just if you use it, please rate (and review) it on
Chrome Web Store
.


Comet parameter: use_Z_ions
- Controls whether or not Z-dot ions are considered in the search.
- Valid values are 0 and 1.
- To not use Z-dot ions, set the value to 0.
- To use Z-dot ions, set the value to 1.
- The default value is "0" if this parameter is missing.
Example:
use_Z_ions = 0
use_Z_ions = 1


Next
Previous
Contents
SDCC supports IEEE (single precision 4bytes) floating point numbers.The
floating point support routines are derived from gcc's floatlib.c and consists
of the following routines.
- _fsadd.c - add floating point numbers.
- _fssub.c - subtract floating point numbers
- _fsdiv.c - divide floating point numbers
- _fsmul.c - multiply floating point numbers
- _fs2uchar.c - convert floating point to unsigned char
- _fs2char.c - convert floating point to signed char.
- _fs2uint.c - convert floating point to unsigned int.
- _fs2int.c - convert floating point to signed int.
- _fs2ulong.c - convert floating point to unsigned long.
- _fs2long.c - convert floating point to signed long.
- _uchar2fs.c - convert unsigned char to floating point
- _char2fs.c - convert char to floating point number
- _uint2fs.c - convert unsigned int to floating point
- _int2fs.c - convert int to floating point numbers
- _ulong2fs.c - convert unsigned long to floating point number
- _long2fs.c - convert long to floating point number.
Note if all these routines are used simultaneously the data space might
overflow. For serious floating point usage it is strongly recommended that
the Large model be used (in which case the floating point routines mentioned
above will need to recompiled with the --model-Large option)
Next
Previous
Contents


--- layout: post title: Episode 118 | Adam Stacoviak - Constant Gentle Pressure link: http://traffic.libsyn.com/developeronfire/DeveloperOnFire-118-AdamStacoviak.mp3 length: 46916516 speaker: Dave Rael duration: '00:48:46' subtitle: 'Developer On Fire: Adam Stacoviak' guest_name: Adam Stacoviak image: /assets/images/AdamStacoviak.jpeg guest_blog: https://changelog.com/ guest_twitter: adamstac episode_number: 118 redirect_from: - "/118/" - "/118/" - "/118/" - "/0118/" - "/adam-stacoviak-contant-gentle-pressure/" - "/adam-stacoviak-constant-gentle-pressure/" - "/AdamStacoviak/" - "/Adam-Stacoviak/" - "/Podcast/Episodes/118/" - "/Podcast/Episodes/118/" - "/Podcast/Episodes/118/" - "/Podcast/Episodes/0118/" - "/Podcast/Episodes/adam-stacoviak-contant-gentle-pressure/" - "/Podcast/Episodes/adam-stacoviak-constant-gentle-pressure/" - "/Podcast/Episodes/AdamStacoviak/" - "/Podcast/Episodes/Adam-Stacoviak/" ---
Adam Stacoviak is the Founder and Chief Editor at The Changelog. He's just trying to keep up. He fights for the users.