text:
Guest opinion: Dr. Tim Ball
Al Gore even made some hardened liberal journalists sit up and question when in 2007 he told a joint session of the House Energy Committee and The Senate Environment Committee that the climate debate was over, "the science was settled". The journalists knew, as any moderately informed person does, that science is never settled. But, what does "settled" mean in this context? The most reasonable definition is linked directly to a simple definition of science, namely the ability to predict. If you can't predict then your science is wrong, as Feynman and others made clear. Failed predictions prove that the science isn't settled. Gore and the supporters of the Intergovernmental Panel on Climate Change (IPCC) version of anthropogenic global warming (AGW) claim the science is settled, but their climate predictions (projections) are consistently wrong. The problem is wider because the weather predictions of national weather agencies who are, through the World Meteorological Organization (WMO) the IPCC, don't work either.
The climate is the average weather, which raises the question; when does weather become climate? Since climate is an average of the weather, the average temperature for a 24-hour period is the climate of the day. If the science is settled, then the weather forecasts should also be accurate, but they are still increasingly unreliable beyond 48 hours. One use of the millions of weather data points created for my doctoral thesis was by a statistician, Alexander Basilevsky. He was working on Markov Chains defined as follows:
He needed a continuous long-run data set derived from nature. He wanted to address the issue of probabilities and accuracy of predictions in nature, particularly weather predictions. I never spoke with him about his results but assume, since the work was done 20-years ago, they achieved nothing applicable because prediction accuracies didn't improve.
In fact, weather forecasting accuracy has not significantly increased since it began officially in 1904. In that year, Vilhelm Bjerknes (_PHONE_) introduced the idea of numerical weather predictions by solving mathematical equations. This assumes you have adequate and appropriate data to put into the equation, but that is still not the case, and that is the root of the problem.
Prediction failures are a situation obvious to those who make empirical observations because their lives and livelihood depend on the weather. Robin Page, farmer/author in his book "Weather Forecasting: The Country Way," wrote,
"Yet it is strange to record that as the weather forecasting service has grown in size and expense, so it's predictions seem to have become more inaccurate."
New Scientist reports that Tim Palmer, a leading climate modeler at the European Centre for Medium-Range Weather Forecasts in Reading England said:
I don't want to undermine the IPCC, but the forecasts, especially for regional climate change, are immensely uncertain.
Then in an apparent attempt to claim some benefit we're told:
…he does not doubt that the Intergovernmental Panel on Climate Change (IPCC) has done a good job alerting the world to the problem of global climate change. But he and his fellow climate scientists are acutely aware that the IPCC's predictions of how the global change will affect local climates are little more than guesswork.
Roger Harrabin, BBC Reporter, made a comment about a climate conference in Reading:
So far modellers have failed to narrow the total bands of uncertainties since the first report of the Intergovernmental Panel on Climate Change (IPCC) in 1990.
Koutsoyiannis et al., confirmed this in April 2008 where in an article they found:
The GCM (General Circulation Models) outputs of AR4 (FAR) as compared to those of TAR, are a regression in terms of the elements of falsifiability they provide…
Is there a common denominator here? Weather predictions don't work, especially if you consider their accuracy for severe weather, and climate predictions don't work either. The common denominators for the failure are the lack of spatial and temporal data and little understanding of the mechanisms. It is assumed that if we knew those, then accurate predictions would occur.
The IPCC were the first official group to make climate predictions that caught world attention and they were wrong from the start. Because their objective was political, they deliberately chose to separate claims about the accuracy of their forecasts. The Summary for Policymakers (SPM) deliberately misleads and as Figure 1 by Roy Spencer shows they increased the misdirection as the gap between their claims and reality widened.
The IPCC Physical Science Basis Reports of Working Group I all identify the problems and severe limitations of the data and knowledge of the mechanisms.
The only thing predictable is that as their forecasts fail the claims of success are magnified and amplified.
In the 1990s, one segment of the climate debate involved the US and western nations support for Chaos Theory. The other segment promoted by the Soviet Union, China and Eastern nations supported the cyclical explanation of climate change. Many, especially the western media saw the division as a Cold War ideological difference. In fact, it was a legitimate scientific difference and debate. It was fuelled by the establishment of translation services of Soviet science by Jewish scientists who escaped to Israel.
In the Third Assessment, Science Report the IPCC wrote,
In climate research and modeling, we should recognize that we are dealing with a coupled non-linear chaotic system, and therefore that the long-term prediction of future climate states is not possible.
Essex and McKitrick identified the chaos portion in their book Taken By Storm.
"Fluids are governed by nonlinear, as opposed to linear equations… … these represent major distinctions in times of great importance. However, the misleading averages can yield exact average equations of quantities describing fluids that are linear! This is especially remarkable because the correct differential equations for fluids are some of the most notorious examples of nonlinear differential equations there are. In a non-mathematical world, a differential equation being notorious seems hard to imagine, but some really are. They aren't to be found in People magazine, but nonlinear equations have notoriety among those who know about them, because we cannot solve most of them. We are left to rely on computer approximations of solutions. Furthermore, unlike linear equations, they can and do exhibit a kind of peculiar unpredictability in their solutions, not unlike randomness, known as chaos."
The most obvious difference between them (Kinetic theory and Navier-Stokes) is that we have no guide in the larger climate world to any key structures and relationships. There is no one living on climate scales to observe structures, do experiments, or establish physically meaningful structure for us. Without a climate structure analogous to Navier-Stokes to act as a beacon to climb toward in our averaging schemes, we are little better than bacteria in a test tube trying to deduce from first principles what the laboratory ought to be like.
I tease chaos theory supporters that their only hope is that chaos theory is correct so, when they are finally asked about their failed predictions by the mainstream media, they can then explain why their predictions consistently fail.
So, according to Essex and McKitrick, the theoretical approach is not possible because of internal mathematical problems. Actually, the problem is more basic. We don't have the data on which to perform our "averaging schemes." From the start, the data was completely inadequate. Lamb knew what was going to happen as he recorded in his autobiography (1997). He created the Climatic Research Unit (CRU) because
"…it was clear that the first and greatest need was to establish the facts of the past record of the natural climate in times before any side effects of human activities could well be important."
Lamb told me that he determined the need for better historical records because of the failure of the weather forecasts he gave Royal Air Force pilots flying over Europe in WWII. He thought that a better understanding of past weather patterns could provide a base for improved forecasts. Unfortunately, the objective did not last long.
"My immediate successor, Professor Tom Wigley, was chiefly interested in the prospects of world climates being changed as result of human activities, primarily through the burning up of wood, coal, oil and gas reserves…" "After only a few years almost all the work on historical reconstruction of past climate and weather situations, which first made the Unit well known, was abandoned."
As we know from the leaked emails, it was all downhill from there.
The cyclical approach is similarly limited by lack of data. How long and accurate a record is required to determine the existence of cyclical events? Apparently the mathematical answer is partly provided by the length required for spectral analysis, but that doesn't address the quality and spatial resolution of the record. Cyclical analysis has a better chance of producing reasonably accurate general forecasts because it is based on empirical data that is somewhat independent of the small scale mathematical and physical problems Essex and McKitrick and others identify.
All the manipulation, corruption, and deception carried out in climate science were possible because of the use of mathematics and statistics with inadequate data. As Prime Minister Benjamin Disraeli said, "There are three types of lies; lies, damn lies, and statistics." When the data was inadequate, the AGW proponents compounded the problems by making it up. The extent of the data fiasco was acutely displayed in Bob Tisdale's recent article and reinforced by Werner Brozek's article asking if two data sets, presumably from the same original data source, can both be right.
The 2001 IPCC Report, using data prepared by Phil Jones, Director of the CRU said the global temperature average, reportedly using the best modern instrumental database over the longest period of data available, rose 0.6°C over 100+ years. The problem is the error factor was ±0.2°C or ±33.3%. So,


text:
PROSTABLOG NZ: An insecticide used in New Zealand to control an apple pest during the 60s and early 70s may have greatly increased prostate cancer risk.
The insecticide – an organochlorine marketed under the name Kepone – caused such widespread environmental damage the US maker stopped production in 1976 and the World Health Organisation later banned it.
Researchers have now found evidence its widespread use to control a banana plant pest in the French West Indies for 30 years significantly raised the incidence of prostate cancer among men there.
A suggestion the chemical (first produced in 1958) might be dangerous came in 1964 when two New Zealand agricultural scientists, H.V. Brewerton and D.A. Slade, published the first findings about Kepone's ability to remain in edible plants.
They analysed Nelson-produced apples that had been sprayed for leaf roller as many as 13 times during growth. The apples showed heavy residues of spray on skin and in the pulp.
At present, no tolerance has been established for "Kepone", and owing to the evident high persistence of the chemical, its use cannot at present be suggested even in the early season.
However, a 1.5 parts per million tolerance would enable "Kepone" to be used on Sturmer apples up to the end of December, and under New Zealand conditions this would make a worthwhile contribution to the control of leaf roller.
In 1975, workers at the factory making the insecticide in the US were found to be suffering a mystery illness and their town was found to be heavily contaminated.
Later research in the 70s and early 80s found the chemical in Kepone, chlordecone, caused illnesses, including cancer, and infertility.
French scientists recently published their findings in the Journal of Clinical Oncology, after testing the blood of 623 French West Indian men who suffered prostate cancer and comparing them with a random sample of 671 males:
We found a significant increase in the risk of prostate cancer with increasing plasma (blood) chlordecone concentration…
…Stronger associations were observed among those with a positive family history of prostate cancer and among those who had lived in a Western country.
…Also, a significantly higher risk existed for patients older than 60 years compared to younger than 60 years.
…These findings support the hypothesis that exposure to environmental estrogens increases the risk of prostate cancer.
Chlordecone was used between 1973 and 1993 in the French West Indies as an insecticide in banana plants.
It caused widespread contamination of soil, water, animals and vegetables.
Chlordecone does not undergo significant degradation, so polluted sources continue to contaminate foodstuffs which remain the primary means of human exposure to this chemical.
Chlordecone is a known carcinogen in laboratory models and its hormonal properties and long half-life increase the possibility of acting as a carcinogen.
Read Full Post »

