text:
Weaving a Mayan Hammock–Video Overview
- Materials Needed
- The Netting Needle
- The Loom
- Loading the Loom
- Loading the Netting Needle
- The Edge "Crochet"
- The Triple Weave
- The Clew
The Mayan hammock is arguably the most comfortable gathered-end hammock available anywhere, and is notable for being the descendent of the original hammock discovered by Columbus on his voyages to the West Indies. The Mayan hammock is woven using a fairly tight "triple weave" that creates a lattice when pulled apart.
Mayan hammocks tend to be heavy, due to the quantity of string used to create the netting, so this style of hammock is more suitable for sleeping indoors than lightweight backpacking. Much depends on the type and quantity of string used and what size hammock you weave.
I found that the Mayan weaving style is not terribly difficult, but it does take patience and a little time. Once you get the weaving pattern down, expect to spend a few weeks to complete the weaving, depending on how much time per day you can devote to weaving and how big you want the bed.
- Lacing — Knotworkn (via Internet Archive)
- Single Line Simple Reverse Coxcombing
- YouTube — Mayan Hammock Weaving – How Hammocks Are Made
- YouTube — The Mayas of Belize – Belize Culture – (traditional Mayan weaving and source material from the Agave plant; great video!)
- Instructables — "Instant Hammock," steps 5–9
- Amazon — Hammock: How to Make Your Own and Lie in It
- Amazon — Hammock Making Techniques
- Amazon — The Ashley Book of Knots (ABOK)
- > 2,000 yards (~1,860 m) of #18 twisted cotton or nylon string for a hammock bed approximately 72 × 50 in (183 × 127 cm). Nylon is more mildew resistant, but cotton will be more comfortable. The clew or end strings, are each half the length of the hammock, effectively doubling the overall length of the hammock.
- Netting needle/shuttle (8 × 1.25 × 0.1875 in / 20 × 3.175 × 0.5 cm)
- 3 @ 1 × 3 × 8 (horizontal beams, wedges)
- 2 @ 2 × 3 × 8 (vertical posts)
The Netting Needle
A netting needle ("lanzadera" or shuttle) is used to load a quantity of string and work it through the warp to create the weave. A netting needle differs from a traditional loom shuttle in that the one end is pointed or tapered, making it easier to poke the shuttle through the weave. These needles are traditionally used for making fishing nets and are still used today to make Mayan hammocks.
You can make your own needle or purchase one.
A basic loom measures 6 ft (1.8 m) tall by 6.5 ft (2 m) wide when assembled and consists of two vertical posts or poles and two horizontal beams. Most looms are adjustable via notches in the horizontal beams and holes in the vertical posts so the weaver can make slightly longer hammock beds. These horizontal supports are secured with a wedge so the hammock body can be removed (slid upward) off the frame when the weaving is complete.
You can make a basic, inexpensive frame out of PVC pipe or lumber. To make a traditional stand, you'll need to cut and assemble the wood poles and beams, including wedges, to make the stand sturdy and long-lasting.
Loading the Loom
Once the loom is built and in place it is time to load the loom with the "warp" string. Begin by tying the warp string to the top of one vertical post and then wrap it around the second post until you wind a sufficient number of strings between the two posts. The number of warp strings depends on the color patterns you intend to weave. You can easily add more warp string as you go along, allowing for color variations on the project, even alternating between the warp and weft strands.
Loading the Netting Needle
A netting needle can handle only so much string before it's full, so having a few on hand is a good idea if you want to keep weaving without interruption. Hitch the end of the string (ABOK #1602) around the needle and then begin to wrap around the bottom of the netting needle and back to the top where you wrap the needle again. Repeat this back-and-forth process until the shuttle is full (see shuttle image above).
The Edge "Crochet"
A few sources refer to the edge as "crochet," which it might be, but it's nothing more than a series of overhand knots (ABOK #46) evenly spaced along the edge. This is the first task in the weaving process.
- There should be a minimum of 21 knots, making 20 spaced sections.
- The knots should be spaced between 3 and 4 inches (8 and 10 cm) apart.
- There should be a minimum of 4 rows of interlaced knot rows and as many as 8 or 10.
This edging sets the spacing for the weaving along with providing a tight edge to maintain the hammock shape.
Subsequent rows: Loop around a knot then go up, capturing a new warp line, then back around to the first line and knot.
The Triple Weave
- The weaving pattern is "under two, over and around one."
- There should be 2 weaves on each of the 20 spaced sections, creating 40 weaves across the hammock body.
As you work along the warp, keep the weft string tight to ensure the lattice isn't loose when you're done. When you reach the end, go around the pole and hitch the weft and warp strings you were just working on and then continue the pattern.
NOTE: Never end a string in the middle of the hammock. If you run out of string, tie it off on the pole and begin a new string. Do not tie knots or leave loose strands in the middle of the hammock.
High-quality Mayan hammocks have at least 40 rows of weft that is woven through the warp, leaving a tightly-woven net that flexes and supports the occupant unlike any other hammock available.
This video (above) actually does a great job in showing the mechanics of making the clew.
The clew is a modern sailor term for the nettles or string that attaches to the ends of the hammock and provides a loop or ring as the attachment point.
- The nettles should be half the length of the hammock, effectively doubling the overall size of the hammock (for example, a hammock body 2 m (6.5 ft) long, the nettles should be 1 m (3.25 ft) long each).
- The nettles should all be the same length.
Traditionally, the nettles are made from a single, continuous strand of #18 twisted nylon string that is looped around 6 sections from the hammock body. The nettles are middled to create a bight. This bight is tied and then cockscombed to protect the nettles.
The two remaining ends are tied on to themselves using a French Spiral Hitch/Whipping (ABOK #3450).
Alternatively, you can tie a Shouldered Sword Mat (ABOK #3819) with the two remaining ends to create a navy-style clew.


text:
Mbarara to Kasese distance, location, road map and direction
Mbarara is located in Uganda
at the longitude of 30.65 and latitude of -0.6. Kasese is located in Uganda
at the longitude of 30.01 and latitude of 0.22.
Distance between Mbarara and Kasese
The total straight line distance between Mbarara and Kasese is 115 KM
(kilometers) and 696.11 meters. The miles based distance from Mbarara to Kasese is 71.9
miles. This is a straight line distance and so most of the time the actual travel distance between Mbarara and Kasese may be higher or vary due to curvature of the road.
Mbarara To Kasese travel time
Mbarara is located around 115 KM away from Kasese so if you travel at the consistant speed of 50 KM per hour you can reach Kasese in 2.31 hours. Your Kasese travel time may vary due to your bus speed, train speed or depending upon the vehicle you use.
Mbarara To Kasese road map
Mbarara is located nearly south
side to Kasese. The given south direction from Mbarara is only approximate. The given google map shows the direction in which the blue color line indicates road connectivity to Kasese. In the travel map towards Kasese you may find enroute hotels, tourist spots, picnic spots, petrol pumps and various religious places. The given google map is not comfortable to view all the places as per your expectation then to view street maps, local places see our detailed map here.
Mbarara To Kasese driving direction
The following diriving direction guides you to reach Kasese from Mbarara. Our straight line distance may vary from google distance.
Travel Distance from Mbarara
This website gives the travel information and distance for all the cities in the globe. For example if you have any queries like what is the distance between Chennai and Bangalore? and How far is Chennai from Bangalore? It will answer those queires aslo. Some popular travel routes and their links are given here :-
Travelers and visitors are welcome to write more travel information about Mbarara and Kasese.
- It can be your previous travel experience between Mbarara and Kasese.
- Available transport routes to reach Kasese like train routes, bus routes, air routes and cruise routes.
- Tourist places or any other important places on the routes between Mbarara and Kasese.
- Hotels, restaurant information on the way to Kasese.
- Photos related to Mbarara and Kasese or en route.
- Travel queries and other relavent information related to this page.

source: openbmb/Ultra-FineWeb


text:
Dynamics of resistive double tearing modes with broad linear spectra
- Author(s): Bierwage, A
- Benkadda, S
- Hamaguchi, S
- Wakatani, M
- et al.
Published Web Locationhttp://scitation.aip.org/getabs/servlet/GetabsServlet?prog=normal&id=PHPAEN000014000002022107000001&idtype=cvips&gifs=yes
The nonlinear evolution of resistive double tearing modes (DTMs) with safety factor values q=1 and q=3 is studied with a reduced cylindrical model of a tokamak plasma. We focus on cases where the resonant surfaces are a small distance apart. Recent numerical studies have shown that in such configurations high-m modes are strongly unstable and may peak around m similar to 10. In this paper, it is first demonstrated that this result agrees with existing linear theory for DTMs. Based on this theory, a semiempirical formula for the dependence of m(peak) on the system parameters is proposed. Second, with the use of nonlinear simulations, it is shown that the presence of fast growing high-m modes leads to a rapid turbulent collapse in an annular region, where small magnetic island structures form. Furthermore, consideration is given to the evolution of low-m modes, in particular the global m=1 internal kink, which can undergo nonlinear driving through coupling to fast growing linear high-m DTMs. Factors influencing the details of the dynamics are discussed. These results may be relevant to the understanding of the magnetohydrodynamic activity near the minimum of q and may thus be of interest for studies on stability and confinement of advanced tokamaks.(c) 2007 American Institute of Physics.
Many UC-authored scholarly publications are freely available on this site because of the UC Academic Senate's Open Access Policy. Let us know how this access is important for you.


Top 10 Most Beautiful Birds in the World
All Time Most Beautiful Birds in the World You Would Love To See
There are over 10,000 different species of birds on our beautiful planet. And, although they are mostly charming, some birds are examples of pure beauty. The proof with these 10 increasingly rare birds considered to be the all-time most beautiful in the world.
Top 10 Most Beautiful and Incredible Birds in the World
1. The Blue Jay
The blue jay is a small passerine bird found in the forests of North America but also in the Gulf of Mexico. Beyond its magnificent blue plumage, this bird is known to take ant baths in order to get rid of parasites.
2. The Golden Pheasant
The golden pheasant is famous for its sublime multicolored plumage and golden crest that it proudly wears on the top of its head. Originally from China, it corresponds in every way to the description we have of the legendary phoenix. A solitary and omnivorous bird, it prefers to move on the ground rather than to fly.
3. The Blue-Headed Lorikeet
The blue-headed lorikeet is a very colorful parrot known to be very loud. Indeed, it has a wide range of calls and other twitterings. Endemic to Oceania, this diurnal bird has a brush-shaped tongue that allows it to suck nectar from flowers.
4. The Flamingo
The flamingo lives in groups and has plumage that can range from pale pink to red. It owes its coloring to the crustaceans it feeds on. This bird, which has a lifespan of 30 years in the wild, is known to be able to stand on one leg, especially when sleeping.
5. The Keeled Toucan
Found in South America, the keel-billed toucan, also called the rainbow toucan, is easily identifiable thanks to its long, colorful banana-shaped beak. It lives in tropical lowland forests and feeds mainly on fruits, but also on insects and eggs. This bird has the particularity of being endowed with a very playful character.
6. The Peacock
The peacock wheel is famous around the world. And for good reason, to seduce females, this bird from India does not hesitate to deploy the feathers of its tail, giving rise to a breathtaking spectacle.
7. The Hyacinth Macaw
The Hyacinth Macaw lives in South America and is admired for its incredible blue plumage but also for its size. Indeed, it is considered the largest parrot in the world since it can reach a wingspan of 1.50 meters in adulthood.
8. The Royal Crane
Present only in Africa, the royal crane measures on average 1 meter high for a weight of 3.5 kilos. She is easily recognizable by her crest of golden feathers that stands on top of her head.
9. The Horned Pheasant
Also called tragopan satyr, the horned pheasant is found in South Asia, more specifically in the Himalayan region. This colorful bird with orange plumage and a blue head lives in pairs in highland forests. It spends most of its time foraging on the ground and only perches at night to sleep.
10. Mandarin Duck
Native to Northeast Asia, the male mandarin duck owns a plumage colored inbreeding. At the end of spring, it, therefore, loses its colors to take on the same appearance as the female, whose colors are duller. Symbol of loyalty, this bird is famous for living with the same partner throughout its life.
Also Read: Top 10 Birds with Spectacular Beaks
Please enter your comment!
Please enter your name here


Spend Tanabata with your Japanese girlfriend in summer! | Guidable
Spend Tanabata with your Japanese girlfriend in summer!
By Guidable Writers Jul 7, 2017
Tanabata is a special day all over Japan. Tanabata, the star Festival, celebrates to commemorate the romantic story of two lovers represented by the stars Vega and Altair who are only allowed to meet once a year. Japanese people celebrate Tanabata on August 7th.
What people do on Tanabata?
People write wishes on small pieces of colored paper called tanzaku and hang them on bamboo trees. When the Tanabata festival is near, you will see many supermarket or department store will have a space where people can hang their wishes on a tree. People generally writing wishes on the tanzaku, sometimes in the form of poetry, but most of the people will just write it in casual way.
Large-scale Tanabata festivals are held in many places in japan, mainly along shopping malls and streets, which are decorated with large, colorgul streamers. The most popular Tanabata festival is in Sendai from 6 to 9 August. In the Kanto region, two of the largest festivals are held in Hiratsuka (Kanagawa) and Asagaya (Tokyo).
Most of the Asian festival has its own legend or folk tale behind it. Tanabata also has a story that is originated from a Chinese legend called Qixi, and it was brought to Japan in the 8th century. So lets see what is the festival about.
What is the tanabata story?
Tennno Osama, the king of the sky, had a beautiful daughter named Orihime who an incredibly gifted seamstress. She kept working at her room, to weave the fabric that her father loved so much. The Sky King felt sympathy for her, and he found a boy friend for Orihime. The Sky King chose Hikoboshi, a good hearted man from all the way.
The two instantly fell in love, and they loved each other so much in fact tthat even work no matter to them. Orihime began to neglect her job to weave the fabric, and Hikoboshi began to neglect his work. Eventually, the Sky King became angry!
The Sky King used his incredible power to create a mighty river that would permanently separate the two lovers. This river is called Amanogawa in Japanese, which is called Milky Way in English!
Time went on, and Orihime and Hikoboshi went back to work. However, they never forgot about each other. They went back to work, but their hearts were never the same. Hikoboshi often looked across the river wondering, 'Is she still thinking about me?'
Orihime also went back to work, but she could not forget about Hikoboshi. She could do nothing but cry. Her tear touched the Sky Father and he finally allowed them to see each other once a year.
So on the eve of July 7th, Japanese people look up into the summer sky and you can see Vega and Altair. For Japanese people, they will think of Orihime and Hikoboshi, two lovers were once again reunited.
As Tanabata is a day to celebrate the reunion of Orihime and Hikoboshi, why not celebrate this day with your lover? One thing you can definitely do in Tanabata is to wear Yukata and go to summer festivalnatsumatsuri with your girl friend!
Wear a Yukata
A yukata is a Japanese garment, a casual summer kimono usually made of cotton or synthetic fabric and unlined. Yukata is a bit expensive, but you can buy sets with everything you need at reasonable prices. Don't forget to buy your sandals! Wearing a yukata to a summer festival will definitely ut you in the natumatsuri mode. You also have to know that putting a yuatais very hard; even Japanese people need some help when they wear Yukata, so the best way is to find someone who is familiar with Yukata, and help you to put it on!
Eat from the food stalls (yatai)
Yatai in the food stalls are set up in the festival area selling food for people to eat while they wander around or to eat while sitting.
There are many foods available in Yatai such as takoyaki, yakitori, taiyaki, and yakisoba. You can also drink Ramune in the food stalls. Ramune is a carbonated soft drink originally sold in Japan, which was introduced in Kobe by Alexander Cameron Sim. Ramune is one of the modern symbols of summer in Japan and is widely consumed during warm festival days and nights.
Playing the festival games!
In the Yatai, there are many fame stall that are made for us to play! You must try Kingyo-skui, goldfish scooping if you have not tried it yet. It is a game that you need to scoop a goldfish with a hoop that only has a thin piece of paper stretched across it. It is harder than you think to get a goldfish, because usually in these kinds of games, they make it extremely difficult so that the players would not get the price so easily. Therefore, the most important thing is to have fun, and do not care if you could get the price or not.
Watch firework with your girlfriend!
At the end of the day, you will be able to watch Firework! You have to sit as fast as you can otherwise all the seats would be taken. If you go to a summer festival, people will stick a blue sheet on the ground in order to show that they have taken the place. Therefore, if you want to see Firework in a good spot, make sure you can find your place as soon as possible.
I have gathered the information about the Tanabata day, and it will be great if you can spend your time with your beloved one!


text:
internal field separators
($IFS) A predefined environment variable in the Unix Bourne shell whose default value is the three-character string containing space, tab and line feed. Any string of one or more of these characters separates the command and each of its arguments in a command line.
$IFS also tells the shell's built-in read command where to split an input line when reading into multiple variables. E.g. setting IFS=: would be appropriate for reading a file with ':'-separated fields, such as /etc/passwd.


Switching Application Required System Properties According to Deployment Environment
Any serious application depends on a number of configuration properties, such as JDBC connection properties, caching properties etc. They should change according to target deployment environment.
People employ different methods to take those properties outside their web applications. Among them, one commonly used method is to create a properties file and collect any property, whose value should change depending on the current deployment environment, then create variations of that properties file for each deployment environment. During build process, which property file should be taken into account is specified via another parameter, for example an environment property or system property.
We currently employ a similar method in our current project. We use ant in our build process, and have defined an ant global property named target.environemt, taking values dev, test, or prod accordingly. We, then, use following construct in our build.xml to customize our build process according to target deployment environemt.
Thus, we load specified build properties file to customize our build process according to the target environment. We use, for example, tomcat as web container and its ant tasks to deploy, stop, and start our web application. Development, test and production environments are simply located in different physical servers, and accesible with different user credentials. In order to make use of same tomcat ant task for each target environment, we keep tomcat server url, port, credential information in this build properties file.
When it comes to customize our application configuration properties, we simply copy specified project.properties.${target.environment} file into web application classpath while stripping off the suffix at the end. As the old saying goes, a layer of indirection solves every problem in computer science.
Karl Baum has a nice blog entry about this topic and gives a solution based on above method, but it is much more flexible as it enables us to switch between configurations without a new build or deployment at all.a


text:
Interpretive themes pull together multiple meanings of park resources into a story for people to explore. Thematic interpretation begins with resources and ends with a comprehensive program of interpretive offerings. It cumulatively builds on the significant meanings of the park and explores why its resources make it one of the best places to explore them.
Universal concepts are essential components of both primary interpretive themes and subthemes. Universal concepts are powerful because in just a word—love, family, war, honor, education, sacrifice—so many different meanings are instantly accessed. They are effective in interpretation because they enable a wide range of people with diverse life experiences to become engaged in a place, in a program, or in an exhibit.
Keep in mind that universal concepts are most effective and useful when they are more than just broad words. Context is also an important consideration that should not be overlooked when developing interpretive theme statements. We've adapted the discussion of these topics from the 2003 NPS Intermountain Support Office Theme Guide to explore thematic interpretation.
For Your Information
Before continuing, collect the tools your park uses to document its thematic scope. Ask the chief of interpretation or head ranger for a copy of the most recent interpretive prospectus and other pertinent documents for thematic interpretation. These documents indicate the policy decisions for which themes to interpret and frequently outline the methods a park uses. Review them, and keep the themes in mind while reading this chapter. Think, in particular, about how the results of archeological work may tell stories within —or outside—the thematic framework.
Primary Themes and Subthemes
Interpreters find that thematic interpretation draws out provocative and powerful stories from resources. Interpretive themes operate at two levels: as primary interpretive themes and subthemes. Primary interpretive themes are the overarching, biggest stories about the place. Subthemes are the smaller stories that nest within the primary interpretive themes.
Characteristics that are common to both levels of interpretive themes include the following:
- All interpretive themes are based on the significances of park resources.
- All interpretive themes are the cores of stories used to explore the multiple significances of the park's resources to the public.
- All interpretive themes connect park resources to the larger ideas, meanings, beliefs, and values of which they are a part.
- All interpretive themes contain universal concepts, allowing a wide and diverse range of people to all find personal paths of connection to the stories of the place.
- All interpretive themes provide opportunities for people to explore the meanings of the place, without telling people what park resources should mean to them.
Interpretive themes are best stated as single sentences that include tangible and intangible elements. Don't state interpretive themes as topics, which tends to organize a body of work but is too ambiguous to provide focus.
Developing Primary Themes
Primary interpretive themes communicate the most important values of the park's resources to the public. They translate factual significance statements into overarching park stories and may be the first elements that people associate with the park. Primary interpretive themes form the foundation of the park's interpretive program, but are grounded on the park's values.
Primary interpretive themes are best written as single sentences. Although primary themes are based on park significance statements, there need not be a one-to-one relationship between statements of significance and primary interpretive themes. However, the set of primary theme statements must represent the entire set of resource values. It is important to identify as many resources available for interpretation as possible, and stating themes to link everything together is an important step.
Sometimes interpretive opportunities address one, or even all, of a park's primary interpretive themes. But when that is the case, the treatment is necessarily introductory in nature (such as a park brochure or general park video), and leads visitors to other services and resources.
Subthemes are the driving elements in the development of specific interpretive services—the actual activities or media available to visitors. Since effective storytelling moves from the specific to the general, interpreters move from the introductory uses of primary themes to subthemes to help visitors connect with a significant aspect of park resources.
Subthemes are narrower than primary themes in scope and deeper in their treatment of the particular aspects of the resources. Like primary interpretive themes, subthemes link tangible resources to intangible ideas and meanings, and include universal concepts to increase interpretive effectiveness.
Subthemes are valuable because they allow specific interpretive services to achieve greater depth. They enable interpreters to guide visitors through the exploration of more subtle and complex aspects of specific park resources. This allows understanding at a more sophisticated level, and helps visitors extrapolate their new knowledge from the specific to the general.
Developing Interpretive Services from Subthemes
When a program is organized around a theme that links a tangible resource to a universal concept, the links must be developed with interpretive methods into opportunities for connections to resource meanings. Those opportunities must be intentionally sequenced to elaborate the theme's idea. Each opportunity builds on previous opportunities and provides the audience a chance to learn or feel differently. The effect of the arrangement is cumulative and articulates and explores the meaning of the interpretive theme statement.
Interpretive services are always developed from interpretive themes to ensure a direct linkage stays intact from resource values to the story format of primary interpretive themes to the depth and focus of subthemes. Consciously building an interpretive service around the framework of a well-crafted primary interpretive theme also prevents the desired outcome of the service from being overshadowed or deflected by interpretive medium, technique, or personality. Exploring meanings remains the central goal — and maximizes the value of the interpretive service toward fulfilling the mission of interpretation.
Ideas for specific interpretive services flow from interpreters' familiarity with park resources. Initial inspiration may spring from many sources: an often-asked question, a dramatic viewshed, a new discovery, etc. Regardless of origin, the design and presentation of every interpretive service must be driven by the strategic decision to tell a story that provides opportunities for people to explore meanings.
The following two examples of park significance statements and primary interpretive themes are taken from the 2003 edition of the NPS Intermountain Support Office Theme Guide:
Set of Significance Statements
- Petroglyph National Monument contains one of the largest concentrations of petroglyphs in North America and represents an extensive record of peoples for whom we have few written records.
- The monument has outstanding research potential because the petroglyphs are numerous, have retained their integrity, are an outstanding example of Rio Grande style, and are close to other associated archeological resources.
- Places in the monument have traditional and cultural importance to Southwestern American Indians and Atrisco Land Grant heirs.
- The largely unexcavated Piedras Marcadas Pueblo ruin is one of the largest pueblos of its time period in the Rio Grande valley.
- The monument's natural and cultural landscape (escarpment, volcanic cones, and surrounding open space) and long vistas are major elements that define Albuquerque's western horizon and provide opportunities to experience contrasts with a growing urban environment.
- The geologic resources of Petroglyph National Monument (tectonic rifts, cinder cones and lava flows, and dramatic erosional features) facilitates both an understanding of the formation of the Rio Grande Rift and how natural landmarks have been recognized by and influenced a number of cultures.
- Because of the historical significance of the land base in the proximity of a major urban area, Petroglyph National Monument provides a unique opportunity to interpret the divergent and convergent historical events and cultural viewpoints of the Puebloans and Europeans (Spanish) that led to conflict and resolution.
Set of Primary Interpretive Themes
- The rich concentration of petroglyphs and the associated cultural landscape at Petroglyph National Monument, recognized as important by the native peoples of the mid Rio Grande Valley and others, offer opportunities to contemplate the meaning of cultural continuity in our world of accelerating change.
- This geologically active area, formed by rifting, volcanism, and erosional forces including the Rio Grande and its tributaries, has attracted people for thousands of years and powerfully influenced their lifeways, traditions, and beliefs — exemplifying how landscapes shape and influence human societies.
- The symbols connected to this place — petroglyphs, land grant deeds, Christian crosses, livestock brands, and inscriptions — provide opportunities to explore the ownership, control, and use of land, resources, identity, and ideas in the ongoing history of the American Southwest.
- The continuity of the Atrisco Land Grant from 1692 to the present provides an opportunity to understand 300 years of land grant ownership in the face of an ever-changing urban landscape and continued use by the heirs of the original Spanish settlers.
Colonial Dorchester State Historic Site
Set of Significance Statements
- The village of Dorchester is a remnant of the global process of European colonization and exemplifies, in microcosm, many elements of colonial and revolutionary era life in South Carolina.
- Extensive historical records exist for Old Dorchester, adding tremendous integrity to the site.
- The village site has maintained a high degree of archeological integrity, and in the process provides us with extensive documentation of life during the period 1690 to 1780. It is one of the most intact and protected colonial town complexes in South Carolina.
- Old Dorchester State Historic Site is one of the few ongoing archeological projects open to the public in South Carolina. Here visitors can observe daily investigations, a source of ongoing discoveries.
- The fort and village are significant for their association with the American Revolutionary War. The fort is one of only a handful of surviving fortifications remaining in South Carolina that were occupied by both British and American troops.
- The fort at Old Dorchester


Back to Overview
Winterhalter offers guidance to ensure the best possible hygiene and safety
The warewasher
Temperature, time, chemicals and water pressure all contribute to the warewasher's cleaning power. On a standard wash cycle a quality commercial dishwasher will have a water tank temperature of 60-65°C and will reach 85°C during its rinse cycle, which ensures that the crockery is sanitised and is hygienically clean, safe and free of COVID-19 (and any other viruses). However, this obviously assumes that your machine is running correctly – so it's really important that it is looked after and regularly serviced. If there are any error messages, respond to them immediately.
Quality manufacturers will have had their machines tested by an independent third party both to scrutinise and to prove their hygiene credentials. For example, every Winterhalter model has a hygiene certificate that has been awarded by an authorised institute. The certification confirms that the machines perform to specified standards and requirements.
At the end of the shift, to ensure hygiene, it's essential to clean the machine. Again, most quality designs will have a self-cleaning program. As well as reducing staff workload, this will ensure that, at the end of service, the machine is left in a safe, properly hygienic state, ready for the next shift.
Data collected from Winterhalter's Connected Wash system, which monitors the operation of warewashers via the internet, showed that one common staff error was NOT to run the automatic cleaning program at the end of the shift. As well as compromising hygiene, not running the program can lead to damage to the machine, so it's imperative that staff understand the importance of the self-cleaning feature.
Sites with high risk requirements may decide they need a machine that offers thermal disinfection. This means they meet HMT2030 regulations by washing at 73°C for three minutes. Thermal disinfection uses a combination of higher water temperature and longer wash times. Obviously this will mean the machine will take longer to run through a wash cycle, and it will require more energy to heat up the water. For most hospitality applications, thermal disinfection is not necessary.
One last point: avoid washing ware by hand at all costs, even if you have double sinks. If you don't have one already, invest in a quality warewasher and ensure that all tableware, glassware and cookware is washed in a commercial machine. If funds are limited, consider leasing or rental. Alternatively, Winterhalter has developed a new finance scheme, called Pay Per Wash, which gives you a brand new, top quality Winterhalter warewasher with no upfront cost – you simply pay as you wash. The scheme covers not only the machine, but also the chemicals and service. To find out more, visit
Preand post-wash: handling and storing the cleaned ware
You will handle dirty plates and glasses as you pre-wash and load the dishwasher or glass washer. Make sure that you wash your hands (or change your gloves) before handling the clean ware as it comes out of the machine.
Once it's hygienically clean, how can the ware be kept that way whilst it's stored, ready for the next time it's needed? In a perfect world everything should be stored in an enclosed space, such as a cabinet or cupboard. Glass frosters that chill and store glasses in busy pubs will be perfect for glassware.
If you don't have a safe, enclosed place to store dishes, glasses and cutlery, and the ware has been left in the open for a few hours, you should consider washing it before service, even if it looks clean.
In larger sites where high volumes of crockery and glasses may be stored for extended periods there are ready solutions. The plates can be loaded into mobile plate dollies, lowerators or plate stackers. These will protect the crockery, keeping it clean and free from dust, while ensuring it is correctly and safely stacked. At the same time, because the equipment will hold a given number of plates, it's easy for staff to know the volume of crockery held in storage.
When it comes to glasses, they can be washed and stored in the same compartmented racks. There will be no need to touch them after washing and they can be held safely until required. Similarly cutlery can be washed and stored in dedicated racks.
If crockery or glasses are damaged, such as being chipped or cracked, then throw them away. Check your cutlery – some budget products have potential dirt traps, for example within the fork tines. Replace these items of cutlery if necessary.
Reverse Osmosis – better cleaning, less handling, enhanced hygiene
Reverse Osmosis (RO) is a top-end water treatment system that purifies the water going into the dishwasher or glasswasher to the nth degree. The result is incredibly clean glasses, dishes and cutlery. So clean, in fact, that there's no need to hand polish them. This is a major hygiene benefit – less handling means less chance of contamination. For example, typically a person polishing glasses will use the same cloth for the whole load – so any contamination will be spread to all the glasses. By reducing handling, RO also dramatically reduces breakages resulting from hand polishing glasses.
The chemicals
When it comes to hygiene and infection control another key area to consider is the chemicals you are using in the warewasher. Ideally you want to be using a range that includes a choice of detergents, formulated to cope with a range of specific conditions such as the level of soiling and the hardness of the water. Winterhalter has developed a range of warewasher chemicals that have been designed specifically to work with Winterhalter machines, to ensure the best possible hygiene results.
As the focus intensifies on good hygiene practice the importance of detailed data collection for HACCP is vital. Many modern dishwashers can provide this at the touch of a button. For example, the latest Winterhalter machines feature a SmartTouch, multifunctional, multilingual touchscreen that tells operators all they need to know, using easy to read text and symbols to help eliminate operator errors. The touchscreen controls allow for comprehensive monitoring at all times, storing HACCP and relevant hygiene data, and even monitoring external water treatments to enable quick responses to error messages, thus reducing downtime.
A key focus for Winterhalter in recent years has been connectivity – the company has been a pioneer in this area, with its Connected Wash system. A question now is, can it help with hygiene? The answer is yes. For example, it can warn if the chemicals are not being topped up correctly. By keeping the detergent and rinse aid at correct levels, it ensures the machine is washing hygienically and safely. Meanwhile, because Connected Wash can be used to remotely monitor a warewasher's performance (or multiple warewashers, across several sites) it can also be used to monitor the temperature of the wash, and to warn instantly if there is an issue. This means that a warewasher that is not reaching correct temperature can be identified and fixed, quickly.
The data collected from Connected Wash has also highlighted certain warewashing 'sins' – errors that are committed by staff. They include not using the self-cleaning program regularly. If it's not run for a few days it could compromise the cleaning results. Luckily Connected Wash can bring this to the attention of managers and staff, so they can put it right.
Service and maintenance
Regular servicing by a qualified engineer will ensure your machine is operating safely and optimally, so be sure to have a service contract. If your machine is shut down for an extended length of time, get the service supplier to send an engineer to recommission it.
Make sure staff are trained not only to operate the machine correctly but also to undertake the day to day maintenance jobs on the warewasher, such as emptying filters and checking chemicals levels. Also make sure they understand they should respond instantly to any alerts from the machine's self-diagnostics.
The latest hygiene technology
Warewasher manufacturers are constantly developing new and innovative technologies to help in areas such as reducing energy and water consumption. Winterhalter has also been exploring ways to harness new technologies to further enhance hygiene control. The latest hygiene feature appears on our new CTR machine, a compact rack conveyor system. It features what we call a hygiene mode. This new concept detects any change in the temperature of wash water, automatically slowing the rack speed down, and thus ensuring a thorough, hygienic wash even if the temperature drops.


hits you in order to chamber. Note that stab directions are always irrelevant while chambering - any stab can chamber any other stab (if timed and aimed correctly). Also note that the window within which a chamber is possible is very small, and as such if your opponent delays their strike slightly (i.e uses a "drag") then you are most likely going to get hit. For more information about chambering, refer to this video.
Next, onto feinting. Many players will be familiar with this from Chivalry. This simply involves pressing Q during the windup of your attack. Note that there is a point during the windup at which you can no longer feint. A feint can be used to bait your opponent's parry and then score a hit afterwards. Note that you can feint almost all types of attacks, including ripostes (unlike in Chivalry). There is also another mechanic called the "feint-to-parry" button which essentially simulates pressing feint and then parry in an instant which can be used to stop and parry an incoming attack during the middle of your own strike (this is bound to RMB by default).
The final advanced mechanic is morphing. Morphs allow the player to start winding up an attack and quickly switch into a different type of strike. Currently you can morph stabs into slashes, or slashes into stabs, but you cannot morph a slash into a slash or a stab into a stab. To execute a morph, simply press the key of the first attack and then quickly press the key of the second attack. Note that ripostes cannot be morphed; however chambers can be morphed.
Mordhau has a wide variety of settings which you can take advantage of. To access the settings tab, click the "Settings" button in the main menu, or press escape and click the "Settings" button if you're in-game. Here you should be able to see different tabs which allow you to control different aspects of your game. For example, in the Video tab, you find all the video settings that you'd usually expect from a 3D game. If you're looking to squeeze the best performance out of a slightly old computer, you should consider turning down the resolution since this greatly reduces the load on your GPU. In the Controls tab you can set key bindings and mouse sensitivities. The menu is relatively intuitive and self-explanatory. More information may be added to this section at a later date.
In Mordhau, there are no classes. Instead, you can make your own loadouts consisting of whatever equipment and armour you wish, and then select it when you play. There are four default loadouts: Heavy, Medium, Light and Templar. These are all pretty arbitrary, and like I mentioned before, you can easily change these to suit your own preferences (I will explain how to do that in a second). When you join a game you will be met with a screen asking you which loadout you want to select. You can access this panel at any time using the "B" button to change to a different loadout.
In the escape menu you can find all the options pertaining to loadout customization. You can select a loadout using the dropdown box and create a new loadout using the green button to the right. In this menu you can select your primary, secondary and tertiary weapons, change your armour, or sculpt your character's face. Note that loadouts can be shared between people fairly easily: on Windows, you can find the information for each loadout in "\AppData\Local\Mordhau\Saved\Config\WindowsClient\Game.ini" which can then be sent to your friends (just make sure to only send them the relevant parts and not the entire file).
Thanks for reading the guide. If you have any information you want to add, or any questions about the information contained within, then you should comment here.
Knight 123 262
 - 1
 - 28 Aug '17
I will just quote the kickstarter terms of use here:


Take the 2-minute tour ×
I am developing a little Game with something like particles, where every particle is represented by a box2d Body.
To insert new particles I need to find a place in the b2World where no bodies reside. How can I obtain this?
share|improve this question
1 Answer 1
up vote 1 down vote accepted
Depending on the density of the particles this can be a pretty hard problem to solve.
If the density of particles is low you have a good chance that a (semi-random) position is free. And something like this would be viable. (pseudo code of course)
bool placed = false;
Vector2 position = (50,50); // rough indication of where we want to insert the particle
 // Slightly randomize the position so that we try a different position
 // near the intended position every iteration.
 float direction = A random number between 0 and 2*PI;
 float length = A random number between 0 and a chosen maximum displacement
 Vector2 displacement = (sin(direction), cos(direction)) * length;
 Vector2 tryPosition = position + displacement;
 // Iterate over all the bodies already in the simulation.
 // Note that you can get the bounds of a body using its shape list.
 if there are no bodies at tryPosition
 placed = true;
 Add the particle
But be wary, there are a few problems with this algorithm. There is a chance that it will take a long time (or maybe even forever) before a free position is found, and the chances of it taking a very long time increase with the density of particles.
A second solution is more work but is guaranteed to finish.
You divide the world in cells (this is called spatial partitioning). You select a cell where you want to place the new particle. In the image below the cell where we, at first, want to place the new particle is colored blue:
Initial state
As you can see the cell marked blue is occupied by an existing particle (the red circle). So we can't place a new particle here. We mark the cell as occupied and continue to spiral out:
The next step
We continue to spiral out (no randomness here, we just rotate clockwise around the already checked cells) until we find the solution: The solution
As you can see we will always find a place to put the new particle that is as close as possible to the intended space.
Note that since we know which places we have checked the algorithm can in the end even give up telling us there are no free places. So it has a guaranteed runtime of O(maxNumberOfParticles * numberOfCells) before it has placed a new particle or has given up.
Now you have to make a decision on the size of the cell. Too large and you might miss free spaces, too small and finding a solution will take a long time. Another decision you have to make is if you want to cache a list of occupied cells to use in further frames (you will have to update part of it whenever a particle moves) or that just doing this when you spawn a new particle is good enough (in that case you won't even need a list, it's implied that a cell is occupied by the algorithm continuing).
share|improve this answer
Just adding something to this solution, you should use AABB queries to get the particles in a specific region: _URL_.html#_Toc258082976. And also you should start with a large query, and then if something is found, subdivide and search again. – Rui Campos Sep 9 '12 at 9:52
+1, I didn't know that was built in. You're absolutely right and this should speed up the algorithm considerably. – Roy T. Sep 9 '12 at 9:54
Thanks a lot for the answer! I got it working now! – philipp Sep 11 '12 at 17:56
Your Answer


text:
Date of wing molt initiation, based on the regression of tenth primary length on capture date, was calculated for breeding and nonbreeding Tundra Swans (Cygnus columbianus columbianus) on the Colville River Delta, Alaska. Breeding females initiated wing molt significantly later than breeding males and nonbreeding males and females; the molt of breeding females was correlated with the date on which their eggs hatched. Breeding males did not differ significantly from nonbreeding males and females in the date of molt initiation. Timing of molt in breeding males and females was consistent with the views that females delay molt while replenishing energy spent on reproduction, but was also consistent with the breeding pair's need for primaries to defend territories and to defend and brood young. Other results, including an increase in an index of female body condition throughout most of the molt period, and a positive correlation between clutch size and female hatch-to-molt interval, were not predicted by the hypothesis that past energy expenditures constrain the timing of molt. Patterns of wing molt within and among other Northern Hemisphere geese and swans are also difficult to explain on the basis of energetics alone. For example, breeding females initiate molt before breeding males in many species. Also, there is extreme asynchrony between mates in two swan species; one of those species also exhibits variation in which sex initiates wing molt first. Both patterns suggest that asynchrony, per se, is important, probably to facilitate brood protection or territory defense. In Tundra Swans and other northern breeding geese and swans, the non-energetic demands of territory defense, brood defense, and brooding are probably important constraints on the timing of wing molt.
Additional publication details
The timing of wing molt in tundra swans: energetic and non-energetic constraints


text:
Association Between Serum Uric Acid and Perioperative and Late Cardiovascular Outcome in Patients With Suspected or Definite Coronary Artery Disease Undergoing Elective Vascular Surgery
The role of uric acid as an independent marker of cardiovascular risk is unclear. Therefore, our aim was to assess the independent contribution of preoperative serum uric acid levels to the risk of 30-day and late mortality and major adverse cardiac event (MACE) in patients scheduled for open vascular surgery. In total, 936 patients (76% male, age 68 ± 11 years) were enrolled. Hyperuricemia was defined as serum uric acid >0.42 mmol/l for men and >0.36 mmol/l for women, as defined by large epidemiological studies. Outcome measures were 30-day and late mortality and MACE (cardiac death or myocardial infarction). Multivariable logistic and Cox regression analysis were used, adjusting for age, gender, and all cardiac risk factors. Data are presented as odds ratios or hazard ratios, with 95% confidence intervals. Hyperuricemia was present in 299 patients (32%). The presence of hyperuricemia was associated with heart failure, chronic kidney disease, and the use of diuretics. Perioperatively, 46 patients (5%) died and 61 patients (7%) experienced a MACE. Mean follow-up was 3.7 years (range: 0 to 17 years). During follow-up, 282 patients (30%) died and 170 patients (18%) experienced a MACE. After adjustment for all clinical risk factors, the presence of hyperuricemia was not significantly associated with an increased risk of 30-day mortality or MACE, odds ratios of 1.5 (0.8 to 2.8) and 1.7 (0.9 to 3.0), respectively. However, the presence of hyperuricemia was associated with an increased risk of late mortality and MACE, with hazard ratios of 1.4 (1.1 to 1.7) and 1.7 (1.3 to 2.3), respectively. In conclusion, the presence of preoperative hyperuricemia in vascular patients is a significant predictor of late mortality and MACE.
|Persistent URL||_URL_.1016/j.amjcard.2008.05.019, _URL_|
Dunkelgrun, M, Welten, G.M.J.M, Goei, D, Winkel, T.A, Schouten, O, van Domburg, R.T, … Poldermans, D. (2008). Association Between Serum Uric Acid and Perioperative and Late Cardiovascular Outcome in Patients With Suspected or Definite Coronary Artery Disease Undergoing Elective Vascular Surgery. The American Journal of Cardiology, 102(7), 797–801. doi:10.1016/j.amjcard.2008.05.019


text:
The Black Voice News
California has a history steeped in Black people who were formerly enslaved, freed, and during and after slavery expanded to the West Coast. The mountains were formidable barriers to travel and many came by sea. Those who came into Southern Calif. by land came through the Cajon Pass.
One of these people was James Hamilton. Born in 1822, he was the first resident who wasn't a native Indian to live in the Anza area. The year he arrived was 1873, just 12 years after the Emancipation Proclamation was signed by President Abraham Lincoln.
According to the "San Jacintos" by John F. W. Robinson and Bruce Risher, Hamilton was sometimes called "Uncle Jim" or "Nigger Jim" even the downgrade rode to Anza was known as "Nigger Jim" Grade. After traveling west from Ohio with an 1847 Mormon wagon train, he lived with Sioux Indians and in the early 1850s he arrived in San Bernardino.
He tried to homestead a claim on Mexican land and because the claim was not valid he moved on to Vail Lake, an area close to Temecula. There he and his children were again unsuccessful in staking a claim. His third try was a charm. He successfully obtained 160 acres located in the area of present day Anza. Even by today's standards he and his sons built a sizable ranch.
Hamilton and his sons, Joe, Henry, and Frank suffered discrimination living in the area. In 1897 two years before his own death, his son Frank, who was a lawman, was murdered.
The family remained in the area. Several sections of the land homesteaded by Hamilton included the area of Kenworthy, Cahuilla Valley and Anza Valley. Lincoln the last of the Hamilton cowboys died in 1976.
Today Hamilton's presence is still obvious in the naming of Hamilton Creek and Hamilton School and the Hamilton Museum.
|< Prev||Next >|

source: HuggingFaceFW/fineweb-edu


text:
"Control" in a Sentence (with Audio)
control (n, v): the act of controlling something or someone, or the power to do this; to order, limit, or rule something, or someone's actions or behaviour
Use "control" in a sentence
He struggled to retain control of the situation.
He couldn't control his anger.
Nobody can control us.
Everything is under control.
Back to "3000 Most Common Words in English"


(Minghui.org) In its campaign to force Falun Gong practitioners to renounce their belief, the Chinese Communist regime employs various torture techniques using water, among many other methods.
According to reports compiled by Minghui.org, the following water torture techniques are often used on practitioners incarcerated in labor camps, detention centers and prisons:
- Hosing female practitioners' genital areas• Simulated drowning: dipping or pressing practitioners' heads into water• Stripping practitioners naked and pouring cold water on their bodies• Dumping water onto practitioners' heads• Pouring water over fully-clothed practitioners and not allowing them to change afterwards• Holding practitioners still in containers or ponds full of frigid water
Below we present cases in each category.
Female Practitioners' Vaginal Orifice Hosed
Guards at Liaoning Province Women's Prison instructed inmates to grab Ms. Wang Jinping' thighs and hosed her vaginal orifice. As a result, Ms. Wang was unable to urinate and became incontinent. Both her legs became swollen and turned black and purple.
Simulated Drowning: Head Dipped or Pressed into Water
Officers at Anjia Police Station in Jiangsu Province filled a large sink with water to torture Mr. Rui Lagou and Mr. Cai Jianhua. Both men were handcuffed and shackled. The police held them upside down and dipped their heads into the sink several times to simulate drowning sensations. Both victims choked in the water.
Mr. Jiang Guobo, a former official of the Weifang City Political and Legal Affairs Committee, was stripped naked and had his hands and feet tied up. The guards next pressed his head into water to suffocate him. They also used a hose to spray water into his mouth and nose to restrict his breathing. This torture lasted over half an hour each time.
Guards at Xianning Detention Center in Hubei Province stripped Mr. Huang Junliang naked and forced him to squat down with the back of his head pressed against a wall. They slowly poured water over the top of his head. When the water ran over his nose, it would form a "waterfall," covering his nostrils and mouth. To catch his breath, Mr. Zhang had to swallow mouthfuls of water. By the time the torture was over, his belly was visibly bloated.
Stripped Naked and Had Cold Water Poured Over Body
A woman was arrested in December 2000 after she went to Beijing and displayed a protest banner reading "Falun Dafa is good." While in detention, she was forced to stand barefoot on the concrete floor and savagely beaten. She passed out as a result, only to be awakened by inmates. They next stripped her naked and poured three basins of cold water over her. Her menstrual blood flowed everywhere.
Torture re-enactment: Drenched with cold water
A doctoral student named Wang Shiyuan from Nankai University in Tianjin had 27 buckets of cold water poured over his naked body after he was forced to reveal that he was 27 years old.
Guards at Shuangkou Forced Labor Camp in Tianjin stripped Mr. Du Yingguang to his underwear and restrained him to a bed. Inmates kept pouring cold water on him, and the bed was soon soaked. In the meantime, a fan was turned on at the maximum setting to blow cold air towards him. Mr. Du suffered frostbite on his feet. A guard ordered inmates to cover him with a quilt, and they proceeded covered him with a quilt soaked with cold water for more than three hours.
In the winter of 2007, when the temperature dropped to freezing or below, prisoners in Deyang Prison in Sichuan Province poured basins of cold water over Mr. Xiong Xiuyou until he shivered all over. This was repeated every few days. After the "shower," they forced him to walk over 40 meters back to his cell, naked. He was still disallowed to put on any clothes in the cell and had to sleep on a coir mattress and cover himself with a thin quilt. Mr. Xiong was in his sixties at the time, with serious physical injuries from torture. He had had a high fever for days, and his body twitched continuously. He also became completely incontinent, and the mattress was soiled with urine and feces.
Mr. Liu Naihe, a former high school teacher from Lianyungang of Jiangsu Province, was stripped naked outside and had icy water poured over him. His tormentors next held his hands against window bars to freeze him. The weather was so cold that his tormentors had to pull their hands away to warm themselves. Mr. Liu broke free for a moment, only to be captured and badly beaten. In the ensuing struggle, his head hit the cement floor, and blood gushed from his forehead.
Former judge Liang Yuncheng from Dandong City, Liaoning Province once had hot chili powder placed in his underwear while being punched in the face and whipped with his own shoes. The guards next poured cold water all over him. When the guards decided it was too much work to go to refill the bucket in the washroom, they simply scooped up the dirty water laced with chili powder from the floor. The chili powder severely irritated Mr. Liang's eyes, genitals, and wounds. The torture went on for over three hours.
Mr. Ma Shengbo was once stripped naked in a room with the door and windows wide open. In the meantime, he had cold water poured over him. He lost consciousness as a result.
In Beijing's Chaoyang Detention Center, a young woman in her twenties was stripped naked and drenched with cold water. When the guards failed to make her renounce Falun Gong, they put pajamas and socks on her before pouring cold water into her collar and pants. They blew on her with a fan at the same time. Water turned into ice, and her clothes became frozen. She lost consciousness.
Mr. Zhu Wenlong was forced to take off his clothes and stand still. Over twenty inmates surrounded him and poured cold water over him. They also used a harsh scrubbing brush to "wash" his head until it was covered in blood.
Mr. Zhang Jinqi, 76, from Huairou District of Beijing, is a retired engineer. While he was detained at Huairou Detention Center back in 2001, the guards ordered inmates to strip off his clothes and slowly pour 50 buckets of cold water over his head on a freezing cold day. He was beaten at the same time.
When Mr. Li Zhanxian was admitted to Luosiling Detention Center, guards poured ice-cold water on his head and down his body for 40 minutes continuously.
Cold Water Dumped Onto Head
One July day in 2008, guards at Xihu Prison in Liaoning Province had two inmates strip Mr. Gong Enrong and hold him down. Three other prisoners then doused cold water over the top of Mr. Gong's head. Such torture was dubbed "brainwashing" at the prison.
Mr. Guo Chunzhan suffered similar torture at Xingcheng Detention Center in Liaoning Province. He was forced to squat down and had cold water poured over the top of his head until his lips turned purple.
Mr. Zhao Guangxi from Heilongjiang Province had his head pressed under a water tap at Pingfang Detention Center during the coldest time of the year. The guards turned on the tap to drip water onto Mr. Zhao's head until he shivered all over and his head became numb.
Mr. Fu Yao, a music teacher at Nongfeng High School in Shuangcheng, Heilongjiang Province was once lined up together with eight other practitioners at Changlinzi Forced Labor Camp. They were all stripped naked and made to squat in a line. Guards had cold water poured over the practitioners' heads continuously. Some practitioners lost consciousness as a result.
Guards at Wushun Labor Camp hung a leaky bucket over Mr. Zhang Huabo and filled it with water, which streamed onto his head. The bucket was refilled constantly until he passed out.
Doused with Cold Water While Fully-Clothed
When Ms. Mo Yuping soiled her pants after being deprived of bathroom use, guards at Shandong Women's Forced Labor Camp gave her a "shower" by dousing her with icy water. Her winter jackets and pants were soon soaked, but the guards did not allow her to change. Instead, they opened the door and the window to let the cold air in, and Ms. Mo's clothes soon became frozen. She developed a nervous system disorder as a result.
In Division 5 of Liaoning Province Women's Prison was a "ghost room" set up specially for torturing Falun Gong practitioners. In the coldest part of winter, guards forced Ms. Han Xuejun to stand in the courtyard barefoot and poured cold water into her winter jacket. It was snowing at the time, and the temperature was twenty degrees below zero. When she still refused to renounce her belief in Falun Gong, a guard thrust the handle of a toilet plunger into her mouth.
Ms. Zhang Shuxia also suffered at the same prison when she was in her sixties: two inmates poured cold water from her neck down, completely soaking her clothes. She was then made to stand still for a long time in a room with the windows open.
Held Still in Containers or Ponds Full of Cold Water
While incarcerated at Dabei Prison, Mr. Zhang Jie was forced to sit for over ten hours inside a large basin filled with cold water, all


On a Pi, to execute a C++ code, you'll need a Makefile.
Is there an equivalent with the Arduino? Where I have some valid C++ files to upload without the IDE's help, but instead with an executable?
Whether you compile manually with a Makefile (or Arduino-Builder) or in the IDE, the end result is a HEX file. This is a text file describing the data to load into the flash memory.
You then use avrdude to install it into the Arduino - either from the IDE or by running it manually (or specifying it in your Makefile, etc).
A Makefile doesn't produce an executable. A Makefile is merely a recipe - a set of instructions - telling the make program which programs to run (gcc, avr-gcc, etc) and in what order (and with what flags) to compile your code.
There are many Arduino Makefile projects out there that do it all for you.
Take a look at platformio.org. It Provides a simple CLI environment to compile, upload and monitor.
Your Answer


text:
Economic Display in tombstone and Life Expectancy Pattern
We tested the life expectancy between two categories of tombstone displays. One category was a flat tombstone, parallel to the ground and the other was a non-flat tombstone that would stand a minimum of 50 cm off the ground. We conducted this test to check for a significant difference between life expectancies of people of different economic status. To do this we used tombstones as economic indicators. Data was collected at a local cemetery. Ages of the deceased were obtained by subtracting the birth year from the death year. We did not find a significant difference in the life expectancy. A T-test revealed a 0.22 P-value.
Life expectancy, economic status
Our hypothesis is that the life expectancy of people of high economic status will be greater than those of lower economic status. People who have low economic status are usually not very well educated and may be more likely to have jobs that may require physical labor. On top of this, a study on socioeconomic position lead to show that people who live in poor areas have poor individual health (Robert 1999). As a result they endure more physical stress than people who are well educated. Worries about money can cause psychological stress. Physical and mental stress has been identified as predictors of illness (Custer 1985). People with low income often do not have access to healthcare or the resources to prevent illness. There two factors result in a lower life expectancy (Mirowsky and Ross 2000).
experiment was designed to test whether the tombstone of an individual,
the last displays of economic status and capability, would reveal a
in life expectancy. If the hypothesis is supported than the results
that those individuals with a non-flat tombstone have longer life
than those who had flat tombstones as they are less expensive than the
non-flats. The less expensive, flat tombstones would represent the
economic status and the non-flats would represent the higher economic
Methods and Materials
28, 2007 we collected data from
The life expectancies between the two groups of tombstones showed no significant difference. The one-tailed, type one T-test revealed a P-value of 0.22.
Fig. 1. Life expectancy at ages 0-105 between graves marked with a flat tombstone and a non-flat tombstone. A non-significant difference with a P-value of 0.22.
The T-test showed that there was not a significant difference between the life expectancy of people with flat and non-flat tombstones (p =.22). This data does not support our hypothesis that people with larger tombstones would have a higher life expectancy. There are a few studies that challenge the idea that socioeconomic status affects life expectancy. One of the opposing theories is that optimism and self-confidence can counterbalance the stress and health problems caused by low socioeconomic status (Mirowsky 2000).
Multiple studies have been done that show socioeconomic status does affect health, stress and life expectancy (Robert 1999). This suggests that our methods were flawed and tombstone size is not a good indicator of socioeconomic status. Size is not the only thing that is considered in the pricing of tombstones. The material it's made from and the amount of engraving change the price. Also, factors besides socioeconomic status could affect tombstone choice, such as religious beliefs, vanity, or whether the tombstone was chosen by the deceased or a relative. Many of the larger tombstones were actually family plots, so even if the tombstones were expensive the cost per person may be low.
Further research on the topic could include examining differences in life expectancies at different cemeteries. There might also be a difference between life expectancies of people who are cremated and people who are buried.
Custer, M. 1985. Stress, life events, and the epidemiology of wellness. Journal of Community Heath Nursing. 2:4; 215-222. Retrieved on 10.29.07 from JSTOR database.
Mirowsky, J., Ross, C. E. 2000. Socioeconomic status and subjective life expectancy. Social Psychology Quarterly. 63:2; 133-151. Retrieved 10.02.07 from JSTOR database.
Robert, S. A. 1999. Socioeconomic position and health: The independent contribution of community socioeconomic context. Annual review of Sociology. 25; 489-516. Retrieved on 10.02.07 from JSTOR database.


Kambo Naturista was founded in 2015 by Deyan G., an established Kambo practitioner at the time. The motivation behind the project was to spread knowledge about Kambo and other natural and shamanic medicines. This was essential, as at this time Kambo had only just started to gain global popularity on a bigger scale, and there were fewer than 100 experienced practitioners outside the Amazon jungle.
Deyan had spent long periods in the Amazon jungle, studying traditional and shamanic healing methods. He also had years of experience as a Kambo practitioner working internationally. He was able to combine all this knowledge and experience to create a unique system that is thought by Kambo Naturista.
The first Kambo Naturista training took place in January 2016. It was the 1st Kambo training ever organized in Peru, and the 1st one anywhere to combine traditional Kambo teachings, shamanic practices, the Kambo dieta and the modern methodology of Kambo.
 Since then numerous Kambo Naturista trainings have taken place. The program is continually evolving, thanks to the amazing contribution of all our practitioners.
The term Naturista is used by ayahuasca shamans in Peru to describe a person that works with natural medicines and lives a natural lifestyle. The natural approach is strongly rooted in our organization and has added great depth to our practice and teachings.
The ancient wisdoms of the Amazon are under threat. As the younger generations of the indigenous peoples are increasingly swept up into the globalized system/machine, they become ever less interested in their traditional medicine. The Kambo Naturista organization has made it its mission to provide some of that wisdom as part of its training, in order to keep its spirit alive.
It is our intention to integrate those traditional, holistic and shamanic together with modern methods, to provide an optimal combination, and a safe and solid foundation for any sincere Kambo seeker, whether a client, patient or student.
Any Amazonian Native or Mestizo is eligible to receive free treatments and training by Kambo Naturista. We hope that this exchange will help to give back a part of something that they have lost through time.
We work closely with the Matses tribe, which is the only group of people in Peru to have preserved their knowledge about the use of Kambo. They play an invaluable role in our training program, and also supply us with our medicine. We pay them a fair rate for this, which helps them make a good living for themselves and support their families and their community.
The Kambo frogs are also very dear to us, and for that reason we have been developing ways to avoid the possible harm created by the extraction of their medicine. All of our practitioners that purchase Kambo sticks through our organization are directly supporting our project to create ponds in the jungle. These ponds are the most suitable habitat for Kambo frogs, and provide them with a peaceful place to live and procreate. In this way, we try to preserve the frogs from extinction. Unfortunately, the high interest in Kambo has also a dark side. Selling the medicine can be a profitable enterprise, causing some people to milk the frogs ruthlessly, without thought for their survival or wellbeing. Kambo Naturista rejects any financial gain from selling medicine. It only provides Kambo sticks to individuals from the KN community, and a third of the payment goes to the pond project, with the rest going to the Matses.


Clarification of Turin Judgment
by Laurie Kazan-Allen
In the aftermath of the Turin verdict of February 13, 2012 condemning asbestos defendants Stephen Schmidheiny and Jean-Louis de Cartier de Marchienne for their part in the asbestos deaths of thousands of Italians (see: Landmark Victory for Italian Asbestos Victims), many questions are being asked about the details of the 128-page ruling.
Lawyer Sergio Bonetto, who represented some of the Italian asbestos victims in this case, provided clarification regarding several issues of immediate concern. When asked whether the defendants would have to pay the damages awarded by the criminal court immediately, Bonetto said: "Formally they must pay. [However,] if they do not pay it is not directly the responsibility of the penal tribunal." He went on to explain that the civil parties could ask the civil tribunal to intervene to obtain immediate execution of the orders, but that the tribunal would have no direct way to proceed if there were no property to be seized in Italy. In that case, the Italian civil court would have to make recourse to civil courts in Belgium and Switzerland. How this would turn out was, he reflected, "very uncertain."
Responding to a question about the effect of this verdict on further civil proceedings and the timescale of future cases, Bonetto said: "For an effect of the penal decision on civil procedures, the decision has to be definitive. That means at the end of the three levels including appeal court and cassation [Supreme Court]; that means several years." However, he went on to point out that the decision had been very clear about the hazards that existed; which made civil proceedings "formally possible," provided the plaintiffs could prove that their diseases resulted from those self-same hazards. The significance of the judgement in lawyer Bonetto's view was that the judges sent out a clear message: putting others in danger was always a criminal act, showing disrespect for the law. If the defendants didn't pay anything it was entirely possible that the appeal court could impose even higher penalties than the lower court.
In the meantime, mobilization of the asbestos victims in Casale Monferrato and other towns which were part of the historic court case continues with a roundtable and press conference in Casale on February 14 followed by a general assembly two days later attended by 500+ members of the Association of Asbestos Victims' Families (Associazione Famigliari Vittime Amianto). A general assembly held today in Cavagnolo, another town contaminated by Eternit's asbestos, will ensure that efforts to secure justice for the victims, decontaminate affected towns and undertake medical research of asbestos-related diseases will continue.
February 22, 2012
 Home | Site Info | Site Map | About | Top↑


I am slightly confused bu the notion of upward-monotonicity and downward-monotonicity.
I cannot understand what exactly can be defined as upward-monoty and down-ward-monotony, is this definition of relation between two phrases, or definition of some keywords that change monotonicity.
For example, "I eat banana"->"I eat fruit" this is example of upward-monotonicity (more specific phrase entail more common phrase), so the whole sentence is called upward-monotony?
Then apply negation, "I don't eat banana"<-"I don't eat fruit"
What happens, can I call this relation downward-monotony, or applying negation is downward-monotonicity? or "don't" itself is downward-monotony.
Negation is known for it's property to reverse the monotonicity.
"Driving is dangerous" -> "Fast driving is dangerous". Here, no negation, and still is downward-monotonicity.
Apply negation,
"Driving is not dangerous" -> "Fast driving is not dangeroius".
So here, negation didn't reverse the monotonicity, so not always negation reverse monotonicity, maybe negation can only change from upward to downward, here what can be called downward-monotonicity, it looks the relation itself is whether [downward-monoty|upward-monotony|no monotony], and some "keyword" could change monotonicity only in one direction.
Please, help me to understand the notion of monotonicity.
Addendum: I am competely confused, I found the following examples in Monotonicity. page 7.
It's dangerous to drive in Rome ➝ It's dangerous to drive fast in Rome.
According to inference relation, reading the first part must imply the truth of the second part. If my understanding is wrong, please write a correct definition.
Let's check the following example.
It's safe to drive fast in Des Moines ➝ It's safe to drive in Des Moines.
I am not sure that it's a correct instance of inference relation, however it's in the manual, as a counterexample I might assume highway in Des Moines, where driving slow is not safe.
Where my understanding is wrong or example is not successful.
You are addressing two problems:
 - why is there, apparently, a monotonicity reversal when negating your first example ("banana"), but not the second ("driving")?
 - why is your first example upward-monotonic, while the second is downward monotonic?
The problem has to do with understanding that general terms like "fruit" or "driving" may refer to elements of sets that are quantified existentially or universally, while specific elements, like "banana" or "fast driving" refer to themselves.
I do not address the examples in your addendum. This answer should tell you how to deal with them
What is quantification?
Please skip this part if you already know
This is only a sketch. You may find more details on the web or in textbook. Note that the wikipedia article states that:
This is part of the problem you encounter.
Many natural language statements are actually predicate over some entities that may be element of sets.
For example you may use the predicate Eat which takes two arguments, the subject who eats and the object that is eaten.
Then the sentence "I eat banana" can be interpreted semantically as Eat (I,banana), which establishes a relation between I and banana.
But when you say "I eat fruit", "fruit" stand for Fruit which is the set of all fruits, that include banana and many others. But, how do you interpret this sentence: does it mean that you eat all fruits or that you eat some fruits. This is not obvious though it seems that most people interpret that as meaning that you eat some fruits? Furthermore this has to be your interpretation since you deduce it from the fact that you are eating banana, which cannot imply that you eat any other fruit. All you know is that you eat one fruit: banana. So for you, "I eat fruit" must mean that there is a fruit that you eat, which can be formally written as
∃ f ∈Fruit, Eat (I,f)
or less formally
There is a Fruit f such that Eat (I,f)
In this interpretation, the predicate Eat is exitentially quantified on its second variable. This mean that we state the existence of at least one fruit such that the predicate holds.
The predicate could also be universally quantified on its second variable which one writes logically as
∀ f ∈Fruit, Eat (I,f)
or less formally
For any f that is Fruit, Eat (I,f)
This would probably be stated in English as "I eat all fruits" or "I eat any fruit".
Now, when you state "I don't eat fruit", it does not mean that ther is a fruit you do not eat, but rather that you do not eat any fruit, which one can write formally as:
∀ f ∈Fruit, ¬ Eat (I,f)
or less formally
For any f that is Fruit, not Eat (I,f)
You see that this is a universally quantified statement, using the negation of the previous predicate.
This is a general rule: if you want to negate a quantified statement, you change the quantification (from universal to existential, or the converse) and you use the negation of the predicate.
The rule is simple to use in logic. It is a bit more complex in natural language in general, and English in particular. What may seem to be a negation in English is not necessarily a negation of the logical semantics of the sentence. This can be illustrated by your second example analyzed in the next section.
Things can be even more complex when there is multiple quantification.
About non-reversal of monotonicity in the second example
Your inference "Driving is dangerous" -> "Fast driving is dangerous" shows that you understand "Driving is dangerous" as "All driving is dangerous". Here, "Driving" stands for the set of all forms of driving.
Then, logically, the negation of "Driving is dangerous" is not "Driving is not dangerous" but "Some driving is not dangerous".
Then this would not imply that "Fast driving is not dangerous".
But if it were true that "Fast driving is not dangerous", that would imply that "some driving is not dangerous¨.
i.e. you have the same reversal of monotonicity:
"Some driving is not dangerous" <- "Fast driving is not dangerous".
Your problem is with incorrect negation of quantifiers, not with monotonicity.
"Driving is dangerous" means "all forme of driving are dangerous", which is a universally quantified assertion. When you negate universal quantification, you have to use existential quantification on the negation of the predicate.
The negation of "for any x, P(x)" is "there is x, not P(x)".
About the fact that the two examples have opposite monotonicity
The second issue still has two do with quantification, and the respective properties of existential and universal quantification.
To make it more visible I will use two other examples, where I make quantification explicit. Your examples are harder because they both have implicit quantification (which I already explicited above for the "driving"example).
The two examples are chosen to be very similar.
"A banana is good" -> "There is a good fruit"
"All fruits are good¨ -> "A banana is good"
You see that you have upward monotony in the first case because the more general phrase is existentially quantified.
You have downward monotony in the second case because the more general phrase is universally quantified.
Your first example is upward monotonic for that reason. If you expland the semantics of "I eat fruit", it is really "There is a fruit I eat". And we have seen your second example is universally quantified, hence downward monotonic.
Negation does reverse the monotonicity, as it exchanges universal and existential quantification.
But I do not think negation has itself an intrinsic role, at least in your examples:
"Driving is not dangerous" is negative, but has exactly the same meanind as "Driving is safe" which is not negative. Recall that the general/specific opposition here is on "driving".
 - Thank you very much for your answer, could you please take a look at addendum, it looks like I have a problem with the concept itself. Thank you. – user16168 Jun 18 '14 at 17:23
 - _USER_ Can you apply my answer to the analysis of the examples in your addendum. The "Des Moines" example is of course wrong... it could be unsafe to drive slowly (but I never went there:). – babou Jun 18 '14 at 18:03
Your Answer


Take the 2-minute tour ×
Here is the problem:
A rectangle has its base on the x-axis and its upper two vertices on the parabola y=12-x^2 What is the largest area the rectangle can have, and what are its dimensions?
Well, I don't really know where to start. My initial idea was to find inflection points because I figured that is where the vertices would be, but there are no inflection points because it is a parabola...
Then I though about finding where the derivative and the parabola cross, found it, but I don't know how that will help me.
I really don't know where to start.
Any help is appreciated, thanks.
share|improve this question
You should be able to express the area of the inscribed rectangle in terms of $x$. Differentiate that, and find the values of $x$ that make it zero, and check that your results do correspond to a maximum. – Ｊ. Ｍ. Dec 21 '11 at 16:57
Okay, so: xy=A, X(12-x^2)=A, -3x^2 + 12 = 0, x = 2, y = 8, Area = 16. – user21589 Dec 21 '11 at 17:06
_USER_: Almost there! Area is $2x(12-x^2)$, base goes from $-x$ to $x$. If you have doubts, picture will take care of them. You found the area of the first quadrant part of the best rectangle. – André Nicolas Dec 21 '11 at 17:17
add comment
1 Answer
Have a look at following picture. Does this help? Can you get (using this picture) area of the rectangle?
You should get $A(x)=2x(12-x^2)$ as mentioned in André's comment.
After getting this expression for $A(x)$, can you continue with the solution? What will be $A'(x)$ and where is it equal to zero?
You have $A(x)=24x-2x^3$, which means $$A'(x)=24-6x^2.$$ Solving $A'(x)=0$ gives $x=2$ and $A(x)=2\cdot2\cdot(12-2^2)=2\cdot2\cdot8=32$ as you correctly stated in the comment.
(There is also solution $x=-2$ but that one is not interesting for us - we are looking for $x\ge 0$ since we denote by $x$ the point to the right from $0$.)
parabola and rectangle
share|improve this answer
Whether I use 2x or x, I still get x=2 in the end, and y = 8, thus area = 16. Did I do something wrong? Assuming above equation, next step is 24x-2x^3 = A, -6x^2 + 24 = 0, x=2, y=8, area=16. – user21589 Dec 21 '11 at 17:30
The only think to do is multiply the area by 2, to get the whole rectangle. Otherwise your solution is fine. (It should be also clear that you should get the same $x$ when you maximize the area of rectangle or half of this area.) – Martin Sleziak Dec 21 '11 at 17:35
Ah, I see exactly what you mean now. Thanks. – user21589 Dec 21 '11 at 17:38
add comment
Your Answer


Starter Page
Priming & Capping: Part 1
 1. Calculate the amount of sugar needed, if not provided in a kit. Use the fermentation temp.
 1. Tasty Brew Priming Calculator
 2. Boil 1-2 cups of water.
 3. Stir in the priming sugar.
 4. Cover the pan until ready to add to the bottling bucket.
Transfer and Final gravity measurement
Transfer from secondary to bottling bucket. Be careful not to agitate the gelatin on the bottom and try to limit the exposure to oxygen. Take a final gravity sample.
 1. Place the straining bag over the output of auto-siphon.
 2. Gently transfer the beer from the fermenter to the bottling bucket.
 3. Place the thermometer and the hydrometer in the bucket.
 4. Spin the hydrometer to get any bubbles of of it.
 5. Take a final gravity (FG) measurement.
 6. Record the temperature.
 8. Calculate the alcohol percentage.
 1. I've added the formulas to my excel sheet (see the link at the top).
 2. Otherwise, I use an app (ABV Calculator for android) so I don't have to worry about the formulas.
Priming & Capping: Part 2
The priming sugar will throw off any hydrometer reading. Make sure you are done before proceeding.
 1. Add the priming sugar to the bottling bucket.
 2. Gently stir to beer to mix in the priming sugar well.
 3. Bottle and cap.
 4. Print out labels and attach them.
 5. Leave at 70 degrees in a dark area.
Day 56+: Drinking Time
The time to bottle conditioning varies quite a bit, but the "normal" way is to wait at least 3 weeks. Its said that the long the better the beer will turn out, but I imagine just like secondary fermentation this varies with the beer.
Dilbert Cartoon
 1. (11/13/2013) Initial Post.
 2. (12/3/2013) Adding a second cold crash prior to adding the gelatin as this makes the gelatin more effective.
 3. (12/5/2013) Added my spreadsheet that follows my brewing plan.
 4. (12/30/2013) Added making a yeast starter to my process.
 5. (1/3/2013) Added squeezing the steeping bag and placing yeast starter in water.
 6. (3/9/2014) Changed how I do gelatin, Updated dry hopping now that I've done it once, days for completion.
 7. (4/17/2014) Several updates all around for a slightly more refined process.
Leave a Reply


This blog chronicles my experiences learning F# via implementing Push: a programming language designed for use in evolving populations of programs geared for solving symbolic regression problems (genetic programming).
Supercharging SQL Join with GTX Titan, CUDA C++, and Thrust: Part 2
August 22, 2014 Leave a comment
All this code is now on GitHub.
Compute the mathces
Here is a simple, purely brute-force algorithm for computing the join mentioned in Part 1.
Here is the entirely "CPU" implementation of the algorithm:
std::vector<bool> matches(size);
std::fill(matches.begin(), matches.end(), false);
for (int i = 0; i < size; i++)
 for (int j = 0; j < classes.size(); j++)
 bool match = classes[j] == classCode[i];
 if (match)
 matches[i] = match;
Loop over both datasets, compare them one-by-one, if there is a match – flag it. The only thing to note is that while it's tempting to write the inner loop like this:
matches[i] = classes[j] == classCode[i];
it would be an obvious bug to do so.
This has a loathsome O(m*n) complexity (m, n – sizes of the datasets), and, in general this code is criminal.
In an attempt to decriminalize it, we delegate this work to the GPU as follows:
__global__ void joinValue(const int left, const int * const right, int rightSize, bool * const matches)
 int idx = blockIdx.x * blockDim.x + threadIdx.x;
 if (idx < rightSize)
 bool match = left == right[idx];
 if (match)
 matches[idx] = match;
__global__ void join(const int * const left, const int * const right, int leftSize, int rightSize, int childBlocks, int childThreadsPerBlock, bool * const matches)
 int idx = blockIdx.x * blockDim.x + threadIdx.x;
 if (idx < leftSize)
 joinValue<<<childBlocks, childThreadsPerBlock>>>(left[idx], right, rightSize, matches);
Pretty simple. The "join" kernel is used to "loop" over the filtering map one entry per thread. This calls a child kernel to "loop" over the "database table". The output array of "matches" is originally instantiated to "false". We are still O(m*n) in terms of work complexity, but step complexity is O(1) – just two steps are necessary.
Thrust is used to extract raw pointers to the data and pass them to the kernels. No need for CUDA boiler-plate to allocate, copy, and free the memory:
const int * const right = thrust::raw_pointer_cast(;
bool * const matchesRaw = thrust::raw_pointer_cast(;
const int * const left = thrust::raw_pointer_cast(;
//nBlocks: calculated so we have one thread per element of the "left" dataset
int nBlocks = (size + threadCount) / threadCount;
//the child kernel has nChildBlocks: one thread per element of the "right" dataset
int nChildBlocks = ((int)d_patentInfo.classCode.size() + threadCount) / threadCount;
// launch join kernel
int rightSize = (int)d_patentInfo.classCode.size();
join<<<nBlocks, threadCount>>>(left, right, size, rightSize, nChildBlocks, threadCount, matchesRaw);
//... and wait for it to finish
Filter the data
From this point on, everything is done with Thrust.
We count the number of matches and allocate a structure of arrays on the GPU to receive them. The constructor for the structure allocates every one of its arrays.
int nMatches = (int)thrust::count(matches.begin(), matches.end(), true);
PatentInfo relevantPatents(nMatches);
We copy all of the filtered data into the new location in one shot, using the Thrust zip iterators:
// output iterator. "matches" at the end has a larger size than nMatches.
PatentZipIterator relevantPatentsIter =
 relevantPatents.classCode.begin(), relevantPatents.appYear.begin(),
 relevantPatents.issueYear.begin(), relevantPatents.companyId.begin(),
 relevantPatents.isImportant.begin(), matches.begin()));
//input iterator
PatentZipIterator patentZipIter =
 thrust::make_zip_iterator(thrust::make_tuple(d_patentInfo.patentId.begin(), d_patentInfo.classCode.begin(),
 d_patentInfo.appYear.begin(), d_patentInfo.issueYear.begin(),
 d_patentInfo.companyId.begin(), d_patentInfo.isImportant.begin(), matches.begin()));
PatentZipIterator patentZipIterEnd =
 thrust::make_zip_iterator(thrust::make_tuple(d_patentInfo.patentId.end(), d_patentInfo.classCode.end(),
 d_patentInfo.appYear.end(), d_patentInfo.issueYear.end(),
 d_patentInfo.companyId.end(), d_patentInfo.isImportant.end(), matches.end()));
//copy to the output if we are matching
thrust::copy_if(patentZipIter, patentZipIterEnd, relevantPatentsIter, PatentInfo::is_matching());
Here PatentZipIterator is defined as follows:
typedef thrust::tuple<IntIterator, IntIterator, IntIterator, IntIterator, IntIterator, BoolIterator, BoolIterator> PatentIteratorTuple;
typedef thrust::zip_iterator<PatentIteratorTuple> PatentZipIterator;
A zip iterator in Thrust is similar to Zip() function in LINQ. In LINQ, Zip() is limited to two sequences, while in Thrust zip iterator can be used with as many sequences as the thrust::tuple type can handle. In large part, the purpose of this exercise was to take this iterator for a ride: an obvious optimization (discussed later) would not really require this complexity.
In this implementation, we zip up all the arrays in our PatentInfo structure together with the array of matches in a septuple. thrust::make_zip_iterator() takes a tuple of iterators and creates a single iterator that allows us to march thrust algorithms on seven arrays in lock-step. So, thrust::copy_if() – our gathering algorithm can examine one element at a time using PatentInfo::is_matching functor and see if this is a "matched" element. The predicate functor is implemented as follows:
typedef thrust::tuple<int, int, int, int, int, bool, bool> PatentTuple;
struct is_matching : public thrust::unary_function < PatentTuple, bool >
 __host__ __device__
 bool operator() (const PatentTuple& patentTuple)
 return thrust::get<6>(patentTuple);
Each element fed to the predicate is a septuple wrapped into the PatentTuple type, the last member of each septuple is an element of the matches[] array that determines the return value of the predicate.
After the gathering algorithm is done, we are ready to move the results to the host memory, which is done again painlessly by Thrust.
Performance is, unfortunately, ridiculously high. "Unfortunately" because bad performance is a great drive force of innovation and improvement. Here is the summary (in seconds, avg) for a dataset of 20,000,000 "patent ids" joined over 4000 classes.
7(actually for 5,000,000 over 3000 classes) 80 0.012
GPU performance does not include moving the data back into the host memory – this maybe takes a second. Deploying the original data to the GPU is done "off-line", so is of little interest, but it also takes a second or so.
One optimization is so glaring, that I cannot pass it by. Leave the first step intact, but then, instead of moving data to/from the GPU, convert the array of "matches" to the array of indices matched and return it to the user. No need for zip iterators, no need to shovel lots of data to/from the GPU:
 1. Deploy the list of "keys" (original list of patentIds in this case) to the GPU
 2. Find matches as before
 3. Convert the matches array into a compacted array of indices
 4. return the array to the calling application
Then the calling application can scan the array of indices on the CPU in O(nMatches) time, and return the actual filtered dataset.
Besides the fact, that much less data needs to be moved between different spaces (managed, native, GPU), we also free the GPU implementation of any data complexity: no need to know what the table we are filtering actually looks like, as long as we are filtering on a single integer key!
Categories: CPP, CUDA
Supercharging SQL Join with GTX Titan, CUDA C++, and Thrust: Part 1
August 21, 2014 1 comment
This is a post in two parts:
Part 1 – The problem, solution setup, the algorithm.
Part 2 – (The juicy) Implementation details, discussion.
select distinct p.PatentID, p.ClassId, p.CompanyId, p.IssueYear, p.AppYear, p.IsImportant
from _USER_ t
join Patents p on p.ClassId = t.ClassId
This join filters patents belonging to a set of classes from the Patents table.
Semantics are


Brazilian Jiu Jitsu
Brazilian Jiu Jitsu is an art based in ground fighting. Along with this, it teaches takedowns, takedown defense, ground control, and especially submissions. Submissions refer to holds that either cut off an opponents air supply (chokes) or look to take advantage of a joint (such as armbars).
Brazilian Jiu Jitsu fighters look to take their opponents to the ground. When on top they generally hope to escape their opponents guard and move to either side control (positioned across an opponents chest) or the mount position (sitting over their ribs or chest). From there, depending on the situation, they may choose to continually strike their opponent or set up a submission hold.
When on their backs, Brazilian Jiu Jitsu fighters are very dangerous. From the guard various submission holds can be employed. They may also seek to turn their opponent over in an attempt to reverse their fortunes.
Why Gracie Barra for Brazilian Jiu Jitsu
 - The only official Gracie Barra training centre in Glasgow
 - Certified Gracie Barra Instructors
 - Classes for all skill levels
 - Massive training environment
 - Late opening hours