Failure Modes of Rolling Bearing - Plastic Deformation
zys
Failure Modes of Rolling Bearing - Plastic Deformation
Source: ZYS Published:2022-05-16
Plastic deformation is the permanent deformation that occurs when the stress exceeds the yield strength of the material. It generally occurs in two different ways:
1. Macroscopically, the contact load between the rolling elements and the raceway causes yielding to occur over most of the contact trajectory.
2. Microscopically, the foreign object is rolled between the rolling elements and the raceway, and yielding occurs only in a small part of the contact trajectory.
Prev: Performance and characteristics of angular contact ball bearings Next: The general information of low temperature bearing


text:
These small parks, sometimes no larger than ¼ acre, provide a safe and inviting environment for community members. They support the overall ecology of the surrounding environment, landscape and heritage, and empower local residents to make decisions that affect their community. Boston has hundreds of these outdoor parks all over the city, and one of the oldest and most beloved is Charlestown's Winthrop Square Park.
The park, also known as the "Training Field", is a .89 acre green space with a 400 year history. It was a training ground for colonial militia in the 1640's, was witness to the Battle of Bunker Hill in 1775, served multiple functions as a civic space throughout the centuries, and most recently became a hotspot for Charlestown residents and a stop along the Freedom Trail. Although this space is deeply significant to the community and the city itself, it has been many years since restorations took place. Along with other much needed rehabilitation work, it faced drainage and erosion problems, and the overall soil health was lacking in many areas.
The park renovation project developed out of a cultural landscape report, prepared by Kyle Zick, Landscape Architect, and Shary Page Berg, Landscape Preservationist, in partnership with two local community groups, the Charlestown Preservation Society and the Friends of the Training Field. The Boston Parks and Recreation Department led the way and a park renovation proposal was approved by the City, along with $690,000 from its Capital Budget.
Sherzi & Company LLC was part of the consulting team brought in to address the drainage and soil health issues at the site. Owner Chuck Sherzi had extensively used the CASH approach in previous projects, and recommended to employ this holistic approach to address the concerns facing the park. The complete diagnostic report included data analysis and interpretations from the Cornell Soil Health lab, site observations, and a detailed summaries of suggested recommendations and appropriate construction materials. Since the site is naturally divided into six unique areas and each had a specific set of challenges (foot traffic, grade elevation, water flow, etc.), separate soil samples were collected from each area (Figure 2).
The Comprehensive Assessment of Soil Health
The CASH approach emphasizes the integration of soil biological, physical, and chemical measurements. These include soil texture, available water capacity, soil penetration resistance (compaction), wet aggregate stability, organic matter content, soil proteins, respiration, active carbon, and macro- and micro-nutrient content (see soilhealth.cals.cornell.edu/ for more details). The results are synthesized into a comprehensive soil health report with indicator scores, constraint identification, and management suggestions. The report can be used by consultants and managers as a baseline assessment and to guide soil amelioration and future management.
Winthrop Square Soil Health Results
The entire site showed soil health concerns, with overall quality scores of low to medium. Specifically, the CASH reports (Figure 3) showed:
Aggregate stability (indicating soil resistance to disintegration from rainfall) and available water capacity (indicating the soil's ability to store water) scored high on all six assessments, possibly a result of minimal soil disturbance at the site over the years.
Example of Detailed Problem Spot: Area #5 (Figure 3)
Area 5 was the second largest of the areas assessed, experiencing a high amount of foot traffic and patchy consistency throughout. It had the lowest soil health score, with the major constraints being surface and subsurface compaction. While the organic matter scored high, other biological indicators were relatively low. The sandy loam texture could be a factor in the loss of nutrients through leaching, and the low nutrient base cations Mg++ and Ca++ could be associated with a low pH. A layered approach was proposed for Area 5 and all other areas assessed.
Recommendations and Implementations
Results of the assessment highlighted soil compaction as the major underlying constraint common to all six of the Winthrop Square areas. Issues with the physical structure of soil eventually leads to negative impacts of both biological and chemical components. Compacted soils have decreased pore space that can limit infiltration, increase runoff and erosion potential, and allow for anaerobic conditions that are unfavorable for beneficial microbial communities. They can also limit plant access to nutrients and water. Given these results, recommendations for the site were focused on decompaction measures followed by incorporation of organic amendments to improve nutrient cycling, pH, and the overall biological health of the soil. Sherzi also recommended amending the sandy loam soil with biochar and a green manure to break up the surface hardness, aid in nutrient retention and further prevent runoff and erosion.
Soil Decompaction Techniques
A multi-tiered approach was used to addressing soil compaction. Due to the natural slope at the site, any remediation effort had to be careful not to destabilize the existing upper soil profile. The project was done in phases where Areas 1, 2, 3 and 4 were done together as they do not impact the daily flow of foot traffic in the park. Areas 5 and 6 were addressed separately as they are the two largest spaces and have the most foot traffic (Figure 2). The compaction issues were addressed using the following tools/techniques:
Air Spading: Useful for tree root collar work and excising of girdling roots. The specialized tool uses compressed air to dislodge, breakup, and aerate compacted soil. Soil amendments are then added and "stirred" into the existing soil using the air tool.
Vertical Composting: Utilizes air tools to open up holes in the soil along a predetermined grid pattern in turf areas. Soil amendments are then added to these holes and graded over. The compaction layer is slowly broken up by the microbes as the holes begin to coalesce, reducing compaction and improving the overall soil health.
Radial Trenching: much like the root collar technique, this approach works on a pattern of trenches, radiating from the trunk of the tree, either dug by hand, by machine or by air tool. Soil amendments are then added to help stimulate fibrous roots of the tree.
In addition to the physical decompaction work, incorporating organic matter, both dry and liquid, was critical for maintaining balanced soil biological communities. Dry and liquid soil amendments used in conjunction with the de-compaction work: compost, calcitic lime, bio-char, fish hydrolysate.
Potential long term management solutions for the park include top dressing with compost, adding fertilizer, limestone for pH, and fungal foods, grass mowing at 3.5-4" height, and keeping pedestrian foot traffic on walkways. An irrigation system was installed along with moisture sensors to determine proper watering amounts.
The Winthrop Park Project is scheduled for completion in summer 2016, including attention to the hardscape –new concrete, relining the 'Freedom Trail', fencing, etc. CASH, with its site-specific soil health analysis and holistic management approach, proved to be effective for soil testing in the urban environment. Using this method, a cherished piece of green-scape for the Charlestown community set an example for how cities can approach future soil health monitoring in city parks.
J.H. Cherney, D.J.R. Cherney, and K.M. Paddock, Cornell University
Meadow fescue is grown extensively in Canada and Europe, but dropped out of use in the USA decades ago primarily due to reduced yield and disease susceptibility, compared to other grasses. Primarily grown for pasture use, meadow fescue has considerable potential in mixture with alfalfa. Alfalfa-grass mixtures are as high or higher yielding than pure alfalfa, and have been shown to be an excellent forage for lactating dairy cattle.
Meadow fescue has higher fiber digestibility (NDFD) than most other grasses, consistently 2-4 percentage units higher than tall fescue. Feeding trials across the USA have shown that a one percentage unit increase in NDFD increases milk production by 0.5 to 1.0 lbs/cow/day, and more than 1.0 lb/cow/day for the highest producing cows. Meadow fescue in combination with new reduced-lignin alfalfa varieties can produce a very high quality forage for lactating dairy cows. A somewhat reduced yield potential for meadow fescue may actually be advantageous for alfalfa-grass mixtures, where a grass percentage of < 40% is desirable.
Adaptation and Establishment
Meadow fescue prefers deep, rich soils, and while surviving in wet soils, it cannot tolerate flooding. It will survive under dry conditions but is more sensitive to drought than many other grasses. It can be grown in areas suitable for timothy, and is considerably more winter hardy than tall fescue in northern environments.
Meadow fescue is closely related to both tall fescue and ryegrasses, and a number of hybrids have been developed using various mixtures of meadow fescue, tall fescue, and annual and perennial ryegrass (festuloliums). Festuloliums vary widely in appearance, winter hardiness, and forage quality, due to the relative proportions of fescue and ryegrass in the hybrid.
In mixture with alfalfa, meadow fescue should be seeded at 4-5 lbs/acre in either the spring as early as possible, or late summer about 4-5 weeks prior to first freeze. Meadow fescue often contains a naturally occurring endophytic fungus, but unlike the tall fescue endophyte, no harmful alkaloids are produced. Meadow fescue cannot be infected by the tall fescue endophytes, so there are no concerns of livestock disorders with meadow fescu

source: m-a-p/FineFineWeb


text:
Free Online Dictionary
|Wikipedia English The Free Encyclopedia||Download this dictionary|
A compression fracture is a collapse of a vertebra. It may be due to trauma or due to a weakening of the vertebra. This weakening is seen in patients with osteoporosis or osteogenesis imperfecta, lytic lesions from metastatic or primary tumors, or infection. In healthy patients it is most often seen in individuals suffering extreme vertical shocks, such as ejecting from an ejection seat. Seen in lateral views in plain x-ray films, compression fractures of the spine characteristically appear as wedge deformities, with greater loss of height anteriorly than posteriorly and intact pedicles in the anteroposterior view.
|See more at Wikipedia.org...|
The following video provides you with the correct English pronunciation of the word "compression fracture", to help you become a better English speaker.
© This article uses material from Wikipedia® and is licensed under the GNU Free Documentation License and under the Creative Commons Attribution-ShareAlike License
|WordNet 2.0 Dictionary||Download this dictionary|
1. fracture in which the bone collapses (especially in short bones such as vertebrae)
(hypernym) fracture, break
|UMD@Click||Download this dictionary|
| compression fracture in English | compression fracture in Arabic
You think you have ethics... Take the survey NOW!

source: HuggingFaceFW/fineweb-edu


,k+1);
 x(k)=b(k)/U(k,k);
end
end
probability or statistics – Plotting Gaussian using a formula
I am able to plot a Gaussian distribution of mean 10 and Standard deviation using below code.
ListLinePlot(Table(PDF(NormalDistribution(10, 2), x), {x, 0, 20}),
 PlotMarkers -> {Automatic, 10}, PlotStyle -> Blue, Frame -> True,
 FrameStyle -> Directive(Black, 15))