source: openbmb/Ultra-FineWeb


text:
CODE OF STUDENT CONDUCT
Article I: Judicial Authority
Article II: Definitions
Article III: Proscribed Conduct
Article IV: Organizational Misconduct
Article V: Judicial Procedures
The University of Alabama aspires to transmit knowledge, to develop its students, and to promote the quality of society. In seeking these goals, the University recognizes the significance of student rights. These rights include freedom of expression, autonomy, procedural protection, and the integrity of people and their property. By ensuring these individual rights, the University fosters an environment conducive to student success and well-being. The Code of Student Conduct fully respects student rights.
Of course, students have obligations as well as rights. As members of an academic community, they must observe rules that benefit their classmates and their University. Students must practice personal integrity. By so doing, they respect the dignity, rights, and property of others, both students and all members of the University community. The Code of Student Conduct thus creates an expectation of behavior that the University deems acceptable. By fulfilling these expectations, students can enjoy their own rights, while also respecting their classmates' rights and furthering the University's goals.
However, the University community, as any other, must have a system to deal with those instances when a member fails to adhere to the expectations of the community. The Code of Student Conduct describes the actions which fail to meet expectations, the process of determining when a failure has occurred, and the punishment to be imposed for such failure.

source: HuggingFaceFW/fineweb-edu


text:
I'm amazed to learn that the pottery of ancient Greece may help to improve the safety of space travel. The Israel Herald reports:
The study of the chemical and physical properties of ancient Attic pottery would help improve space missions, believe scientists.
Considering it importance, the National Science Foundation (NSF) awarded nearly 500,000 dollars to scientists from the Getty Conservation Institute, Stanford's National Accelerator Laboratory (SLAC) and the Aerospace Corporation earlier this year to study the secrets of Attic pottery.
Among other objectives, it is hoped that the project will improve our understanding of iron-spinel chemistry, which is critical to the advanced ceramics used for thermal protection in aerospace applications, such as protective tiles on the Mars Rover Sojourner, or the fleet of space shuttles, for example.
Attic pottery features red and black figures and was a fixture in ancient Greece from the sixth to fourth centuries B.C.Red-figure Attic pottery, circa 530 BC (image courtesy of Wikipedia)
The iron-spinel ceramic pigments found in Attic pottery are able to remain chemically stable at very high temperatures.
It's the degree of iron oxidation that provides the red and black coloring associating with Attic pottery.
There's more at the link.
I know that spinels are "resistant to chemical weathering and abrasion", but who came up with the idea that the use of iron-spinel compounds as a glaze in ancient pottery might be useful to or relevant for modern space technology? It blows my mind to think that the hand-made pottery of ancient Greece, well over two millennia old - long before anyone had even flown, never mind gone beyond our atmosphere into space! - might help to produce better heat-shield tiles to protect spacecraft against re-entry into atmosphere.
I'd never have made the connection. I wonder what inspired the National Science Foundation to do so? Some modern scientist must have had a brainwave...


text:
VANCOUVER - A brick unearthed decades ago at Fort Vancouver is back in the spotlight.
The brick was first discovered buried in the ground on the site around 1950, but a recent analysis of its make-up now shows the brick dates back some 2,000 years, all the way back to the Roman Empire.
One of the most interesting aspects of the brick is what was likely not supposed to be on it.
If you look closely at one of its corners you'll see two tiny paw prints. Archaeologists suspect it's the work of an ancient Roman kitty cat.
"We kind of jokingly call it the 'Celtic Kitty,' jumped up on this wet brick probably close to 2,000 years ago and memorialized itself for all eternity," said Bob Cromwell, an archaeologist at Fort Vancouver.
The big question: How in the world did this ancient brick end up in Vancouver?
Cromwell says it likely came over on an English ship where it was used as ballast, basically just weight to help balance the ship.
"Somebody in England basically recycled, or took apart, a Roman ruin or maybe a cobblestone road and it probably ended up as a ballast load in a Hudson's Bay Company ship," said Cromwell.
The ancient brick is on display inside the Fort Vancouver National historic site.
Visitors can see the brick, but because it's being stored in a special climate-controlled room, they must make a viewing appointment.


text:
California African American Museum
The California African American Museum presents African American art, history, and culture. The museum's permanent exhibit addresses life in West Africa, experiences in the American South, and the Great Migration toward the western coast. Highlights include traditional headdresses and masks. Collections include landscapes, traditional and modern arts, and other artifacts of historical note.
The museum offers exhibits, guided tours, lectures, craft activities, films, performances, readings, discussions, and a high school docent internship. Groups of 10 or more are asked to make reservations. The website offers educator resource guides for purchase.


text:
Video:Teaching Kids to Put on Coatswith Kathy Moore
Is your toddler ready to put on his or her own coat alone? This simple method makes putting a coat on feel like a game, and it's also easy to replicate.See Transcript
Transcript:Teaching Kids to Put on CoatsHi I'm Kathy Moore for About.com Parenting. Whether it's dressing to ward off winters chill, or wearing a light jacket in spring or fall, even toddlers can learn how to put on their own jacket. This program will demonstrate a simple method to teach your child to put on his own coat.
When Are Kids Ready to Put on Coats?As soon as kids can walk and stand steadily on their own, they can be taught to put on their own outer coat using this simple method.
Easy Steps to Put on CoatsPlace the coat on the floor. Lay it flat with the inside facing up. Instruct your child to stand facing the top or collar of the coat. Then have them bend over and place their arms in the sleeves like this. Once the child has his arms in the sleeves have him lift the whole coat up and over his head. Then when he brings his arms down he will have completed the task of putting on his own coat.
Watch the simple steps again:
- Place the coat on the floor
- Lay it flat with the inside facing up
- Stand facing the top or collar of the coat
- Bend over and place the arms in the sleeves
- Then lift the whole coat up and overhead
- When the arms come down you are all set
Thanks for watching. To learn more visit us on the Web at parenting.about.com.
About videos are made available on an "as is" basis, subject to the User Agreement.


text:
You must have Credits on your Balance to download this sample
An Invaluable Study with Slight Setbacks A Review of Weeks Coming Out
Pages 6 (1506 words)
In Coming out: Homosexual Politics in Britain, from the Nineteenth Century to the Present, Jeffrey Weeks tackles the objective of providing an overarching view of the tribulations suffered and victories achieved by homosexual men and women in Britain during the last century…
A closer examination, however, of how specific social events influenced homosexual identity would have greatly aided in creating an understanding of the relationship and origins homosexual identity has in British society. Thus, Weeks emphasizes the structural existence of homosexuality, while failing to consider the forces that might have established this structure.
"We tend to think now that the word 'homosexual' has an unvarying meaning, beyond time and history." Weeks writes. "In fact it is itself a product of history, a cultural artifact designed to express a particular concept." (3) Often who we define as a homosexual runs no further than the sexual acts in which a person engages. The basis of this definition, however, fails to consider what type of person is or is not a homosexual.
Weeks suggests that the reasons for crafting this shallow connotation towards homosexuality appears to have been to provide a standard on which to label permissible and impressible behavior and also to limit the number of those who are viewed as untraditional.
In addition to carefully describing the differences between historical and social aspects of homosexuality, Weeks makes sure to describe the differences in treatment towards various types of "homosexuals." Weeks pays particular considera...
Not exactly what you need?


text:
New Diabetes Guidelines May Lower Patient Medical Bills
THURSDAY, Dec. 20 (HealthDay News) -- New guidelines issued by the American Diabetes Association (ADA) Thursday may reduce the number of people who need to take blood pressure medications, and they may help more people get insurance coverage for testing their blood sugar levels.
"We're constantly looking at the data to try to make our treatment guidelines as personalized and as consistent as possible," said Dr. Robert Ratner, chief scientific and medical officer for the ADA.
And, that's exactly what happened with the ADA's first significant change in this year's guidelines. The ADA is lowering the bar for its systolic blood pressure goal -- going from less than 130 millimeters of mercury (mm/Hg) to less than 140 mm/Hg. Systolic blood pressure is the top number in a blood pressure reading.
"The early evidence suggested that greater control of blood pressure in people with diabetes might make more of a difference, so we originally set the guidelines to try to protect people with diabetes. What's changed is that we've had other studies that have been unable to show a benefit from controlling blood pressure tighter than 130/80, so we thought it was unreasonable to suggest that people control to the lower goal," Ratner explained.
By loosening the target goal for blood pressure, people can take fewer medications, which may save them money and prevent unnecessary side effects, according to Ratner.
But, the more attainable blood pressure target shouldn't be interpreted to mean that controlling blood pressure isn't important for people with diabetes. Treating high blood pressure reduces the risk of cardiovascular and kidney diseases, according to the U.S. National Heart, Lung and Blood Institute.
The second significant change in the latest guidelines recommend focusing on a person's needs and treatment goals when determining how often to check blood sugar levels.
In the past, the ADA recommended that people check their blood sugar levels three or more times a day. That recommendation was sometimes misinterpreted to mean that they only needed to check their blood sugar levels three times a day. But, most people with type 1 diabetes -- the type that always requires insulin injections or the use of an insulin pump -- check their blood sugar more often. And, their needs often change from day to day.
"A number of insurance companies interpreted that as patients only needed three glucose strips a day, but patients on multiple daily injections or insulin pumps have to test before meals and snacks, before bed, before exercise, if they have a low blood glucose and before driving. Many patients need to test six to eight times or more a day," explained Dr. Robert Zimmerman, director of the Cleveland Clinic's Diabetes Center.
"We're trying to individualize the guidelines to meet life circumstances. Many people with type 2 diabetes who are on medications don't need to do home glucose monitoring at all. But, people who use insulin may monitor their glucose levels in excess of eight to 10 times a day. What we're saying is do what you need to do to stay healthy," Ratner said.
In addition to suggesting an individualized level of blood sugar monitoring, the ADA also recommended that people who are on less intensive treatments, such as oral medications, be given education about how to respond to blood sugar numbers.
"For patients who aren't on insulin, self-monitoring has to be linked to education on what to do. Patients need guidance on what to do when the numbers are out of line. Do they need to call their doctor? Change their diet or take medicine? They have to be taught how to utilize the information," Zimmerman said.
Most people with type 1 diabetes, or those with type 2 diabetes who need to take insulin receive education on how to respond to blood sugar numbers. But, for those with type 2 diabetes who are often just on oral medications, education isn't always provided. Zimmerman said that most states mandate diabetes education, but not all do. And, in fact his state, Ohio, is one of the states that doesn't mandate diabetes education, so he welcomes the new recommendation.
The new guidelines will be published in the January 2013 issue of Diabetes Care.
Learn more about type 1 and type 2 diabetes from the U.S. National Institute of Diabetes and Digestive and Kidney Diseases.
SOURCES: Robert Ratner, M.D., chief scientific and medical officer, American Diabetes Association; Robert Zimmerman, M.D., director, Cleveland Clinic Diabetes Center, Cleveland; January 2013 Diabetes Care


