text:
Northern Lights may be blamed for Satnav cockups and GPS devices failures according to researchers from the University of Bath; adding to the already long list of potential excuses which also includes electric storms and dodgy onboard software.
The natural phenomenon, known as Aurora Borealis, apparently causes Satellite Navigation systems go berserk due to the fact that satellite signals, on which SatNav are reliant, are interrupted when passing through the Northern lights thereby causing the devices to display wrong readings.
The results, which were unveiled by scientists from the University of Bath, could have a major impact in the way satnav devices are designed and could prevent incidents where automated GPS navigation is critical.
Aurora Borealis is caused by particles that carry electric charges of up to 10 million megawatts hitting the Earth's atmosphere and causing the spectacular lights that have puzzled so many for so long.
"Anywhere that the aurora is visible, it will cause disruption [to the GPS system]," Professor Cathryn Mitchell, who headed the research process, told The Daily Telegraph
"Although most people in the UK can't see the aurora when it is happening, because of cloud or ambient light, it can still affect the GPS signal. We have just passed a minimum in activity but we are due to hit a maximum in 2012, which is when we would expect to see most disruption."
The paper have been published in the American Geophysical Union's International Journal of Space Weather.


text:
Group Activity Cards
Use groups of 4.
Materials: Grid paper, straightedges
| Do You See Your Reflection?
Each group member graphs a figure on one quadrant of a coordinate plane. The figure must include at least one point on the y-axis and one point on the x-axis.
Trade papers with another group member. Reflect the other group member's figure over the x-axis, and then reflect the entire design over the y-axis.
Share your work with the other groups.

source: HuggingFaceFW/fineweb-edu


What is the application process for the Weatherhead Scholars Program?
All applicants should submit the following documents:
1. Cover letter;
2. Curriculum vitae (five pages maximum);
3. Description of research project (three pages or less);
4. Two letters of recommendation.
Applicants should submit all materials through the online application portal. Applicants will be notified of the selection committee's decision in mid-December.
See also: All, Applying


From what is the requirement for ten adult Jewish males for certain prayers derived?
I kind of assumed this may be in some way related to Abraham's struggle to find the righteous males in the cities of Sodom and Gomorrah but I could be wrong.
 - 1
 user1738, welcome to Mi Yodeya, and thanks for the interesting question. I hope you stick around and enjoy the site. You may also wish to pick a personalized username. – msh210 Jul 24 '12 at 16:42
this is from the wikipedia page:
the talmudic requirement for ten people to be present when certain prayers are recited is sourced from the logical inference detailed in (BT Megillah 23b). The biblical text in Lev 22:32 uses the word "midst" when referring to how (in what context) God is to be sanctified and Num 16:21 uses the same word "midst" but says that things happen in the midst of a "congregation." The word "congregation" is also used to describe the collection of 10 spies Num 14:27 who reported back against the land of Israel.
Thus the Talmud deduces that 10 is a congregation, and 10 is the number in which god is sanctified -- which is connected to that specific selection of prayers.
The wiki page has much more and spells out the connections more fully.
There are three aspects to your question:
 1. Where do we learn that it is necessary to pray in a minyan ("quorum")?
 2. How do we know that the number of people in a minyan is ten?
 3. From where do we derive the features of these people (age, gender, etc)?
To take these questions in order, the oldest source that testifies to the requirement for praying in a quorum is the mishna in Megillah 4:3. It reads as follows:
אין פורסין על שמע, ואין עוברין לפני התבה, ואין נושאין את כפיהם, ואין קורין בתורה, ואין מפטירין בנביא, ואין עושין מעמד ומושב, ואין אומרים ברכת אבלים ותנחומי אבלים וברכת חתנים, ואין מזמנים בשם - פחות מעשרה. ובקרקעות - תשעה וכהן, ואדם כיוצא בהן
Not everything in the above mishna is easily understood. The following is my own rough translation:
One may not recite the Shema' responsively with its blessings¹, nor may one go before the ark [to lead the congregation - Rav Ovadiah of B.], nor [may the kohanim] raise their hands, nor may one read from the Torah, nor read the haftorah from the Prophets, nor do the standing and sitting², nor may one recite the blessing of mourners, the consolation of mourners nor the blessing of the bridegroom, nor invite [others at the meal to recite birkat hammazon] with the name [of God: "נברך לא_להינו"] - with fewer than ten people. Likewise, when it comes to [redeeming consecrated] land: nine people and the kohen [cf: Leviticus 27:14ff]. When it comes to [assessing the value of] a person, this is as before [ie: nine people and a kohen - cf: Leviticus 27:2-8].
¹ Acc. to the Ran, in the name of the Geonim, and to the Rambam, Hilkhot Tefillah 8:5.
² Acc. to all authorities, this was a mourning practice that is no longer in effect. There is some debate, however, as to when it occurred and how, but it is also mentioned in Ketubot 2:10, Bava Batra 6:7 and Ohalot 18:4.
There is nothing within this source that can tell us what the origins of this practice were, nor anything that might further delimit the identities of the ten people involved. For sociological explanations that account for the need to pray within a community, see:
 - Eric M. Meyers, "Jewish Culture in Greco-Roman Palestine" in Cultures of the Jews: A New History (ed. David Biale; New York: Schocken Books, 2002), 135-179;
 - Shaye Cohen, The Beginnings of Jewishness: Boundaries, Varieties, Uncertainties (Berkeley: University of California Press, 1999),58-59;
 - Lee Levine, The Ancient Synagogue: The First Thousand Years (2nd ed; Yale University Press, 2005), 135ff.
In an attempt to explain the origins of this law, the rabbis suggested that its roots lay in Leviticus 22:32 - ונקדשתי בתוך בני ישראל, "that I may be sanctified in the midst of the Israelites". But if sanctification in the people's midst is the source of this principle, from where is the number of people who are involved derived?
In Megillah 23b of the Babylonian Talmud, the following midrash is presented:
מנא הני מילי? אמר רבי חייא בר אבא אמר רבי יוחנן: דאמר קרא "ונקדשתי בתוך בני ישראל" - כל דבר שבקדושה לא יהא פחות מעשרה. מאי משמע? דתני רבי חייא: אתיא "תוך" "תוך". כתיב הכא "ונקדשתי בתוך בני ישראל" וכתיב התם "הבדלו מתוך העדה". ואתיא "עדה" "עדה". דכתיב התם "עד מתי לעדה הרעה הזאת". מה להלן עשרה אף כאן עשרה
From where are these matters [discussed in the mishna above] derived?
Rabbi Hiyya bar Abba says in the name of Rabbi Yohanan: since the verse says, "that I may be sanctified in the midst of the Israelites" [Leviticus 22:32], nothing that has sanctity can be with fewer than ten people.
How do we know this? Rabbi Hiyya taught: [the word] "midst" (תוך) appears twice. It says here, "that I may be sanctified in the midst of the Israelites" and it says there, "separate yourselves from the midst of this congregation" [Numbers 16:21]. [Also, the word] "congregation" (עדה) appears twice. [It says here, "separate yourselves from the midst of this congregation" and] it says there, "How much longer [must I tolerate] this wicked congregation..." [Numbers 14:27]. Just as there [with the spies] it was ten, so too here [in Leviticus 22:32] it is ten.
This style of argument, employed by Rabbi Hiyya in the gemara, is known as a gezeira shavah: literally "an equal decree", it constitutes a textual analogy made on the basis of the reappearance of a key word, regardless of context. It can be found within Hillel's seven principles (Yerushalmi, Pesachim 6.1), Ishmael's thirteen principles (Sifra, intro.) and Rabbi Eliezer's thirty-two principles (Midrash Agur). Like so many other passages in which this principle is employed, the foregoing midrash is an asmakhta': an attempt at grounding a rabbinic practice within scripture, though not representative of how that practice was originally derived.
You will have noted that none of the above sources specify any details as regards the identities of the congregants. So far as the process by which poskim arrived at the conclusion that a minyan may only be constituted of ten adult men, the following online articles will no doubt be of interest


Sign up ×
Some ill-written program has exported an Excel file with the wrong Hebrew encoding, with cryptic strings like:
ãåç ì÷åçåú äåãòåú åéîé äåìãú
Using an encoding-solver site, I found out that the original text was:
דוח לקוחות הודעות וימי הולדת
Which, by the way, means "Client report-notifications and birthdays", in Hebrew.
Is there a way to change the encoding for the entire document from within Excel?
share|improve this question
2 Answers 2
This is not a complete solution but it looks to be a step towards the solution.
The two strings are both 28 characters long which suggests a one-to-one encoding.
Displaying the two string in hexadecimal gives:
The second line is mainly the Unicode values for Hebrew letters as expected.
The conversion to get the first row appears to be:
 20 (space) unchanged
 5Dx Ex
 5Ex Fx
This is not a complete conversion chart because the Unicode values for the Hebrew letters extend from hexadecimal 591 to 5F4.
The following crude routine accepts the first string and returns the second.
Function Decode(CompactStg As String) As String
 Dim CompactChar As Integer
 Dim DecodedChar As Integer
 Dim DecodedStg As String
 Dim Pos As Integer
 DecodedStg = ""
 For Pos = 1 To Len(CompactStg)
 CompactChar = Asc(Mid(CompactStg, Pos, 1))
 Select Case CompactChar
 Case 32 To 127 'Hex 20 - 7F
 'No change
 DecodedChar = CompactChar
 Case 224 To 239 'Hex E0 - EF
 'Convert EX to 5DX
 DecodedChar = CompactChar + 1264
 Case 240 To 255 'Hex F0 - FF
 'Convert FX to 5EX
 DecodedChar = CompactChar + 1264
 End Select
 DecodedStg = DecodedStg & ChrW(DecodedChar)
 Decode = DecodedStg
End Function
I used the following routine to output the strings to the immediate window. With a few more examples you will be able to determine all the conversions. Hebrew letters hexadecimal 591 to 5C7 may also be converted by adding decimal 1264 but this cannot be the conversion for Hebrew letters 5F0 to 5F4.
Sub HexOut(Stg)
 Dim Pos
 For Pos = 1 To Len(Stg)
 Debug.Print "(" & Hex(AscW(Mid(Stg, Pos, 1))) & ")";