But when I use a formula,
d
I can't get a plot when I write a code as follows:
(Lambda) = .125
a = 10
(Rho)(x_) := A*Exp(-(Lambda)*(x - a)^2)
Replace((Rho)(x), A -> Sqrt((Lambda))/Sqrt((Pi)), All)
Plot((Rho)(x), {x, 0, 20})
Here dd
linear algebra – Limit spectrum of composition of projections onto random Gaussian vectors
Let $n > p$, let $X in mathbb{R}^{n times p}$ whose columns $X_1, ldots, X_p$ are zero-meaned Gaussian,of covariance $(rho^{|i – j|})_{i, j in (p)}$ ($rho in (0, 1)$).
Are there (asymptotics or not) known results on the eigenvalue distribution of:
$$left(mathrm{Id} – tfrac{1}{||{X_1}||^2} X_1 X_1^top right)
ldots left(mathrm{Id} – tfrac{1}{||{X_p}||^2} X_p X_p^top right) enspace ?$$
From a geometrical point of view, this is the matrix of the application which projects sequentially onto the orthogonal of the span of $X_p$, then onto that of $X_{p-1}$, etc, so all eigenvalues are in the unit disk, 0 is an eigenvalue, 1 also is an eigenvalue since $n > p$.
I would expect the spectrum to "move towards" 1 as $rho$ increases, but are there any quantitative results on that?
gaussian – Model of Dithered lattice quantization error/noise
I have a non-temporal vector of values which I need to quantize for the sake of data compression. I'm using K-level lattice quantization with subtractive dither, which would theoretically make the quantization noise uniform and independent of the input distribution. Now, I need to model the quantization noise and I'm having trouble figuring that out. I suspect I cannot just assume that the noise is "uniform Gaussian"? This paper by Zamir and Feder calculates the "divergence from Gaussianity" of the quantization noise with subtractive dither, but I can't formalize it into a concrete formula for the noise for a finite value of K.
reference request – (random fields / gaussian process): On rewritting a certain expectation as a kernel function
Let $v = (v_1,ldots,v_n)$ and $(w_{1,1},ldots,w_{1,n},ldots, w_{n,m})$ be random vectors with iid coordinates, and also $v$ is independent of $w$, with $w_{i,j} sim N(0,1/m)$ and $v_j sim N(0,1/n)$, for $i=1,ldots,n$, $j=1,ldots,m$. Define a random function $f_{w,v}:mathbb R^m to mathbb R$ by $f_{w,v}(x) := sum_{i=1}^nv_iphi(sum_{j=1}^m w_{i,j}x_j)$, where $phi(t):=max(t,0)$. Fix a point $a, b in mathbb R^m$.
Question. How to got about computing
$$
p_{m,n}(a,b) := mathbb P(f_{w,v}(x)f_{w,v}(a, b) > 0),
$$
Or even just $lim_{n to infty}lim_{m to infty}p_{m,n}(a,b)$.
Note that $p_{n,m}(a,b)$ is simply the probability that the random field $x mapsto f_{w,v}(x)$ flips its sign between $x=a$ and $x=b$.
Observations
 - Conditioned on $w$, we compute (see this math.SE post)
 $$mathbb P(f_{w,v}(x)f_{w,v}(a, b) > 0) = kappa_0(phi_w(a),phi_w(b))
 $$
 where $mathbb R^n ni phi_w(x) := (phi(sum_{j=1}^mw_{ij}x_j))_{1 le i le n}$, and $kappa_0(z,z') := 1-frac{1}{pi}arccos(z^Tz'/|z||z'|) in (0, 1)$ is the arc-cosine kernel of order $0$.
 - Thus, we have the identity
$$
p_{m,n}(a,b) = mathbb E_w(kappa_0(phi_w(a),phi_w(b))).tag{2}
$$
Question. Can the formula (2) be further simplified ? Is it linked to some other kernels ?


Greeks in Albania
From Wikipedia, the free encyclopedia
Jump to: navigation, search
Northern Epirotes
SpyromiliosKonstantinos ZappasGeorgios Christakis-ZografosPyrros Dimas
Provisional Government of Northern Epirus
Spyromilios • Konstantinos Zappas • Georgios Christakis-Zografos • Pyrros Dimas
Northern Epirote Declaration of Independence
Total population
est. over 215,000
Regions with significant populations
Albania, Greece, United States, Australia
Albania and Greece est. 200.000[1][2]
United States of America over 15,000 (est. 1965) [3]
Greek, Himariote Greek dialect (in the Himarë region)
also Albanian and English depending on the residing place
Orthodox Christianity
The Greeks of Albania are ethnic Greeks who live in Albania. They are mostly in the south of the country.
The Greek language can only be spoken in'minority zones'.
References[change | change source]
 3. Albania's Captives. Pyrrhus J. Ruches. Argonaut, 1965. P.6 "...over 15,000 Northern Epirotes and their families are integrated in the thriving Greek-American community..."


text:
Grist is grain that has been separated from its chaff in preparation for grinding. It can also mean grain that has been ground at a grist mill. Its etymology derives from the verb grind. Grist can be ground into meal or flour, depending on how coarsely it is ground. Maize made into grist is called...
Found op _URL_
[magazine] Grist (originally Grist Magazine; also referred to as Grist.org) is an American non-profit online magazine that has been publishing environmental news and commentary with a wry twist since 1999. Grist's taglines are "Gloom and doom with a sense of humor" and "A beacon in the smog"...
Found op _URL_
[n] - grain intended to be or that has been ground
Found op _URL_
Brewers' term for milled grains, or the combination of milled grains to be used in a particular brew. Derives from the verb to grind.
Found op _URL_
Corn for grinding
Found op _URL_
Grist noun [ Anglo-Saxon grist, from grindan. See Grind.] 1. Ground corn; that which is ground at one time; as much grain as is carried to the mill at one time, or the meal it produces. « Get grist to the mill to ha...
Found op _URL_
1. Ground corn; that which is ground at one time; as much grain as is carried to the mill at one time, or the meal it produces. 'Get grist to the mill to have plenty in store.' (Tusser. Q)... 2. Supply; provision.... 3. In rope making, a given size of rope, common grist being a rope three inches i...
Found op _URL_
noun grain intended to be or that has been ground
Found op _URL_
- (n.) Supply; provision. • (n.) Ground corn; that which is ground at one time; as much grain as is carried to the mill at one time, or the meal it produces. • (n.) In rope making, a given size of rope, common grist being a rope three inches in circumference, with twenty yarns in each...
Found op _URL_
No exact matches found.
Typ a word and hit 'Search'.
The most recent searches on Encyclo. Between brackets you will find the number of results and number of related results.
- Yannis (4)
- Yeast Infection (5)
- Çetin Alp (1)
- San Vicente, Antioquia (1)
- Vi (23)
- sub judice (9)
- Hasty (8)
- thrust (25)
- quadrum (2)
- Charged (8)
- Byssoid (3)
- Ryons (3)
- relos (1)
- Sekirei (1)
- tube (25)
- Sarah Rose Karr (1)
- runch (4)
- Duhrssen's Incisions (1)
- Debeljaca (2)
- Chancroid (15)
- Nobuo uematsu (2)
- extravert (5)
- Amdocs Ensemble (1)
- secondary apnea (1)


text:
"Azul Valverde" limestone is a well known Portuguese natural stone that occurs as is extracted in Valverde - Alcanede, located in the Maciço Calcário Estremenho (centre of Portugal). It's a fine grained calciclastic and bioclastic greyish limestone with some light-coloured spots. Azul Valverde is used in lots of exterior and interior industrial applications such as paving, cladding, masonry and decorations. Slabs made of "Azul Valverde" limestone 500x375x30 (mm) were used for exterior cladding with "kerf" fixing system in a building located in Valencia (Spain). After five years of its application signs of degradation were detected on the exterior facades where limestone slabs started to change color, and presented cracks and fissures that caused instability and breaks on the slabs. "Azul Valverde" limestone contains irregular patterns due to rock cutting across stylolites. These features represent ideal paths for fluid circulation through the rock slab and can be identify as weakness zones for exterior applications. Laboratory rock analysis were made in order to determine the clay and and the iron oxide contents in the limestone. Microscopic petrography, XRD and SEM observations were important to identify the interaction of the weathered clay material in stylolites and fossil contours. The results show the importance of using complementary characterization techniques for selecting stone on cladding applications, especially for sedimentary rocks with weakness planes. From the results it is possible to see that "Azul Valverde" stylolite planes influence on flexural and anchorage strength. Among other important remarks, results show the importance to acknowledge the rock structure and mineral composition before setting these natural products as construction materials. In the present work, the need for a proper stone selection was found important to avoid rock degradation, and hence contribute to avoid accidents and promote people safety as well as economic impacts.
|Title of host publication||Global Stone Congress|
|Publication status||Published - 1 Jan 2010|
|Event||Global Stone Congress - |
Duration: 1 Jan 2010 → …
|Conference||Global Stone Congress|
|Period||1/01/10 → …|


Brake Press Tooling
The Basic Structure Of Press Brake Tooling
1 – Upper Beam
The upper beam is an integral part of the press brake and features a kind of rail which the punch holder will mount to. On down acting brakes this is the part of the machine that moves, transferring power to the work piece.
4 – Punch Holder
The punch holder attaches semi-permanently to the upper beam and serves to hold a variety of punches. They come in two basic forms, European and American, understanding the difference is important. See our post on European Vs. American Style Tooling for more information. Punch holders will typically have a built in shimming mechanism for balancing them with the lower die.
3 – Punch
Punches are the upper part of the tooling system and are classified by their Tip Angle, Relief Shape and their Installed Height. Standard Tip Angles are 30 °, 45 °, 60 °, 75 °, 88 ° and 90 °. The 30 ° and 45 ° types are known as acute punches. 60 ° and 75 ° Punches are used for Air Bending. 88 ° and 90 ° Punches are used for Bottom Bending. 90 ° Punches will be used for Coining. The relief shape allows for return bends to fold into the punch area.
The installed height of press brake tooling is the distance from the tip of the punch to where it contacts the upper beam / holder. For European Tooling there are 7 standard heights. 65mm, 67mm, 70mm, 90mm, 95mm, 104mm, and 105mm.
Punches come in two styles when connecting to the upper holder, European Style and American Style. European Tooling has an offset holder (as shown above) where American Tooling has an inline holder. Check our post on tooling styles for more information.
When bending deep boxes which have long flanges around a base tab you'll want to investigate different tooling options. Some are basic such as extending the punch holder and some are a bit mroe creative such as window bending and 30-60 bending. For more information look into this post on Box Bending.
4 – Work Piece
Commonly referred to as the work piece the sheet metal being bent is the driving force for all tooling selection. The type of material, its mechanical properties and the intended bends drive all other aspects of the tooling set up. Sheet metal is classified by it's material and its gauge. The gauge is a numerical value assigned to the thickness of the metal. See our Gauge Chart for a better understanding of gauges and tolerances.
5 – Die
The bottom section of the tooling is known as a die. Dies are classified by the shape of the groove, the number of grooves and the height of the die. The most common shape of die is a v die, which, as its name suggests, is a block of tooling steel which has a v shaped groove cut into it. A v die with a single groove is known as a 1V Die, dies with two grooves are known as 2V Dies and so on. 2V Dies will always feature the same angle on both grooves to prevent accidental damage, however the v opening size will typically be different. This allows an operator to quickly switch from bending a light gauge to bending a heavy gauge without having to retrieve a new die. Second to v dies the most common type is a U Die. U dies feature a rectangular cutout with 45 ° chamfered edges and flat tops. Because of this geometry U Dies lend themselves to having grooves cut into more than one side of the die. It's not uncommon to see a 3U Die. There is much more information on 3 sided dies here.
6 – Rail
The rail is a manufactured piece of tooling which is attached to the press brake and holds various dies. The rail typically features a protrusion or groove which matches with the die set. This piece of tooling allows you to level and straighten a single piece of tooling and then interchange dies with confidence.
7 – Lower Beam / Die Holder
The lower beam is part of the actual press brake which features a kind of vice clamp for holding the raid or die set. On up acting brakes the lower beam is moves upward to bend the metal. When inspecting and maintaining your brake it is crucial to make sure the lower beam is clean and level in relation to the punch holder.
Basic Requirements
First the tooling should be of a size and weight which allows for handling, installation and removal. Unless you have a fully automated system there will be an operator responsible for setting up the Brake Press, taking this into account is important to selecting your tooling. Second to the safety of the operator is the accuracy of the tooling geometry. Variance in the tooling geometry will directly contribute to under or over bending of the work piece, or in extreme cases the damaging of the tooling. Due to the high tonnages involved in bending any imperfections on the surface of the punch or die can transfer to the workpiece. Third the tooling should have excellent strength and wear resistance. Typically heat treatment is applied to all Brake Press tooling, greatly improving its hardness, strength and subsequently its resistance to fatigue. Finally your tooling should be interchangeable between your machines. There are two basic types of tooling for Brake Presses, American and European, consider which type of machinery and holders you have before purchasing new tooling.
Tooling Strength
During the bending process the tooling will undergo both compressive forces and bending moments. The repetitive nature of bending operations the necessity for high strength and wear resistance demands quality steel properly heat treated. When heat treating steel there are two methods, hardening and thermal refining. To be referred to as tooling the piece should be treated by one of these methods. Strictly speaking punches and dies made from raw, untreated, metal should not be referred to as tooling because it will not be effective when bending.
Hardened Tooling:
Two common steels used for Brake Press tooling are Chromium Molybdenum Steel, Type 4 (SCM4) and Yasuki Steel. Chromium Molybdenum Steel is a structural steel used in aircraft parts, weapon components, roll cages and structural car parts in addition to their use in tooling. The steel is used for Brake Press tooling because of its receptiveness to heat treatment. Typically this steel will obtain a HRC of 43 to 48 when treated for tooling. Yasuki Steel is a product of the Japanese company Hitachi and is made from very high quality iron sand. It has one of the highest purities in commercial steel and is used in knives in addition to tooling. Like SCM4 Yasuki Steel is very receptive to hardening by heat treatment. Surface treatments like Wilson Tool's Nitrix Coating can bring the surface hardness of tooling to HRC 70, further preventing wear of the tool's geometry.
The manufacturing process of hardened steel tooling is typically a 4 step operation; Forming, Hardening, Correcting and Finishing. First the tool profile is created from the stock material. Extra material is left on to be removed later. The majority of the machining and forming is before the hardening stage because after the tool has been hardened it will be difficult to work with. The tooling is then hardened. Because of the high heat the hardening process the tool will not finish with the exact profile as before hand so additional correcting is done before the tool is finished. The tool's critical areas such as the punch tip and v-opening are then ground by precision grinders, typically using diamond or CBN coatings. On a die with a multiple v-opening the different v's are often ground together from one wheel.
Thermally Refined Tooling:
Steel used for thermally refined tooling is typical a Carbon Steel, S45C. The refining process unifies the internal structure of the steel increasing its strength and hardness. Thermally refined tooling will not be as hard as hardened tooling, typically only reaching HRC 23-28. Thermally refined tooling is typically used for large or complicated pieces. The larger pieces are more difficult to harden due to oven and grinder size restrictions so thermal refining can be preferable. Small or complicated pieces lend themselves to this method in order to eliminate expensive correcting operations.
The manufacturing process of thermally refined steel varies for the large and small pieces. Large pieces follow similar steps as hardened tooling. Unrefined metal is Formed, Refined, Corrected and Finished. For small tooling the already Refined Material is Formed and Finished. Generally speaking the reason for the different processes is because refined stock is not available in large pieces due to a property called the mass effect. The mass effect means that the inside of a large piece of metal will not experience the same refining as the outside of the same piece of stock. This is because the inside and outside of the material cool at different speeds, resulting in different properties


text:
- Fulfil and fulfill are both correct spellings of the same word. It means "to put into effect," "to achieve," "to carry out," or "to realize."
- Fulfil is the spelling commonly used in English speaking countries like the UK and Australia.
- Fulfill is the spelling commonly used in the United States.
- In Canada, they use both spellings.
Fulfill is one of those words with multiple spellings. It can end with two l's or with one, depending on where the person writing the word is from.
Fulfil vs. Fulfill—What's the Difference?
We use fulfill to say that we did something we promised, that we carried out a duty, or that we realized or put into effect something that someone entrusted us to do.
There are two ways you can spell the word—fulfill and fulfil. Neither of the spellings is wrong. The longer one, fulfill, is the spelling you'll see people use in the United States:
In other English-speaking countries, people spell the word fulfil:
You can come across both spellings in Canada.
Most of the inflected forms of the word retain the double l, regardless of dialect. That's why you'll see fulfilling, fulfilled, and fulfiller in all English speaking countries. A notable exception is the word fulfillment, which follows the same rules as the root word:
Fulfill in the US
Fulfil outside of the US
American English and British English are different in many small, almost unnoticeable ways. When it comes to spelling, Americans usually prefer the shorter words, like "benefited" over "benefitted" or "check" over "cheque", but every once in a while they choose to use the longer spelling, like fulfill.

source: openbmb/Ultra-FineWeb


(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.
Getting the current joint angles for the PR2
Description: This tutorial shows you how to get the current joint angles for the PR2 robot.
Keywords: joint angles display joint_states mechanism state
Tutorial Level: BEGINNER
Overview
In this tutorial, we will show you how to get the current joint angles for the PR2 robot (arm, head, torso, etc.) from within a ROS node, using sensor_msgs/JointState messages.
Before you begin, bring up a robot, either on the hardware or in gazebo.
The joint_states message
The current positions and angles for the robot are by default being broadcast on a message topic called joint_states, of type sensor_msgs/JointState. This message contains arrays of joint names (string[] name), along with the corresponding positions (float64[] position), velocities (float64[] velocity), and efforts (float64[] effort). If you type
rostopic echo joint_states
at the command line after a real or simulated robot has been launched, you can see these messages as they are published.
A handy server
If you happen to want to filter out only a few joint angles and obtain their joint values, you might want to write a server such as this one.
The node we present in this tutorial listens to and keeps track of the most recent joint_states message, and offers a service that returns the current position, velocity, and effort for any set of desired joint names.
The first thing we'll need to do is create a package. To do this we'll use the handy roscreate-pkg command where we want to create the package directory:
roscreate-pkg joint_states_listener rospy sensor_msgs
After this is done we'll need to roscd to the package we created, since we'll be using it as our workspace.
roscd joint_states_listener
Creating the service message
Now we need to define a service message that we can use to ask for specific joint angles, velocities, and efforts. Put the following into srv/ReturnJointStates.srv:
string[] name
---
uint32[] found
float64[] position
float64[] velocity
float64[] effort
Now uncomment the line
rosbuild_gensrv()
in your CMakeLists.txt and type make in the joint_states_listener directory to generate the service message files.
Creating the service node
Put the following into nodes/joint_states_listener.py:
 1 #!/usr/bin/env python
 2 #spins off a thread to listen for joint_states messages
 3 #and provides the same information (or subsets of) as a service
 4
 5 import roslib
 6 roslib.load_manifest('joint_states_listener')
 7 import rospy
 8 from joint_states_listener.srv import *
 9 from sensor_msgs.msg import JointState
 10 import threading
 11
 12
 13 #holds the latest states obtained from joint_states messages
 14 class LatestJointStates:
 15
 16 def __init__(self):
 17 rospy.init_node('joint_states_listener')
 18 self.lock = threading.Lock()
 19 self.name = []
 20 self.position = []
 21 self.velocity = []
 22 self.effort = []
 23 self.thread = threading.Thread(target=self.joint_states_listener)
 24 self.thread.start()
 25
 26 s = rospy.Service('return_joint_states', ReturnJointStates, self.return_joint_states)
 27
 28
 29 #thread function: listen for joint_states messages
 30 def joint_states_listener(self):
 31 rospy.Subscriber('joint_states', JointState, self.joint_states_callback)
 32 rospy.spin()
 33
 34
 35 #callback function: when a joint_states message arrives, save the values
 36 def joint_states_callback(self, msg):
 37 self.lock.acquire()
 38 self.name = msg.name
 39 self.position = msg.position
 40 self.velocity = msg.velocity
 41 self.effort = msg.effort
 42 self.lock.release()
 43
 44
 45 #returns (found, position, velocity, effort) for the joint joint_name
 46 #(found is 1 if found, 0 otherwise)
 47 def return_joint_state(self, joint_name):
 48
 49 #no messages yet
 50 if self.name == []:
 51 rospy.logerr("No robot_state messages received!\n")
 52 return (0, 0., 0., 0.)
 53
 54 #return info for this joint
 55 self.lock.acquire()
 56 if joint_name in self.name:
 57 index = self.name.index(joint_name)
 58 position = self.position[index]
 59 velocity = self.velocity[index]
 60 effort = self.effort[index]
 61
 62 #unless it's not found
 63 else:
 64 rospy.logerr("Joint %s not found!", (joint_name,))
 65 self.lock.release()
 66 return (0, 0., 0., 0.)
 67 self.lock.release()
 68 return (1, position, velocity, effort)
 69
 70
 71 #server callback: returns arrays of position, velocity, and effort
 72 #for a list of joints specified by name
 73 def return_joint_states(self, req):
 74 joints_found = []
 75 positions = []
 76 velocities = []
 77 efforts = []
 78 for joint_name in req.name:
 79 (found, position, velocity, effort) = self.return_joint_state(joint_name)
 80 joints_found.append(found)
 81 positions.append(position)
 82 velocities.append(velocity)
 83 efforts.append(effort)
 84 return ReturnJointStatesResponse(joints_found, positions, velocities, efforts)
 85
 86
 87 #run the server
 88 if __name__ == "__main__":
 89
 90 latestjointstates = LatestJointStates()
 91
 92 print "joints_states_listener server started, waiting for queries"
 93 rospy.spin()
Test program
Make the service node script executable. You can then run it using rosrun.
rosrun joint_states_listener joint_states_listener.py
Because our joint_states_listener program runs a service that waits for service calls to come in, we need to write a client program to send it queries.
Put the following in scripts/joint_states_listener_test.py:
 1 #!/usr/bin/env python
 2 #test client for joint_states_listener
 3
 4 import roslib
 5 roslib.load_manifest('joint_states_listener')
 6 import rospy
 7 from joint_states_listener.srv import ReturnJointStates
 8 import time
 9 import sys
 10
 11 def call_return_joint_states(joint_names):
 12 rospy.wait_for_service("return_joint_states")
 13 try:
 14 s = rospy.ServiceProxy("return_joint_states", ReturnJointStates)
 15 resp = s(joint_names)
 16 except rospy.ServiceException, e:
 17 print "error when calling return_joint_states: %s"%e
 18 sys.exit(1)
 19 for (ind, joint_name) in enumerate(joint_names):
 20 if(not resp.found[ind]):
 21 print "joint %s not found!"%joint_name
 22 return (resp.position, resp.velocity, resp.effort)
 23
 24
 25 #pretty-print list to string
 26 def pplist(list):
 27 return ' '.join(['%2.3f'%x for x in list])
 28
 29
 30 #print out the positions, velocities, and efforts of the right arm joints
 31 if __name__ == "__main__":
 32 joint_names = ["r_shoulder_pan_joint",
 33 "r_shoulder_lift_joint",
 34 "r_upper_arm_roll_joint",
 35 "r_elbow_flex_joint",
 36 "r_forearm_roll_joint",
 37 "r_wrist_flex_joint",
 38 "r_wrist_roll_joint"]
 39
 40 while(1):
 41 (position, velocity, effort) = call_return_joint_states(joint_names)
 42 print "position:", pplist(position)
 43 print "velocity:"


text:
New version of "Generation Tree" 126.96.36.199
A new BETA version 188.8.131.52 of the program "Tree of Generations" was released.
- Fixed bug when exporting a tree to MS Visio, generated in the "Generations Tree" program. The svg file now successfully opens in MS Visio.
- Added new card templates in the tree. New templates have a portrait display card.
- Improved algorithm and fixed errors when rendering person cards in the tree.
- When building a tree, and the location of the photo on the center, the text is aligned to the center of the card.
- Fixed errors when overlapping lines when building a full tree.
- Changed the layout of the person's form.
- Fixed translation errors in languages other than Russian.
- Fixed other bugs and increased stability of the program.


Sign up ×
Consider the following problem:
Let ${\mathbb Q} \subset A\subset {\mathbb R}$, which of the following must be true?
A. If $A$ is open, then $A={\mathbb R}$
B. If $A$ is closed, then $A={\mathbb R}$
Since $\overline{\mathbb Q}={\mathbb R}$, one can immediately get that B is the answer.
Here are my questions:
Why A is not necessarily true? What can be a counterexample?
share|cite|improve this question
4 Answers 4
up vote 18 down vote accepted
A slightly more interesting example than Luboš's can be obtained by enumerating the rationals as $\mathbb{Q} = \{q_n\}_{n=1}^\infty$ and taking $A = \bigcup_{n=1}^{\infty} (q_{n} - \frac{\varepsilon}{2^{n+1}}, q_{n} + \frac{\varepsilon}{2^{n+1}})$. Then the Lebesgue measure of $A$ can be estimated by $\mu(A) \leq \sum_{n=1}^{\infty} 2 \cdot \frac{\varepsilon}{2^{n+1}} = \varepsilon$, so $A$ cannot be all of $\mathbb{R}$ even if it's clearly open.
share|cite|improve this answer
It's amazing that without knowing what the irrational numbers are left, one can get that $A$ cannot be ${\bf R}$ through Lebesgue measure. Nice! – Jack Jun 6 '11 at 15:50
_USER_: Of course, I used the deceptively innocent-looking fact that the Lebesgue measure of an interval is its length! The comments to Gowers's answer show that even some professional mathematicians are not aware of its non-triviality (or forgot about it)... – t.b. Jun 6 '11 at 16:09
This is a very nice classical example. +1, I liked it so much when I saw it the first time :) it's like saying you can "cover" a dense subset of an infinitely long line with a simple woodstick (of finite length), if you "cut it correctly" and "place the pieces at the right places". It shows how mathematics can rudely destroy intuition. =P – Patrick Da Silva Jul 29 '11 at 5:45
_USER_: Right. I find it even better when you write $A_{\varepsilon}$ for the set in this answer and take $N = [0,1] \cap \bigcap_{k=1}^{\infty} A_{1/k}$. Then you get a dense $G_{\delta}$ (hence a set of second Baire category) in $[0,1]$. This set is generic in the sense of Baire, but it has zero Lebesgue measure. In other words: the two notions of generic that are commonly used (one in the sense of Baire, the other in the sense of probability) are quite incompatible. – t.b. Jul 29 '11 at 7:58
_USER_: Oh, sorry. The set $N$ has measure zero, right? So if you pick a point randomly (wrt Lebesgue measure on $[0,1]$), it won't be in $N$ almost surely, so a "generic point will be outside $N$". On the other hand, this set is a countable intersection of open and dense sets, and according to the Baire category theorem, such sets are "large" or "generic" (in the sense of Baire). E.g.: a generic continuous function is nowhere differentiable. Now $N$ is "very small" in the Lebesgue sense, and "very large" in the Baire sense. That's it. – t.b. Jul 29 '11 at 22:29
A counterexample for the rule A is $$ {\mathbb R} \backslash F $$ where $F$ is any non-empty finite (or countable) set of irrational numbers. For example $$ {\mathbb R} \backslash \{\pi\} $$ Note that if I remove the point $\pi$, the set is still open on both sides from $\pi$. Because $\pi$ isn't rational, the set above still contains all rational numbers.
share|cite|improve this answer
You couldn't remove any countable set - for example, removing $\{\frac{\pi}{n} \mid n \in \mathbb{N}\}$ would leave you with a set that's not open. – MartianInvader Jun 6 '11 at 16:46
"(or countable)" could be replaced with "(or closed)" to make this correct and general. – Jonas Meyer Jun 6 '11 at 18:11
The question boils down to whether there are nonempty subsets of $\mathbb{R}\setminus \mathbb{Q}$ that are closed in $\mathbb{R}$. The easiest examples are finite sets, as Luboš Motl noted. An easy infinite example is $\sqrt{2}+\mathbb{Z}$. Theo Buehler showed that there are positive measure examples, which is much stronger and closely related to the question at this link.
Another direction to strengthen the result is to show that there are perfect examples, which is the subject of the question at this link.
share|cite|improve this answer
Nice wrap-up, Jonas, and prods to make connections with earlier questions/answers. A post such as this would be helpful for some answers that get a half-dozen (or more) answers which take a different angle, approach...and to help shed light on how strong (or generalizable/extendable) a statement one can make, "spring-boarding" off a single question, and connecting to other semi-related posts. – amWhy Jun 22 '11 at 5:35
"Why A is not necessarily true? What can be a counterexample?"
I'm surprised at the complexity of some answers given to this. Here's a counterexample: $$ (-\infty,\pi)\cup (\pi,\infty). $$ You can construct lots of others similar to that but more complicated if need be.
share|cite|improve this answer
How is $\mathbb{R} \smallsetminus \{\pi\}$ more complicated than your example? – t.b. Oct 8 '11 at 0:24
I.e. the complement of any discrete set of irrational numbers. – Michael Hardy Oct 8 '11 at 0:25
Sorry..... I hadn't thorougly read all of them. – Michael Hardy Oct 8 '11 at 0:26
_USER_: $\{\frac{\pi}{n}:n\in\mathbb N\}$ is a discrete set of irrationals, but its complement is not open. The set of irrational numbers in question has to be closed. – Jonas Meyer Dec 4 '11 at 6:38
Your Answer


text:
Last week, Tyson announced two new climate initiatives:
A first-of-its-kind Climate-Smart Beef Program to reduce greenhouse gas (GHG) emissions in the beef production process
Brazen Beef, the first beef product to receive USDA approval for a "climate-friendly" claim
Through the Climate-Smart Beef Program, beef emissions are measured down to the individual animal level, and then farmers and ranchers are incentivized to adopt sustainable agricultural practices to reduce those emissions.
"By providing farmers and ranchers with data, we hope to help them implement climate-smart agricultural practices, resulting in managing more farmland in our supply chain with regenerative methods, such as rotational grazing, silvopasture and tree management, and waterway and riparian management," the company wrote in a blog post. "We hope these efforts will also help rebuild and enrich the soil, absorb more carbon and retain more water, promote healthy grasslands, and improve biodiversity."
Brazen Beef was developed using data and information from the Climate-Smart Beef Program. It demonstrated a 10% reduction in GHG emissions compared to conventionally raised beef, earning the product USDA approval for a "climate-friendly" claim. Tyson plans to launch the product to consumers later this year.


text:
About the Norwegian Garnes name and the pronunciation:
Here in Norway we have at least two places called Garnes. They are not cities, but small places by the coastline. One close to the Bergen, and another close Ålesund. My family name origins from the latter. In Norwegian the name Garnes actually means something. "Gar" os "gard" means farm, and "nes" means headland. So it was as simple as a farm on some headland in the beginning. And since this is not so uncommon here, several places got the same name.
Now to the other spelling - "garnaas". This is actually another name, with another meaning and origin. "Garn" means "net", like in fishing net, but may also mean "yarn, thread, (knitting) wool, cotton (yarn)". "Aas" or "ås" means "hill" or "ridge", but may also mean "God" - the old norse gods that is.
There are around 4-5 places in Norway called "Garnaas" or "Garnås", and these are mainly located inland - not by the coast like the "garnes" farms. This may point in the direction of knitting wool and not fishing net, but this is only guessing. Maybe some norwegian called Garnaas can help?
The letter å (an a with a ring on top) is sometimes written as "aa", and I _think_ americans could say "aww" or "awe" to get the pronunciation correct.
426 norwegians are called Garnes 68 norwegians are called Garnås 43 norwegians are called Garnaas


text:
Lake Erie Microcystis: relationship between microcystin production, dynamics of genotypes and environmental parameters in a large lake
Cyanobacteria of genus Microcystis sp. have been commonly found in Lake Erie waters during recent summer seasons. In an effort to elucidate relationships between microcystin production, genotypic composition of Microcystis community and environmental parameters in a large lake ecosystem, we collected DNA samples and environmental data during a three-year (2003–2005) survey within Lake Erie and used the data to perform a series of correlation analyses. Cyanobacteria and Microcystis genotypes were quantified using quantitative real-time PCR (qPCR). Our data show that Microcystis in Lake Erie forms up to 42% of all cyanobacteria, and that Microcystis exists as a mixed population of potentially toxic and (primarily) non-toxic genotypes. In the entire lake, the total abundance of Microcystis as well as the abundance of microcystin-producing Microcystis is strongly correlated with the abundance of cyanobacteria suggesting that Microcystis is a significant component of the cyanobacterial community in Lake Erie during summer seasons. The proportion of total Microcystis of all cyanobacteria was strongly linked to the microcystin concentrations, while the percentage of microcystin-producing genotypes within Microcystis population showed no correlation with microcystin concentrations. Correlation analysis indicated that increasing total phosphorus concentrations correlate strongly with increasing microcystin concentrations as well as with the total abundance of Microcystis and microcystin-producing Microcystis.
Rinta-Kanto, J.M.; DeBruyn, J.M.; Konopko, E.A.; Bourbonniere, R.A.; Boyer, G.L.; and Wilhelm, S.W., "Lake Erie Microcystis: relationship between microcystin production, dynamics of genotypes and environmental parameters in a large lake" (2009). Microbiology Publications and Other Works.


text:
Real-time calculation of total light interception in crop canopy
Daily total PAR interception is divided into three scales: organ, plant and canopy, and the core is organ scale calculation. Calculation of total intercepted PAR could be combined with photosynthetic rate parameter to study the relation between photosynthesis efficiency and production of specified canopy, after that, further analysis of agricultural production decisions may be carried out.
- Authors retain copyright and grant the Conference organisers right of first publication with the work simultaneously licensed under a Creative Commons Attribution License that allows others to share the work with an acknowledgement of the work's authorship and initial publication in this proceedings volume.
- Authors are able to enter into separate, additional contractual arrangements for the non-exclusive distribution of the proceeding's published version of the work (e.g., post it to an institutional repository or publish it in a book), with an acknowledgement of its initial publication in this proceedings volume.


Are there really tannins in coffee?
15 October, 2020
Are there really tannins in coffee?
by BH Learn
At Barista Hustle, we talk about tannins fairly often. We have posted about how tannins are responsible for astringency, the mouth-drying feeling you get in coffee, and how they may be the culprit behind some of the negative flavours associated with 'over-extraction' and channelling. Because astringency is such a key component of over-extraction flavours, and because controlling channelling is so important in achieving high, even extractions, this topic comes up frequently.
And yet, there is some debate, going right back to the 1920s, as to whether coffee contains tannins at all.
Until now, we've mostly skirted around this topic, talking about pseudo-tannins or tannin-like molecules as well as tannins. We want to finally address this, and be clear about what molecules we're referring to when we talk about tannins.
Our position is that there is plenty of evidence that some kind of tannins are present in coffee. In fact, the broadest definition of tannins includes familiar molecules like the chlorogenic acids.
We expect that larger tannins are responsible for much of the negative flavours and mouthfeel associated with channelling and over-extraction. While there's some evidence that such molecules may exist in coffee, it's not yet known exactly which molecules are involved. Until we learn more about the specific compounds involved, 'tannins' is the most accurate and precise word that we can use.
In the rest of this paper, we'll explain why.
What are tannins?
Broadly speaking, tannins are polyphenolic biological molecules that bind to and precipitate proteins. Different types of tannins are found all over the plant kingdom, including in tree heartwood and bark, in unripe fruits, and in the leaves of plants such as tea.
Because tannins bind to proteins, they have an astringent effect in foods. The dry feeling of astringency in the mouth results from tannins binding to salivary proteins and interfering with the ability of saliva to lubricate the inside of the mouth.
The word 'tannin' comes from the leather industry, where tannins derived from plants were used to 'tan' animal skins, making them more durable. One of the main sources of tannins was oak bark, called tann in ancient Celtic languages, but any plant compound that would bind the proteins in animal skin could be used.
Because of the importance of this effect, whether a particular compound is considered a tannin is generally determined by its ability to bind proteins, rather than a specific chemical structure. This means that unlike some categories of chemicals, the definition of what constitutes a tannin is not necessarily rigid or universally agreed on, and different definitions have been proposed over the years (S Quideau 2009).
Most tannins fall into one of three main categories, based on their chemical structure: Hydrolysable tannins, based on gallic acid; condensed tannins, based on flavanol, and the phlorotannins, found in brown algae. However, other types of tannin have been identified and our knowledge of these compounds is always expanding: for example, a group of chemicals called oligostilbenoids were first identified to act as tannins in 1993 (Boralle et al 1993).
In the early twentieth century, some tannin-like compounds were isolated from coffee and called 'caffetannic acid', assumed to be a type of tannin like those found in tea. However, 'caffetannic acid' turned out to be not a type of tannic acid but instead a mixture of molecules, mainly chlorogenic acids (Ukers 1922). This led Lingle in the Coffee Brewer's Handbook (1996) to state that the phenolic compounds in coffee were "incorrectly classified as tannins", based on this early research. However, the fact that this one isolate turned out to be mainly chlorogenic acids does not prove that no tannins are present in coffee at all. Plenty of research testing for tannins in coffee has found that they are present — for example, one paper finds that roasted coffee contains about half as much tannin as tea (Savolainen 1992).
Testing for tannins
Since tannins bind proteins, classification of tannins often depends on whether they show a positive result in various chemical tests that involve testing the ability of the tannin to bind protein. One such test is called the 'Goldbeater's Skin Test', in which the presence of tannin causes a distinctive blue-black colour to appear on a thin layer of cattle intestine. Other tests use different protein sources such as gelatin or albumin as the basis of the test.
However, whether a tannin binds to a protein depends on the protein used in the test (Hagermann 1998), so not all tests work equally well with all tannins. As a result, some molecules are classified as tannins by some tests, but not by others. Compounds that show tannin activity in some tests, but that don't show a positive result in the Goldbeater's Skin Test, are called pseudo-tannins. One such compound is chlorogenic acid, which is abundant in coffee.
Despite the name, pseudo-tannins are considered a sub-category of tannin by some sources — so a pseudo-tannin is still a tannin. By this definition, chlorogenic acid itself can be included as a tannin, and indeed it is listed as a tannin in the National Library of Medicine's PubChem database. However, chlorogenic acid is readily soluble in water, so a significant proportion will be extracted even in a well-extracted brew. When we talk about the importance of tannins in the correct extraction of coffee, we are really talking about larger molecules, that will only dissolve in large amounts if we've done something wrong.
Larger tannins
Whether or not chlorogenic acid (CQA) 'counts' as a tannin, it's clear that there are also other, larger molecules responsible for the harsh astringency of a channelled brew. One possible culprit is dichlorogenic acid (di-CQA) — a type of chlorogenic acid that has two caffeic acids attached to the quinic acid instead of one.
Chlorogenic acid (left) and dichlorogenic acid (right). Dichlorogenic acid has two caffeic acid units, so is a larger molecule and binds to proteins more strongly.
Dichlorogenic acid binds to proteins much more strongly than chlorogenic acid (Okuda & Ito 2011) and so has stronger tanning activity, and many sources that don't count CQA as a tannin do include di-CQA. Dichlorogenic acid may be responsible for the astringency associated with unripe coffee beans, since unripe beans contain a higher proportion of dichlorogenic acid.
More recently, other tannin-like compounds have also been identified in coffee. Using modern techniques that can pin-point the molecular structure of individual molecules, Low et al (2015) found evidence of other types of tannin-like compounds in spent coffee grounds, including catechins, the building blocks of tannins found in tea, as well as the appropriately-named molecule 'astringin', found in wine. The way the molecules are extracted for testing makes it hard to definitively say if these building blocks are joined together to form large tannins in the coffee itself, or if they just exist as individual subunits. However, the authors suggest that the larger tannins are likely to be present.
Why call them tannins?
If we're not sure exactly what type of molecules are causing the astringent effect that we see in coffee, then why do we still generally use the word tannins when talking about problems with brewed coffee?
For us, the reason is that the word 'tannin' is mainly used to tell us what the molecule does, rather than what it looks like. We know that some astringency in coffee is caused by molecules that bind to proteins in the way that tannins do, and that astringency is very important in determining the quality of a brew. Using a more general term such as 'phenolic compounds' includes lots of molecules that don't have this effect, and behave quite differently in an extraction.
For this reason, we need a word that specifically describes larger molecules that bind to proteins and cause astringency, and 'tannin' fits the bill exactly. This word is widely used this way, in both the coffee industry and in the scientific literature. In fact, having chosen our preferred definition of tannins, to use another word such as 'phenolic molecules' is both less accurate and less precise. As always, we are happy to update our position as new information becomes available, or widely accepted definitions change, but as things stand we are quite confident in saying that yes, there are tannins in coffee.
Coaching Calendar
Find a course with a BH Certified Coach
May 2021
Mon Tue Wed Thu Fri Sat Sun
 - Untitled
News & Updates
Sign-up, Take part and keep in touch!
Submit a Comment
Copyright © 2019 Barista Hustle, All Rights Reserved!
You have Successfully Subscribed!


Taking the The Systemising Quotient (SQ)
One final note before we take the test. A lot has been written about gender bias in the EQ and SQ. It struck me as very telling that when the SQ was revised to remove some of the questions that were in "traditionally male domains" and add more questions that might be relevant to females, they removed questions related to investing, religion and culture and added questions related to shopping, cleaning, music and clothing.
Taking the Test
You can take the SQ-R (2005 revised version of the SQ) at the Aspie Tests site. Click on The Systemising Quotient (SQ) link and follow the prompts to get to the test page. I'm assuming you know the drill by now. There are 75 questions and you're required to choose among strongly agree, slightly agree, slightly disagree and strongly disagree. Positive "strongly" answers score two points and "slightly" answers score one point. Possible scores range from 0 to 150.
It took me a little over 10 minutes to complete.
Scoring the Test
I scored an 85. Not surprising. I'm super organized, have a good memory for details and am insatiably curious about how things work.
I don't think the SQ is binary in the way that EQ is. For example, on the EQ a positive answer to "I get emotionally involved with a friend's problems" suggests empathizing. A negative answer suggests remaining detached or perhaps taking a logical problem-solving approach to the friend's problems. This could be roughly construed as systemizing if we continue to look at it in a strictly binary way.
On the SQ, a negative answer to "I do not follow any particular system when I'm cleaning at home" suggests that one prefers using a system for housecleaning. But what does the opposite answer suggest? Certainly not anything to do with empathizing.
However, the EQ-SQ model sets the two tests up as "complementary" and goes so far as to demonstrate that a composite of EQ-SQ scores is steady across all groups (i.e. my EQ+SQ will be relatively equal to yours and everyone else's, across all neurotypes). That suggests a strong negative correlation between the two tests.
When you look at the relationship between the AQ, EQ and SQ, it becomes evident that both the EQ and SQ act as a sort of proxy for AQ scores. In other words, they aren't tests of empathizing and systemizing so much as they're tests of the traits of autism. Of course autistic people will score higher than average on a test that asks a lot of questions closely related to core autistic traits and lower than average on a test that asks a lot of questions about social skills.
For reference, here are the mean scores from the 2005 SQ-R study:
ASD Male 77.8
ASD Female 76.4
ASD Total 77.2
Typical Male 61.2
Typical Female 51.7
Typical Total 55.6
(I prefer looking at the means from the original studies because the means provided by the Aspie Test site are based on self-reported neurological status, which may not be accurate.)
The Bottom Line
The SQ is an interesting measure of how dependent an individual is on routine, systems and categorization, but the use of the SQ as "proof" of the extreme male brain theory is highly suspect.
38 thoughts on "Taking the The Systemising Quotient (SQ)"
 1. I really don't get the whole "extreme male brain" theory at all. How does Simon Baron-Cohen get away with calling it a theory in the first place? It is his idea, then he designs tests to skew the results to fit his idea, but that is a different issue. I am a science teacher and I don't agree with his methods. I personally would not call his methods very scientific. I got a 70 on SQ test and I was diagnosed with Aspergers over a year ago. I also didn't score in the expected female with ASD range in the EQ test either. Sometimes I feel that I am an odd ball among the odd balls or the tests are just flawed.
 I have dyscalculia so I have no interest in numbers and I have no directional sense either, but I like to look at maps and can read them just fine. I also gravitate to anything science related. I also have an interest in engineering, not the mathmatical portion of it, but the art that goes into engineering a structure. It could be a building, a car, a chair, or a scupture. I find the nuances behind engineering amazing.
 I agree with your statement about what systemising is. I organize my clothes so I can find them better as well. Systemitizing and routines are not only survival mechanisms for people with ASD, but I also find them to be logical. Why wouldn't you organize your clothes? Systemising and routines brings order to a world that is chaotic and confusing.
 1. Yes to your annoyance with SBC's theorizing. And so few of his studies are ever replicated. I don't think I've ever come across a study validating his instruments that his name isn't on as an author. I don't understand how he's so widely quoted and cited. It's so frustrating.
 It's interesting that your scores are out of the expected range. Is your EQ higher or lower than expected? I'm going to guess higher, based on your lower than ASD-average SQ score. I think the tests are flawed but in very specifically engineered ways, if that makes sense?
 Are there people who just randomly hang everything in their closet and toss stuff in their drawers willy-nilly? I find that hard to imagine. Even my not very organized husband has all of his dress shirts hung together and all of his dress pants hung together and sorts his socks by color. It just makes sense, no matter what neurology you have.
 2. I scored a 116. I know I'm a major organizer. My bills are all on a spreadsheet. I always balance my checkbook and check things off. I put everything on a list, be it supplies, people, languages, places, etc. I have a routine for cleaning, cooking, bathing, everything. When people want things organized, I'm the person they come to. When you're searching for a pattern, I'm your girl.
 I don't think those characteristics are male though. I know plenty of men who are complete slobs, can't organize an empty paper bag, and who don't plan anything so I don't believe that those characteristics or interests are strictly male. Most of the women I know are more organized than their male counterparts. I could be a little biased on that since I'm the daughter of an accountant who does inventory for a living and has to keep a home organized for three kids, two with special needs. I could just be super organized and everyone with average organizational skills could look sloppy to me but I still disagree with the Extreme Male Brain Theory.
 1. I have routines for everything too. If I clean the house in a different order, I miss stuff. If I get ready to leave the house in a way that doesn't fit my usual routine, I'll go out without something important. Being organized is just fundamentally necessary.
 And I agree that it doesn't feel "male" at all. I feel like most of the women I know are more organized too, especially the ones who have children and one whose shoulders the bulk of family management falls. So, no, I don't think you're off in your conclusions at all.
 3. I got an 81. I really, really don't understand the extreme male theory, it just doesn't make any sense to me.
 4. I didn't get anything because for some strange reason there is no 'start' button on the test when I tried to access it. If this is just me, then, weird.
 5. I got 120 on this one. I'm a messy person, actually, but I'm really particular about my categories and details. I used to have a really messy room with all the books arranged neatly according to size, all the CD's organised by genre, or whatever my obsession was at that time. I was also the person who always corrected teachers on their spelling errors, believing I was being helpful (I was told very late on that this was considered inappropriate).
 1. It makes sense that you'd score high if you like to categorize things, regardless of your general tidiness. I'm fairly messy but I'm also obsessed with having my cabinets well organized and my books lined up neatly and everything I use regularly in it's expected place, even if it's expected place is the jumbled up mess of a junk draw.
 6. I got a 96, I am an extremely meticulous and calculating person when I am dealing with something that interests me, a reckless mess otherwise. I can go on forever with details of the hourly forecast for the next 5 days and the 30 year averages and record highs and lows, but I could care less if the trash is in the right bin, if the trash is in any bin, or if 5 raccoons and a skunk are eating the trash. I am however curious as to whether or not the pending rain will affect the suburban wildlife interested in eating my trash.
 Also, I noticed your criticism of Prof. Baron Cohen, particularly his ability to manipulate data and invent new and fascinating metrics of measurement where none previously existed to perfectly back up his theories with no statistical deviation whatsoever. I made a blog post


text:
Microhole-pair hollow core fiber Fabry–Perot interferometer micromachining by a femtosecond laser
Sensors and Actuators A: Physical
This study presents a sensitive and high-response microhole-pair (MP) hollow-core fiber (HCF) Fabry–Perot (FP) interferometer (MPHCFFPI) by microdrilling two holes symmetrically on the sidewall of the HCF via a femtosecond laser micromachining technique.
Real-time spectral response guided smart femtosecond laser bone drilling
Bone drilling is a common surgical procedure of knee arthroplasty, craniotomy, stapedotomy, dental treatment, and laminotomy. Although femtosecond laser processing provides a promising method for precision bone drilling, it is still challenging to achieve thermal accumulation suppression and damage protection for large-scale hole drilling.
Femtosecond laser surface irradiation of silicon in air: Pulse repetition rate influence on crater features and surface texture
The influence of the pulse repetition rate on laser irradiation of silicon, in air, with femtosecond laser pulses is experimentally investigated in the range 10 Hz – 200 kHz. The features of the produced crater and the laser-induced periodic surface structures generated on its surface are characterized by exploiting surface profilometry and scanning electron microscopy.


text: Background: Epidural Anesthesia (EA) is a well-established procedure. The aim of the present study was to evaluate the incidence of immediate complications following epidural puncture, such as sanguineous puncture, accidental dural perforation, unsuccessful catheter placement or insufficient analgesia and to identify patient and maneuver related risk factors. Methods: A total of 7958 non-obstetrical EA were analyzed. The risk of each complication was calculated according to the preconditions and the level of puncture. For probabilistic evaluation we used a logistic regression model with forward selection. Results: The risk of sanguineous puncture (n = 247, 3.1%) increases with both the patient's age (P = 0.013) and the more caudal the approach (P < 0.01). Dural perforation (n = 123, 1.6%) was found to be influenced only by advanced age (P = 0.019). Unsuccessful catheter placement (n = 68, 0.94%) occurred more often in smaller individuals (P < 0.001) and at lower lumbar sites (P < 0.01). Amongst all cases with successful catheter placement a (partial) insufficient analgesia was found in 692 cases (8.8%). This risk of insufficient analgesia decreased with patient's age (P <0.01), being least likely for punctures of the lower thoracic spine (P < 0.001). Conclusions: Compared to more cranial levels, EA of the lower spine is associated with an increased risk of sanguineous and unsuccessful puncture. Insufficient analgesia more often accompanies high thoracic and low lumbar approaches. The risk of a sanguineous puncture increases in elderly patients. Gender, weight and body mass index seem to have no influence on the investigated complications.


Keep cycling: how technology can support safe and comfortable cycling for older adults
Carola Engbers
 Research output: ThesisPhD Thesis - Research UT, graduation UT
 171 Downloads (Pure)
 Abstract
 In the Netherlands cycling is important, there are even more bicycles than people. For the older population, cycling is one of the most important physical activities to remain healthy and mobile. Cycling contributes positively to health, mobility, and quality of life and staying mobile is crucial for maintaining a social life. However, older cyclists (60+) also have a higher risk of falling with their bicycle and sustaining a serious injury, compared to younger cyclists. Injury jeopardizes the mobility of this person, with severe consequences, such as depression and feelings of loneliness. Hence, prevention of bicycle accidents of older cyclists is obviously necessary.
 In this thesis, the main aim was to investigate how technology can support safe and comfortable cycling to support the older cyclists (60+) in traffic. In Chapter 1, the key research topics of this thesis are described, as different factors affect cycling. The first topic covers the characteristics of older cyclists. The second topic focusses on technology related to the bicycle to support older cyclists; what are their wishes and requirements and specifically, how do older people respond to these types of technologies. The third topic covers the interaction of cyclists with other road-users and the communication with them. 'Safe and comfortable' cycling, emerges in the overlapping area between the three topics. The following objectives are described as part of the main aim.
 Objective 1: To investigate demographic, physical and mental characteristics of elderly cyclists, and to explore which factors are associated with self-reported cycling accidents in the Netherlands.
 Objective 2: To investigate how technology can support safe and comfortable cycling for the older population.
 Objective 3: To improve the interaction between older cyclists and other road-users with technology.
 This thesis has generated knowledge on characteristics of the older cyclist and how technology can support safe and comfortable cycling for the older adult. Several factors were associated with self-reported falling of the bicycle; age, mental impairments, being less than completely confident and living in a rural environment. To compensate for some of
 these physical and mental impairments, assistive technology was developed to support the older cyclists in traffic. These supportive technologies have potential to lead to more
 comfortable cycling for the older adult, as the supportive devices were evaluated very positively. The advantages for the older cyclist are promising.
 Original languageEnglish
 QualificationDoctor of Philosophy
 Awarding Institution
 - University of Twente
 Supervisors/Advisors
 - Rietman, Johan Swanik, Supervisor
 - de Waard, D., Supervisor
 - Dubbeldam, Rosemary , Co-Supervisor
 Award date27 Sep 2019
 Place of PublicationEnschede
 Publisher
 Print ISBNs978-90-_PHONE_-9
 DOIs
 Publication statusPublished - 27 Sep 2019
 Fingerprint Dive into the research topics of 'Keep cycling: how technology can support safe and comfortable cycling for older adults'. Together they form a unique fingerprint.
 Cite this


text:
In the first set of experiments, researchers asked volunteers (half of whom had been eating salty pretzels) to estimate the distance to a water bottle. As a group, the thirstier subjects all thought the water was closer than did their unsalted counterparts.
In another set of experiments, volunteers were asked to toss a beanbag onto a gift card that was worth either $0 or $25. They threw the beanbag much farther if the card wasn't worth anything. The $25 cards seemed to be closer.All the experiments confirmed that estimates of physical proximity are affected by desire. The researchers suggest that our brains perceive desired objects as being closer in order to increase our motivation to go and get it.


text:
Clear and Colored Acrylic Contact Balls
Clear and Colored Acrylic Balls
The most common type of contact ball is made from acrylic plastic. It comes in three types: clear, colored or ultraviolet (black light-activated). The Renegade acrylic balls are made to a high-quality standard. Perfectly round, without inclusions, scratches or blemishes. Contact jugglers often select colored acrylic balls or stage balls if they are going to be used outdoors. A clear acrylic ball can act as a magnifying glass and burn your hands if used in direct sunlight.
- Clear and colored acrylic balls made in small sizes (41mm, 52m, 64mm 70mm) are mostly used for multi-ball contact juggling or by people with small hands.
- Clear and colored acrylic balls in larger sizes (76mm, 82mm, 95mm, 100mm, 120mm) are for singlehand manipulation.
- Ultraviolet (UV) balls are made with a special pigment so they illuminate when under black lights. The balls glow with a bluish tint.
- Stage balls are a great way to learn contact juggling. They are cheaper than acrylic balls and do not make a noise when dropped.
Pro tips (advanced and intermediate contact juggler)
There is a big quality difference between brands of acrylic balls. The vast majority of contact balls are made of recycled acrylic. This affects the clarity of the ball. Using lower-grade material will result in a ball with a slight grey tint, which is from dust or dirt from the factory. The best balls are made from recycled acrylic produced by a Japanese automated factory that molds with new material. The worst balls come from Chinese factories, which are dirty and use recycled source material. Balls made with new acrylic are have the best clarity by far but cost at least twice as much. Our acrylic contact balls are made from Japanese regrind.


,$D$2:$D$50,0))
 this formula is looking for the position of i2 in the list $D$2:$D$50 and then using that position to fetch corresponding element in C2:C50.
 If you are interested in sorting text itself thru formulas, pls. look at : _URL_
 23. rohaiza says:
 Hi, i was succesfully used the formula advise on associated name to sort in the respective order of the of the new Rank. However, when i have same score with different names, it was captured the first name only. How can i ensure both same score will capture the different name? Ex data as below :
 column D column E
 27 peter
 26 david
 26 jones
 25 simon
 30 lydia
 Seek your advise too.
 24. Goemon says:
 I have a slightly different problem of sorting. The data is in column A and B. Some vaules of A have multiple ocurance. I want to have a sorted and averaged list in column C and D. Is this possible with a formula?
 Example raw data:
 A B
 2 1
 3 2
 3 3
 1 4
 What I want as output:
 C D
 1 4
 2 1
 3 2.5
 Looking Forward
 25. Hui... says:
 @Goemon
 In Excel 2007/10
 D1: =AVERAGEIFS($B$1:$B$4,$A$1:$A$4,C1)
 Copy down
 .
 In Excel to 2003
 D1: =SUMIF($A$1:$A$4,C1,$B$1:$B$4)/COUNTIF($A$1:$A$4,C1)
 Copy down
 26. Goemon says:
 @Hui...
 thanks, thats the easy part for column D, but not the solution for a sorted list of unique values from column A in column C.
 I've come up to an array formula like this in cell C2 and then copied down to the end of the list.
 =IF(ISNA(OFFSET($A$1,MATCH(0,MMULT(--TRANSPOSE(TRANSPOSE($A$1:$A$4)=C$1:C1),ROW(INDIRECT("1:"&ROW()-1))/ROW(INDIRECT("1:"&ROW()-1))),0)-1,0,1,1)),"",OFFSET($A$1,MATCH(0,MMULT(--TRANSPOSE(TRANSPOSE($A$1:$A$4)=C$1:C1),ROW(INDIRECT("1:"&ROW()-1))/ROW(INDIRECT("1:"&ROW()-1))),0)-1,0,1,1))
 The first match in C1 is simply a
 =min(A1:A4)
 What do you think of this solution?
 Goemon
 27. Goemon says:
 some more searching and I found a shorter formula. So column A and B are the raw data,
 in Column C I have now:
 {=IF(SUMPRODUCT(1/COUNTIF($A$2:$A$400,$A$2:$A$400))>=ROWS($1:1),SMALL(IF(FREQUENCY($A$2:$A$400,$A$2:$A$400)>0,$A$2:$A$400),ROWS($1:1)),"")}
 to return a sorted list of unique values from column A. And Column D holds a similar formula like your suggestion:
 =IF(ISNUMBER(C2),SUMIF($A$2:$A$41,C2,$B$2:$B$41)/COUNTIF($A$2:$A$41,C2),"")
 It is a little slow for long data lists, but works well enough.
 Any idea how I get the standard deviation of multiple B values into column E?
 28. monem says:
 i have column to sort but have same value in two cell and have another column data not same i wanna to sort
 a b c d
 man 2 3 3
 girl 2 3 4
 child 1 2 2
 how to sort
 sort first by b then c then d
 29. Ariel Wong says:
 yes you can sort Excel/Libreoffice using just formulas only.
 My solution is much simpler.
 1. My unsorted numbers ( or words ) are listed horizontally. e.g. B29 – G29 ( 6 numbers ). I choose 29 so that it wont be confused with the 1 used in RANK function 😀
 2. My sorted numbers shall be in cells J29-O29.
 3. The formula for cell J29 is
 =IF(RANK($B29,$B29:$G29,1)=1,$B29,IF(RANK($C29,$B29:$G29,1)=1,$C29,IF(RANK($D29,$B29:$G29,1)=1,$D29,IF(RANK($E29,$B29:$G29,1)=1,$E29,IF(RANK($F29,$B29:$G29,1)=1,$F29,IF(RANK($G29,$B29:$G29,1)=1,$G29,$Q29))))))
 3. The formula for cell K29 is … just convert all the "=1? into "=2?
 4. The formula for the rest is "=3? for L29 and so on till "=6? for O29.
 5. The RANK function will rank every cell in the range. There will not be any unranked.
 6. The last part .. ,IF(RANK($G29,$B29:$G29,1)=1,$G29,$Q29)
 If there are more than one same number .. meaning there are more than one number of the same rank.. it would duplicated the previous number of the same rank.
 7. To sort words, you need to first convert words into ASCII using the CODE function. The RANK function works only with numbers.
 8. I'm sure you know how to use the ROUND function after sorting.
 Hope this would help u guys.
 Ariel
 30. Ariel Wong says:
 yes you can sort Excel/Libreoffice using just formulas only.
 My solution is much simpler.
 1. My unsorted numbers ( or words ) are listed horizontally. e.g. B29 – G29 ( 6 numbers ). I choose 29 so that it wont be confused with the 1 used in RANK function 😀
 2. My sorted numbers shall be in cells J29-O29.
 3. The formula for cell J29 is
 =IF(RANK($B29,$B29:$G29,1)=1,$B29,IF(RANK($C29,$B29:$G29,1)=1,$C29,
 IF(RANK($D29,$B29:$G29,1)=1,$D29,IF(RANK($E29,$B29:$G29,1)=1,$E29,
 IF(RANK($F29,$B29:$G29,1)=1,$F29,IF(RANK($G29,$B29:$G29,1)=1,$G29,$Q29))))))
 3. The formula for cell K29 is … just convert all the "=1? into "=2?
 4. The formula for the rest is "=3? for L29 and so on till "=6? for O29.
 5. The RANK function will rank every cell in the range. There will not be any unranked.
 6. The last part .. ,IF(RANK($G29,$B29:$G29,1)=1,$G29,$Q29)
 If there are more than one same number .. meaning there are more than one number of the same rank.. it would duplicated the previous number of the same rank.
 7. To sort words, you need to first convert words into ASCII using the CODE function. The RANK function works only with numbers.
 Hope this would help u guys.
 Ariel