Take the 2-minute tour ×
The functions c32rtomb and mbrtoc32 from / are described in the C Unicode TR (draft) as performing conversions between UTF-321 and "multibyte characters".
(...) If s is not a null pointer, the c32rtomb function determines the number of bytes needed to represent the multibyte character that corresponds to the wide character given by c32 (including any shift sequences), and stores the multibyte character representation in the array whose first element is pointed to by s. (...)
What is this "multibyte character representation"? I'm actually interested in the behaviour of the following program:
_TAG_
_TAG_
_TAG_
int main() {
 std::u32string u32 = U"this is a wide string";
 std::string narrow = "this is a wide string";
 std::string converted(1000, '\0');
 char* ptr = &converted[0];
 std::mbstate_t state {};
 for(auto u : u32) {
 ptr += std::c32rtomb(ptr, u, &state);
 converted.resize(ptr - &converted[0]);
 assert(converted == narrow);
Is the assertion in it guaranteed to hold1?
1 Working under the assumption that __STDC_UTF_32__ is defined.
share|improve this question
add comment
2 Answers
For the assertion to be guaranteed to hold true it's necessary that the multibyte encoding used by c32rtomb() be the same as the encoding used for string literals, at least as far as the characters actually used in the string.
C99 specifies that setlocale() with the category LC_CTYPE affects the behavior of the character handling functions and the multibyte and wide character functions. I don't see any explicit acknowledgement that the effect is to set the multibyte and wide character encodings used, however that is the intent.
So the multibyte encoding used by c32rtomb() is the multibyte encoding from the default "C" locale.
C++11 2.14.3/2 specifies that the execution encoding, wide execution encoding, UTF-16, and UTF-32 are used for the corresponding character and string literals. Therefore std::string narrow uses the execution encoding to represent that string.
So is the "C" locale encoding of this string the same as the execution encoding of this string?
C99 specifies that the "C" locale provides "the minimal environment" for C translation. Such an environment would include not only character sets, but also the specific character codes used. So I believe this means not only that the "C" locale must support the characters required in translation (i.e., the basic character set), but additionally that those characters in the "C" locale must use the same character codes.
All of the characters in your string literals are members of the basic character set, and therefore converting the char32_t representation to the char "C" locale representation must produce the same sequence of values as the compiler produces for the char string literal; the assertion must hold true.
I don't see any suggestion that anything beyond the basic character set is supported in a compatible way between the execution encoding and the "C" locale, so if your string literal used any characters outside the basic character set then there would not be any guarantee that the assertion would hold. Even stipulating extended characters that exist in both the execution character set and the "C" locale, I don't see any requirement that the representations match each other.
share|improve this answer
Nice answer. Just to be clear: If he adds a call to setlocale, the assertion could fail, even if his strings are entirely within the basic character set? – Nemo Nov 1 '12 at 21:00
_USER_ If setlocale() were called with an argument other than "C", yes. For example setlocale("en_US.EBCDIC") (assuming that's a supported locale with the obvious meaning) on a system where the execution encoding is ASCII compatible would cause c32rtomb() to produce EBCDIC strings while std::string narrow would remain ASCII encoded. – bames53 Nov 1 '12 at 21:16
add comment
The TR linked in the question says
At most MB_CUR_MAX bytes are stored.
which is defined (in C99) as
a positive integer expression with type size_t that is the maximum number of bytes in a multibyte character for the extended character set specified by the current locale
I believe this is sufficient evidence that the intent of the TR was to produce the multibyte characters as defined by the currently installed C locale: UTF-8 for en_US.utf8, GB18030 for zh_CN.gb18030, etc.
share|improve this answer
add comment
Your Answer


By Tracey Bryant Office of Communications and Marketing
Salt. It's toxic to most plants. So as sea water washes onto farmland during coastal storms or turns irrigation water brackish, how will farmers fare? Traditional crops like corn and soybeans have little tolerance for salt water; they simply wither and die.
Jack Gallagher and Denise Seliskar, marine botanists in UD's College of Earth, Ocean, and Environment, are experts on halophytes, plants that grow in wet, salty conditions. In the Halophyte Solutions Laboratory at the Hugh R. Sharp Campus in Lewes, and in nearby test plots outside, the researchers are working to develop seashore mallow, a native marsh plant known scientifically as Kosteletzkya pentacarpos, into a new salt-tolerant crop.
When it blooms in August and September, seashore mallow is easy to spot in Mid-Atlantic marshes — just look for the two-inch, pink, hibiscus-like flowers.
Yet seashore mallow is not only attractive, it also provides valuable products and services, the UD researchers have discovered, from biofuel and animal food to a vegetative buffer for land that otherwise would be left barren and eventually attract invasive plants.
"Seashore mallow produces seeds that are 18 percent oil by weight — oil that can be used to make biodiesel fuel," Gallagher says. "Once the oil is extracted from the seeds, about 32 percent of what is left is protein that can be used in animal feed."
The "straw" or stem of seashore mallow can be used as a feedstock for producing fiber products, such as oil-absorbent pellets, small mammal bedding, a hydroseeding medium for planting grass on road banks and even an organic kitty litter.
Seashore mallow offers a variety of other pluses to farmers facing the challenge of keeping bayside farmland productive in the face of sea level rise. As a perennial, seashore mallow is more sustainable than traditional oil seed crops because it does not need to be planted every year. And the plant's substantial root system serves as a "carbon sink" in the soil, meaning it offsets the additions the oil releases into the atmosphere when used for fuel.
Gallagher points out other advantages: as a marsh plant, seashore mallow is naturally flood-tolerant, and its deep root system makes it drought tolerant. Also, traditional farm machinery can be used to plant and harvest it.
According to Gallagher, seashore mallow can be a big aid to coastal farms.
"Planting seashore mallow will enable farmland to remain agriculturally and economically viable for a longer period than if no such halophytic crop is planted while maintaining a nutrient-absorbing buffer between farmland and the marsh fringing the bay," he says.
The hunt for "Pink August"
The UD team recently undertook a major reconnaissance mission along the Atlantic and Gulf coasts to find and collect seashore mallow for a selection and breeding program. Although easy to spot when in bloom, the plant is difficult to identify at other times because it's not a dominant plant in most marshes.
To increase their chances of finding the plant, the researchers visited numerous herbaria, some with specimens reaching back to the 1800s, to learn where their seashore mallow had been collected. Then a volunteer, Dave Lewis, used Google Earth to locate the sites on a map. When the scientists got to the locations and actually found plants, they used GPS to pinpoint the specific collection sites.
They collected both whole plants and seeds, storing them in a plastic box cooled with ice, until they returned to the Lewes campus. There, biologist Donna Hamilton continues to care for the plants in the greenhouse. Offspring of these plants are now growing in field plots irrigated with fresh and salt water.
Even though Gallagher officially retired last year, the professor emeritus comes into the laboratory every day just as he always has, eager to continue the research. The team is now studying the seashore mallow specimens and making crosses among them to develop a superior plant line with all the characteristics desired for a salt-tolerant biofuel, feed and fiber crop.
Gallagher says, "I view seashore mallow as the 'pig of the plant world', having everything but the squeal useful."
Petal Power
There's often a correlation between the number of flower petals and the number of seeds a plant yields. Although Linnaeus gave seashore mallow its species name (pentacarpos) for five, the UD team has found specimens with six petals, which generally yield six seeds. This trait is actively being selected in UD plant breeding programs.
In the pink
The bright pink, two-inch flowers of seashore mallow (Kosteletzkya pentacarpos) resemble those of a hibiscus. The blooms are a favorite of bees and hummingbirds.


text:
Has Consumption Inequality Mirrored Income Inequality?
We revisit to what extent the increase in income inequality over the last 30 years has been mirrored by consumption inequality. We do so by constructing two alternative measures of consumption expenditure, using data from the Consumer Expenditure Survey (CE). We first use reports of active savings and after tax income to construct the measure of consumption implied by the budget constraint. We find that the consumption inequality implied by savings behavior largely tracks income inequality between 1980 and 2007. Second, we use a demand system to correct for systematic measurement error in the CE's expenditure data. Specifically, we consider trends in the relative expenditure of high income and low income households for different goods with different income (total expenditure) elasticities. Our estimation exploits the difference in the growth rate of luxury consumption inequality versus necessity consumption inequality. This "double-differencing,'' which we implement in a a regression framework, corrects for mis-measurement that can systematically vary over time by good and income group. This second exercise indicates that consumption inequality has closely tracked income inequality over the period _PHONE_. Both of our measures show a significantly greater increase in consumption inequality than what is obtained from the CE's total household expenditure data directly.
We thank Yu Liu for outstanding research assistance. The views expressed herein are those of the authors and do not necessarily reflect the views of the National Bureau of Economic Research.


text:
CA1720: Identifiers should not contain type names
The name of a parameter in an externally visible member contains a data type name.
The name of an externally visible member contains a language-specific data type name.
Names of parameters and members are better used to communicate their meaning than to describe their type, which is expected to be provided by development tools. For names of members, if a data type name must be used, use a language-independent name instead of a language-specific one. For example, instead of the C# type name 'int', use the language-independent data type name, Int32.
Each discrete token in the name of the parameter or member is checked against the following language-specific data type names, in a case-insensitive manner:
In addition, the names of a parameter are also checked against the following language-independent data type names, in a case-insensitive manner:
If fired against a parameter:
Replace the data type identifier in the name of the parameter with either a term that better describes its meaning or a more generic term, such as 'value'.
If fired against a member:
Replace the language-specific data type identifier in the name of the member with a term that better describes its meaning, a language-independent equivalent, or a more generic term, such as 'value'.
Occasional use of type-based parameter and member names might be appropriate. However, for new development, no known scenarios occur where you should suppress a warning from this rule. For libraries that have previous shipped, you might have to suppress a warning from this rule.


hold the rendered visual result.
 12. fz_clear_pixmap_with_value: Fills the fz_pixmap with a color (usually white).
 13. fz_new_draw_device: Creates a fz_device to draw the rendered result.
 14. fz_lookup_device_colorspace: Gets a fz_colorspace structure, used in the fz_run_page function.
 15. fz_run_page: Renders the page to the specific fz_device.
 16. fz_free_device: Frees the resources used by the fz_device.
 17. fz_drop_pixmap: Frees the resources used by the fz_pixmap.
 18. fz_pixmap_samples: Gets the data of the rendered fz_pixmap, used to render the Bitmap.
Notice: if you use the DLL compiled from SumatraPDF
In the recent release of the SumatraPDF, in order to downsize the DLL library file, the developers decided to strip some functions when compiling the libmupdf.dll file. Consequently some functions in the fitz.h file are not compiled into the DLL file and we have to use the equivalent exported functions from the pdf.h file instead.
Writing the P/Invoke functions
Note: The chapter will show you how the P/Invoke functions are composed. If you don't care about how they came from, just skip this chapter.
Once we know about what functions we are going to use, we can start writing P/Invoke functions in C#. Firstly we begin with the following code in fitz\context.h for the fz_new_context_imp function, since it creates the fz_context instance and the following of the code will rely on that object.
fz_context *fz_new_context_imp(fz_alloc_context *alloc, fz_locks_context *locks, unsigned int max_store, const char *version);
 1. The fz_context * is the return value of the function, a pointer to a fz_context structure. In our P/Invoke function, IntPtr will be used since we don't care about the internal structure of fz_context.
 2. fz_new_context_imp is, of course, the function name.
 3. fz_alloc_context * and fz_locks_context * are the types of the first two parameters of the function. When initializing the fz_context with the fz_new_context function, we can simply pass IntPtr.Zero for those two parameters, hereby we will use IntPtr in the corresponding positions of the P/Invoke function.
 4. max_store determines the size of resources cached by the engine. The recommended size (256 << 20) provided by the header file equals 256 megabytes.
 5. version is a string passed to the function.
Here is the P/Invoke function code for the fz_new_context_imp function.
[DllImport (DLL, EntryPoint="fz_new_context_imp")]
static extern IntPtr NewContext (IntPtr alloc, IntPtr locks, uint max_store, string version);
Since the caller actually doesn't have to know about alloc, locks and max_store, we can add an overload function to make the method look neat.
const uint FZ_STORE_DEFAULT = 256 << 20;
const string MuPDFVersion = "1.6";
public static IntPtr NewContext () {
 return NewContext (IntPtr.Zero, IntPtr.Zero, FZ_STORE_DEFAULT, MuPDFVersion);
But... you may ask, "Wait a minute. How do you know that we can pass two IntPtr.Zeros and a FZ_STORE_DEFAULT to the NewContext function? And what the heck is the magic string '1.6'?" Good questions. The answer for the first question is written in fitz\context.h--"when you don't need to preallocate some memory nor set locks, you can simply use NULL". In the world of P/Invoke, NULL means IntPtr.Zero, for the first two parameters. The value of FZ_STORE_DEFAULT was also mentioned there.
The answer to the second question can be found in fitz\context.h and fitz\version.h. At first, we see the following line in context.h:
_TAG_ fz_new_context(alloc, locks, max_store) fz_new_context_imp(alloc, locks, max_store, FZ_VERSION)
If you study the example code provided by MuPDF or SumatraPDF, you can see that they used fz_new_context instead of fz_new_context_imp. However, as the above line of code shows, the fz_new_context is just a defined macro in C, which was not exposed to the C# world out of the DLL. We have to call fz_new_context_imp instead when we P/Invoke the library.
And next, we can find out the definition to FZ_VERSION in version.h.
If you pass a version number which mismatches the version of the engine, the function will return IntPtr.Zero instead of a fz_context instance. When you are compiling your own libmupdf.dll library, you shall at least take a look at the fitz\version.h file and check whether the FZ_VERSION definition matches the version parameter we pass into the function here.
Please refer to those *.h files in the fitz folder and the pdf folder when you have further questions.
Let's do the same thing to the rest functions and write P/Invoke functions accordingly. During the course we will inevitably encounter three more new structures, fz_bbox, fz_rectangle and fz_matrix, referenced by those functions listed above. They are quite simple ones. We just define them as structs in our code, according to their definitions in fitz.h. Eventually we will reach something similar to the following code ready to be used by P/Invoke.
public struct BBox
 public int Left, Top, Right, Bottom;
public struct Rectangle
 public float Left, Top, Right, Bottom;
public struct Matrix
 public float A, B, C, D, E, F;
class NativeMethods {
 const uint FZ_STORE_DEFAULT = 256 << 20;
 const string DLL = "libmupdf.dll";
 const string MuPDFVersion = "1.6";
 [DllImport (DLL, EntryPoint="fz_new_context")]
 public static IntPtr NewContext () {
 return NewContext (IntPtr.Zero, IntPtr.Zero, FZ_STORE_DEFAULT, MuPDFVersion);
 [DllImport (DLL, EntryPoint = "fz_free_context")]
 public static extern IntPtr FreeContext (IntPtr ctx);
 [DllImport (DLL, EntryPoint = "fz_open_file_w", CharSet = CharSet.Unicode)]
 public static extern IntPtr OpenFile (IntPtr ctx, string fileName);
 [DllImport (DLL, EntryPoint = "pdf_open_document_with_stream")]
 public static extern IntPtr OpenDocumentStream (IntPtr ctx, IntPtr stm);
 [DllImport (DLL, EntryPoint = "fz_close")]
 public static extern IntPtr CloseStream (IntPtr stm);
 [DllImport (DLL, EntryPoint = "pdf_close_document")]
 public static extern IntPtr CloseDocument (IntPtr doc);
 [DllImport (DLL, EntryPoint = "pdf_count_pages")]
 public static extern int CountPages (IntPtr doc);
 [DllImport (DLL, EntryPoint = "pdf_bound_page")]
 public static extern void BoundPage (IntPtr doc, IntPtr page, ref Rectangle bound);
 [DllImport (DLL, EntryPoint = "fz_clear_pixmap_with_value")]
 public static extern void ClearPixmap (IntPtr ctx, IntPtr pix, int byteValue);
 [DllImport (DLL, EntryPoint = "fz_lookup_device_colorspace")]
 public static extern IntPtr LookupDeviceColorSpace (IntPtr ctx, string colorspace);
 [DllImport (DLL, EntryPoint = "fz_free_device")]
 public static extern void FreeDevice (IntPtr dev);
 [DllImport (DLL, EntryPoint = "pdf_free_page")]
 public static extern void FreePage (IntPtr doc, IntPtr page);
 [DllImport (DLL, EntryPoint = "pdf_load_page")]
 public static extern IntPtr LoadPage (IntPtr doc, int pageNumber);
 [DllImport (DLL, EntryPoint = "fz_new_draw_device")]
 public static extern IntPtr NewDrawDevice (IntPtr ctx, IntPtr pix);
 [DllImport (DLL, EntryPoint = "fz_new_pixmap")]
 public static extern IntPtr NewPixmap (IntPtr ctx, IntPtr colorspace, int width, int height);
 [DllImport (DLL, EntryPoint = "pdf_run_page")]
 public static extern void RunPage (IntPtr doc, IntPtr page, IntPtr dev, ref Matrix transform, IntPtr cookie);
 [DllImport (DLL, EntryPoint = "fz_drop_pixmap")]
 public static extern void DropPixmap (IntPtr ctx, IntPtr pix);
 [DllImport (DLL, EntryPoint = "fz_pixmap_samples")]
 public static extern IntPtr GetSamples (IntPtr ctx, IntPtr pix);
Using the code - the flow of the program
The goal of this article is to render PDF documents into pictures. The procedure is quite straightforward.
 1. Loads the document.
 2. Iterates each page in the document.
 3. Renders each page to Bitmap and saves them to the disk.
 4. Releases allocated resources during the operation.
The skeleton of the code flow
The code is listed below.
static void Main (string[] args) {
 IntPtr ctx = NativeMethods.NewContext (); // Creates the context
 IntPtr stm = NativeMethods.OpenFile (ctx, "test.pdf"); // opens file test.pdf as a stream
 IntPtr doc = NativeMethods.OpenDocumentStream (ctx, ".pdf", stm); // opens the document
 int pn = NativeMethods.CountPages (doc); // gets the number of pages in the document
 for (int i = 0; i < pn; i++) { // iterate through each pages
 IntPtr p


text:
National Program for Sustainable Irrigation
Land & Water Australia. 2009. National Program for Sustainable Irrigation. [Online] (Updated June 3rd, 2009)
Available at: _URL_ [Accessed Sunday 12th of May 2013 07:38:16 PM ].
Irrigated agriculture produces around half of the profit generated from agriculture in Australia, a vital contribution to national and regional development.
The National Program for Sustainable Irrigation provides research and innovation to improve the environmental and productive performance of irrigation in Australia.
The Program funds and manages research projects across Australia, working at the property level with farmers, at catchment level with policy makers and planners, and at scales that cross state and territory borders.


text:
About this book
The taxation of bequests has long been and still is subject to intensive discussions in many industrialized countries. Triggered by these discussions, Verena Kley analyzes the taxation of bequests from economic perspectives, focusing on wealth transfers of very rich individuals. Given empirical findings, bequests of these individuals generate almost the entire revenues from wealth transfer taxation. Due to this, their specific preferences prove to be decisive for the optimal taxation of bequests. The author analyzes normative as well as positive implications for optimal wealth transfer taxation, accounting for a ‚capitalist spirit' – traditionally associated with the upper tail of the wealth distribution.
Behavioral Economics Inheritance and Trust Management OECD Countries Optimal Wealth Transfer Taxation Political Economics


text:
- Passivity and passiveness are nouns derived from the adjective passive.
- Both nouns mean the same thing and are often listed as synonyms.
Passive is an adjective; a word we use to describe someone or something that is not active. Someone who is lethargic can be described as passive. When we're allowing something to happen and not doing it ourselves, we're being passive.
You probably know that you can turn an adjective into a noun by adding the right suffix. In the case of the adjective passive, you can use two different suffixes to create two different nouns with the same meaning.
Meaning of Passivity and Passiveness
The two nouns in question are passivity and passiveness. If you look them up in dictionaries, you'll find that they're often listed simply as nouns derived from the adjective passive. If you manage to find them defined individually, you can expect the dictionary to tell you that passivity is the state of being passive and that passiveness is the condition of being passive. In most cases, the words are listed as being each other's synonyms.
The suffix in the word passivity—-ity—is generally used with words of Latin origin. And yes, passive is a word of Latin origin. On the other hand, the -ness in passiveness is a suffix native to the English language, and as such can be used on any word, regardless of its origin. That's why it's okay to say either passivity or passiveness, though it appears that passivity is the more common one.
Passivity and Passiveness: Examples
Passivity and passiveness are nouns that denote a state and a condition of someone or something. You can use it when you want to say that someone is not taking an active role in things going on around them, that someone is letting things go by without reacting to them, or that someone is letting something be done to them without resisting:
from Grammarly Blog


12.3 Model Interpretation
There are a number of ways to interpret a model. The commonly used methods are explaining model's performance and its predictors' importance.
Model's Performance Measure
There are many different metrics that can be used to evaluate a prediction model. Depends on the type of the model, the different metrics are used to measure its performance. Random forest models built with the Caret package from R, the default metrics are Accuracy and Kappa. We have seen them in Chapters 9, 10, and Chapter 11.
Accuracy is the percentage of correctly classified instances out of all instances. It is useful on binary classification problems because it can be clear on exactly how the accuracy breaks down across the classes through a confusion matrix.
Kappa is also called Cohen's Kappa. It is a normalized accuracy measurement. The normalization is at the baseline of random chance on the dataset. It is a more useful measure to use on problems that have an imbalance in the classes (e.g. 70-30 split for classes 0 and 1 and you can achieve 70% accuracy by predicting all instances are for class 0).
For example, our best random forest model was RF_model2. We can use these metrics to briefly explain our model's performance. Let us load model RF_model2 and print out its model details:
The detials of RF_model2
Figure 12.1: The detials of RF_model2
We can see that the model's estimated accuracy (by the model construction) is 83.16%. That is 1-OOB. Notice that the default parameters of the model are: mtry = 2 and ntree = 500.
Looking into the model's confusion matrix, the RF_model2's overall prediction errors can be interpreted based on the two classes "survived" or "perished": error on the predicted perished is 9.28% and error on the predicted survive is 28.07%. It is important to know the differences between them, as in many applications, they reflect the "positive error" and the "negative error". Depending on the interest, one class is regarded as the positive, the other will be the negative class. However, our model's performance is better on perished than on survived.
We can drill down a bit more, for example, we can check the top 10 decision trees' accuracy (error rate) among the 500 randomly generated trees by the RF model, and we can also check the average error rate among the 500 trees.
## OOB 0 1
## [1,] 0._PHONE_ 0._PHONE_ 0._PHONE_
## [2,] 0._PHONE_ 0._PHONE_ 0._PHONE_
## [3,] 0._PHONE_ 0._PHONE_ 0._PHONE_
## [4,] 0._PHONE_ 0._PHONE_ 0._PHONE_
## [5,] 0._PHONE_ 0._PHONE_ 0._PHONE_
## [6,] 0._PHONE_ 0._PHONE_ 0._PHONE_
## [7,] 0._PHONE_ 0._PHONE_ 0._PHONE_
## [8,] 0._PHONE_ 0._PHONE_ 0._PHONE_
## [9,] 0._PHONE_ 0._PHONE_ 0._PHONE_
## [10,] 0._PHONE_ 0.09392265 0._PHONE_
## OOB 0 1
## Min. :0.1582 Min. :0.08379 Min. :0.2544
## 1st Qu.:0.1650 1st Qu.:0.08925 1st Qu.:0.2807
## Median :0.1661 Median :0.09107 Median :0.2865
## Mean :0.1670 Mean :0.09298 Mean :0.2858
## 3rd Qu.:0.1684 3rd Qu.:0.09654 3rd Qu.:0.2895
## Max. :0.2192 Max. :0.16176 Max. :0.3355
To verify the constructed model's prediction accuracy, We did cross validations on the model RF_model2 and produced a CV model RF_model2_cv, We can show the results too.
## Random Forest
## 712 samples
## 8 predictor
## 2 classes: '0', '1'
## No pre-processing
## Resampling: Cross-Validated (10 fold, repeated 5 times)
## Summary of sample sizes: 641, 640, 642, 641, 640, 641,...
## Resampling results across tuning parameters:
## mtry Accuracy Kappa
## 2 0._PHONE_ 0._PHONE_
## 17 0._PHONE_ 0._PHONE_
## 32 0._PHONE_ 0._PHONE_
## The final value used for the model was mtry = 17.
The CV model confirmed the RF model's best accuracy is 84.04% and the kappa is 65.18%. But it revealed that the model has an overfitting problem. We, therefore, fine-tuned the RF model (with the different predictors that were identified by the fine tune itself). The fine-tuned model's accuracy is also around 84%.
Visualise Model's Prediction
We have said that a graph is worth hundreds of words. Visualising analytical results is important and useful. But directly visualise a model's prediction is difficult since the RF model has over 3 dimensions. Humans are not good at understanding any visual objects that have more than 3 dimensions even there are ways of visualization. So we need to find a way of reducing a model's dimension. Rtsne package from R is exactly designed for this purpose. You can check Rtsne document to find more details. Basically, Function Rtsne converts a multiple dimension dataframe's values into a 2D-coordinates. We can then use these 2d-coordinates to plot our response variable's value on it.
2D Visualization of Model RE_model2's Prediciton
Figure 12.2: 2D Visualization of Model RE_model2's Prediciton
The above code filtered the train dataset with only predictors used in RF_model2 through the features variable. It calls function Rtsne to generate two-dimension coordinates for each data sample in train based on the values of the attributes specified by features. The coordinates are stored in the sub-array Y. So we can dot plot the value of survived on the coordinates. Figure 12.2 shows the two-class distributions based on the features' values, which were used as predictors in the RF_model2.
Importance of the Model's Predictors
Another element of a model, which is worthwhile to report, is the predictors' importance. In our best random forest model RF_model2, The predictors' importance is shown in Figure 12.3.
The ordered importance of the predictors
Figure 12.3: The ordered importance of the predictors
## Sex Title Fare_pp Pclass Ticket_class Group_size
## 0.101687822 0.087587574 0.040794545 0.038645459 0.028333273 0.027816253
## Age_group Embarked
## 0.016016542 0.006786278
From Figure 12.3, we can see that the MeanDecreaseAccu and the MeanDecreaseGini measure provide a different order. The difference reflects the different evaluation metrics. Briefly,
 - Mean Decrease in Impurity (MDI), the metrics is GINI index, it can be biased towards categorical features which contain many categories.
 - Mean Decrease in Accuracy (MDA), the metrics is accuracy, it can provide low importance to other correlated features if one of them is given high importance.
If a model's performance report sets up the tasks for further analysis, then the predictors' importance report can set up the attributes to which features re-engineering should start with.


text:
Germany recently began introducing gasoline containing a higher percentage of biofuels. But consumers have so far been skittish, leading to production chaos and shortages of traditional gasoline. Some politicians have called for laws mandating that biofuels be scrapped altogether.
It began as a plan to reduce the amount of CO2 being pumped into European skies. But a European Union directive requiring gas stations to sell fuel with 10 percent ethanol content has hit a snag in Germany, where consumers are avoiding the new petrol -- known as E10 -- because it is harmful to some cars. Suppliers have had to slow down deliveries of the fuel, but extra quantities of E10 on hand have left less room for and shortages of traditional fuel in a number of stations given the extra demand.In today's news, it is portrayed everywhere as another weird and unnecessary climate protection measure; faznet calls it a result of the German "Klimaallergie" ("climate allergy"); even the taz tries to find out the culprit (chancellor Merkel?). Thus, it turns out to be another highly unpopular and questionable climate protection measure (after the introduction of the energy saving light bulbs).


text:
Date: 12 09 2008
Duration of activity: 3 hours
Group members participating: all group members
1. The Goal
The goal of the lesson 2 is to try out the ultrasonic sensor, to see how it measures the distance and to construct a LEGO robot that follows a wall.
2. The Plan
- Construct a LEGO robot with an ultrasonic sensor
- Run the sensor test program, write about the results
- Try out "Tracker Beam" application
- Make the LEGO robot follow a wall
- Make conclusions about different possible algorithms
3. The Results
There are many things that we have accomplished during the lab session 2. We have mounted the LEGO robot with ultrasonic sensor and did many experiments in order to figure out how exactly things work.
- So first of all, it is worth mentioning that we were successful to install and make things work not only on Debian (as it is thoroughly described in the entry of the first lab session) but also on Windows Vista. As there is a common knowledge that there are too many problems related to Vista and flashing, this option wasn't considered at all. Using the given USB bluetooth dongle, the installation was successful and it was possible to transfer a sample program and make in work on NXT.
- So, as mentioned, we have mounted the LEGO robot with ultrasonic sensor and played a little in order to see how well the sensor measures the distance. For that we compiled and uploaded to NXT the SonicSensorTest.java. Read more about the results in 3.1. Testing ultrasonic sensor
- First thing to do with the sensor was to make use of the fact that the robot "can feel" the distance from the objects. For that we used the sample code of Car.java and Tracker.java. It was fun to see how the robot stops when it meets an obstacle in some given distance. To read more about the conclusions of the experiment confer 3.2. Tracking experiment
- Now when we were sure that the sensor works as intended, it was time to make the wall follower. While we were preparing the NXT to use bluetooth, we called the robot Thomas. So meet Thomas (the ultrasonic robot):
We have used Philippe Hurbain's source code (that is written in NQC) as an example of how to program our wall follower. To make it work was not an easy task. Read more about lego-robot-the-wall-follower in 3.3. Building the wall follower.
3.1. Testing ultrasonic sensor
After we uploaded the program and realized that the sensor is responding to the environment, we took it to try out. We've put it against the wall in various distances. And, as the distance in the display is given in centimeters, we checked how many centimeters our sensor can catch. That infinity is measured by 255 centimeters, we realized very quickly. Now we had to check how far the sensor can be from the wall and sense it. This is what we got:
So, the sensor we used could not sense the wall further than 210 cm away. To check if the measurement is correct, we borrowed a ruler to measure by ourselves. All we could see that the sensor is (quite accurately) measuring correctly.
To see what angles to use for the sensor to sense, we used a chair and placed it in various positions in front of the sensor. It was hard to say, as we didn't have anything to measure angle, but basically it seemed the the sensor could sense the chair, standing about 1 meter away, in a little bit more than 10 degree angle. In an interesting note, if you stand in front of the sensor like half a meter away, the sensor will not pick up that there are legs in between it and the wall.
The limiting factor of the sensor is the speed of sound. From the meassurements, we conclude that the microphone can only pick up the echo signal within about 12 milliseconds. If that is correct, the sound will indeed only be able travel about two meters and back, within the time slot.
3.2. Tracking experiment
We had now tested the sensors capabilities, so it was time to make a program use them. The first program we tried out with the new sensor was Tracker.java. The Tracker program will make the robot drive itself forward or backward to a desired distance from the wall (hardcoded to 35cm).
The first thing to notice is that the system only works if there is an object in front of it within 2,1 meters. The next thing to notice is a bit more exciting. The Tracker program makes Thomas (the robot) speed-up if the wall is far away/very close. This makes the control system a proportional control system. In a feedback loop measures an "error" defined as the desired distance minus the actual distance from the wall. The measured variable -- the distance from the wall -- is then used to influence the controlled variables -- the motors. The corrections are made according to the size of the error, and not just a binary response to the environment.
What sets this program apart from previous program is only two lines:
error = distance - desiredDistance;
power = (int)(gain * error);
These are the lines that makes Thomas act more dynamically to the environment. The rest of the program is only used to make the robot go forward or backward, and to apply the power to the motors.
Now that the code has been debunked, lets look at the results we got from changing the code. The tracker program run a feedback-loop every 300 msec, which gives Thomas plenty of time to go too close to the wall, and back too far away from the wall. As a way to combat oscillation, we reduced the amount of power given to the motors when getting closer to the wall. As a result Thomas stopped oscillation, but for the wrong reasons. With only 60% (power can be a integer value between 0-100) motorpower Thomas was too heavy to move, resulting in him never reaching the desired distance.
After this tinkering about, we decided Thomas needed some more exercise, and started to rebuild him for the wall following program.
3.3. Building the wall follower
The only thing we needed to change on Thomas was to turn his sonic sensor to a 45 degree angle. So we made a turning turret with the ability to lock. To begin with the turret was mounted on the top (pictured), which put the sensor fairly high up. Later we mounted the turret on the front, making it easier for it to follow the low walls of the obstacle-course box.
The Not-quite-C-program from Philippe Hurbain was chaotic. It
- uses arbitrary constant names
- interfaces its distance sensor extremely ad-hoc
- uses to-his-sensor specific raw values
Besides this, it's fair to say that the program isn't quite C (pun intended), so the language is only recognizable, while not being familiar. All in all, there's a latent challenge in understanding its implemented algorithm, let alone convert the program to the Java/lejos API.
But that was the matter at hand. As time progressed, it appeared that the XLn-constants designate left-bounds on distance, while being measured negatively: Larger values means more close. The XRn-constants are also distance bounds, but this time they're right-bounds, with high values corresponding to less closeness. XR3 is defined but not used (!).
At this point it was chaotic, and the major steps of the algorithm were replicated instead of stringently converting the program. The program does stepwise bang-bang with steps defined by distances. I.e. within certain thresholds, applies certain corrective measures, such as having the one motor float while the other one goes ahead at full speed.
We have the luxury of measuring in centimeters, so our code's constants could be assigned some sense, and expressions like ''far from the wall'' could be quantified in some way.
Features of our algorithm
Here is the java code we ended up with:
public class TrackerMod
private static final int VERY_CLOSE_LEFT = 20;
private static final int SOMEWHAT_CLOSE_LEFT = 25;
private static final int NOT_THAT_CLOSE_LEFT = 30;
private static final int SOMEWHAT_FAR_RIGHT = 35;
private static final int VERY_FAR_RIGHT = 40;
private static final int ASSIGNED_SPEED = 70;
private static MotorPort leftMotor = MotorPort.C;
private static MotorPort rightMotor = MotorPort.B;
public static void main (String aArg)
UltrasonicSensor us = new UltrasonicSensor(SensorPort.S1);
int noObject = 255;
int distance = 0,
desiredDistance = 35, // cm
minPower = 60;
float error, gain = 0.5f;
int lmotor_speed = ASSIGNED_SPEED,
lmotor_mode = 1,
rmotor_speed = ASSIGNED_SPEED,
rmotor_mode = 1;
LCD.drawString("Pres enter.", 0, 1);
while (! Button.ENTER.isPressed());
while (! Button.ESCAPE.isPressed())
lastdistance = distance;
distance = us.getDistance();
difference_between_this_and_last = lastdistance - distance;
lmotor_speed = ASSIGNED_SPEED;
lmotor_mode = 1;
rmotor_speed = ASSIGNED_SPEED;
rmotor_mode = 1;
if (distance >= NOT_THAT_CLOSE_LEFT)
if (distance >= NOT_THAT_CLOSE_LEFT)
rmotor_speed = 0; rmotor_mode = 4; //stop (by float)
else if (distance >= SOMEWHAT_CLOSE_LEFT)
rmotor_speed = 0; rmotor_mode = 3; //stop
else if (distance >= VERY_CLOSE_LEFT)
rmotor_speed


Re: Cannot do any order and control the maxOccurs.
From: Jeni Tennison
Date: Wed, 27 Feb 2002 09:32:51 +0000
Message-ID: <_EMAIL_>
To: Christopher Birkett
CC: _EMAIL_
Hi Chris,
> XML Schema Limitation:
> 1. You cannot specify any order and have some, but
> not all, of the elements' frequency greater than one.
> To almost get around this limitation (if we
> want any order and control the frequency) we have 2
> options:
> 1) We would have to declare as
> an XML Schema list type.
> 2) We could specify any order and any
> frequency for all items (choice maxOccurs="unbounded")
A third option would be to define wrapper elements for the elements
that can repeat:
This would allow you to use xs:all to indicate that the elements
within App can go in any order:

Which would mean that the following is also legal:
The other options, as mentioned on this list recently, are:
 - to list all the possible combinations of orders; this gets unwieldy
 if you have lots of elements that are intermingled.
 - create a canonical schema in which the order is fixed; if
 necessary, you can write a simple script or stylesheet to transform
 instances into documents with this ordering
Out of interest, why is it important to you to allow elements to be in
any order?
Jeni Tennison
Received on Wednesday, 27 February 2002 04:32:58 GMT


text:
Tag Archives: Flexibility Training
The USA Gymnastics TOPs program has expanded to add a new State level of skill and physical abilities testing, but the program overall has been watered down Continue reading
While a common phrase, it is incorrect to call very flexible gymnasts double jointed especially if you want to appear knowledgeable. Continue reading
Gymnasts and coaches could learn some things about toe and foot strength and flexibility training from ballerinas who take great care of their toes and feet Continue reading
Shoulder flexibility is a hidden safety problem in gymnastics that USA Gymnastics has not done enough to publicize and eradicate. Learn what needs to be done to keep gymnasts safe. Continue reading
Flexibility is the key to looking good looking leaps and jumps. Learn what scientific studies have discovered are the fastest ways for gymnasts to improve their flexibility. Continue reading
Subject: Daughter/Flexibility vs Strength My daughter is 7 years old and is training level 4 at this time. Her coaches are amazed with her flexibility, however, her strength needs a lot of work. She seems to have fallen behind in … Continue reading
Flexibility is fortunately one of those physical attributes that can be improved simply by spending time working on it. Most top level training programs require that you meet minimum gymnastics flexibility (and strength) requirements because it speeds the learning process … Continue reading
Straddle Split: A split in which the legs are extended to the left and right, until a 180 degree angle between the legs is reached.
Static Stretching: A type of stretching in which a relaxed position is held without moving for a significant period of time. As opposed to dynamic stretching in which the limb is moved vigorously to stretch.


Big data, machine learning, AI, SaaS… we have all heard the buzzwords promising to shape the future of our economy. But what is all the hype about? And why do so many of us still work with the same tools and spread sheets as we did 20 years ago?
This webinar covers the limitations of spread sheets in price optimization and examines the advantage of cloud-based SaaS (software-as-a-service) pricing. We will also explain, why a naive use of machine learning (e.g., to measure price elasticity or segment customers) will not work in pricing.
If you want to know more about the biggest shift in pricing in decades, then watch this webinar!


text:
Sunlight, Snow, and a Twig
March 5th, 2012
We had a big snowfall last week and the snow has been melting for the last few days. I came across this little scene yesterday:
The direction to the sun is clearly marked by the twig's shadow. What's striking to me is the melt hole around the twig. Why is it shaped the way it is? The sunward face of the twig is warmed by the sun and then re-radiates infrared light that melts the snow – why didn't it preferentially melt the snow in front of the twig? This appears to be a profound mystery. So here's my attempt to explain this oddity.
Four factors are at work:
1. the incoming sunlight, which warms the front surface of the twig
2. conduction of heat from the front surface of the twig to the rear surface of the twig, and down the twig
3. convection via meltwater moving down the twig
4. convection via air warmed by the surface of the twig
None of these factors immediately explain the evidence. So I went for another walk, examining lots of twigs in the snow, and the answer became obvious: the long axis of the hole's cross section falls directly underneath the twig. In other words, it's the tilt of the twig that determines the shape of the hole. This in turn explains the process by which the hole is formed: frost forms on the twig during the night, then melts during the day. The meltwater flows partly down the twig, then at some point becomes so large and heavy that it drops off the twig. On nights with heavy frost, the meltwater drops near the top of the twig; on other nights, it flows a ways down before dropping.
Finally, there's another observation to be made here, arising from the fact that I noticed this oddity in the first place. I don't think that many people would have noticed it; why did I notice such a trivial phenomenon? I think that the answer lies in my process-heavy approach to thinking. I do not see the universe as a collection of things, I see it as a system of processes. For me, the universe is not an arbitrary collection of facts (like odd-shaped holes around twigs). Everything I see fits into the system of processes that I have learned over the decades. But this observation struck me because it did NOT fit into my system of processes. Something was awry and I had to set it straight.


text:
A PDF Form is a standard PDF document that contains Form Fields. These form fields are placed onto the PDF document using Acrobat 5, Acrobat 6 Professional or Adobe Designer and saved as a normal PDF document.
Just like their HTML counterpart PDF Forms allow the author to capture information from users by way of submitting the entered forms data.
Currently the following PDF Forms fields are available:
There are several major differences between HTML forms and PDF Forms:
HTML forms require a web browser, PDF forms require Acrobat or Adobe Reader to be filled out.
PDF Forms require Adobe Acrobat or Adobe Designer for their creation, anyone with Notepad and a web browser can create/view HTML forms.
Entered data in a HTML form is generally not saved for later use, the data is submitted to an online process. PDF Forms can save their data to various formats locally1 for later processing online or viewing in Acrobat/Reader.
To prefill a HTML form requires the construction of the entire HTML document, to prefill a PDF Form an FDF file can be constructed and later used to open the PDF with its form field data prefilled.
In a HTML form the data and structure are the same, PDF Forms have a separation between the form fields structure and its data.
Construction of a HTML form is far simpler than a PDF form due to the underlying structures of HTML and PDF.
What is FDF?
The Forms Data Format is a standard way to represent form field data. FDF files are based on PDF and have the same syntax and basic object types as PDF except an FDF doesn't need to have a Cross Reference Table.
The Forms Data Format is defined and described within the Portable Document Format specification (link), under the section for Interactive Features>Interactive Forms. It's here that you can become intimate with the inner workings, tags, objects and technical information needed to build, parse and understand FDF.
Below is an example FDF file, it describes the form fields, their properties and of course the form field data.
FDF files are not complex to create; they are text and follow a very logical structure. However when you need to programmatically creates a lot of FDF files it's useful to have a library to perform these tasks; enter the Forms Data Format Toolkit.
As mentioned the FDF Toolkit isn't something you must have to develop or parse FDF files, it does however make life a lot simpler by automating the mundane tasks of reading and writing FDF content.
There are three flavors; Unix, Java and Windows and two versions of the FDF Toolkit available from Adobe; Version 5 and Version 6.
The Unix version of the FDF Toolkit provides wrappers for C and Perl, Windows has ActiveX, Perl and C support and the Java FDF library provides classes for Servlets, JSP and J2SE/Desktop applications.
Why Use PDF Forms
There are two main reasons to use PDF Forms. The first is the Forms Data Format (FDF) and the second reason is the ability to submit entered data in one of 5 different formats.
By providing a way to abstract the entered data from the form design it allows designers and developers the opportunity to separate two disparate functions: Design and Content.
For example an online travel shop could provide dynamic quotes from a database as an FDF file and subsequently have this loaded into a standard PDF quoting template. No special user software is required - only (at a minimum) Reader.
Entered form field data can be sent to a backend process in one of the following five formats:
URL Encoded Format. This is the most common format for browsers. [application/x-www-form-urlencoded]
Multipart/form-data. If you have ever uploaded a file to a web server this is the format it is sent as. [multipart/form-data]
Forms Data Format (FDF). Essentially in the same format as you would build an FDF, this format is specific to Acrobat. [application/vnd.fdf]
XFDF format. This is an XML-encoded version of FDF. Form Data is sent represented hierarchically. [application/vnd.adobe.xfdf]
PDF format. Send the whole document in its entirety. [application/pdf]
This provides the developer with the greatest possible chance for easy integration into existing backend processes.
For example it's possible to place into a Form Field a validation script, calculation script and keystroke script effectively trapping the users wrong input, adding automatically and ensuring only the correct characters are entered.
How to Develop PDF Forms
There are currently three key Adobe tools that provide Forms authoring capabilities. Acrobat v6 Professional, Acrobat v5 and Designer. Despite its name the FDF Toolkit cannot generate form fields, it can purely describe the field name that the Data belongs to.
Adobe's latest Form tool, Designer is able to generate (automatically) PDF Forms based on Database Schema, XML Schema's and even other PDF Forms. It can have very tight integration with XML data structures providing a seamless end-to-end process for designing, validating and storing user entered data. Along with these new development abilities it's now possible to integrate PDF Forms into your pre-existing Web Services.
Where Are They Used?
The largest producer/consumer of PDF Forms that I have found is the United States Internal Revenue Service (IRS), as a rough count they have over 800 PDF forms in use today (_URL_).
In this article we looked at what a PDF form is, roughly what they look like and also how they can be generated. The next step is to look at specific examples of how they can be used in a real way.
OK, so you want to stamp your document. Maybe you need to give reviewers some advice about the document's status or sensitivity. This tip from author Ted Padova demonstrates how to add stamps with the Stamp Tool along with related comments.


text:
How do I fix the insulated underlay to the subfloor?
Follow these steps to secure the Warmup insulated underlay to the subfloor:
- Ensure that the base is clean and dry
- Roll out the underlay, foil face down (you may secure edges using sections of duct tape)
- Roll out the next section of underlay
- Remove the protective film from the self adhesive overlap
- Stick both rows together to create a damp proof situation
- Repeat until floor area is covered.


ADINA News Group
Radio-Frequency Ablation of Tissues Using
the ADINA-F Joule Heat Capability
The Joule Heat modeling in ADINA-F is used to solve problems where heating of materials occur due to the existence of an electric current. A common application of this feature is the radio-frequency (RF) ablation of tissues. This is an important medical technique used for the therapy of cardiac arrhythmias and lesions in subcortical structures of the brain. The ablation is carried out delivering a RF current (300 kHz to 1 MHz) through an electrode embedded in the treated tissue. The high current density that appears neighboring the electrode tip induces a volumetric heating due to the Joule effect. Therefore, the temperature of the tissue surrounding the electrode increases uniformly from 37 to above 50 degrees Celsius. Moreover, the temperature of the tissue must never exceed 100 °C to avoid charring and tissue micro-explosions.
The animation depicts a detail of a catheter and electrode assembly. The electrode tip is embedded in the tissue for a 60-second ablation cycle. On top of the tissue there is a blood stream flowing perpendicularly to the electrode and catheter axes. The transient simulation predicts the evolution of the temperature distribution in the tissue as well as the blood. The results can be used to optimize the design of the electrode shape in order to avoid undesirable hot spots. The simulations are also a cost-effective way of improving the quality of the therapy by studying the effect of different parameters such as blood flow rates, ablation cycle duration and electrode positioning.
ADINA logo


Redan_continues_northwest_1.jpgOne of the top priorities for today's activity at the South Adger's Wharf dig was chasing the northwestward continuation of the brick redan to the point where it connects with the brick curtain wall along East Bay Street. Under the watchful eye of archaeologists Eric Poplin and Ron Anthony, the backhoe scooped out more fill until the top of the redan was seen, and then the shovel work began. After an hour or so of hand digging, the archaeologists uncovered the continuation of the five-foot wide brick redan. As expected, it lies in a northwest diagonal line, and is located on the northwest side of a four-foot wide brick drain (probably dating from the 1850s) that slices directly through the remnants of the redan. redan_continues_northwest_2.jpgLater in the afternoon, after further fill material was removed, the crew discovered that the continuation of the redan on the northwest side of the brick drain is not quite the same as the portion uncovered earlier. The five-feet-wide wall makes a sudden transition to a four-feet width, and the slight outward slope of the wall disappears. A brief downward probe revealed the presence of a slightly wider footing, and then the resumption of the outward slope. Hmm, very curious! Further digging and three-dimensional sketching will be required to sort out these puzzling characteristics.
Two additional factors complicate the picture in the west end of Trench 2. First, there is a large amount of brick rubble just east (i.e., outside) of the redan. Poplin and Anthony don't seem phased by this rubble—they're confident that it represents the demolition of the redan in 1785. Second, there is a significant amount of debris representing the extension of the "Lower Market" over the redan fragments in 1786. Archaeologist Martha Zierden is very excited about exploring this material, and soon will be working carefully through the surviving brick floor of the old market and sifting its contents.
mayor_riley_2.jpg mayor_riley_1.jpgAbout mid-morning Charleston's mayor, Joseph P. Riley Jr., paid an executive visit to the site. Katherine Saunders, co-chair of the Walled City Task Force, provided a brief tour, and archaeologist Martha Zierden explained some of the interesting features uncovered so far. Mayor Riley's keen interest in Charleston history led to the bulk of the funding for this excavation and we owe him a great debt of gratitude. We certainly hope that the enthusiastic public support for this work and the substantial amount of scientific data recovered at South Adger's Wharf will be sufficient dividend for the city's investment.
screening_dirt_at_saw.jpg Thanks again to our volunteers, young and old(er)! Without their help we would miss finding so many important bits and pieces of the past that come up in the buckets of dirt.


text:
Know how to use "fewer" and "less"? Find out.
Systems or components, possibly from different origins, working together to perform some task. Interworking depends crucially on standards to define the interfaces between the components. The term implies that there is some difference between the components which, in the absence of common standards, would make it unlikely that they could be used together. For example, software from different companies, running on different hardware and operating systems can interwork via standard network protocols.


text: This study is to develop a micromachining technology for a light guide panel(LGP) mold, whereby micro dot patterns are formed on a LGP surface by a single injection process instead of existing screen printing processes. The micro powder blasting technique is applied to form micro dot patterns on the LGP mold surface. The optimal conditions for masking, laminating, exposure, and developing processes to form the micro dot patterns are first experimentally investigated. A LGP mold with masked micro patterns is then machined using the micro powder blasting method and the machinability of the micro dot patterns is verified. A prototype LGP is test-injected using the developed LGP mold and a shape analysis of the patterns and performance testing of the injected LGP are carried out. As an additional approach, matte finishing, a special surface treatment method, is applied to the mold surface to improve the light diffusion characteristics, uniformity and brightness of the LGP. The results of this study show that the applied powder blasting method can be successfully used to manufacture LGPs with micro patterns by just single injection using the developed mold and thereby replace existing screen printing methods.


Seesaw Information
What is Seesaw?
How do I download the seesaw app?
Using Seesaw on Your Computer or Mobile Device
Seesaw works great on any computer or device. For the best experience, bookmark on your computer. Then download the right version of the Seesaw app for your device and your students' devices for access anywhere.
How do I log into seesaw?
Email / Google Account Student Sign In (for Classroom and Home)
 1. Open the Seesaw Class app.
 2. Tap "I'm a Student".
 3. If using free Seesaw, type the Class Join code from the teacher and tap "Go"....
 4. If using Seesaw for Schools, students tap Sign in with Google or type in their school email and password to sign in.
What can parents see on seesaw?
Families only have access to their child's journal. This means you will see student work tagged with your child's name and posts the teacher tags with 'Everyone'. Families will also be able to see any comment made by another user on their child's journal posts.


text:
Microsoft announced a new column-store database technology in its SQL Server 2012 and claimed to add update ability to it in the next release.
Basically, a traditional database writes data one row at a time. With the new column-store technology, SQL Server writes data one column at a time. So, for a table with an ID and name columns and 1,000 rows of data, SQL Server writes the 1,000 IDs first and then writes the 1,000 names next.
The advantage of the column-store technology is that it becomes very quick to filter rows, if data are written this way, because most database operations belong to this category. However, its benefit is limited, if there are frequent updates to the data, such as the data in an On-Line Transactional Processing (OLTP) system.
If there are frequent updates, the column of data written will require frequent rebuild. For example, if the ID of a person changes from 10 characters to 20 characters, there will be no space to update the ID, if it is sequentially written to database column-wise. This essentially slows down the database process. Then, how does Microsoft fix this problem?
The solution to this problem is the introduction of "logical delete".
When new rows of data are added to a table, SQL Server can just append the columns of those data to the end of each individual column. So, data insert is not an issue to column-store today.
When rows of data are deleted, SQL server does not physically remove / delete the data in the column-store. Instead, it marks them as deleted in the column-store. This is called "logical delete".
When rows of data are updated, SQL Server marks those records as deleted and inserts those new rows to the end of the column-store.
As a result of the "logical delete", records marked as deleted would accumulate quickly. To remedy the growing overhead to the database, DBAs would need to add a new maintenance task to rebuild the column store by actually deleting those rows of data in the column-store. This is how Microsoft can support data update with its new column-store technology.


see any conversations that have taken place on this sheet, attachments, and comments related to proofing requests. Depending on your access level and account type, you might also see update requests, an activity log, a publish button that makes the sheet visible on a public URL, and a summary of the sheet.
Features and Use
Smartsheet makes spreadsheet data more dynamic for people who aren't experts in Excel. Each row or column can contain a drop-down menu of custom values, a contact list, a date, a checkbox, a symbol, or several other entities.
To create a simple task list, for example, you could have one column contain checkboxes and the next column over could be called Task Name. A third column could contain your Contacts List, letting you choose an Assignee for each task. Smartsheet supports the ability to assign multiple people to a task, too, as long as you choose to allow multiple contacts per cell.
That's not to suggest anyone should pay for Smartsheet if the only thing they planned to do with it is assign and track the status of tasks. But it's one example of a sheet you could make. A collaborative to-do list app, such as Todoist, would be a better tool for basic task-tracking among a team. Trello is another population option for tracking tasks among teammates. Trello is a kanban board app, meaning the tasks look like little cards arranged neatly on a board with columns. Asana and Smartsheet also have board views. The difference is in Trello, the board is the primary way to view your data, and if you want additional views, such as a calendar or Gantt chart, you need to add them. In Asana and Smartsheet, the board is just one of several included options.
Speaking of Trello, if you've used that tool in the past and are looking to upgrade to Smartsheet, you can easily transfer the data from Trello into Smartsheet with a built-in import tool.
Smartsheet card view
What Makes Smartsheet Unique?
Let's get into what makes Smartsheet unique. The app excels at adding the kind of tools you wish standard spreadsheets provided in a more user-friendly way.
For example, its conditional formatting tool lets you define parameters fill-in-the-blank style. It only takes a few clicks to set up a sheet that automatically highlights any row that has values you want to emphasize. The same is true for its report-generating system, which spits out new sheets based on your specified criteria.
You can also link cells on one sheet to cells on a different sheet, letting data flow among projects. You can create web forms, such as a client intake form, to gather data that's automatically added to the appropriate sheet. You can also create automations, something like "when X occurs, do Y." For example, when new information comes in through a client intake form, alert the team manager and automatically assign the junior team member a task to follow up with the new client within three days. Now, someone who's savvy with software might be able to make a similar system that collects and imports data from a web form, then automatically assigns tasks appropriately, but it would require knowledge of automation tools and in some cases webhooks. Plus, if the system ever breaks, you're left investigating multiple tools to identify the problem. It's simply easier to set up and manage with Smartsheet.
Another area where Smartsheet is beginning to edge out some competitors is proofing and markup tools. With Smartsheet, you can upload a file to discuss with your colleagues, and everyone can make comments on it using markup tools, such as arrows, circles, and squares. For visual materials, these kinds of markup tools make communication much clearer. While Smartsheet isn't the only project management and collaboration app to offer proofing and markup tools, very few others do. ProofHub is one of the better project management apps you'll find for proofing. Its markup tools are similar to those you get with Smartsheet.
There's a lot more you can do with Smartsheet, particularly if you opt into other tools the company provides, sometimes at an additional cost. The integration with 10,000ft mentioned previously enables time-tracking, budgeting, and resource management, for example. Another in-house product, called Bridge, lets you pull information from different places and make sense of it together, as well as automate actions that you want to happen as a result (such as sending an email). For example, let's say your business has a system for tracking shipments from suppliers. You could set up automated emails to alert the right people (whose contact information resides in a different database), depending on what happens with the shipments. Although we didn't test Bridge for this review, it sells itself as a no-code product, meaning you get a simple interface that helps you use it.
Workflow Automations
One standout feature in Smartsheet is the ability to create automations. The feature is called Workflows. If you're unfamiliar with "workflow automations," the concept is simpler than the name. It's nothing more than a formula along the lines of "When X occurs, do Y automatically." You can add other parameters, too. So for example, you might have an automation that says, "When someone marks a task as blocked, and the task status is 'in progress' or 'for review,' then alert the person assigned as the manager for that task and request an update."
Smartsheet automation
The real trick to creating automations is to have an interface where you can clearly see all the "if" and "then" statements that you want to create. Smartsheet's is pretty good. As you create an automation, it appears as a flow chart. Automations can get complicated fast, and the interface really makes it easier to make sense of them.
Smartsheet has permission levels to control which users can create automations, too.
Integration and Mobile Apps
Out of the box, Smartsheet works with a good number of other apps and services, such as Box, Dropbox, Google Drive, Salesforce, Quip, JIRA, among others. From the Account Administration page, it looks like the only supported team chat apps are Skype for Business and Google Hangouts, although if you go to Smartsheet's app marketplace, you see more options, including Slack.
If you can't find what you need, you can use Zapier to connect Smartsheet to other apps or work with Smartsheet's API.
On the mobile side, Smartsheet has apps for iOS and Android. The mobile app is well optimized in the sense that it isn't as overwhelming and dizzying as you might imagine for a spreadsheet-type application. It works best for things like catching up on discussions or proofing files, rather than building out project schedules.
Powerful Potential
Smartsheet has the potential to be a powerful project management tool. For project managers and business owners who are comfortable working in an environment that resembles a spreadsheet, it may even be more appealing than other software made to look more user-friendly. No matter what your comfort level, Smartsheet is not intimidating, even though it may take a few tutorial videos to learn your way around the app. It's relatively easy to use, and with the ability to create automations and import data from web forms, there's so much you can do with it. For an app with a lot of potential power that's simultaneously flexible and highly customizable, you'll have a hard time finding something better than Smartsheet. Just bear in mind that the app doesn't include time tracking, budgeting, and invoicing or billing tools; you can add them by paying extra for a 10,000ft account, however.
If Smartsheet sounds like more than you need, have a look at our Editors' Choice picks for project management, instead. We recommend Zoho Projects for small businesses on a budget, Teamwork as a mid-tier option, and LiquidPlanner for larger organizations with more complex needs.
About Jill Duffy