End Sub
Have fun!
share|improve this answer
Thanks a lot for the great effort! I'm actually looking for a solution without programming, like some internal Excel feature, because the user of the software is quite far from being a computer expert. – Adam Matan Dec 2 '11 at 16:20
My background means I almost always look for a programming solution to any problem. This can be a mistake because Excel does have some amazing non-programming functionality. Once I had noticed that the strings were the same length, the investigation was quite easy. Perhaps this information will help someone offer another approach. It may help if you identify the scale of the problem. Are we talking about a relatively small number of column headings or text values on every one of 30,000 rows? Either way I do not see this as difficult programming problem. Perhaps a expert friend would help. – Tony Dallimore Dec 2 '11 at 17:49
_USER_. I am curious. Did anything come of this? – Tony Dallimore Jan 5 '12 at 0:35
Unfortunately, no. I had to fix a workaround by exporting the data as text, and manually importing to Excel. – Adam Matan Jan 6 '12 at 14:34
 1. Save the file to.csv comma-delimited format.
 2. Open it in OpenOffice, it'll let you change the encoding to the proper one.
 3. While in OpenOffice, save the file back to.xls format.
share|improve this answer
Your Answer


New Orleans, LA weather in December 1955
Temperature for December 1955
In December 1955 the average high temperature in New Orleans, LA was 64.2°F, and this was 1.6°F cooler than the average of 65.7°F. The hottest day in December 1955 was 3 December when the temperature reached 80.1°F. Overnight the average temperature in December is 46.2°F and in 1955 the average overnight temperature was 3.1°F warmer at 49.3°F.
Precipitation for December 1955
In December the average monthly rainfall in New Orleans, LA is 3.19 inches with rain usually falling on 10 days. In December 1955 there was a total of 0.00 inches of rain, that fell on 9 days.


Gokteik Viaduct
From HighestBridges.com
Jump to: navigation, search
Gokteik Viaduct
Nawnghkio, Shan, Myanmar
335 feet high / 102 meters high
120 foot span / 37 meter span
Image by Martin Callum.
The largest railway trestle in the world upon its completion in 1901, the Gokteik Viaduct is the highest bridge in Myanmar. Located in the center of the country about 60 miles (100 kms) northeast of the largest city of Mandalay, the rail line was constructed as a way for the British Empire to expand their influence in the region. Constructed when the country was originally called Burma, the bridge was designed and fabricated by the Pennsylvania Steel Company and shipped overseas. Construction was overseen by Sir Arthur Rendel, engineer for the Burma Railroad Company. Stretching 2,260 feet (689 mtrs) from end to end, the viaduct has 14 towers that span 40 feet (12 mtrs) along with a double tower 80 feet (24 mtrs) long. These 15 towers support 10 deck truss spans of 120 feet (37 mtrs) along with six plate girder spans 60 feet (18 mtrs) long and an approach span of 40 feet (12 mtrs). Many sources have put the height of the bridge at 820 feet (250 mtrs). This is supposedly a measurement to the river level as it flows underground through a tunnel at the point it passes underneath the trestle. The true height of the bridge as measured from the rail deck to the ground on the downstream side of the tallest tower is 335 feet (102 mtrs).
Although larger concrete viaducts and steel cantilever bridges were constructed before and after Gokteik, no other conventional box tower and girder type steel trestle has ever exceeded it in size except for the monstrous Lethbridge Viaduct in Alberta, Canada which is about the same in height but more than twice the length. The Joso bridge in the U.S. state of Washington, the Poughkeepsie bridge in the U.S. state of New York and the original Kinzua viaduct in the U.S. state of Pennsylvania are the only other traditional steel trestles that are equal in size to Gokteik.
Gokteik also had the tallest bridge piers in the world at the time of its completion at 97.5 meters. The current record is now held by France's Millau Viaduct. Prior to Millau's record breaking bridge piers of 245 meters, the history of these towering structures has been almost entirely in Europe outside of two U.S. spans. Before Millau the 178 meter piers of Germany's Kochertalbrücke held the record for 25 years. Before Kocher the tallest were the 147 meter pier of Italy's Rago Viaduct. Austria held the record before Rago with the famous 145 meter tall piers of Europabrücke. Before that California's Pit River Bridge had the tallest at 109 meters.
Gokteik bridge can be reached by taking a train from Mandalay or Pyin U Lwin north towards Nawnghkio where the bridge is located about 3 miles (5 kms) further east. A round trip ticket from Mandalay to the bridge costs around $8 for foreigners. Burmese soldiers are stationed on the train as well as on top of and underneath the bridge to prevent any potential attacks.
Image by Marisa Herrera.
Image by Marisa Herrera.
Image by Marisa Herrera.
Image by Florian Grupp.
Image by Marisa Herrera.
A small trestle is located beneath the Gokteik Viaduct and was probably used to bring in materials to build the massive trestle. Image by Florian Grupp.
Gokteik Viaduct postcard.
Gokteik Viaduct satellite image. The bridge can faintly be seen in the very center of the image.
Gokteik Viaduct location map.
Personal tools


text:
The topic of discussion is the water footprint of milk, which refers to the amount of water used to produce a certain amount of milk. Milk is a staple beverage consumed worldwide, but few people are aware of the amount of water required throughout the entire milk production process. Understanding the water footprint of milk is essential in identifying ways to conserve water resources and improve sustainability in the dairy industry.
Understanding the Water Footprint
The water footprint is a measure of the amount of water that is used to produce goods and services. It takes into account the amount of water that is used in the production process, as well as the amount of water that is used to grow the crops and feed the animals that are used to produce the goods and services. The water footprint is made up of three components: blue water, green water, and grey water.
Blue water is the water that is taken from rivers, lakes, and aquifers for use in the production process. In the case of milk production, blue water is used for cleaning, cooling, and providing drinking water for the cows.
Green water is the rainwater that is used by crops to grow. In the case of milk production, green water is used to grow the grass and other crops that are fed to the cows.
Grey water is the water that is polluted as a result of the production process. In the case of milk production, grey water is produced by the cows themselves, as well as by the cleaning and cooling processes.
The water footprint of milk is relatively high compared to other products. According to the Water Footprint Network, it takes an average of 628 liters of water to produce one liter of milk. This includes both the water used in the production process and the water used to grow the crops and feed the cows.
Factors Affecting the Water Footprint of Milk
Several factors can affect the water footprint of milk. These include:
- The breed of cow
- The feed given to the cow
- The location of the farm
- The climate
Breed of Cow
Different breeds of cows have different water requirements. Some breeds require more water than others, depending on their size and milk production.
Feed Given to the Cow
The feed given to the cow is a significant factor in the water footprint of milk. Cows that are fed on pasture require less water than those that are fed on grain and other crops. This is because the pasture relies on rainwater, whereas crops require irrigation.
Location of the Farm
The location of the farm can also affect the water footprint of milk. Farms in areas with high rainfall require less irrigation and, therefore, have a lower water footprint.
The climate is another factor that can affect the water footprint of milk. In areas with high temperatures, cows require more water for cooling and drinking.
Reducing the Water Footprint of Milk
Reducing the water footprint of milk is essential for sustainable agriculture and water conservation. Several strategies can be employed to reduce the water footprint of milk.
Improving the efficiency of the production process is one way to reduce the water footprint of milk. This can be achieved by using water more efficiently in the cleaning and cooling processes, as well as by improving the efficiency of the irrigation system.
Changing the Feed
Changing the feed given to the cows is another way to reduce the water footprint of milk. Feeding cows on pasture rather than grain and other crops can significantly reduce the water requirements.
Using Rainwater Harvesting
Using rainwater harvesting can also reduce the water footprint of milk. This involves collecting rainwater and using it for irrigation and other processes.
Recycling Grey Water
Recycling grey water can also reduce the water footprint of milk. Grey water can be treated and reused for cleaning and cooling processes, reducing the amount of water required.
FAQs – Water Footprint of Milk
What is a water footprint?
A water footprint is the total amount of water used, directly or indirectly, to produce a product or service. It includes not only the water used for irrigation or livestock drinking but also the water needed for the production process, transportation, and packaging. The water footprint is usually measured in volume, and it can give insights into the environmental impact of certain products and help consumers and companies make more sustainable choices.
How is the water footprint of milk calculated?
To calculate the water footprint of milk, all the water used during the whole production chain is taken into account, from farm to dairy. This includes the water necessary for growing and irrigating the feed crops, watering the livestock, cleaning and maintaining the facilities, processing and packaging the milk, and transporting it to the market. The water footprint of milk is usually expressed as liters of water per liter of milk, and it varies depending on factors such as the region and the type of farming system used.
What is the average water footprint of milk?
The water footprint of milk varies widely depending on the location and the type of dairy farming. In general, dairy products from intensive farming systems have higher water footprints than those from extensive or organic farming. According to some estimates, the global average water footprint of a liter of milk is around 1050 liters, but this can range from 200 to 5000 liters depending on the country and the production methods.
How can we reduce the water footprint of milk?
Reducing the water footprint of milk can involve several strategies, such as improving the efficiency of irrigation and livestock watering, using more sustainable farming practices, and reducing losses during milk processing and packaging. Consumers can also help by choosing dairy products from more sustainable and environmentally-friendly sources, such as organic or grass-fed milk. Additionally, reducing food waste can also contribute to overall water savings, since wasted food also means wasted water resources.

source: m-a-p/FineFineWeb