Leave a Reply
« »


Aug 18
Final touches on linear independence
Final touches on linear independence
Correctness of the dimension definition
The main definition of linear dependence is of type
(1) \sum_{j=1}^ma_jx^{(j)}=0 for some nonzero a\in R^m (a non-trivial annihilating set of coefficients exists).
Exercise 1. Prove that the main definition is equivalent to the following: vectors x^{(1)},...,x^{(m)}\in R^n are called linearly dependent if one of them can be expressed as a linear combination of the others.
Proof. This exercise is about passing from (1) to
(2) x^{(j)}=\sum_{i\neq j}b_ix^{(i)} (one is a function of the others).
If there is dependence of the first type, it can be solved for a vector whose coefficient is different from zero. Dependence of the second type can be converted to the first type by sending everything to one side.
Application. In multiple regression, we try to explain the behavior of a random vector y with the help of the vectors x^{(1)},...,x^{(m)} (called regressors) and a random vector u
(3) y=a_1x^{(1)}+...+a_mx^{(m)}+u.
Suppose that these regressors are linearly dependent. By Exercise 1, we can plug x^{(j)} in (3) and the behavior of y can be explained with the help of a smaller number of regressors. After eliminating all regressors that depend on the others, we obtain a more economical model. See a related discussion.
Exercise 2 (going from a small system to large and back) a) If some subsystem of x^{(1)},...,x^{(m)} is linearly dependent, then the whole system is linearly dependent. b) If the system x^{(1)},...,x^{(m)} is linearly independent, then any its subsystem is linearly independent.
Proof. a) If we have a non-trivial annihilating set of coefficients for a subsystem, it can be completed with zeros to obtain a non-trivial annihilating set of coefficients for the whole system. b) Proof by contradiction. Assume that some subsystem is linearly dependent. Then by part a) the whole system is too.
Theorem (correctness of the dimension definition) Any basis in R^n consists of n vectors.
The proof in Halmos (Finite-dimensional vector spaces, Springer, 1987) is the shortest I could find. To understand it, you will need Exercise 2. I don't give the proof here because I don't find it to be of general interest. Note that the theorem itself is important for any statement involving the dimension notion.
Using square matrices to study non-square ones
We'll need the upper bound on the rank:
(1) \text{rank}(A)\leq \min \{n,k\} if A is of size n\times k.
Exercise 3. \text{rank}(A^T)=\text{rank}(A^TA).
Proof. We know that R^n=N(A^T)\oplus\text{Img}(A). Applying A^T to both sides we get \text{Img}(A^T)=\text{Img}(A^TA). [In detail: any x\in R^n can be represented as x=y+z, where y\in N(A^T), z\in\text{Img}(A), z=Au for some u. Hence, applying A^T, we get A^Tx=A^Ty+A^Tz=A^Tz=A^TAu. When x runs over R^n, the left side runs over \text{Img}(A^T), while the right side runs over \text{Img}(A^TA).] If two subspaces coincide, their dimensions are the same.
Exercise 4. In R^n any set of vectors x^{(1)},...,x^{(m)} with m>n is linearly dependent.
Proof. Put X=(x^{(1)},...,x^{(m)}). X is of size n\times m. By Exercise 3 and (1)
(2) \text{rank}(X^TX)=\text{rank}(X^T)\leq n