Bookmark Email Print page
Too Friendly vs. Too Aggressive – Preferably Neither
Tax Telegraph, September 2013
Too Friendly vs. Too Aggressive – Preferably NeitherThe idea of "market value" comes up in tax legislation multiple times, yet is defined very broadly. Market value impacts the treatment of trading stock, the acquisition cost or proceeds from a sale, the value of intangible assets, restructuring, access to the small business capital gains tax (CGT) concessions and many other areas.
So what goes into determining market value?
Back in 1944, Mr Abrahams took the Federal Commissioner of Tax to the High Court over duties relating to his brother's estate. What came out of that case, in relation to market value, which is still important now is the idea that market value is "the price which a willing but not anxious vendor could reasonably expect to obtain and a hypothetical willing but not anxious purchaser could reasonably expect to have to pay … if the vendor and purchaser had got together and agreed on a price in friendly negotiation".
This raises more questions such as, "what exactly is reasonable?" and "what is friendly negotiation?"
Be Reasonable
A key aspect in using a market value is ensuring the valuation has been calculated on a reasonable basis. For example, it is unlikely that a taxpayer will get away with trying to value an original Picasso painting at $50 and then trying to argue with Tax Office that this was the market value of the painting based on the cost of canvas and oil paints.
With assets such as property, the taxpayer is expected to take into account the "highest and best use" in determining the market value. The taxpayer should take into account "the most probable use of a property which is physically possible, appropriately justified, legally permissible, financially feasible, and which results in the highest value of the property being valued." For example, a taxpayer owns a one bedroom beach shack in a prime position in Bondi with approval to build multiple apartments. If the taxpayer claims that the market value of the property is the market price of any one bedroom house in the area, their valuation may be challenged by the ATO as the highest and best use would clearly result in a higher value.
This can be an easier process with some things and a much more difficult process with others. For example, publically traded shares and in some cases property have active markets which can quickly give you a market value. Other things such as private company shares, goodwill, intellectual property and other intangibles or art can be much harder to value as often, no active market exists.
However, this does not mean that a taxpayer must spend a small fortune in acquiring multiple valuations from numerous experts in the field. Though it is naturally preferable for the valuation to be completed by a qualified professional with appropriate expertise in the specific area, it is in many cases, not a formal requirement. However, this being said, the valuation should be replicable. That is, the methods used to arrive at the valuation are explained so that another person can easily understand how the value was determined. If the process is not adequately explained, the valuation may not be accepted by the ATO.
So, now you might be thinking, "fine then, I'll just call a professional." Sure, this could give you a stronger case, however, simply obtaining a professional valuation, does not mean the ATO is obligated to accept this as the market value, especially if they do not see it as reasonable. There have been cases, where a taxpayer has obtained a formal valuation and this has been challenged by the ATO and subsequently the ATO's challenge has been upheld by the Federal Court.
Luckily for all taxpayers, the ATO has a lengthy document outlining its view of various methods and principles regarding the methods of determining market value in a variety of situations. What is clearly evident is that many of these scenarios have multiple permissible methods which can result in a reasonable result. A business, for example, can be valued based on the market value of the business, the value of the business's assets or even based on business income through discounted cash flows or capitalisation of earnings.
How friendly is too friendly?
Another fundamental aspect governing market value is the concept of dealing at arm's length. This means that a buyer and seller negotiate and deal with each other in a manner that would be expected of unrelated parties. If parties do not deal at arm's length the ATO may adjust the dealings to reflect and arm's length outcome.
Though more often than not, dealing at arm's length is an issue when a buyer and seller are related parties. However this does not mean that unrelated parties are automatically assumed to be dealing at arm's length. Agreements which have an element of "I'll scratch your back, if you scratch mine," can equally find themselves face ATO scrutiny. This is because arm's length is determined by the actual dealings between parties not just the overall relationship as demonstrated in Granby Pty Ltd v Federal Commissioner of Taxation 95 ATC 4240.
This does not necessarily mean that transactions that take place above or below market value are automatically not at arm's length. What is more important is the nature of the dealings. Any dealings that are deemed to not be at arm's length by the ATO can be challenged and the outcomes adjusted.
Why should I care?
Getting a valuation of your assets to work in your advantage (without being overly aggressive of course) can often help you save a small fortune in tax liabilities.
In areas such as CGT, the market value could directly impact your tax liability in the current year or in the future. If you give away an asset or are given an asset by a related party, your capital proceeds or cost base respectively will often be substituted with the market value of the asset. Therefore, the effective use of market value could result in a substantial benefit or cost.
Another example of the impact of market valuations arises during the sale of a business. Often the sale agreement will identify a lump sum price for the purchase of a number of assets – some being intangible (e.g. goodwill) and some tangible. Often you may find purchaser and vendor allocate different amounts to different assets. Allocating the purchase price to an asset such as copyright, patents or depreciable assets gives ongoing tax benefit to the purchaser. By way of contrast, allocating price to goodwill may give rise to a tax benefit to the vendor (e.g. the CGT discount and/or small business CGT concessions).
Eligibility to access the small business CGT concession in many people's cases hinges on satisfying the maximum net asset value ($6 million) test. Sometimes a simple change in the value of the assets can result in tax savings (or liabilities) of hundreds of thousands of dollars.
Alternatively, if a taxpayer gets it wrong or does not take the appropriate steps to justify their position, this could not only result in the ATO challenging the valuation but subsequently reassessing the tax liability. This could carry the risk of penalties for having an unsupportable position in addition to being charged interest.
It clearly is of benefit to try and get everything right the first time and have peace of mind knowing that your tax affairs are sound. Especially with market value and its broad applications, it may be helpful to get some advice or a second opinion and your local Deloitte Private tax advisor is here to help.
Contact us
Paula Capaldo
Tel +61 8 8407 7136
Steve Hernyk
Tel +61 3 6337 7060
Alice Springs
Neil McLeod
Tel +61 8 8950 7220
Geoff Cowen
Senior Partner
Tel +61 3 9671 7197
Lindsay Stanton
Tel +61 7 3308 7064
Western Sydney
Michael Clarke
Tel +61 2 9840 7277
Melissa Cabban
Tel +61 2 6263 7106
George Kyriakacis
Tel +61 8 9365 7112
Karen Green
Tel +61 8 8980 3028
Spyros Kotsopoulos
Editor – Tax Telegraph
Tel +61 2 9322 3593
Tim Maddock
Tel +61 3 6237 7065
Related links
Follow us
Talk to us


text:
This unusually tame (and chilly) Carnival has just about come to an end, which means New Orleans and its millions of visitors can hopefully plan for a return to normalcy, sans coronavirus, for Mardi Gras 2022.
So when will he revelry and parades make their return to the Crescent City?
You have more than a year to plan ahead: Fat Tuesday next year lands on March 1.
We'll let Melinda Daffin, a former NOLA.com writer, take it from here:
Why isn't Mardi Gras on the same day every year?
Because it's tied to Easter, which doesn't happen on the same day every year. Buckle up, because this involves math, astronomy and religion.
Easter falls on the first Sunday following the first ecclesiastical full moon that occurs on or after the day of the vernal equinox, March 21. That means Easter can never occur before March 22 or later than April 25.
What's an ecclesiastical full moon?
The Astronomical Applications Department of the U.S. Naval Observatory explains that "the full moon involved is not the astronomical full moon but an ecclesiastical moon (determined from Catholic Church tables) that keeps, more or less, in step with the astronomical full moon."
The AA explains that "In 1582, Christopher Clavius and a council working at the direction of Gregory XIII (Pope of the Roman Catholic Church) completed a reconstruction of the Julian Calendar producing new Easter tables."
So what does this have to do with Mardi Gras?
Mardi Gras is set 47 days before Easter, and it falls on a Tuesday between Feb. 3 and March 9. These two dates are extra special, because Mardi Gras will fall on them only once in a lifetime, each occurring roughly once every 100 to 150 years. Read more here.
Mardi Gras is also the day before Ash Wednesday, the first day of Lent, which the Catholic Church and some Protestant churches observe leading up to Easter as a time of repentance, marked by fasting, abstinence, prayer and almsgiving.
It's not the Fat Tuesday we hoped for, but the spirit of Carnival lives on today. NOLA.com has a day of live video broadcasts planned to help …
Here's the Mardi Gras schedule for the next several years:
2022: March 1
2023: Feb. 21
2024: Feb. 13
2025: March 4
2026: Feb. 17
If you want to plan for a few years in advance, or maybe even practice your "Mardi Gras" math, here is a list of Easter dates through 2299, courtesy of the Astronomical Society of South Australia.


What Does 'Voicemail Transcription Not Available' Mean?
RevBlogResourcesWhat Does 'Voicemail Transcription Not Available' Mean?
iPhone's automatic transcription of voicemails is extremely convenient for people who need readable records of their messages. But this AI-based service doesn't always work well. The voicemail transcriptions can be inaccurate, incomplete, or missing altogether. It's not uncommon to find the error message "transcript not available" when you access your visual voicemail.
This can be because the phone is a older model, needs an iOS update, or is experiencing glitches. You can troubleshoot your voicemail transcription problems by resetting your network settings. But if your iPhone voicemail transcription still isn't working, then you may need to get outside help to create text records of your messages.
Why are Voicemail Transcriptions Useful?
Voicemail transcriptions are handy for both personal and professional use. Transcriptions can give you a visual reference for information given in voicemails, such as phone numbers, appointment times, instructions, and more.
Here are just a few examples of situations in which having voicemail transcripts can be useful:
 - A construction manager receives a message from the plumbing contractor they hired. The message gives an update on their work, plan changes, and when they think they will finish their installation.
 - A law office gets voicemails from clients who are sharing important information about their cases.
 - A journalist reached out to a company for a comment on local news. The company's owner responds via voicemail.
 - A customer reaches out to a mechanic shop for a quote. They leave their name, phone number, and details about their car's problem.
 - Your family member is in the hospital, and you are receiving voicemail updates about their condition and procedures that need to be done.
 - You are going through a divorce. Your lawyer advised you to document all interactions you have with your spouse.
These are just a few of the situations where having visual voicemails could be valuable. Once you have transcripts of your messages, you can more easily organize them and make hard copies. Instead of having to spend time re-listening to the voicemails, you can just get the information you need with a quick glance.
Use Rev Voice Recorder to Transcribe iPhone Voicemails
We offer easy iPhone voicemail transcription services if you need them. All it takes is downloading the Rev Voice Recorder app in the Apple App Store. (Also available for Android)
To install the app, simply open the Apple App Store on your phone. Type "Rev Voice Recorder" into the search bar. Select the app from the results and click the "Get" button to download.
You can use the Rev app to record and save any audio that you would like to order transcriptions for. However, for voicemails, you'll need to import the audio files into the app before you can request a transcription.
 1. Go to your voicemail list, then select the voicemail you want to transcribe.
 2. In the right hand corner of the message box, there will be a share icon with an arrow.
 3. Click the share icon, then scroll down to Rev Voice Recorder in the list of apps you can send the audio file to.
 4. Once you do this, the Rev app will open and show the voicemail in your list of recordings. From here, you can click "Transcribe" to order your transcription.
 5. You will have the option to add on extra services, such as adding timestamps and speaker names to your transcript. Confirm to move on to payment.
Get Your Voicemail Transcriptions Now
Our transcriptions are made by real people who are trained to capture what's said in audio recordings with 99% accuracy. When you use the app to order transcriptions of your voicemails, you'll receive the completed text within just 12 hours. At just $1.25 per minute, our service is one of the quickest and most affordable transcription solutions available.


text:
A Field Guide to the Reptiles of South-East Asia by Indraneil Das | New Holland | September 2010 | Hardback | 376 pages | 74 colour plates | RRP: £34.99 | ISBN 9781847733474
South-East Asia is one of the richest parts of the world in terms of reptiles.
This first comprehensive guide to the reptiles of this region covers all the reptiles recorded from mainland South-East Asia, from Thailand, Myanmar, Laos, Vietnam and Cambodia to Singapore and Peninsular Malaysia, as well as the islands of the Great Sundas (including Sumatra, Java, Borneo and Bali).
A detailed account with key identification characteristics, habitat and behaviour is included for each species, from crocodiles, tortoises and turtles, to lizards and snakes.
Every recognized species is described, and 74 magnificent specially commissioned colour plates by top wildlife artists depict 700 major species in meticulous detail. Where useful, details such as plastrons (for turtles and tortoises), juveniles, variants and head patterns are also shown on the plates.
So those of you who, like me, like to know what other taxa they saw on a foreign trip in addition to the birds, will find a lot of answers here.
Buy this book from _URL_
Created: 14th Jul 2010


text:
to do with the idea that only finitely many possible values of n
? are less than n
!, whereas infinitely many are greater. There's no point in reconstructing my argument, because it was totally wrong. When I wrote a program to answer the question experimentally, it became clear that nearly two-thirds of the n
? values are less than n
!. (The results appear in the illustration above.)
You can get an inkling of what's going on here by looking at a small example, say n=3, and counting the cases in which the final product is less than 3!, or 6. For n=3 the only possible outputs of the random number generator are 1, 2 and 3, each of which appears with probability 1/3. The simplest event is that a 1 comes up on the first try, in which case the product is obviously less than 6; this happens with probability 1?3. There are two possible sequences of just two factors, namely a 2 followed by a 1 and a 3 followed by a 1; each of these outcomes has a probability of (1/3)2, or 1/9, and again the products are less than 6. A pencil-and-paper enumeration shows that there is only one other sequence of factors whose product is less than 6, namely 2, 2, 1; here the probability is 1/27. The sum of these probabilities is 1/3 + 2/9 + 1/27 = 16/27, or 0.5926. This is in agreement with the experimental results.
As n increases, the proportion of n? values less than n! converges on the value 0.6322, and the proportion that are greater tends toward 0.3678. Is there anything special about these numbers, and can we explain why this particular proportion should crop up? I think so. Note that on each iteration, the probability of getting a 1 and thereby ending the factoidal process is 1/n. That means the probability of getting anything other than a 1, and continuing the sequence of factors, is (n–1)/n. Then the probability of avoiding 1 twice in a row is ((n–1)/n)2, the probability of going on to three factors is ((n–1)/n)3, and so on. To have a high likelihood that n? will exceed n!, the chain of factors has to be extended to a length of at least n. The probability of reaching this point is ((n–1)/n)n; as n increases, this expression converges to 1/e, with a numerical value of 0.3678—just what is observed.
If most values of n? are less than n!, then the average of all n? values should also be less than n!, shouldn't it? We'll see. But first another digression, to look at a closely related function that shows how averaging is supposed to work.
A Well-Mannered Function
If you delve into the code for the factorial function and replace the multiplication sign with a plus sign, you wind up with a procedure for calculating triangular numbers—1, 3, 6, 10, 15, 21.... To see why they're called triangular, think of 10 bowling pins or 15 billiard balls. Whereas the factorial of 4 is 1x2x3x4=24, the corresponding triangular number is 1+2+3+4=10. (There is a well-known shortcut for computing the nth triangular number: n(n+1)/2. It's interesting that no comparable shortcut exists for factorials, although there are approximations.)
Having converted the n! code into a program for generating triangular numbers, we can clearly make the same change in the program for n?. The result will be a procedure that rolls an n-sided die and keeps a running sum (rather than a product) until a 1 turns up.
Sums of random variables are much better-behaved than products. With randomized triangular sums, the algorithm for calculating the arithmetic mean works flawlessly. Generate a sample of values (all for the same n), add them up, divide by the size of the sample, and you get an estimate of the mean. With a small sample, the estimate is somewhat unreliable, so that repeating the procedure is likely to produce a substantially different result. But as the sample size increases, the estimates grow more consistent. The illustration at right shows the convergence of sample means toward the true mean for 2,000 samples of various sizes.
By No Means
How different are the statistics of the factoidal process! When I first began playing with the n? function, I was curious about its average value, and so I did a quick computation with a small sample—100 repetitions of 10?. The result that came back was much larger than I had expected, in the neighborhood of 1025. When I repeated the computation several times, I continued to get enormous numbers, and furthermore they were scattered over a vast range, from less than 1020 to well over 1030. The obvious strategy was to try a larger sample in order to smooth out the fluctuations. But when I averaged factoidals 10,000 at a time, and then a million at a time, the numbers got even bigger, and the variations wider.
The illustration at left shows what I was up against. Each dot represents a sample of runs of the n? program; a dot's horizontal position indicates the sample size, and its vertical position gives the arithmetic mean calculated from that sample. In all cases the value of nis 10. It's important to emphasize that this is nota graph of n? as a function of n; the value of nis fixed. All that changes in moving from left to right across the graph is the size of the sample over which the average is computed. There is no sign of convergence here. The trend is continuously upward: The more trials in the sample, the larger the calculated mean. And because both scales in the graph are logarithmic, the apparent straight-line trend in the mean actually represents exponential growth. The "average" value of 10? is somewhere near 1040or 1050 if you average over 1,000 trials, but it rises to roughly 1090 if you go on to collect a million samples. (For comparison, 10! is roughly 106—or more precisely 3,628,800.)
The dispersion of the dots around the trend line also shows no sign of diminishing as the sample size increases. Thus the variance or standard deviation of the data is also impossible to pin down.
Odd, isn't it? Generally, if you are conducting an experiment, or making a measurement, or taking an opinion survey, you expect that collecting more data will yield greater accuracy and consistency. Here, more data just seems to make a bad situation worse.
With a closer look at the factoidal data, it's not hard to understand what's going wrong with the computation of the mean. Although the majority of 10? values are comparatively small (less than 3,628,800), every now and then the factoidal process generates an enormous product—a rogue, a monster. The larger the sample, the greater the chance that one of these outliers will be included. And they totally dominate the averaging process. If a sample of 1,000 values happens to include one with a magnitude of 10100, then even if all the rest of the data points were zero, the average would still be 1097.
The arithmetic mean is not the only tool available for characterizing what statisticians call the central tendency of a data set. There is also the geometric mean. For two numbers a and b, the geometric mean is defined as the square root of axb; more generally, the geometric mean of k numbers is the kth root of their product. The geometric mean of samples taken from the factoidal process suffers from none of the problems encountered with the arithmetic mean. It converges, though somewhat slowly, to a stable value. Moreover, it turns out that the geometric mean of n? is simply n!, so this is a highly informative measure. Perhaps it should not be a surprise that factoidals are better described by a statistic based on multiplication than by one based on addition.
The median of n? is also well-defined. The median is the midpoint value of a data set—the item that is greater than half the others and less than half. Because it merely counts the number of greater and lesser values, without considering their actual magnitudes, it is insensitive to the outliers that cause havoc with the arithmetic mean. For samples of 10? the median converges on a value near 27,000 (notably smaller than 10!).
Still another way to tame the factoidal is to take logarithms. If you determine the logarithm of each n? value, then calculate the arithmetic mean of the logarithms, the result converges very nicely. (Note that taking the mean of the logarithms is not the same as taking the logarithm of the means.) The success of this strategy does not come as a surprise. Logarithms reduce multiplication to addition. Essentially, then, taking the logarithm of the n? values converts the factoidal process into the corresponding triangular-number calculation. Logarithms are also at work behind the scenes in computing the geometric mean.
Even with other statistical methods available, it's disconcerting to face the failure of something so familiar and elementary and ingrained as the arithmetic mean. It's like stumbling into an area of mathematics where Euclid's parallel postulate no longer applies


text:
There were many revolutionaries and groups that wanted to overthrow the Qing government to re-establish Han led government. The earliest revolutionary organizations were founded outside of China, such as Yeung Ku-wan's Furen Literary Society, created in Hong Kong in 1890.
She tutored, studied at the Flying University, and began her practical scientific training (1890–91) in a chemical laboratory at the Museum of Industry and Agriculture at Krakowskie Przedmieście 66, near Warsaw's Old Town.
Two years after signing the Tesla contract, Westinghouse Electric was in trouble. The near collapse of Barings Bank in London triggered the financial panic of 1890, causing investors to call in their loans to Westinghouse Electric.
In 1890, King Béhanzin started fighting French forces in the course of the First Franco-Dahomean War. European observers noted that the women "handled admirably" in hand-to-hand combat, but fired their flintlocks from the hip rather than firing from the shoulder.


Mass Toursim - Notes
Only available on StudyMode
 - Download(s) : 84
 - Published : June 14, 2012
Open Document
Text Preview
Mass Tourism
Nhu Huynh Thi Nguyen
The World Tourism Organization's definition of tourism is: people who are traveling to and staying in places outside their usual environment for not more than one consecutive year for leisure, business and other purposes. Definition of mass tourism: Mass tourism is the act of visiting a destination with large amounts of people at one time. It means a large number of people, often on package holidays with accommodation and travel included.
What is mass tourism – and how did it become like it is today? - It's just as the definition says
- Mass tourism could only have developed with the improvements in technology, allowing the transport of large numbers of people in a short space of time to places of leisure interest, so that greater numbers of people could begin to enjoy the benefits of leisure time. – Good advertising, better technology and transportation, higher salary, wanting to know more about the unknown places, people are more stressed and would like to relax, many companies so they are fighting over the customers by lowering the prices.
Pros and cons about mass tourism.
1. Income from tourism/entrance fees may pay for management, conservation and repairs. 2.helps to promote the region to outsider investor
3. puts you "on the map",
4. the region builds more attraction for tourists that are often beneficial for the locals 5. people learning about your culture & way of life
6. you have the opportunity to meet people from other places and learn from them. 7. Low income jobs can be converted to provide a better living (e.g. fising boats used for coastal tours). 8. New infrastructure (airports roads, water and electricity supply) can benefit industries and local people. 9. Increases the size of the domestic economy (e.g. Spain was transformed from poor Mediterranean country). 10. Greater awareness of the need for, and interest in conservation of landscape, vegetation and wildlife.
1. A level of...
tracking img


text:
Turkish Journal of Physics
Self Ionization Probabilities Following De-excitation Decay of K-Shell Vacancy in Atoms Z = 10--80
The average number of ejected electrons and the probability of ion charge state distributions following K-shell ionization in atoms from Z = 10 to Z = 80 were calculated. Monte Carlo simulation technique was used to simulate all possible pathways of radiative and non-radiative transitions to fill the inner-shell ionization in excited atoms. The radiative and non-radiative branching ratios were calculated from Multiconfiguration Dirac-Fock (MCDF) and Dirac-Fock-Slater (DFS) wave functions. The average number of ejected electrons in atoms with Z = 10 is about two, because the non-radiative transitions exceed radiative transitions by 98\%. The mean number of ejected electrons increases with atomic number Z. The results of ion charge state distributions and mean ejected number agree well with available experimental values.
Atomic properties, Auger vacancy cascades, ion charge state distributions.
EL-SHEMI, ADEL M. (2004) "Self Ionization Probabilities Following De-excitation Decay of K-Shell Vacancy in Atoms Z = 10--80," Turkish Journal of Physics: Vol. 28: No. 4, Article 3. Available at: _URL_