Thursday, April 17, 2008
TotT: Avoiding Flakey Tests
Flaky tests make your life more difficult. You get failure notifications that aren't helpful. You might become numb to failures and miss an actual failure condition. Your changes might get unfairly blamed for causing a flaky test to fail.
Unfortunately, a myriad of factors can make a test flaky. Today, we tackle a simple example: file access from a unit test. Take this function and its test:
def CreateGapLease(self):
 data_file = open('/leases/gap', 'w+')
def testCreateGapLease(self):
What if /leases/gap already exists and contains some data? testCreateGapLease will fail. This is a general problem where preconditions are assumed to be correct. This could just as easily happen by assuming a database contains the proper information (or no information). What if another test that uses that file was running concurrently?
If you really want to test your code using live resources, always check your assumptions. In this case, clearing the file at the start of the test can reduce its brittleness:
def testCreateGapLease(self):
 if os.path.exists(lease_file):
Unfortunately, this doesn't completely eliminate the flakiness of our test. If /leases/gap is an NFS path or can be written to by a different test, our test can still fail unexpectedly. It's better for the test to use a unique resource. This can be accomplished with a small refactoring of CreateGapLease:
def CreateGapLease(self, lease_path=None):
 if lease_path is None:
 lease_path = '/leases/gap'
The callers of CreateGapLease can continue invoking it as usual, but the unit test can pass in a different path:
def testCreateGapLease(self):
 lease_file = os.path.join(FLAGS.test_tmpdir, 'gap')