text:
initiative and is planning a fifth one in 2021. To date, it has published over nine hundred academic digital articles in Spanish on historical and contemporary cases of women architects. In 2018, the blog was visited over one million times by engaged readers who suggested new cases to add (Figure 2). The archival work was further expanded by collaborating with other institutions and digital networks that have linked and published the articles, and the editors have participated in women-only Wikipedia edit-athons that have increased the number of women architect entries on the site from just 2% in 2015 to 8% in 2018. In addition to the use of social media such as Facebook, they took part in the radio program Arquitectos al aire, which also has a YouTube channel. Moreover, the online trend has led to concrete architectural exhibitions, the publication of architecture magazines and the e-book Nuestras Arquitectas: Re-mapeo y Nuevas Cartografías, by Inés Moisset and Carolina Quiroga. In 2016, Un día|Una arquitecta was awarded the Milka Bliznakov Research Prize of the International Archive of Women in Architecture from Virginia Tech. The jury highlighted the use of digital tools and the internet to expand archival content to a wider audience. As a political initiative, in 2017 Un día|Una arquitecta launched a signature petition, called 'Compromiso 30%', demanding a minimal involvement of female participants in professional events, including panel discussions, held in Argentina and Spain. Through digital activism and the community's participation, they exposed images of all-male or dominantly male panels.
The contributors to Arquitetas (in)visíveis (Invisible Women Architects) are less formal in their pursuit of gender equality and more expansive in their use of media. This collective began as a group of undergraduate architecture and urbanism students at the Universidade de Brasília who critically researched and collected data on historically omitted women architects. On International Women's Day 2014, Gabriela Cascelli Farinasso, Hana Augusta de Andrade, Julia Mazzutti Bastian Solé, Laura Pita Viera, and Luiza Rego Dias Coelho released the Facebook page Arquitectas (in)visíveis. An online community grew by sharing articles of interest on feminism and architecture and their initial research on 21 women architects. In the context of their institution, these young women architects (average age of 22) organised an exhibition with lectures that drew the attention of the UnBTV, the television channel of the University of Brasília. On International Women's Day 2015, they joined forces with the site ArchDaily and published a compilation of biographical entries about 48 women architects. With this data they created their own official website that is structured according to different categories (pioneers, in the shadows, architecture, urbanism, landscape architecture, social architecture, sustainable architecture) and has a blog section for discussions (Figure 2). Over time, they were invited to participate in conferences, architecture exhibitions, and TEDx Talk Brasilia. They soon realized the need to create a space of dialogue between various people researching gender issues in the built environment from various disciplinary angles, such as psychology, sociology, geopolitics, and the arts. Through an open call for papers, they published the first edition of their magazine, Pioneiras, in August 2016, and the second edition, Nas Sombras, in March 2018. In parallel, they expanded their reach of narratives to YouTube and Instagram. Also, their documentary, Poeira e Batom — 50 mulheres na construção de Brasília, has been shown at various film and feminist festivals. Nowadays, they run O tracso é Delas, a podcast in Portuguese about the traces of women builders.
The group behind Pioneer Women of American Architecture relied on large budgets for creating this historiographical website. In 2012, the aim of the Beverly Willis Architecture Foundation was to uncover a group of women born before WWII who broke sexual and racial barriers and made important contributions to North American architecture, urbanism, and interior and furniture design and to empowering young architecture students and practitioners. From a jury selection of 50 profiles of pioneer women, the directors, Mary McLeod and Victoria Rosner, selected the authors for each profile and developed a format for the project. In line with the prestige of the project, Pioneer Women of American Architecture was launched in October 2014 at the Solomon R. Guggenheim Museum. The website is straightforward and easy to use. It starts with a list of 50 cases leading to well-researched biographical entries with a complete biographical apparatus (Figure 2). The editors expressed their intention to eventually add more case studies documenting the careers of women architects in America.
These three online resources of feminist architectural history engage with new media in various degrees and provide us with free scholarly knowledge on women architects. At the same time, they also attempt to position themselves as authoritative in this expanding field. The website Pioneer Women of American Architecture has remained a canonical resource closer to the concerns of third wave feminism. Not only does it expose her-stories from women who practised in North America, omitting connections with issues of racism and sexism as a global campaign towards intersectional feminism, but it also fails to build a bridge with the new generation of female architects whom they aim to motivate to study architecture. By contrast, the Brazilian case of Arquitetas (in)visíveis is a platform targeted at young activist architects and students that invites other disciplines to discuss the patriarchal and colonial power structure in the built environment across the North/South divides. In line with Generation Z, the collective mobilises various social media to discuss racism, LGBTIQ+ rights, and fascism. Additionally, it has enhanced the architecture-related gender research in Portuguese and encouraged the networking of scholars in this minority language. Similarly, Un día|Una arquitecta has also taken advantage of a growing scene of Latin feminist-activism and the online trending topic of International Women's Day to give visibility to under-researched, non-western cases, both historical and contemporary, in the Spanish language. With the power of digitisation, the project has broken frontiers and for the first time has connected Latin American architectural researchers with Spanish-speaking emigrants in Europe and the United States. However, it has maintained the blog format since its inception and as a result, the content is not rapidly accessible nor visually appealing enough for the new generation of architects.
In the shifting ground of websites, content platforms need to actively engage the youth, who are not only mobile-native and highly integrated and dependant in social media but also socially responsible. As discrimination is still rampant in the profession, it should be also asked whether the use of biographies — a legacy of second wave feminism — is helping to achieve a more egalitarian architectural profession or if it continues to position women as vulnerable and isolated subjects in the architecture discipline.
A Community of Education and Exploration: Reframing Understandings of the Bauhaus
Elizabeth Otto, Haunted Bauhaus: Occult Spirituality, Gender Fluidity, Queer Identities, and Radical Politics, Cambridge, MA & London: MIT Press, 289 pages, 2019, ISBN: 9780262043298
Few design and architecture institutions have achieved such wide and scholarly recognition as the Bauhaus. Its centennial in 2019 unsurprisingly led to numerous exhibitions and publications that both celebrated and challenged its legacy and impact on the last century of art, architecture, and design. The MIT Press alone — which had already celebrated the school's 50th anniversary in 1969 with its translation from German of the authoritative Bauhaus: Weimar, Dessau, Berlin, Chicago (Wingler 1962) — published three new books: Bauhaus Futures (Forlano, Steenson, and Ananny 2019), Gyorgy Kepes: Undreaming the Bauhaus (Blakinger 2019), and Elizabeth Otto's Haunted Bauhaus: Occult Spirituality, Gender Fluidity, Queer Identities, and Radical Politics, reviewed here (Figure 3).
Haunted Bauhaus is an enlightening discussion of rarely told histories that Otto also shared in two volumes co-edited with Patrick Rössler: Bauhaus Bodies: Gender, Sexuality, and Body Culture in Modernism's Legendary Art School (Otto and Rössler 2019a), and Bauhaus Women: A Global Perspective (Otto and Rössler 2019b). The book discusses the embodied and politicized experiences of the Bauhäusler and Bauhäuslerin — terms describing the male and female members of the school that are used to focus on the community of individuals rather than the 'master'-student relationship — and reframes the commonly understood narrative of the Bauhaus as a paradigm of rational modernism. Otto presents instead a diversified array of 'anti-utilitarian experiments in occultism and spirituality, communal and individual expressions of gender and sexuality, and radical politics' (Otto 2019: 3). By doing so, she moves away from the small number of major figures usually discussed and makes visible those concepts and people that histories of the Bauhaus have systematically overlooked or relegated to the margins.
The title of the book refers to Avery Gordon's (2008) concept of haunting to 'illuminate how content that is repressed or unresolved can escape and manifest obliquely despite the systems that usually contain it' — in this case, the 'non-Taylorized bodies and non-normative sexualities' that 'haunt the margins of the Bauhaus' (Otto 2019: 3–4). Otto argues that

source: openbmb/Ultra-FineWeb


text:
palatogram is an image of the region of the upper surface of the vocal tract
contacted by the tongue due to a consonant. The best way to obtain such an
image is to coat the tongue with a mixture of equal parts olive oil and
activated charcoal powder and record the resulting transfer of pigment.
The process is as follows:
- To protect the subject, one should use latex type gloves and
preferably a surgical mask.
- Mix the olive oil and the activated charcoal powder.
- Apply mixture to the speaker's whole tongue with a paintbrush
or Q-Tip. NOTE: In case of dripping, one should cover the speaker's
clothes before applying the mixture.
- Ask the speaker to produce a word that contains the target sound
(The word should not include any other sounds that make contact with the
- Use a mirror (preferably a sterilized inter-oral mirror), and
place it inside the speaker's mouth at a 45O angle with respect
to the plane of the teeth.
Fig 1: Diagram showing relative position of
the elements required to record the palatogram.
- Use a camera or video camera to photograph the mirror's
reflection of the place of articulation depicted by the imprint.
- If a video camera is used, the image can be transferred
directly to a computer for further processing as described in "How to Capture Video for use on the Mac."
- Once the image has been recorded, have the speaker rinse out
his/her mouth with lemonade (or lemon juice in water).
Fig 2: Palatogram; still image digitized
from video. Orientation: Upper teeth are shown at top and
reflected in the mirror at bottom.


text:
- active driver
A device driver that implements advanced power management tasks, such as determining device idleness and performing pre-shutdown tasks. See also passive driver
- base class
In C++, the class from which another class (a subclass) inherits. It can also be used to specify a class from which all classes in a hierarchy ultimately derive (also known as a root class).
Berkeley Software Distribution. Formerly known as the Berkeley version of UNIX, BSD is now simply called the BSD operating system. The BSD portion of Darwin is based on 4.4BSD Lite 2 and FreeBSD, a flavor of 4.4BSD.
A directory in the file system that typically stores executable code and the software resources related to that code. (A bundle can store only resources.) Applications, plug-ins, frameworks, and kernel extensions are types of bundles. Except for frameworks, bundles are file packages, presented by the Finder as a single file instead of a folder. See also kernel extension
A transmission path on which signals can be dropped off or picked up by devices attached to it. Only devices addressed by the signals pay attention to them; the others discard the signals. Buses both exist within the CPU and connect it to physical memory and peripheral devices. Examples of I/O buses on Darwin are PCI, SCSI, USB, and FireWire.
- bus master
A program, usually in a separate I/O controller, that directs traffic on the computer bus or input/output paths. The bus master actually controls the bus paths on which the address and control signals flow. DMA is a simple form of bus mastering where the bus master controls I/O transfers between a device and system memory and then signals to the CPU when it has done so. See also DMA
A driver object that consumes services of some kind supplied by its provider. In a driver stack, the client in a provider/client relationship is farther away from the Platform Expert. See also provider
- command gate
A mechanism that controls access to the lock of a work loop, thereby serializing access to the data involved in I/O requests. A command gate does not require a thread context switch to ensure single-threaded access. IOCommandGate event-source objects represent command gates in the I/O Kit.
Another name for the OS X core operating system, or kernel environment. The Darwin kernel environment is equivalent to the OS X kernel plus the BSD libraries and commands essential to the BSD Commands environment. Darwin is Open Source technology.
(Direct Memory Access) A capability of some bus architectures that enables a bus controller to transfer data directly between a device (such as a disk drive) and a device with physically addressable memory, such as that on a computer's motherboard. The microprocessor is freed from involvement with the data transfer, thus speeding up overall computer operation. See also bus master
Computer hardware, typically excluding the CPU and system memory, which can be controlled and can send and receive data. Examples of devices include monitors, disk drives, buses, and keyboards.
- device driver
A component of an operating system that deals with getting data to and from a device, as well as the control of that device. A driver written with the I/O Kit is an object that implements the appropriate I/O Kit abstractions for controlling hardware.
- device file
In BSD, a device file is a special file located in
/devthat represents a block or character device such as a terminal, disk drive, or printer. If a program knows the name of a device file, it can use POSIX functions to access and control the associated device. The program can obtain the device name (which is not persistent across reboots or device removal) from the I/O Kit.
- device interface
In the I/O Kit, a mechanism that uses a plug-in architecture to allow a program in user space to communicate with a nub in the kernel that is appropriate to the type of device the program wishes to control. Through the nub the program gains access to I/O Kit services and to the device itself. From the perspective of the kernel, the device interface appears as a driver object called a user client.
- device matching
In the I/O Kit, a process by which an application finds an appropriate device interface to load. The application calls a special I/O Kit function that uses a "matching dictionary" to search the I/O Registry. The function returns one or more matching driver objects that the application can then use to load an appropriate device interface. Also referred to as device discovery.
See device driver
- driver matching
In the I/O Kit, a process in which a nub, after discovering a specific hardware device, searches for the driver or drivers most suited to drive that device. Matching requires that a driver have one or more personalities that specify whether it is a candidate for a particular device. Driver matching is a subtractive process involving three phases: class matching, passive matching, and active matching. See also personality
- driver stack
In an I/O connection, the series of driver objects (drivers and nubs) in client/provider relationships with each other. A driver stack often refers to the entire collection of software between a device and its client application (or applications).
- event source
An I/O object that corresponds to a type of event that a device driver can be expected to handle; there are currently event sources for hardware interrupts, timer events, and I/O commands. The I/O Kit defines a class for each of these event types, respectively IOInterruptEventSource, IOTimerEventSource, and IOCommandGate.
A collection of software abstractions that are common to all devices of a particular category. Families provide functionality and services to drivers. Examples of families include protocol families (such as SCSI, USB, and Firewire), storage families (disk drives), network families, and families that describe human interface devices (mouse and keyboard).
In the virtual-memory system, faults are the mechanism for initiating page-in activity. They are interrupts that occur when code tries to access data at a virtual address that is not mapped to physical memory. See also page; virtual memory
A type of bundle that packages a dynamic shared library with the resources that the library requires, including header files and reference documentation.
Note that the Kernel framework (which contains the I/O Kit headers) contains no dynamic shared library. All library-type linking for the Kernel framework is done using the
mach_kernelfile itself and kernel extensions. This linking is actually static (with vtable patch-ups) in implementation
- idle sleep
A sleep state that occurs when there has been no device or system activity for the period of time the user specifies in the Energy Saver pane of System Preferences. See also system sleep
- information property list
A property list that contains essential configuration information for bundles such as kernel extensions. A file named
Info.plist(or a platform-specific variant of that filename) contains the information property list and is packaged inside the bundle.
An asynchronous event that suspends the currently scheduled process and temporarily diverts the flow of control through an interrupt handler routine. Interrupts can be caused by both hardware (I/O, timer, machine check) and software (supervisor, system call, or trap instruction).
- interrupt handler
A routine executed when an interrupt occurs. Interrupt handlers typically deal with low-level events in the hardware of a computer system, such as a character arriving at a serial port or a tick of a real-time clock.
- I/O Catalog
A dynamic database that maintains entries for all available drivers on a Darwin system. Driver matching searches the I/O Catalog to produce an initial list of candidate drivers.
- I/O Kit
A kernel-resident, object-oriented environment in Darwin that provides a model of system hardware. Each type of service or device is represented by one or more C++ classes in a family; each available service or device is represented by an instance (object) of that class.
- I/O Kit framework
The framework that includes IOKitLib and makes the I/O Registry, user client plug-ins, and other I/O Kit services available from user space. It lets applications and other user processes access common I/O Kit object types and services. See also framework
- I/O Registry
A dynamic database that describes a collection of driver objects, each of which represents an I/O Kit entity. As hardware is added to or removed from the system, the I/O Registry changes to accommodate the addition or removal.
The complete OS X core operating-system environment, which includes Mach, BSD, the I/O Kit, drivers, file systems, and networking components. The kernel resides in its own protected memory partition. The kernel includes all code executed in the kernel task, which consists of the file
mach_kernel(at file-system root) and all loaded kernel extensions. Also called the kernel environment.
- kernel extension
(KEXT) A dynamically loaded bundle that extends the functionality of the kernel. A KEXT can contain zero or one kernel modules as well as other (sub) KEXTs, each of which can contain zero or one kernel modules. The I/O Kit, file system, and networking components of Darwin can be extended by KEXTs. See also kernel module
- kernel module
(KMOD) A binary in Mach-O format that is packaged in a kernel extension. A KMOD is the minimum unit of code that can be loaded into the kernel. See also kernel extension
A data structure used to synchronize access to a shared resource. The most common use for a lock is in multithreaded programs where multiple threads need access to global data. Only one thread can hold the lock at a time; by convention, this thread is the only one that can modify the data during this period. See also mutex
A central component of the kernel that provides such basic services and abstractions as threads, tasks, ports, interprocess communication (IPC), scheduling, physical and virtual address space


text:
By measuring the mean shifts of hundreds of lines in solar occultation spectra obtained at satellite altitudes, relative wind speeds along the lines of sight of the rays can be obtained with precisions of 5 m/sec or better at altitudes up to 100 km. It is necessary to obtain more accurate line positions or to introduce a gas sample for frequency calibration if absolute wind speeds are to be obtained.
© 1985 Optical Society of America
Original Manuscript: February 4, 1985
Published: August 1, 1985
John H. Shaw, "Atmospheric winds from occultation spectra," Appl. Opt. 24, 2433-2436 (1985)


Improved API
We just released a major update to our API and command-line client, making it much easier to integrate video builds into your own software or delivery pipeline.
For example, you can set up a CI step to deploy your application and take screen-shots of key pages, then use Narakeet to include the latest look and feel of your application into explainer videos automatically. Another common use-case for Narakeet video automation is to create several versions of a single video, for example in different languages.
Until today, integrating with our API required hosting assets yourself, which was a big barrier for many people. Our new API supports uploading files directly to Narakeet, and building directly from files on your local disk. Here is a quick example: the following command will create a video from the local directory called my-video-project, with the main video script in video.txt inside that directory.
narakeet-api-client \
 --repository-type local-dir \
 --repository my-video-project \
 --source video.txt \
 --api-key $API_KEY
For more information on how to use the Narakeet API, check out Automating video production.
For information on the command-line client tool, check out Using the Narakeet Command-line Tool.


Using ELBs and shared images
Your Synergy server routines must reside in one or more ELBs or shared images. (Although we use the term "ELB", the information in this topic applies to both ELBs and shared images, except where noted.) When you define your routines in the Method Definition Utility or attribute your code, you will include the name of the ELB, so that xfServerPlus can find the routine. The ELBs are opened and closed by xfServerPlus.
Tip
When you are designing your xfServerPlus-xfNetLink application, the ideal approach is to group related routines into ELBs. For example, you might group your utility routines (such as string handling and date calculations) into one ELB, your order entry application logic into another ELB, and your order entry data access into yet another ELB. These routines can be called by any application that can make use of them, particularly if you do not maintain global or common data inside the ELB. With remote execution of ELBs, you can position each ELB where the application that uses it is located.
Considerations and restrictions
(OpenVMS) When you create the primary shared image, link it against the secondary shared image. Note that if the call to the routine in the secondary shared image is made directly or with XCALL, you'll get an error if the secondary shared image is not linked. However, if the call is made with XSUBR, you won't get an error, and will simply have to remember to link the shared images or use one of the other options listed below to access the routine in the secondary shared image.
For more information on ELBs and shared images, see Building and Running Synergy Applications.
Defining logicals
If you use logicals to point to the directories that your ELBs or shared images reside in, and you use those logicals when defining routines in the Synergy Method Catalog, you must define the logicals so that xfServerPlus knows how to resolve them.
Defining logicals on Windows and UNIX
On Windows and UNIX, define logicals in the xfpl.ini file, which is located by default in DBLDIR. (Note that it is possible to specify a different location for xfpl.ini, as well as to have more than one xfpl.ini file; see Using the xfpl.ini file.)
The maximum length for an XFPL_LOGICAL translation value is 1,024 characters.
Important
If any of your ELBs are linked to dependent ELBs (see Considerations and restrictions), you must define the logicals for both the primary and the dependent ELBs in the xfpl.ini file.
Define logicals like this:
XFPL_LOGICAL:LOGICAL_NAME=path
Optionally, you can include another logical in the logical definition. This logical may be defined earlier in xfpl.ini or in the environment at the system level. For example:
XFPL_LOGICAL:LOGICAL_NAME=MyLogical:new_path
Note
Be sure there is a hard return (CRLF) at end of the final logical definition in your xfpl.ini file. You may want to just add a couple of blank lines at the end of the file. This will ensure that all logicals in the file are read.
Defining logicals on OpenVMS
We recommend defining logicals in the file DBLDIR:SERVER_INIT.COM.
$ DEFINE/SYS LOGICAL_NAME value
$ DEFINE/TABLE=LNM$RSDMS$MGR_port /USER LOGICAL_NAME value
where port is the port number on which xfServerPlus is running.
For additional information about defining logicals on OpenVMS, see Defining logical names for xfServer processes.


diff mbox series
[RERESEND,v9,3/9] fs: add RWF_ENCODED for reading/writing compressed data
Message ID _EMAIL_ (mailing list archive)
State New
Headers show
Series fs: interface for directly reading/writing compressed data | expand
Commit Message
Omar Sandoval May 17, 2021, 6:35 p.m. UTC
From: Omar Sandoval <_EMAIL_>
Btrfs supports transparent compression: data written by the user can be
compressed when written to disk and decompressed when read back.
However, we'd like to add an interface to write pre-compressed data
directly to the filesystem, and the matching interface to read
compressed data without decompressing it. This adds support for
so-called "encoded I/O" via preadv2() and pwritev2().
A new RWF_ENCODED flags indicates that a read or write is "encoded". If
this flag is set, iov[0].iov_base points to a struct encoded_iov which
is used for metadata: namely, the compression algorithm, unencoded
(i.e., decompressed) length, and what subrange of the unencoded data
should be used (needed for truncated or hole-punched extents and when
reading in the middle of an extent). For reads, the filesystem returns
this information; for writes, the caller provides it to the filesystem.
iov[0].iov_len must be set to sizeof(struct encoded_iov), which can be
used to extend the interface in the future a la copy_struct_from_user().
The remaining iovecs contain the encoded extent.
This adds the VFS helpers for supporting encoded I/O and documentation.
Reviewed-by: Josef Bacik <_EMAIL_>
Signed-off-by: Omar Sandoval <_EMAIL_>
---
 Documentation/filesystems/encoded_io.rst | 240 +++++++++++++++++++++++
 Documentation/filesystems/index.rst | 1 +
 fs/read_write.c | 168 ++++++++++++++--
 include/linux/encoded_io.h | 17 ++
 include/linux/fs.h | 13 ++
 include/uapi/linux/encoded_io.h | 30 +++
 include/uapi/linux/fs.h | 5 +-
 7 files changed, 460 insertions(+), 14 deletions(-)
 create mode 100644 Documentation/filesystems/encoded_io.rst
 create mode 100644 include/linux/encoded_io.h
 create mode 100644 include/uapi/linux/encoded_io.h
diff mbox series
Patch
diff --git a/Documentation/filesystems/encoded_io.rst b/Documentation/filesystems/encoded_io.rst
new file mode 100644
index 000000000000..38f1dc940331
--- /dev/null
+++ b/Documentation/filesystems/encoded_io.rst
@@ -0,0 +1,240 @@
+===========
+Encoded I/O
+===========
+
+Several filesystems (e.g., Btrfs) support transparent encoding (e.g.,
+compression, encryption) of data on disk: written data is encoded by the kernel
+before it is written to disk, and read data is decoded before being returned to
+the user. In some cases, it is useful to skip this encoding step. For example,
+the user may want to read the compressed contents of a file or write
+pre-compressed data directly to a file. This is referred to as "encoded I/O".
+
+User API
+========
+
+Encoded I/O is specified with the ''RWF_ENCODED'' flag to ''preadv2()'' and
+''pwritev2()''. If ''RWF_ENCODED'' is specified, then ''iov[0].iov_base''
+points to an ''encoded_iov'' structure, defined in ''<linux/encoded_io.h>''
+as::
+
+ struct encoded_iov {
+ __aligned_u64 len;
+ __aligned_u64 unencoded_len;
+ __aligned_u64 unencoded_offset;
+ __u32 compression;
+ __u32 encryption;
+ };
+
+This may be extended in the future, so ''iov[0].iov_len'' must be set to
+''sizeof(struct encoded_iov)'' for forward/backward compatibility. The
+remaining buffers contain the encoded data.
+
+''compression'' and ''encryption'' are the encoding fields. ''compression'' is
+''ENCODED_IOV_COMPRESSION_NONE'' (zero) or a filesystem-specific
+''ENCODED_IOV_COMPRESSION_*'' constant; see 'Filesystem support'_ below.
+''encryption'' is currently always ''ENCODED_IOV_ENCRYPTION_NONE'' (zero).
+
+''unencoded_len'' is the length of the unencoded (i.e., decrypted and
+decompressed) data. ''unencoded_offset'' is the offset from the first byte of
+the unencoded data to the first byte of logical data in the file (less than or
+equal to ''unencoded_len''). ''len'' is the length of the data in the file
+(less than or equal to ''unencoded_len - unencoded_offset''). See 'Extent
+layout'_ below for some examples.
+
+If the unencoded data is actually longer than ''unencoded_len'', then it is
+truncated; if it is shorter, then it is extended with zeroes.
+
+''pwritev2()'' uses the metadata specified in ''iov[0]'', writes the encoded
+data from the remaining buffers, and returns the number of encoded bytes
+written (that is, the sum of ''iov[n].iov_len for 1 <= n < iovcnt''; partial
+writes will not occur). At least one encoding field must be non-zero. Note that
+the encoded data is not validated when it is written; if it is not valid (e.g.,
+it cannot be decompressed), then a subsequent read may return an error. If the
+offset argument to ''pwritev2()'' is -1, then the file offset is incremented by
+''len''. If ''iov[0].iov_len'' is less than ''sizeof(struct encoded_iov)'' in
+the kernel, then any fields unknown to user space are treated as if they were
+zero; if it is greater and any fields unknown to the kernel are non-zero, then
+''pwritev2()'' returns -1 and sets errno to ''E2BIG''.
+
+''preadv2()'' populates the metadata in ''iov[0]'', the encoded data in the
+remaining buffers, and returns the number of encoded bytes read. This will only
+return one extent per call. This can also read data which is not encoded; all
+encoding fields will be zero in that case. If the offset argument to
+''preadv2()'' is -1, then the file offset is incremented by ''len''. If
+''iov[0].iov_len'' is less than ''sizeof(struct encoded_iov)'' in the kernel
+and any fields unknown to user space are non-zero, then ''preadv2()'' returns
+-1 and sets errno to ''E2BIG''; if it is greater, then any fields unknown to
+the kernel are returned as zero. If the provided buffers are not large enough
+to return an entire encoded extent, then ''preadv2()'' returns -1 and sets
+errno to ''ENOBUFS''.
+
+As the filesystem page cache typically contains decoded data, encoded I/O
+bypasses the page cache.
+
+Extent layout
+-------------
+
+By using ''len'', ''unencoded_len'', and ''unencoded_offset'', it is


text:
FIRUZ KAZEMZADEH: One of the First USCIRF Commissioners Dies
USCIRF Expresses Its Deepest Regrets at the Passing of a Founder
WASHINGTON, DC – The U.S. Commission on International Religious Freedom (USCIRF) was saddened to learn that on May 17 Dr. Firuz Kazemzadeh died. He was a professor emeritus of history at Yale, a distinguished member of the American Baha'i community, and a tireless champion of international religious freedom. In the accompanying picture, Dr. Kazemzadeh is shown (right) at a USCIRF hearing on Sudan in 2000.
Dr. Kazemzadeh was one of the first commissioners appointed to the U.S. Commission on International Religious Freedom (USCIRF), having been chosen by then President Bill Clinton in May 1999. The U.S. Congress established the Commission in the International Religious Freedom Act of 1998 (IRFA). Dr. Kazemzadeh was a leader of the American Baha'i community serving on the National Spiritual Assembly of the Baha'is of the United States (the elected Baha'i national governing council) for nearly four decades. In addition, he was a scholar and professor emeritus at Yale University.
USCIRF Chair Thomas J. Reese, S.J., said, on behalf of the Commission, that, "It was leaders such as Dr. Kazemzadeh who helped forge USCIRF into a strong and vibrant voice for religious freedom throughout the world. As we look to IRFA's 20th anniversary in 2018, we know the debt of gratitude we owe individuals such as Dr. Kazemzadeh. He spoke loudly and continuously about the importance of the freedom of religion or belief and ensured that it was always on the U.S. foreign policy agenda. We have dedicated ourselves to the same cause and will carry on in his spirit and memory."
In 2001, then U.S. Senate Majority Leader Tom Daschle reappointed Dr. Kazemzadeh to a second two-year term. He served as a commissioner until 2003 and as Vice Chair from 2001 to 2002. In response to his reappointment, Dr. Kazemzadeh said, "The struggle for religious freedom, like the struggle for the abolition of slavery or the exploitation of child labor will be a long and difficult one, but the principles embodied in the Universal Declaration of Human Rights will triumph and the Commission will contribute to their eventual triumph."
The U.S. Commission on International Religious Freedom is an independent, bipartisan U.S. federal government commission, the first of its kind in the world. USCIRF reviews the facts and circumstances of religious freedom violations and makes policy recommendations to the President, the Secretary of State, and Congress. USCIRF Commissioners are appointed by the President and the Congressional leadership of both political parties. To interview a Commissioner, please contact USCIRF at _EMAIL_ or John D. Lawrence, Director of Communications (_EMAIL_/_PHONE_)


text:
flat biconic antenna
electric field strength
An interest to pulsed electromagnet fields emission is supported by a number of applications. These include ultra-wideband radio links and radiolocation as well as functional defeat of radioelectronics means. Ultra-wideband planar biconic antennas are the promising type of radiators for these applications. Methods enabling to pursue estimation of field time dependence of plane biconic antennas in a predesigned watch point are absent in literature. These methods are needed, for example, for the tasks solution of functional defeat, where necessary to know peak value and pulse duration of electric field strength in a point disposition of defeatable radioelectronics mean. The work goal consists in a development of the methods of estimation space-time dependence of electric field strength of the flat biconic antenna in far radiation zone at the he r initiating pulse. For the task solution plane conic antenna radiator are considered in the form of continuous totality of dipole antennas equi-distributed in sector of radiator aperture and electric field strength of antenna is calculated on the principle of superposition – such as resultant of vectors of fields tension are creating each dipole antennas. Electric field strength of dipole antenna was determined on the basis of antenna model in the form of transmission line. Calculations of temporal dependences of tension field components for antenna constrained parameters, initiating pulse and observing point coordinates were performed per designed methods. Consequently it is established that field amplitude-time characteristics subject to duration of initiating pulse and direction on to watch point. Also it is established dependence of antenna directional antenna properties from the initiating pulse duration.
- Ramzejj V. CHastotno nezavisimye
antenny. M.: Mir. 1968.
- Sverkhshirokopolosnye antenny / Per. s angl. pod red. L.S. Benensona.M.: Mir. 1964.
- Ashikhmin A.V., Marshakov A.P., Preobrazhenskijj A.P. Analiz
napravlennykh svojjstv ploskogo bikonicheskogo vibratora // Vestnik VGU. Ser.
fizika, matematika. 2005.
№ 1. S. 13–19.
- Ajjzenberg G.Z. Antenny ultrakorotkikh voln.
M.: Svjazizdat. 1957.
- Dzhekson Dzh. Klassicheskaja ehlektrodinamika. M.: Mir.
- Volkov A.A. Metodika i rezultaty rascheta polja izluchenija bikonicheskojj antenny pri
impulsnom vozbuzhdenii // Antenny. 2011. Vyp. 9 (172). S.


text:
Space Blaster Sound Effect Activity
Space Sound Maker (Pew Pew Blaster SFX)
Objective: You can make a sound effect generator that sounds like a space blaster! It is perfect for Star Wars Day, so gather up your materials and get started! Pew pew pew!
Difficulty Level: Easy (ages 8-14)/Medium (ages 6-8)
Download (PDF): Space Blaster Sound Effect Activity
- Large paper or plastic cup
Cut two lengths of string about 2 feet long, and tie them to either side of one end of the Slinky (one on each side of the same end).
Hold the Slinky by the strings and let it dangle, then stick the foam cup between two of the coils.
Lightly pull the Slinky back and let it go. The cup will amplify the sound and you can make great sound effects!
What happens if you use a different size of cup?
What happens if you put the cup at different places on the Slinky?
What's the Science?
When an object vibrates, it causes tiny air molecules to move. These tiny invisible particles bump into each other, traveling until they reach our ears. The outside part of our ear, called the pinna, is shaped so it funnels the air molecules down into the ear, where they bounce off the stretchy membrane we call the eardrum.
When the membrane bounces, it also vibrates, making the tiny bones in your inner ear vibrate as well. This helps send the vibrations into a curvy organ sort of shaped like a seashell, called the cochlea, where they are turned into electrical impulses that go to your brain, and we process them as sounds.
Not all sounds move at the same speed! When the end of the Slinky hit the floor, vibrations traveled back up it and were amplified, or made more powerful, by the cup. The cup is hollow and full of air, so when it is vibrated, there is a lot of space for the air molecules to move around in. We perceive this as the sound being louder.
Some of the vibrations moved slower than others. The slower vibrations make sounds that we perceive as being lower in pitch. Faster-moving soundwaves make sounds that we perceive as higher in pitch. The faster soundwaves get to our ears first, and then the slower soundwaves follow. We hear the higher-pitched blaster noise first, then the lower one.
Now, take the cup off your Slinky. Wrap the strings around your fingers and gently touch them to your ears. Let the Slinky fall to the ground again. What do you hear?
Star Wars Trivia:
Did you ever wonder who decided what a lightsaber sounds like?
Someone had to imagine it first, then think how to design that sound! Many of the sound effects in the Star Wars films were designed by Ben Burtt.
Some of the sounds Ben created as part of the Star Wars universe include R2D2's beeps, whistles, and chirps; lightsaber humming, blaster guns firing, Darth Vadar's mechanized breathing, and Ewokese, the language spoken by the fierce Endor natives.
Before the first Star Wars film (Star Wars Episode IV: A New Hope) was released in 1977, most science fiction movies used electronic sounds for spaceships and futuristic technology. Ben decided that for Star Wars, he wanted to use "found sounds" to create effects.
He used the sound of a film projector motor blended with feedback from an old television to create the low hum that we hear when lightsabers are powered up. He hit a tense metal wire on a radio tower with a wrench to create the 'pew-pew!' sound of a blaster firing — that's the sound we are imitating here with the Slinky and cup.
Ben likes to put a sound effect he created, called "The Wilhelm scream," into his film projects. (If you have ever heard Goofy fall from something high in a Disney short, that yodeling yell is 'the Wilhelm scream'). Next time you are watching A New Hope, listen carefully and see if you can hear it!


LAN(network.STA_IF).active(True)
esp = aioespnow.AIOESPNow() # Returns AIOESPNow enhanced with async support
esp.active(True)
peer = b'x!\x84\xc68\xb0'
esp.add_peer(peer)
Next, we define an instance of the object aioespnow.AIOESPNow() that we are going to use to send out ESP-NOW messages to peers that we have added to our peer-to-peer network.
# Define the GPIO pin to which the PIR sensor is connected (change this as needed)
pir_pin = Pin(36, Pin.IN)
# Define GPIO pin for the DHT sensor
dht_pin = Pin(32)
dht_sensor = dht.DHT22(dht_pin)
ir_pin = Pin(25, Pin.IN)
We defined the different GPIO (General Purpose Input Output) pins where our sensors would be connected.
async def send_pir_motion_readings(espnow):
 while True:
 motion_detected = pir_pin.value()
 if motion_detected:
 print("Motion detected!")
 message = {"pir_alert_detected": True}
 await espnow.asend(peer, ujson.dumps(message))
 else:
# print("No motion detected.")
 pass
 await asyncio.sleep_ms(1000)

# Async function for sending DHT temperature data
async def send_dht_temperature_data(espnow):
 while True:
 dht_sensor.measure()
 temperature = dht_sensor.temperature()
 humidity = dht_sensor.humidity()
 print(f"temperature : {temperature}, humidity: {humidity}")
 message = {"temperature":temperature}
 await espnow.asend(peer, ujson.dumps(message))
 message = {"humidity":humidity}
 await espnow.asend(peer, ujson.dumps(message))
 await asyncio.sleep(3)

async def send_ir_data(espnow):
 while True:
 # Read data from the IR sensor
 ir_data = ir_pin.value()
# print(f"Infrared Value : {ir_data}")

 if ir_data == 0:
 print(f"Infrared Alert!")
 message = {"infrared_alert_detected": True}
 await espnow.asend(peer, ujson.dumps(message))
 await asyncio.sleep_ms(500)
The three coroutines above are what we are using to read our PIR Motion sensor, Infrared, and DHT22 sensors. As you can see, it loops continuously to read the sensor data. They are declared with async keywords as we will be loading them into the MicroPython async event loop for them to run concurrently.
Also, when sending messages through ESP-NOW we should only send them in String or byte format so we need the function ujson.dumps() for conversion purposes.
async def main(espnow):
 await asyncio.gather(send_pir_motion_readings(espnow), send_dht_temperature_data(espnow), send_ir_data(espnow))

asyncio.run(main(esp))
We have loaded our coroutines into the event loop and started running the three functions concurrently.
If you have read my Basics of Micropython Asynchronous Programming thoroughly in the 2nd part of this series then you would notice that we are just using MicroPython async construct in programming this. With the code in this file, we could concurrently read and observe the sensor readings on multiple sensors and act accordingly.
async_sensor_receiver.py
Receiver Circuit
The below code is for our ESP-NOW receiver logic.
import network
import aioespnow
from machine import I2C, Pin
import asyncio
import ujson
from lcd_i2c import LCD
# A WLAN interface must be active to send()/recv()
sta = network.WLAN(network.STA_IF) # Or network.AP_IF
sta.active(True)
sta.disconnect() # For ESP8266
# Initialize ESP-NOW
esp = aioespnow.AIOESPNow() # Returns AIOESPNow enhanced with async support
esp.active(True)
pir_pin = Pin(32, Pin.OUT)
infrared_pin = Pin(23, Pin.OUT)
buzzer_pin = Pin(19, Pin.OUT)
I2C_ADDR = 0x27 # DEC 39, HEX 0x27
NUM_ROWS = 2
NUM_COLS = 16
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=10000)
lcd = LCD(addr=I2C_ADDR, cols=NUM_COLS, rows=NUM_ROWS, i2c=i2c)
lcd.begin()
async def trigger_pir_alert():
 pir_pin.on()
 await asyncio.sleep(1)
 pir_pin.off()

async def trigger_infrared_alert():
 infrared_pin.on()
 buzzer_pin.value(1)
 await asyncio.sleep(1)
 infrared_pin.off()
 buzzer_pin.value(0)

async def display_temperature(temp):
 lcd.set_cursor(col=0, row=0)
 lcd.print(f"Temp: {temp} C")

async def display_humidity(humidity):
 lcd.set_cursor(col=0, row=1)
 lcd.print(f"Humidity: {humidity} %")
async def wait_for_message():
 while True:
 _, msg = esp.recv()
 if msg: # msg == None if timeout in recv()
 msg = ujson.loads(msg)
 print(msg)
 if "pir_alert_detected" in msg:
 await trigger_pir_alert()
 elif "infrared_alert_detected" in msg:
 await trigger_infrared_alert()
 elif "temperature" in msg:
 await display_temperature(msg['temperature'])
 elif "humidity" in msg:
 await display_humidity(msg['humidity'])

asyncio.run(wait_for_message())
Let us go over what each line of code does.
import network
import aioespnow
from machine import I2C, Pin
import asyncio
import ujson
from lcd_i2c import LCD
As usual, we import the necessary modules needed for us to communicate with our sensor data through ESP-NOW and MicroPython.
# A WLAN interface must be active to send()/recv()
sta = network.WLAN(network.STA_IF) # Or network.AP_IF
sta.active(True)
sta.disconnect() # For ESP8266
# Initialize ESP-NOW
esp = aioespnow.AIOESPNow() # Returns AIOESPNow enhanced with async support
esp.active(True)
We activate our WLAN interface and define an instance of the class aioespnow.AIOESPNow() as we will be needing it to listen to ESP-NOW messages.
pir_pin = Pin(32, Pin.OUT)
infrared_pin = Pin(23, Pin.OUT)
buzzer_pin = Pin(19, Pin.OUT)
I2C_ADDR = 0x27 # DEC 39, HEX 0x27
NUM_ROWS = 2
NUM_COLS = 16
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=10000)
lcd = LCD(addr=I2C_ADDR, cols=NUM_COLS, rows=NUM_ROWS, i2c=i2c)
lcd.begin()
The following are the GPIO pins used in this project to drive the LEDs, buzzer, and I2C LCD connected to our receiver ESP32.
async def trigger_pir_alert():
 pir_pin.on()
 await asyncio.sleep(1)
 pir_pin.off()

async def trigger_infrared_alert():
 infrared_pin.on()
 buzzer_pin.value(1)
 await asyncio.sleep(1)
 infrared_pin.off()
 buzzer_pin.value(0)

async def display_temperature(temp):
 lcd.set_cursor(col=0, row=0)
 lcd.print(f"