Of course, to make your test as fast as possible, it would be better to forgo disk access altogether by using a mock file system.
Due to illness availability of the PDF will be slightly delayed
The PDF is now available at the above link
 1. What was wrong with "def CreateGapLease(self, lease_path='/leases/gap'):"? Immutable types like strings aren't a risk in default args. My version probably runs slightly faster and will produce much better automatically-extracted docs.
 The related trap, which you might have been trying to avoid, looks like this:
 def func(x=[]):
 . x.append(5)
 . return x
 (Except without the silly dots to workaround blogger's formatting)
 That program only has one list in it which will keep growing every time you call func(). That's where the "x=None.. if x is None: x = []" idiom is important.
 2. Nice post.
 Do yuo have some example of good file system mocking? :)
 3. I assume FLAGS.test_tmpdir is a randomly-named temporary directory (e.g. created with tempfile.mkdtemp), otherwise you still might have problems if you run the test suite concurrently and both instances try to write to the same file at the same time.


.
 ?ville db-prop:longitude?long.
 ?ville db-prop:latitude?lat.
 FILTER (?population > 1000)
 treatments = {1: {'normalization': [aln.simply],
 'metric': ald.levenshtein,
 'matrix_normalized': False
 results = ala.alignall(alignset, targetset, 3, treatments=treatments, _TAG_ before
 indexes=(2, 2), _TAG_ which data build the kdtree
 mode='kdtree', _TAG_ mode to use
 uniq=True) _TAG_ only the best results
 Let's explain the code. We have two files, containing a list of cities we want to align, the first column is the identifier, and the second is the name of the city and the last one is location of the city (longitude and latitude), gathered into a single tuple.
 In this example, we want to build a kdtree on the couple (longitude, latitude) to divide our data in few candidates. This clustering is coarse, and is only used to reduce the potential candidats without loosing any more refined possible matchs.
 So, in the next step, we define the treatments to apply. It is the same as before, but we ask for a non-normalized matrix (ie: the real output of the levenshtein distance). Thus, we call the alignall function. indexes is a tuple saying the position of the point on which the kdtree must be built, mode is the mode used to find neighbours [3].
 Finally, uniq ask to the function to return the best candidate (ie: the one having the shortest distance below the given threshold)
 The function outputs a generator yielding tuples where the first element is the identifier of the alignset item and the second is the targetset one (It may take some time before yielding the first tuples, because all the computation must be done…)
 [3]The available modes are kdtree, kmeans and minibatch for numerical data and minhashing for text one.
 Try it online!
 We have also made this little application of Nazca, using Cubicweb. This application provides a user interface for Nazca, helping you to choose what you want to align. You can use sparql or rql queries, as in the previous example, or import your own cvs file [4]. Once you have choosen what you want to align, you can click the Next step button to customize the treatments you want to apply, just as you did before in python! Once done, by clicking the Next step, you start the alignment process. Wait a little bit, and you can either download the results in a csv or rdf file, or directly see the results online choosing the html output.
 [4]Your csv file must be tab-separated for the moment…
 - Openstack, Wheezy and ZFS on Linux
 2012/12/19 by David Douard
 Openstack, Wheezy and ZFS on Linux
 A while ago, I started the install of an OpenStack cluster at Logilab, so our developers can play easily with any kind of environment. We are planning to improve our Apycot automatic testing platform so it can use "elastic power". And so on.
 I first tried a Ubuntu Precise based setup, since at that time, Debian packages were not really usable. The setup never reached a point where it could be relased as production ready, due to the fact I tried a too complex and bleeding edge configuration (involving Quantum, openvswitch, sheepdog)...
 Meanwhile, we went really short of storage capacity. For now, it mainly consists in hard drives distributed in our 19" Dell racks (generally with hardware RAID controllers). So I recently purchased a low-cost storage bay (SuperMicro SC937 with a 6Gb/s JBOD-only HBA) with 18 spinning hard drives and 4 SSDs. This storage bay being driven by ZFS on Linux (tip: the SSD-stored ZIL is a requirement to get decent performances). This storage setup is still under test for now.
 I also went to the last Mini-DebConf in Paris, where Loic Dachary presented the status of the OpenStack packaging effort in Debian. This gave me the will to give a new try to OpenStack using Wheezy and a bit simpler setup. But I could not consider not to use my new ZFS-based storage as a nova volume provider. It is not available for now in OpenStack (there is a backend for Solaris, but not for ZFS on Linux). However, this is Python and in fact, the current ISCSIDriver backend needs very little to make it work with zfs instead of lvm as "elastics" block-volume provider and manager.
 So, I wrote a custom nova volume driver to handle this. As I don't want the nova-volume daemon to run on my ZFS SAN, I wrote this backend mixing the SanISCSIDriver (which manages the storage system via SSH) and the standard ISCSIDriver (which uses standard Linux isci target tools). I'm not very fond of the API of the VolumeDriver (especially the fact that the ISCSIDriver is responsible for 2 roles: managing block-level volumes and exporting block-level volumes). This small design flaw (IMHO) is the reason I had to duplicate some code (not much but...) to implement my ZFSonLinuxISCSIDriver...
 So here is the setup I made:
 My OpenStack Essex "cluster" consists for now in:
 - one control node, running in a "normal" libvirt-controlled virtual machine; it is a Wheezy that runs:
 - nova-api
 - nova-cert
 - nova-network
 - nova-scheduler
 - nova-volume
 - glance
 - postgresql
 - OpenStack dashboard
 - one computing node (Dell R310, Xeon X3480, 32G, Wheezy), which runs:
 - nova-api
 - nova-network
 - nova-compute
 - ZFS-on-Linux SAN (3x raidz1 poools made of 6 1T drives, 2x (mirrored) 32G SLC SDDs, 2x 120G MLC SSDs for cache); for now, the storage is exported to the SAN via one 1G ethernet link.
 OpensStack Essex setup
 I mainly followed the Debian HOWTO to setup my private cloud. I mainly tuned the network settings to match my environement (and the fact my control node lives in a VM, with VLAN stuff handled by the host).
 I easily got a working setup (I must admit that I think my previous experiment with OpenStack helped a lot when dealing with custom configurations... and vocabulary; I'm not sure I would have succeded "easily" following the HOWTO, but hey, it is a functionnal HOWTO, meaning if you do not follow the instructions because you want special tunings, don't blame the HOWTO).
 Compared to the HOWTO, my nova.conf looks like (as of today):
 root_helper=sudo nova-rootwrap
 ## Network config
 # A nova-network on each compute node
 # VLan manger
 # My ip
 # Dmz & metadata things
 ## More general things
 # The RabbitMQ host
 ## Glance
 I had a bit more work to do to make nova-volume work. First, I got hit by this nasty bug #695791 which is trivial to fix... when you know how to fix it (I noticed the bug report after I fixed it by myself).
 Then, as I wanted the volumes to be stored and exported by my shiny new ZFS-on-Linux setup, I had to write my own volume driver, which was quite easy, since it is Python, and the logic to implement was already provided by the ISCSIDriver class on the one hand, and by the SanISCSIDrvier on the other hand. So I ended with this firt implementation. This file should be copied to nova volumes package directory (nova/volume/
 # vim: tabstop=4 shiftwidth=4 softtabstop=4
 # Copyright 2010 United States Government as represented by the
 # Administrator of the National Aeronautics and Space Administration.
 # Copyright 2011 Justin Santa Barbara
 # Copyright 2012 David DOUARD, LOGILAB S.A.
 # All Rights Reserved.
 # a copy of the License at
 # License for the specific language governing permissions and limitations
 # under the License.
 Driver for ZFS-on-Linux-stored volumes.
 This is mainly a custom version of the ISCSIDriver that uses ZFS as
 volume provider, generally accessed over SSH.
 import os
 from nova import exception
 from nova import flags
 from nova import utils
 from nova import log as logging
 from nova.openstack.common import cfg
 from nova.volume.driver import _iscsi_location
 from nova.volume import iscsi
 from nova.volume.san import SanISCSIDriver
 LOG = logging.getLogger(__name__)
 san_opts = [
 help='The ZFS command.'),
 FLAGS = flags.FLAGS
 class ZFSonLinuxISCSIDriver(SanISCSIDriver):
 """Executes commands relating to ZFS-on