Mobility is growing at light speed. Through cloud adoption and the "Bring Your Own Device" (BYOD) trend, there is growing pressure, inside and outside organizations across all industries, to pursue the path of mobility.
To achieve mobility in a way that streamlines access to IT resources most efficiently and cost-effectively, organizations should consider adapting their IT infrastructures for secure, clientless & device-agnostic access. This would give users the flexibility and freedom to work from anywhere on any device. Moreover, it would provide the simplest means to access Windows & Web-based applications, physical & virtual desktops, as well as legacy data, hosted on a wide range of platforms.
As more products become 'Browser enabled,' the demand within large corporations to shift more technologies, including terminal emulation, into the browser enabled world of software is growing. Now, with the advent of HTML5 and other technologies, it is possible to provide clientless remote desktop access to 'instantly webified' legacy applications, desktops, data hosted on Terminal Servers, VDI, and Cloud environments.
For software developers, HTML5 turns a key challenge into a great opportunity by making it possible to easily adapt terminal emulation software for mobile devices. Traditionally this has only been designed for fat clients (desktops and laptops) and thin clients. HTML5-based access technology extends the power of terminal emulation to virtually any user device running a modern browser. Without having to install anything on the device, users are offered greater ease and the ultimate in ubiquitous access.
With all its benefits it becomes obvious that a clientless, HTML5 Remote Access solution is the future of remote access. It fulfills a vision of mobile computing that in effect rids us of dependence on the traditional computer and the desk. It also simplifying the IT infrastructure side of things. Data and applications that previously resided on PCs are currently being shifted to servers and the Cloud, accessible anywhere, any time, from any device.
Ericom is a leading ISV that takes advantage of HTML5, Web and other technologies. Ericom provides access to Windows applications and desktops, as well as hosted terminal emulation software for System z mainframes (TN3270 Emulation), IBM midranges (TN5250) and other legacy systems. It works on any HTML5-supported browser on any device, including PC, Mac, Linux, as well as iPad, iPhone, Android, and Blackberry and locked down devices without having to download, install or configure anything. Got Windows applications and terminal emulation needs? Check out Ericom.
Barbara Claman works at Ericom Software, a leading global provider of Access, Virtualization and RDP Acceleration solutions.


text:
Q: Scipy.optimize.minimize objective function ValueError I am using scipy.optimize.minimize for a small optimization problem with 9 free variables. My objective function is basically a wrapper around another function, and if I evaluate my objective function, the return type is 'numpy.float32'... which is a scalar? However, I am getting the following error when attempting to use the minimize function:
raise ValueError("Objective function must return a scalar")
ValueError: Objective function must return a scalar

Is it not possible to wrap the objective function around another function? The other function arguments are globally declared, but if this is not ok, I can hardcode them into the beam_shear function.
Relevant code snippets:
from numpy import array, shape, newaxis, isnan, arange, zeros, dot, linspace
from numpy import pi, cross, tile, arccos,sin, cos, sum, atleast_2d, asarray, float32, ones

from numpy import sum, reshape
from scipy.optimize import minimize

def normrow(A):
    A = atleast_2d(asarray(A, dtype=float32))
    return (sum(A ** 2, axis=1) ** 0.5).reshape((-1, 1))

def beam_shear(xyz, pt0, pt1, pt2, x):

    # will not work for overlapping nodes...
    s         = zeros((len(xyz), 3))
    xyz_pt0   = xyz[pt0, :]
    xyz_pt1   = xyz[pt1, :]
    xyz_pt2   = xyz[pt2, :]
    e01       = xyz_pt1 - xyz_pt0
    e12       = xyz_pt2 - xyz_pt1
    e02       = xyz_pt2 - xyz_pt0
    trip_norm = cross(e01, e12)
    mu        = 0.5 * (xyz_pt2 - xyz_pt1)
    l01       = normrow(e01)
    l12       = normrow(e12)
    l02       = normrow(e02)
    l_tn      = normrow(trip_norm)
    l_mu      = normrow(mu)
    a         = arccos((l01**2 + l12**2 - l02**2) / (2 * l01 * l12))
    k         = 2 * sin(a) / l02 # discrete curvature
    ex        = trip_norm / tile(l_tn, (1, 3))
    ez        = mu / tile(l_mu, (1, 3))
    ey        = cross(ez, ex)
    kb        = tile(k / l_tn, (1, 3)) * trip_norm
    kx        = tile(sum(kb * ex, 1)[:, newaxis], (1, 3)) * ex
    m         = x * kx
    cma       = cross(m, e01)
    cmb       = cross(m, e12)
    ua        = cma / tile(normrow(cma), (1, 3))
    ub        = cmb / tile(normrow(cmb), (1, 3))
    c1        = cross(e01, ua)
    c2        = cross(e12, ub)
    l_c1      = normrow(c1)
    l_c2      = normrow(c2)
    ms        = sum(m**2, 1)[:, newaxis]
    Sa        = ua * tile(ms * l_c1 / (l01 * sum(m * c1, 1)[:, newaxis]), (1, 3))
    Sb        = ub * tile(ms * l_c2 / (l12 * sum(m * c2, 1)[:, newaxis]), (1, 3))
    Sa[isnan(Sa)] = 0
    Sb[isnan(Sb)] = 0
    s[pt0, :] += Sa
    s[pt1, :] -= Sa + Sb
    s[pt2, :] += Sb
    return s

def cross_section_obj(x):
    s = beam_shear(xyz, pt0, pt1, pt2, x)
    l_s = normrow(s)
    val = sum(l_s)
    return val

xyz = array([[ 0, 0., 0.],
        [ 0.16179067,  0.24172157,  0.],
        [ 0.33933063,  0.47210142,  0.],
        [ 0.53460629,  0.68761389,  0.],
        [ 0.75000537,  0.88293512, 0.],
        [ 0.98816469,  1.04956383, 0.],
        [ 1.25096091,  1.17319961,  0.],
        [ 1.5352774,  1.22977204,  0.],
        [ 1.82109752,  1.18695051,  0.],
        [ 2.06513705, 1.03245579,  0.],
        [ 2.23725517,  0.79943842,  0.]])

pt0 = array([0, 1, 2, 3, 4, 5, 6, 7, 8])
pt1 = array([1, 2, 3, 4, 5, 6, 7, 8, 9])
pt2 = array([2, 3, 4, 5, 6, 7, 8, 9, 10])
EIx = (ones(len(pt1)) * 12.75).reshape(-1, 1)

bounds = []
for i in range(len(EIx)):
    bounds.append((EIx[i][0], EIx[i][0] * 100))

print(type(cross_section_obj(EIx)))
res = minimize(cross_section_obj, EIx, method='SLSQP', bounds=bounds)

As mentioned before:
print(type(cross_section_obj(EIx)))

returns:
<type 'numpy.float32'>

EIx is the set of initial values for the optimization, which is an array of shape (9, 1).

A: You may want to look at Utilizing scipy.optimize.minimize with multiple variables of different shapes. What is important to understand is that if you want to use minimize with arrays, you should pass in the flattened version and then reshape. For that reason I always include the desired shape as one of the arguments to the minimize function. In your case I would do something like so:
def cross_section_obj(x, *args):
    xyz, pt0, pt1, pt2, shape = args
    x = x.reshape(shape)
    s = beam_shear(xyz, pt0, pt1, pt2, x)
    l_s = normrow(s)
    val = sum(l_s)
    return val

Then your minimize call would change like so:
res = minimize(cross_section_obj, EIx.flatten(), method='SLSQP',
               bounds=bounds, args=(xyz, pt0, pt1, pt2, EIx.shape))

A: Your array EIx of parameter values is two-dimensional; it has shape (9,1). During the minimization process this array becomes one-dimensional after the first iteration. However, your function beam_shear does not work if x is one-dimensional.
You can fix this by changing cross_section to the following:
def cross_section_obj(x):
    x = x.reshape((-1,1))
    s = beam_shear(xyz, pt0, pt1, pt2, x)
    l_s = normrow(s)
    val = sum(l_s)
    return val

The code then runs, but of course you need to double-check if that is what you actually want to calculate.

redpajama_set_name: RedPajamaStackExchange


SLC SERVICES LLP was formed to distribute AUSON PRODUCTS throughout the U.K. and IRELAND. AUSON are a Swedish family business formed in 1928 and are quality manufacturers of PINE TAR PRESERVATIVES, ASPHALT AND ROOF CARE PRODUCTS and NOXUDOL RUST PREVENTATIVES. Many of their products are eco-friendly including NOXUDOL 999 which gives 1100 Degrees of fire protection for up to one hour although it is water based.


text:
Q: Understanding classes in css I have just started learning css. I have assumed that a class is a way of grouping styling information.
I'm trying to understand CSS pagination. In the example, it is written
ul.pagination {
    display: inline-block;
    padding: 0;
    margin: 0;
}

ul.pagination li { display: inline;}

ul.pagination li a {
    color: black;
    float: left;
    padding: 8px 16px;
    text-decoration: none;
}

pagination is a class. what does it mean when they write ul.pagination li and
ul.pagination li a?
ul.pagination li a has a float left; style. what will this achieve?

A: When you have the following code block in your HTML document:

and you would like the style this list, list items, and the links separately.
ul.pagination {
    display: inline-block;
    padding: 0;
    margin: 0;
}

The CSS block above will affect your list (

).
ul.pagination li {
   display: inline;
}

This one will affect each list item (

) in your list.
ul.pagination li a {
    color: black;
    float: left;
    padding: 8px 16px;
    text-decoration: none;
}

and the last one will affect each link () inside of your list items.
float: left is used to have a horizontal list (for example menu). You can learn more from this link: http://www.w3schools.com/cssref/pr_class_float.asp
Lastly, I also suggest you to read the CSS Selectors in order to understand the logic: http://www.w3schools.com/cssref/css_selectors.asp

A: I recommend you read an authoritative source on CSS selectors: https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started/Selectors
Note that the term "selector" refers to both a rule's selector (everything before the {) but also to individual components of the selector, so h1.foo p.bar is a selector, as is just h1.foo and p.bar, for example).
In response to your questions directly:

what does it mean when they write ul.pagination li and ul.pagination li  a?

When a space character appears between two selectors (e.g. between ul.pagination and li it means "descendant", so any
 element which appears underneath an
 will be matched, no matter how deep it is (as opposed to the > selector, as in ul.pagination > li, which only selects
 elements that are immediate children of
.
CSS rules match and apply to only the deepest element in the rule, so ul li will only apply style rules to the
, but ul li a will only apply style rules to  elements.

ul.pagination li a has a float left; style. what will this achieve?

It means that every  element that is a descendent of a
 which in-turn is a descendent of a
 will have the property float: left applied to it.


text:
Q: saving ArrayList in the bundle savedInstanceState the ArrayList is defined on class level.
these are my savedInstance methods:
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putStringArrayList("savedList", list);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    list=savedInstanceState.getStringArrayList("savedList");
}

but still, when i change orientation the ArrayList is blank

A: When you use onRestoreInstanceState() to restore state, its called after onStart() so you update your list with the saved state after you define your adapter. Your best option is to restore the list in onCreate() the same way you do it on onRestoreInstanceState(). You can also redefine the adapter or call notifyDataSetChanged().

A: TextView textviewname;
String textname;

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);

       //declare the ui like this
    textviewname = (TextView) findViewById(R.id.textviewid);
       if(savedInstanceState==null){
       //the first time the activity was created
       //do the normal flow of the code
       //Example:getting the intent data for(savedList)or processing it
       Intent i = getIntent();
       textname = i.getStringExtra("savetext");
      //or textname="name_data";
       }else{
       //this is called when orientation change occur
       //get the savedata
        list=savedInstanceState.getStringArrayList("savedList");
        textname=savedInstanceState.getString("savetext");
       }

       textviewname.setText(textname);

}
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    //saving data when orientation change trigger
    //saving  data before ondestroy happens
//onSaveInstanceState is called before going to another activity or orientation change
    outState.putStringArrayList("savedList", list);
    outState.putString("savetext", textname);
    //all imnportant data saved and can be restored
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    //this is  only called after ondestroy-> oncreate occur
    list=savedInstanceState.getStringArrayList("savedList");
    textname=savedInstanceState.getString("savetext");
    //oncreate->onSaveInstanceState->ondestroy->oncreate->onRestoreInstanceState
}

A: try to use
list.addAll(savedInstanceState.getStringArrayList("savedList"));

instead
list=savedInstanceState.getStringArrayList("savedList");


Imagine doubling your income from last year? A good feeling, no?
So on this Week's call I'm giving you some Yoga biz training power-punches to get you on your way to those sort of results. Good?
Have a listen - enjoy!


The Multi-Task 'Arizona Blue' nitrile gloves are constructed from 100% clean, synthetic nitrile polymer and contains no rubber latex. The glove has a beaded cuff and textured fingertip design. This glove offers the protection of nitrile with the sensitivity of latex, providing unmatched comfort and dexterity. All Valutek gloves are tested and manufactured in ISO compliant facilities under Valutek inspection and strict process control to ensure Valutek quality standards and product specifications.
- Coating both the inside and outside of the box greatly reduces cross-contamination and allows for use in ISO 7+ controlled environments.
- 100% clean and synthetic nitrile polymer is free of chemicals associated with health concerns.
- Its larger opening promotes proper donning by allowing the operators to grab the glove from the cuff.
Box is coated inside and outside and contains 100ea/box.
This product is priced and sold by the case.


text:
Q: Intellij - Add project dependency like in Eclipse I'm switching to Intellij and trying to do the same thing as in Eclipse. In Eclipse, you can add a project as a dependency in another project (project properties -> "Java Build Path" -> "Projects" -> Click on my library project).
The current situation is that I'm developing a library and I can test the features in another project without building the jar file every time I add new stuff to the library.
I'm trying to achieve this with Intellij but without success (the projects are both imported in Intellij).
How can I do that?

A: File > Project Structure. Then choose your module, and add any dependency, either Jar, Library or Module:

Larger image here: http://i.imgur.com/rjdxJHx.png

A: From File -> project structure, select Modules.  You will be presented with all the added projects.  Click a project and from the right hand side select Dependencies tab.  This will show you projects that are not imported in red coloured text. HTH

A: File > Project Structure > Project Settings > Modules

*

*Add the module you want to add as dependency.

*Add your module dependency in your project.
If you use Maven you'll see the following message:

Module 'your-module' is imported from Maven. Any changes made in its
  configuration may be lost after reimporting.

→ Add your project to your pom.xml
If you don't do that, your dependency will be removed each time you reimport/refresh maven projects.


WASHINGTON – LaMarcus Aldridge took full responsibility after Bradley Beal nailed a game-winning 3-pointer on Wednesday night, helping the Washington Wizards to a 102-99 victory over the Spurs.
Beal was able to take advantage of some miscommunication from the Spurs on defense, as Aldridge did not read a switch in time, allowing Beal a clear look at the basket, which he converted.
"It was a late read," said Aldridge, who finished the game with 10 points and 14 rebounds. "I tried to get out there and he did a good job on me and made the shot."
Kawhi Leonard led the way for the Spurs, scoring 23 points, while Tony Parker finished with 17 points and four assists.
Washington's Bradley Beal rises for the game-winning shot before LaMarcus Aldridge can get a hand up Wednesday night.
Express-News Spurs reporters Jabari Young and Jeff McDonald discuss the game and explain how the Spurs are still a work in progress early in the season.


text:
List of Home Grown Terrorists in the U.S.A.
Most of the last few years' media coverage on terrorism focused on "Islamic terrorism". This is somewhat not surprising after the spectacular media coverage of September 11.
However, this coverage ignores that inside America, there has always been some home grown terroists. By home grown, I mean that they are born in America, mostly whites, of Christian background, and not 'foreign' nor 'alien'in any sense of the word. They are mainstream Americans ethnically and culturally.
Here is a sampling of some home grown terrorism:
Timothy McVeigh is the right wing Christian who bombed the FBI Building in Oklahoma City. Here is a mug shot of McVeigh.
The Unabomber
Ted Kaczynski - The Unabomber
Clayton Waagner
Clayton Waagner - Anti Abortion Terrorism
Eric Rudolph
Eric Rudolph is another anti-abortion terrorist, who recently pleaded guilty for bombing the Atlanta Olympics in 1996.
Dr. Robert Goldstein, is a Jewish podiatrist. He plotted to bomb Islamic mosques, Islamic centers and Islamic schools with his wife.
William Krar and Judith Bruey
William Krar planned to use cyanide to poison thousands of people. He was dubbed The American Taliban afterhis arrest.
The Army of God encourages killing doctors and nurses providing abortion, and burning their clinics. For example, check what Chuck Spingola, said on the Army of God web site.
Teenagers Eric Harris and Dylan Klebold perpetrated one of the most horrible crimes in the last decade, the infamous Columbine High School shooting rampage.
George Metesky
George Metesky, also known as The Mad Bomber, planted a bomb in a theatre in 1956, and attributed that to the "Hand of God'.
David Berkowitz, also known as Son of Sam, was a serial killer. More on him in this article.
Jeffrey Dahmer a serial killer and cannibal.
The FBI has a secret report highlighting threats of domestic terrorismfrom right wingers, supremacists, and others. Examples include AryanNations, the National Alliance and other ticking time bombs.
Meanwhile, although the media covers the fact that domestic extremist groups such as the Army of God, the Ku Klux Klan, and many others are a threat to America, the Department of Homeland Security have listed radical animal rights and environmental groups as threats to America, but deliberately left out all the right wing pontentially dangerous and extremist groups, such as white supremacists, anti-abortion bombers and violent militiamen. Experts on extremism have warned that these groups are ticking time bombs. U.S. Representative Bennie Thompson even wrote to the Homeland Security Secretary, Michael Chertoff reminding him of such threat, on the 10th anniversary of the Oklahoma City bombing by Timothy McVeigh.
Can you say: biased agenda?
The Terrorist Next Door A book written by Daniel Levitas after research on the right wing militia movements in America.
Terrorists Next Door?
Submitted by craig (not verified) on Mon, 2008/01/21 - 09:22
The constant use of the terms "terrorist" and "terrorism" is designed to keep the citizens afraid of everyone & everything and looking to ever-more-powerful government agencies to "protect" us. While those agencies, especially at the federal level, can kill and/od "Taze" us with impunity. (See Waco, Ruby Ridge, "Git-Mo", etc) We are well on our way to being a police state & have fascists (gov't.controlling private busnesses) in all levels to thank for it. It started with A.Hamilton, was advanced by Lincoln and put into full-play by FDR. The Bush/Clinton/Bush dynasty has given the police state real teeth.
Oh my god! Another one person crying out that we are becoming a police state. Well maybe we wouldn't end up with so much goverment control if the people maybe tried to do their own work and saved their own money without trusting random strangers.
Anyway as for "Git-mo", tell me a nation that doesn't commit acts of horrors. Look, people made the government powerful. They acted like idiots and let the special-interest groups and unions and rich run things, while they convinced themselves they could never do better and decided to seek the meager goals and their poor reality, indulging in the mass media complex for entertainment. Yet, it was the idea of not accepting the present reality that has made our nation great. We proved to the world a republic could be more than a couple thousand people, that non-unified singular state could work. Look, instead of blaming the government for so much, why don't you try and remind people that we live in america, a nation where we don't have to take this and can follow our own path and fuck-you to the people who say we can't. Why don't you actually get people to get off their asses and make their own businesses, make their own job and stop relying on others. How about you and a bunch of people march on the capitol building and DEMAND your god-damn money sent to the banks back! GET OFF YOUR ASS, STOP BLAMING THE GOVERNMENT AND DO ANYTHING!
PS I have relatives who lived through a real fascist state and I have researched the real police-states like Stalin's Imperial Japan and NAzi Germany. If this was a police-state, what are the odds you would live beyond three days after posting this comment?
The operative word is
Submitted by Dave (not verified) on Sat, 2018/12/15 - 08:39
The operative word is "becoming". We may not be there yet but without people to stand up to it, we will be there soon enough.
I am 60 years old and have seen the changes from a completely free society to a society where you have to hold your tongue or be accused of some Hate/Racist/Homophobic/Sexist (delete as appropriate) crime. The freedom of speech we once had in the West is gone, replaced by PC speak and court appearances for anyone who doesn't abide by it. How long before court appearances become DISSappearances?
Been sitting here for TWO YEARS without a job - can't get public assistance - I'm White LOL and you people on your freakin high and mighty want to know why there is "home grown terrorism" Well let me sum it up for you - I'M TIRED OF THE BULLCRAP EH !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Homeboy terrorists
Submitted by barracky Obammie (not verified) on Mon, 2010/02/15 - 09:18
I cant believe you left out my homies Billy Ayres and his wacked out bitch, Dorn..
You forgot some!
You forgot Colleen LaRose, Faisal Shahzad, Waqir Khan, Ramy Zamzam, Umar Chaudhry, Ahmad A. Minni, Aman Hasan Yemer, Serdar Tatar, Mohamad Shnewer, brothers Dritan, Shain and Eljvir Duka, Agron Abdullahu, Nidal Malik Hasan, Najibullah Zazi, David Coleman Headley? Did you forget about them?
What is wrong with home grown
Submitted by Anonymous (not verified) on Mon, 2010/05/10 - 22:30
What is wrong with home grown terrorism when compared to NATO countries sticking there noses where they dont belong.
Submitted by Nick (not verified) on Mon, 2018/10/15 - 11:15
I do note a bias. I note that this site left off groups such as Antifa, which advocates violence against any they deem to be right wing radicals. If you call yourself a "patriot", the Antifa movement identifies you as a right wing radical and will engage in violence to "curb" your behavior.
Yes, always amuses me that
Yes, always amuses me that they refer to themselves as "anti-Fascist" and yet they use violent means to silence opposition, in direct contradiction to what they purport to stand for.
how to define terrorism
Submitted by the Lunatic (not verified) on Wed, 2019/08/07 - 20:07
As Long As CORRUPTION is the ruling factor on this Planet and NOT the LAWS in it, the Lunacy will continue, the LUNATIC will exist. the Oligarchy system has proven thus far throughout ALL of HUMAN HISTORY that is DOES NOT WORK AT ALL. Yeah, it may work for the Wealthy (Social Elite), BUT eventually, will cause more uprising than submission. Terrorism and Terrorist are words that can be flaunted easily to discourage Free Speech and Freedom of the Press, BUT eventually, will cause more of the People to rise up against the System. it has been said by many that the System is broken, which in fact, that is NOT the Truth at all. the System will work properly if CORRUPTION was not the primary factor involved in the System to begin with. take for example, the title phrase, THE CRIMINAL JUSTICE SYSTEM. now how can that be justice?? who is it justice for?? the Criminals?? well the title says it all, THE CRIMINAL JUSTICE SYSTEM which justifies Criminals!! it's NOT the American Justice System or the People's Justice System, is it?? words are powerful if correctly placed in way to aid in any society or organization. another example, Veterans were put number one on the List of Homegrown Terrorists in America by the former Director of DHS Janet Napolitano which the information was derived from the State Department of former Secretary of State Hillary Rodham Clinton thus supported by the former Attorney General Eric Holder and former President of the United States of America Barack Hussein Obama. now did anyone in America see how CORRUPTION can seep into the fabric of Our Nation to degrade to ashes and downplay Our Rights to nothingness?? where are the outcries of that from AntiFa, where are the protests from Black Lives Matter?? no where!! it is for the Government to label ANYONE a Terrorist and take away the Rights of the accused, BUT, when the Government is the Terrorist, what are the American People to do then???

redpajama_set_name: RedPajamaCommonCrawl


text:
Home » Features » Film, Books, Music, and Poetry » Book Review: Xuanzang: China's Legendary Pilgrim and Translator
Book Review: Xuanzang: China's Legendary Pilgrim and Translator
By Raymond Lam
Xuanzang is the most famous of China's Tang-era monk-pilgrims. He has enjoyed an outsize literary impact on the trajectory of Chinese Buddhism and the presentation of Chinese culture within China and abroad. His journey to India and back, subsequent writings and translations, and legacy have been undeniably influential. He was also the inspiration for the (not-too-accurate-to-life) protagonist Tripitaka in the Ming-era classic Journey to the West. Xuanzang's life and work is now the subject of Benjamin Brose's new book, Xuanzang: China's Legendary Pilgrim and Translator (2021), which returns to familiar material but with important new updates.
Brose is no stranger to covering lesser-known historical periods of Buddhism. His book Patrons and Patriarchs (2015 University of Hawaii Press) brought attention to neglected trends of Buddhist flourishing and expansion during the Five Dynasties and Ten Kingdoms (907–79 CE). His new volume returns to a much-covered personage who deserves a prominent place in Shambhala Publications' new series, "Lives of the Masters," which aims to offer "lively and reliable introductions to the lives, works, and legacies of key Buddhist teachers, philosophers, contemplatives, and writers." (vii) Each book unpacks the life and work of historical figures that not only embodied Buddhism's ideals, but who also pioneered and innovated new ideas that grew to be their own dynamic living traditions. Such traditions were significant enough to shape their own lifetimes, and are recognized today as having bequeathed a vibrant legacy of wisdom and practice to future generations.
From shambhala.com
There are three broad sections in Xuanzang, each of which is divided into specific chapters. The first, "Life," highlights Xuanzang's journey to Bodh Gaya (13–40), his trip from Nalanda back to Chang'an (41–72), and then his time in China (73–104). The second section, "Translations," is Brose's translation of selected portions of Xuanzang's The Record of the Western Regions, as well as other primary texts, such as letters to eminent masters and an account of Xuanzang's death (105–86). Finally, "Legacy" provides an exhaustive evaluation of the pilgrim-monk's lasting impact and influence on Chinese Buddhism (187–257).
This final section is especially important as it contextualizes the significance of Xuanzang beyond his doctrinal focus on Yogacara (a school that, from an institutional perspective, did not endure or retain imperial favor for long after his death). It also makes the case that Xuanzang was somewhat of a proto-Buddhist studies figure, noting that he played:
. . . pivotal roles in the transmission, translation, and study of Buddhist texts in the modern era. Men like Cunningham and Stein used his Record and Biography to locate lost Buddhist sites and uncover buried Buddhist art, architecture, and texts. The monasteries and stūpas excavated by Cunningham and the manuscripts collected by Stein helped ignite an interest in Buddhism among the people of Europe and, soon thereafter, in North America. When he was alive, Xuanzang spent more than sixteen years in Central Asia and India with the goal of acquiring texts and teachings that would reinvigorate the Buddhist traditions of China. Twelve hundred years later, his work played a crucial role in introducing those same teachings and traditions to the West. And yet, for all that is known about Xuanzang's life and work, the ways in which he is portrayed often bear uncanny resemblances to those painting the portraits.
However, as mentioned above, such an identity was constructed by European Indologists of the late 19th and early 20th centuries, with the long-dead Xuanzang unable to speak for himself. Therefore, certain conceptions of Xuanzang possess sinister and racist undertones that are products of their time. (206–10) However, what everyone agrees on is that Xuanzang's journey was an extraordinary success, more so than any trip made by predecessors such as Yijing (635–713) or Faxian (337–c. 422). It was very likely an odyssey of great personal trial, suffering, and growth. Brose writes:
The Record of the Western Regions, the most extensive and detailed account of seventh-century Central Asia and India ever produced, is one of the only original works Xuanzang composed. Its historical value is unparalleled, but it was probably a low priority for Xuanzang. The twelve-fascicle text was completed quickly, in just over a year, and Xuanzang never again wrote about his travels abroad, though later generations never tired of retelling (and embellishing) the story.
Record is relatively impersonal and sometimes reads like an intelligence report. (76) This indicates that Xuanzang's approach to writing about the regions was detached, professional, and in parts probably based on local hearsay translated into Chinese by his interpreters. He very likely made friends and formed personal bonds, but we do not truly know who these people were or how they related to him. Far more important for his career was his relatively sedentary life after his nail-biting pilgrimage. Chapter three, "China," provides a comprehensive glimpse into the working life of Xuanzang upon returning to Chang'an and receiving a hero's welcome from the emperor. Key to understanding Xuanzang's thinking and translation priorities during this time are the shadows of two overbearing monarchs, both of whom breathed down his neck throughout his ecclesiastic career. The dynamic between Xuanzang and Taizong (emperor regnant when Xuanzang left China) and Gaozong (Taizong's son) almost resembles that of an office sitcom, with the two bosses taking an excessive interest in their valuable employee's movements, tracking his every move, and making constant demands of him. As for Xuanzang, he could be a Tang-era protagonist: outwardly at the pinnacle of his career at Hongfu Temple, which was in close proximity to the imperial court, but yearning for the solitude and spiritual purity of Shaolin Temple in the mountains.
The monk-emperor relationship, of course, was much more complex than any fictional trope; Xuanzang did not rise to the top of monastic politics and imperial proximity simply by being a nice fellow. He was a power broker and his organs of influence and leverage are highlighted objectively and insightfully in Brose's analysis. (82– 85) The relationship between Xuanzang and the laypeople of influence around him was an important aspect of his working life. Xuanzang's religious career cannot be seen in isolation from lay personalities, especially those who were tied to the imperial court. For example, it was a confluence of relationships with members of the imperial family, high officials, military men, disciples from the gentry and nobility, and other networked individuals that led to the rise of Xuanzang's prestige and dominance at court. Without the personal relationships cultivated between these powerful people and Xuanzang, Buddhism would not have gained any institutional ground.
Furthermore, the emperors' attitude toward Buddhism was at times ambivalent, if not outright hostile. While Xuanzang was still on his journey, Taizong tried unsuccessfully to forbid certain Buddhist practices in 631, and then issued a series of edicts that elevated Daoist doctrines over Buddhist teachings, prioritizing Daoist officiants at state ceremonies over Buddhist monks. (89) It was only after his odyssey that Xuanzang managed to turn the tide back in Buddhism's favor:
After his return, Xuanzang's erudition, experience, and political savvy won him the favor first of Emperor Taizong and then of his son and later successor, Emperor Gaozong. No other Buddhist monk enjoyed this level of access and influence at court, and Xuanzang felt an obligation to use his position to lobby for greater imperial support for Buddhist monks and monasteries.
In a twist of fate, this rapid entrenchment of Buddhist interests at court faced a similarly sharp and rapid reversal in the years leading up to Xuanzang's death. Several years later, when his body was moved further away from the imperial capital to a more distant grave, it was clear that both Xuanzang and the teachings he promulgated had fallen out of favor. (188) This tension between imperial ire and favor haunts the final pages of Brose's book, wherein he looks at how Xuanzang has been recast as a national hero for China, a trans-national, pan-Asian unifier, and a tourism magnet for India. Like writers and scholars, countries and governments see what they wish to see in the monk.
Xuanzang eventually moved to the mountains, where he hoped to be left in peace. But the emperors, it seems, are not done with him yet.
Xuanzang is one of those personages in Buddhist and Chinese history who will always enjoy a revered place among Sinologists and Buddhologists. As Brose manages skillfully to highlight, however, his overall position in the pantheon of Buddhist historical figures might not be as simple or settled as we think. There are people of greatness and enduring fame who have had libraries written about them. Xuanzang is one of them, and in this sense Brose's book joins a distinguished lineage of studies about China's most famous pilgrim-monk. However, its nuance and depth of thought give it a strong edge over many introductory books to Xuanzang. This is the strength of the "Lives of the Masters" series: it re-introduces familiar names in an updated light, allowing us to revisit these great women and men, while being able to enjoy a different conversation with them.
Brose, Benjamin. 2021. Xuanzang: China's Legendary Pilgrim and Translator. Boulder, CO: Shambhala
Related news reports from BDG
Sublime Wanderings: Buddhist Scholar Plans Video Series to Document the Pilgrimage Path of the Buddha
Archaeologists in China Unearth Sutra Translation by Tang Dynasty Monk Xuanzang
Patrons and Patriarchs – Book Review
Sublime Wanderings: Rediscovering the Buddha in the Footsteps of Xuanzang
Tags: archeology, Buddhist pilgrims, Buddhist studies, china, China-India relations, chinese buddhism, chinese history, critical Buddhism, history, history of Buddhism, india, indology, pilgrimage, Shambhala, Shambhala Publications, tang dynasty, Xuanzang
Raymond Lam is senior writer at Buddhistdoor Global. He has been a Chinese Buddhist layman since 2008. He read religious studies at The School of Oriental and African Studies and The University of Queensland. He became a religion journalist and began working for the Buddhistdoor organization in 2010. He is a trustee of The Heythrop Association.
Why I Dance
Sculpting Silence: The Artistic Meditations of Elizabeth Turk
Mandalas with a Mission: The Touring Monks of the Ngari Institute in Ladakh
How does it serve others?
Buddhist Tourism in West Bengal and Bangladesh: An Untapped Resource
New York's Rubin Museum Offers an Immersion into Buddhist Wisdom and Practice
American Soto Zen Pioneer Yvonne Rand Dies Aged 84
Buddhist Tzu Chi Foundation Offers Help as Haiti Recovers from Massive Earthquake
International Women's Day: Celebrating the Women of Buddhism
Kalmyk Buddhists Mark the 15th Anniversary of the Golden Abode of Shakyamuni Buddha
Wonderful book, I will get it for Xmas present!


I've decided to do my latest blog on something very personal to myself and relevant in today's news DIABETES.
First I think most people are aware that there are 2 types of diabetes. Type 1 and Type 2 this where the confusion begins.
Type 1 is seen as the most severe due to the fact that all Type 1 diabetics are insulin dependent. The reason for this is that the pancreas has ceased to function.
A number of things can cause this including illness but it is completely unavoidable for those that suffer from Type 1, generally it happens during childhood and is a genetic disorder.
Type 2 diabetes or Adult onset Diabetes as the name suggests tends to happen later in life and is caused by being overweight, under active and poor diet high in calories and sugar. This form is completely avoidable and reversible – if a lifestyle change is made!
Type 2 as I suggest can be controlled with diet and exercise without medication, the next phase if changes are not made would be Metformin and finally becoming Type 2 insulin dependent. Now in my opinion this is the most dangerous! Often Type 1, such as myself have lived with it for years and immediately have to learn to deal with insulin which can be extremely dangerous, even deadly, Type 2 diabetics have had years to adapt their lifestyles and eating habits and if they still haven't and become insulin dependent then there most likely never going to and will find it almost impossible to live with insulin dependency.
Unfortunately there is a now a new trend of young children becoming Type 2 diabetic, which was unheard of 10 years ago. This is caused by increased child obesity and to be frank, fat people bringing up fat kids! The aim of this blog is to educate people in the difference between Type 1 diabetes – an unavoidable illness and Type 2 an avoidable and in a lot of cases reversible illness, something that with correct education can improve people's lives and that if their families.


text:
Plan To Loosen More Coronavirus Restrictions In Illinois Coming This Week
Masks aren't going away anytime soon for Illinoisans as coronavirus continues to put people at risk.
9:04 AM CDT on Mar 16, 2021
A family arrives as 6th thru 8th graders return to in-person learning at Richardson Middle School in the West Lawn neighborhood on March 8, 2021.
CHICAGO — An updated plan for reopening Illinois as the pandemic's end near will be released this week.
With vaccinations ramping up — and even more doses expected soon — and cases and deaths plateauing, officials have said the end of the coronavirus pandemic is in sight. City and state leaders are looking for ways to safely lift restrictions and bring back a semblance of normalcy, with Gov. JB Pritzker expected to announce later this week an update to Illinois' reopening.
Pritzker laid out a plan in May that said Illinois would move into a final phase, Phase 5, and operate under a "new normal" when vaccinations were widespread; if there was an effective, easily available treatment; or if there was a significant, prolonged drop in COVID-19 cases and deaths.
Illinois is currently in Phase 4, meaning businesses still operate under some restrictions and there are limits on how many people may gather at once. The updated plan coming later this week is expected to detail how Illinois will move into Phase 5 and what restrictions could be eased up on before then.
Pritzker's plan, created with doctors and other experts, has changed throughout the pandemic. Notably, he introduced a tiered system of restrictions for each region of Illinois during the fall surge in cases. Those changes have earned him praise for some — and criticism from others, who think the restrictions hurt businesses and workers.
One thing that won't change anytime soon: "Masks have to continue to be a mainstay," Dr. Ngozi Ezike, head of the Illinois Department of Public Health, said at a Senate committee hearing Monday, according to the Tribune.
Ezike said the state is "getting close" to lifting restrictions, according to the Tribune.
Pritzker said last week he and the state's experts are looking at what restrictions they can roll back, but they need to judge that against the continuing risks of the pandemic — especially since more contagious variants of the virus have been found in Illinois.
"We're getting closer every single day to the end of this pandemic, but we're not there yet," Pritzker said.
While Chicago has largely followed Illinois' reopening plan, the city is allowed to impose more restrictive coronavirus safety rules than the state's. The city has released a roadmap detailing what metrics it will use to lift restrictions from businesses as it gets better control of its COVID-19 outbreak.


If your air conditioning unit at home is more than 10 years old, maybe it's time that you consider a replacement. According to experts, AC systems start to break down more frequently starting around 8 years old. If you choose to continually replace parts instead of getting a new, you might just end up paying more than what you would have paid to buy an entirely new system.
Below are some of the things you need to consider when replacing your old air conditioning unit.
– Consider replacing not just the AC unit but also the furnace, air handler and the outside AC unit with its condenser and compressor.
– Make sure the contractor considers the duct efficiency, size, shape, and orientation of your home.
– Don't always go for bigger units.


text:
require File.expand_path('../boot', __FILE__)

require 'rails/all'
require 'recaptcha/rails'
require 'csv'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
#if defined?(Bundler)
# If you precompile assets before deploying to production, use this line
#Bundler.require(*Rails.groups(:assets => %w(development test)))
# If you want your assets lazily compiled in production, use this line
# Bundler.require(:default, :assets, Rails.env)
#end
#Bundler.require(:default, Rails.env)
#Changed when migrated to rails 4.0.0
Bundler.require(*Rails.groups)

begin
  # If Rollbar has been included in the Bundle, load it here.
  require "rollbar"
rescue LoadError => e
  # noop
end

module DMPRoadmap
  class Application < Rails::Application

    # HTML tags that are allowed to pass through `sanitize`.
    config.action_view.sanitized_allowed_tags = %w[
      p br strong em a table thead tbody tr td th tfoot caption ul ol li
    ]

    config.generators do |g|
      g.orm             :active_record
      g.template_engine :erb
      g.test_framework  :rspec
      g.javascripts false
      g.stylesheets false
      g.skip_routes true
      g.view_specs false
      g.helper_specs false
      g.controller_specs false
    end

    # TODO: Set up a better Rails cache, preferrably Redis
    #
    # From Rails docs:
    # https://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-memorystore
    #
    # If you're running multiple Ruby on Rails server processes (which is the case if
    # you're using Phusion Passenger or puma clustered mode), then your Rails server
    # process instances won't be able to share cache data with each other. This cache
    # store is not appropriate for large application deployments. However, it can work
    # well for small, low traffic sites with only a couple of server processes, as well
    # as development and test environments.
    # config.cache_store = :memory_store, { size: 32.megabytes }

    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
    # config.time_zone = 'Central Time (US & Canada)'

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
    # config.i18n.default_locale = :de

    # Configure the default encoding used in templates for Ruby 1.9.
    config.encoding = "utf-8"

    # Configure sensitive parameters which will be filtered from the log file.
    config.filter_parameters += [:password]

    # Enable escaping HTML in JSON.
    config.active_support.escape_html_entities_in_json = true

    config.eager_load_paths << "app/presenters"

    # Use SQL instead of Active Record's schema dumper when creating the database.
    # This is necessary if your schema can't be completely dumped by the schema dumper,
    # like if you have constraints or database-specific column types
    # config.active_record.schema_format = :sql

    # Enforce whitelist mode for mass assignment.
    # This will create an empty whitelist of attributes available for mass-assignment for all models
    # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
    # parameters by using an attr_accessible or attr_protected declaration.
    #config.active_record.whitelist_attributes = true

    config.autoload_paths += %W(#{config.root}/lib)
    config.action_controller.include_all_helpers = true

    # Set the default host for mailer URLs
    config.action_mailer.default_url_options = { :host => "#{Socket.gethostname}" }

    # Enable shibboleth as an alternative authentication method
    # Requires server configuration and omniauth shibboleth provider configuration
    # See config/initializers/devise.rb
    config.shibboleth_enabled = true

    # Relative path to Shibboleth SSO Logout
    config.shibboleth_login = '/Shibboleth.sso/Login'
    config.shibboleth_logout_url = '/Shibboleth.sso/Logout?return='

    # If this value is set to true your users will be presented with a list of orgs that have a
    # shibboleth identifier in the orgs_identifiers table. If it is set to false (default), the user
    # will be driven out to your federation's discovery service
    #
    # A super admin will also be able to associate orgs with their shibboleth entityIds if this is set to true

  # START DMPTool customization
  # ----------------------------------------
    config.shibboleth_use_filtered_discovery_service = true
  # ----------------------------------------
  # END DMPTool customization

    # Active Record will no longer suppress errors raised in after_rollback or after_commit
    # in the next version. Devise appears to be using those callbacks.
    # To accept the new behaviour use 'true' otherwise use 'false'
    config.active_record.raise_in_transactional_callbacks = true

    # Load Branded terminology (e.g. organization name, application name, etc.)
    if File.exists?(Rails.root.join('config', 'branding.yml'))
      config.branding = config_for(:branding).deep_symbolize_keys
    end

    # The default visibility setting for new plans
    #   organisationally_visible  - Any member of the user's org can view, export and duplicate the plan
    #   publicly_visibile         - (NOT advisable because plans will show up in Public DMPs page by default)
    #   is_test                   - (NOT advisable because test plans are excluded from statistics)
    #   privately_visible         - Only the owner and people they invite can access the plan
    config.default_plan_visibility = 'privately_visible'

    # The percentage of answered questions needed to enable the plan visibility section of the Share plan page
    config.default_plan_percentage_answered = 50

  # START DMPTool customization
  # ----------------------------------------
    config.autoload_paths += Dir[Rails.root.join('lib', 'dmptool', 'model', '{**}')]
    config.autoload_paths += Dir[Rails.root.join('lib', 'dmptool', 'controller', '{**}')]

    config.rss = 'https://blog.dmptool.org/feed'
  # ----------------------------------------
  # END DMPTool customization

  end
end

redpajama_set_name: RedPajamaGithub


text:
Josiane Fashion House Photoshoot | Maine Craft Content Project
Photoshoot featuring the designs of Josiane Fashion House
Meet Josiane Fashion House —
Josiane Mutangana is the sole creator behind the brand new textile and fashion based business in Westbrook, Maine. Josiane was born in Rwanda, East Africa, and eventually made her way to the United Kingdom for college. While in the UK, she earned multiple degrees: a Bachelors in Management and Economics & a Masters in Business Administration. After graduation, she worked in local Rwanda government for multiple posts over the course of 10 years.
Fast forward to 2019, Josiane moved to the United States because she married a Mainer! Since moving to Maine, she has become a new mother, and found her way to Common Threads of Maine sewing school. She enrolled in the summer of 2021 and learned all the basics of sewing, something she had been yearning to do since she was a child. Josiane wanted to find a job where she could stay home with her new child, and this opportunity allowed her to do just that.
Shortly after graduating, she applied for a fellowship that Common Threads of Maine was offering, intended for someone who wanted to started their own business. Josiane was awarded the fellowship which gave her a weekly stipend, studio, and 24 hour access to all the tools and machines that Common Threads had to offer.
The six month long fellowship has recently ended, and now Josiane is able to work on her business full time. Josiane's first full line of products includes many hand-sewn outfits, with a specialization in 'Mommy & Me', and family outfits. Soon she plans to release a line of smaller hand sewn pieces such as kitchen items, pet & hair accessories.
Learn more at: www.josianefashionhouse.squarespace.com
Why a photoshoot? — Josiane says, "I chose the photographs because one picture equals one thousand words. The images speak alone."
Driven almost entirely by curiosity Michael D Wilson wants nothing more than to connect with people and show what it is that makes them unique individuals. Michael is passionate about photography and is forever in search of people that are equally as passionate about their lives and work. He always says "The best part about photography is an excuse to meet new people and learn something from them." After a half-decade of assisting photographer, Martin Schoeller, Michael and his partner settled in Maine. Maine and New England provide endless opportunities for interesting and inspiring assignments as well as potential personal projects.
Follow Josiane Fashion House on Instagram
2022 Funders:
The 2022 Maine Craft Content Project is generously funded by the Onion Foundation, Maine Arts Commission & many individual donors. With this funding the Maine Crafts Association provided eight Maine craft artists with new online content to support their practices, tell their stories and grow their businesses.
Josiane Fashion House Photoshoot | Maine Craft Content Project2022-05-262022-11-10https://mainecrafts.org/wp-content/uploads/2021/09/sq_mca_hope_2021.pngMaine Crafts Associationhttps://mainecrafts.org/wp-content/uploads/2022/05/web-josiane-josis-mca-1336-1.jpg200px200px
Yuri Kobayashi Photoshoot | Maine Craft Content Project
Jennifer Lee Morrow Video | Maine Craft Content Project
2022 Maine Craft Artist Award: Ayumi Horie
In Memory of Jo Diggs
Jennifer Neptune Photoshoot | Maine Craft Content Project
Choisie Nyemba Photoshoot | Maine Craft Content Project
Introducing Alison Godburn, Our New Executive Director
Ashley Page Video | Maine Craft Content Project


Generate B2B quality leads within seconds. Save many hours and spend those saved hours on closing those generated deals!
Not only social media platforms like LinkedIn or Facebook are great for connecting. Checkout what we came up with for Google maps here below.
Download the extension and go to Google Maps (.com).
In the Google Maps search bar type (ex: Barbers in Amsterdam) and press the search button (see nr 1 in picture below) or press enter to recieve the first 20 results.
Use the pagination icons (see nr 2 in picture below) to recieve more results from Google Maps untill there are none.
When you are satisfied with the amount of possible leads in your list (press the extension icon in the top-right corner to reveal the list) press the [EXPORT DETAILED LIST TO (.CSV)] button.
The result will be downloadable by pressing the [DOWNLOAD] button that will appear.
The .CSV file will be correctly formated with detailed information about the company like; name, adres, phone numbers, website, social media links and more.
DISCLAIMER: All data collected by the extractor will not be stored locally on the computer where you install the extractor extension. The extractor will NOT attempt to offload, distribute, broadcast, sell or in any way share collected data. We designed Leads Extractor with the privacy of the user's data in mind.


text:
Dr M says has no knowledge of Jho Low's whereabouts
Chester Tay
July 11, 2019 11:41 am +08
KUALA LUMPUR (July 11): Prime Minister Tun Dr Mahathir Mohamad says he has no knowledge of Low Taek Jho's whereabouts, despite ongoing negotiations, led by Inspector-General of Police (IGP) Datuk Seri Abdul Hamid Bador, to bring the fugitive businessman back to Malaysia.
"I cannot vouch for the IGP, he must have known where the person is, I don't know," he told reporters at the Parliament lobby today, when asked for an update on the government's effort to bring back Low, who is more commonly known as Jho Low.
On Sunday, Abdul Hamid reportedly said negotiations are ongoing with the country currently harbouring Low, widely believed to be the mastermind behind the 1Malaysia Development Bhd scandal.
In relation to the investigation on the sex video featuring a figure who allegedly looks similar to Economic Affairs Minister Datuk Seri Mohamed Azmin, Dr Mahathir today said the only update from the IGP so far is that the probe is still ongoing.
"He (IGP) said he is in the process of investigation, I don't know what is the result, but we will wait for it," he said.


We congratulate His Eminence Archbishop Sevan Gharibian, the Grand Sacristan of the Armenian Apostolic Patriarchate of Jerusalem, on his birthday. We wish him many years in good health.
Շնորհավոր and may our Lord continue to strengthen you in your work, dear Srpazan Hayr.
This entry was posted in Jerusalem, News items and tagged Archbishop Sevan Gharibian, Grand Sacristan by JWD. Bookmark the permalink.


Elegant pearl-embossed swirls and silver foil accents add dimension to the cover of our white, spiral-bound guest book (may be personalized with 2 lines of text on a gold or silver plate for a small fee). The 7 1/2" by 5 3/4" book includes lined pages to hold up to 800 guest signatures. If you find you have room at the back of the book after all your guests have arrived, you may want to use the extra pages as a gift record.


text:
#4 Chocolate cake
on We Asked, You Answered: What Would You Pick For Your Last Meal On Death Row?
#6 Angela Bassett
on The 'American Horror Story' Actors We Most Want To Keep Coming Back
The Last SuspectLists about seemingly innocent people who no one considered a danger or threat—until they got caught.
Normal People Who Hid Chilling Secrets
Con Artists Who Played Doctor
Untouchable Millionaires
Brutal Misdeeds by Rich White Women
Not Very Sweet Little Old Ladies
Just Another Guy at the Office
Sadistic Cops Who Wore Badges
Shocking Misdeeds by Pregnant Women
Shameful Alumni from Ivy League Schools
Naughty Nurses Who Got Caught
Employees Who Offed Their Bosses
Normal Dudes with Human Captives
Dentists Who Did the Crime
Bad Siblings Who Teamed Up
Religious Leaders Who Probably Committed Crimes
Funeral Home Director Bobby Wilks Buried Corpses In Coffins Filled With Trash
Updated November 5, 201913 items
In 1989, a funeral director named Bobby Wilks was caught committing a set of crimes that are so disturbing they're almost unimaginable. Wilks would sell burial vaults, or cement structures that are meant to protect caskets, to grieving families and then bury the bodies without the vault. He carried out this scheme multiple times, and at some point his scheme changed from grand larceny to uninhibited desecration of a corpse. Crimes committed by funeral directors are some of the most heinous and painful crimes to think about: these are people who are meant to take care of loved ones when they pass on, and when they betray our trust it creates an abscess in grieving souls that can never be fixed.
The funeral home crimes of Bobby Wilks are not dissimilar to the crimes of grave robbers — people who steal dead bodies. Wilks would bury people without caskets, fill their caskets with trash, or just plain old dump them in a shallow grave. Even after he was arrested, Wilks continued his pattern of deviance in prison, even molesting children.
Bobby Wilks Tricked Families Into Buying Burial Equipment That He Never Used
Photo: Matt From London / flickr / CC-BY 2.0
How could anyone allow their loved one to be buried with a pile of trash? Bobby Wilks was very good at convincing people that the last thing they would want to do is watch the lowering of the casket into the ground.
After selling the family on the idea of a burial vault, a concrete structure that keeps the casket from sinking, he would play the respectful funeral director and insist that a family's last memory of their loved one shouldn't be of seeing them lowered into the ground. Once when they were gone he would remove the remove the vault, and if the family was lucky, just bury the deceased in their coffin and re-sell the vault.
Wilks Would Bury Bodies Without Coffins
Photo: Mondo Tiki Man / flickr / CC-BY-NC-ND 2.0
Bobby Wilks wasn't just overcharging people for burial vaults that he didn't use: sometimes he wouldn't even bury a body in a coffin. There seems to be no rhyme or reason for whom he decided to just dump in shallow hole, but often he would be careless and just toss a body without even placing it in a coffin.
One grave that was exhumed showed the complete lack of empathy that Wilks had for the families who had hired him. When police dug up the plot they found that a coffin had been buried sideways and that the dead's body parts had spilled out.
Wilks Stuffed His Garbage In With The Deceased
Photo: amslerPIX / flickr / CC-BY-NC 2.0
One of the most bizarrely utilitarian things that Wilks did with the bodies that he was meant to bury was turn them into his own private garbage dump. Once Wilks was caught police began to exhume the bodies of people he'd recently buried and they found that many of the caskets held the recently departed along with pieces of rubbish like apple cores and dog food cans.
Mary Masterson, who found soft drink bottles in the casket of her mother told UPI: "I could very easily have him killed. All it would take is one phone call. She's not a garbage disposal."
His Coworkers Had Been Suspicious For A Long Time
Photo: sgath92 / flickr / CC-BY 2.0
After years of working alongside of Wilks, his coworkers began to suspect that something was off with how he worked. Mortician Al Jessie of Robertson County described the funeral home run by Wilks as a "shotgun, happy-go-lucky operation." That doesn't really sound like something you want in a funeral home.
Jessie noted to the Tennessee Funeral Board that he once saw Wilks move a body in the back of his Volkswagen bus because "the weather was too bad" to use a hearse.
Some Of His Victims Were Buried In Cardboard
Photo: darkthirty / flickr / CC-BY-NC-ND 2.0
There seemed to be no rhyme nor reason for the way that Bobby Wilks buried his victims. Some of them actually made it into their caskets, while others served as a human trash can. However, after exhuming many of the bodies that Wilks buried police discovered that the corpse Joseph Roath had simply wrapped in a piece of cardboard and tossed in a shallow grave.
The three-foot-deep hole and cardboard coffin were hardly where his family thought Roath would be spending eternity; his family had paid for both a casket and a vault. Wilks never confirmed whether or not this cardboard burial was the result of a personal vendetta against Roath.
Wilks Was Caught By A Suspicious Family Member
Photo: CapCase / flickr / CC-BY 2.0
Things were going smoothly for Wilks until a man named Donald Flatt became suspicious that his burial practices weren't on the up-and-up. UPI reported that Donald Flatt hid in a church adjacent to where Wilks worked. When Flatt saw that Wilks was burying the body of a relative without the vault for which his family had paid, he had the body of Danny Ray Pith exhumed.
What police found was worse than a coffin simply being buried without a vault. Pith's casket was filled with trash. There were rotten apple cores and a vacuum cleaner bag filled with dirt and dust in with Pith's body.
After the discovery of the first trash-filled casket, Flatt had his mother's body exhumed and discovered that not only was she buried without a vault, but her casket was broken and someone had stolen her wristwatch.


I agree to the processing of my personal data by Konfeo Macuk, Łapiński Sp. J. in order to answer the query. Providing the data is voluntary, but necessary for the proper handling of the query. I am aware of the right of access to my data, the possibility of correcting it, and the demand to stop processing it.


text:
Q: Can we say that a system of $n-1$ linear equations in $n$ variables always has infinite solutions? For example , let's say we have $2$ linear equations in $3$ variables , i.e. ,
$a_1x + b_1 y +  c_1z = 0 $, and
$a_2x + b_2 y +  c_2 z =0 $,
now here for each value of $z$ we will have $2$ linear equations in $2$ variables and hence unique values of $x$ and $y $. Now since $z$ can take an infinite number of values  and for each value we will have unique values of $x$ and $y $. So can we conclude that, a system of $n-1$ linear equations in $n$ variables will always have an infinite number of solutions ?

A: No. The system$$\left\{\begin{array}{l}x+y+z=0\\x+y+z=1\end{array}\right.$$has no solutions.
However, if you are talking about homogeneous linear equations (that is, equations of the type $a_1x_1+a_2x_2+\cdots+a_nx_n=0$), then you are right: a system with less than $n$ of those equations in $n$ variables always has infinitely many solutions. Actually, the set of solutions is a vector space whose dimension is greater than $0$.


Vogogna is a quaint little old town localized in the green low Ossola valley, surrounding by giant mountains, it's part of the Val Grande National Park, the largest wilderness in the Alps. Vogogna is a well-preserved medieval village, above it the Visconteo Castle overlooks the village.
During the walking tour along the paths on the mountain and the valleys of the village, it will be possible to discover the secrets of the place. The excursion will be an opportunity to know about local history beginning from the Celtic period to the Partisan struggle in Word War II, in places belonging both to the Val Grande National Park and to the Sesia-Val Grande Geopark.
Meeting and arrival in Vogogna, by the station or in Don Angelo Airoldi square.
Difference in height: about 200 m.


Todd McLeod is tenured faculty at Fresno City College. He began teaching web programming in 2001. He is also adjunct faculty in Computer Science at California State University, Fresno.
Learn why Go, Google App Engine, and Google Cloud Storage are the solution for building web apps that can scale to millions of individuals instantly.


The one true Tuscan cheese is pecorino made with ewe's milk. The sheep that you see grazing are more often than not kept for their milk instead of wool or meat. Fresh ricotta, made from whey, is also very popular here in Tuscany and should be eaten with black pepper and a few drops of olive oil on top.
Cherries, apricots, and peaches are all readily availble in the summer, grapes in the late summer and apples and pears in the early autumn. Among the best savoury/sweet dishes to try, include: il cacio con le pere (cheese with pears), i fichi con il salame (figs with salami), melone, or popone, con prosciutto (melon and cured ham).
Although Tuscans are not great sweets and desserts eaters, they do like to round off meals with a glass of dry raisin wine called Vin Santo into which they dip Cantucci, little dry biscuits packed with almonds. Other treats include panforte, a type of dried fruit cake, schiacciata alla fiorentina, (a special Florentine treat)- a sponge cake, covered with icing or sometimes filled with whipped cream, biscottini di prato , ricciarelli, almond biscuits from Siena and i cenci, triangular shaped pastries. Chestnut trees are plentiful in the mountainous area of the regions, so Tuscans have perfected the best recipes in which to use them, one such example is , a chestnut flour cake, one of the most traditional Florentine cakes.
N.B. this schiacciata is not to be confused with a savoury dish called schiacciata salata all'olio.


text:
///////////////////////////////////////////////////////////////////////////////
//FILE:          HistogramPanel.java
//PROJECT:       Micro-Manager
//SUBSYSTEM:     mmstudio
//-----------------------------------------------------------------------------
//
// AUTHOR:       Nenad Amodaj, nenad@amodaj.com, October 29, 2006
//
// COPYRIGHT:    University of California, San Francisco, 2006
//
// LICENSE:      This file is distributed under the BSD license.
//               License text is included with the source distribution.
//
//               This file is distributed in the hope that it will be useful,
//               but WITHOUT ANY WARRANTY; without even the implied warranty
//               of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
//
//               IN NO EVENT SHALL THE COPYRIGHT OWNER OR
//               CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
//               INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES.
//
// CVS:          $Id$
//
package org.micromanager.graph;

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.GeneralPath;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.geom.Point2D.Float;
import java.util.ArrayList;
import javax.swing.JPanel;
import javax.swing.UIManager;
import org.micromanager.utils.JavaUtils;

/**
 * Histogram view.
 */
public class HistogramPanel extends JPanel implements FocusListener, KeyListener {

   private static final int LUT_HANDLE_SIZE = 10;
   private static final Color HIGHLIGHT_COLOR = Color.blue;
   private static final int TOP_HANDLE_OFFSET = JavaUtils.isMac() ? 7 : 3;
   private static final int BOTTOM_HANDLE_OFFSET = JavaUtils.isMac() ? 3 : 3;
   private static final int PIXELS_PER_HANDLE_DIGIT = 6;

   private static final long serialVersionUID = -1789623844214721902L;
   // default histogram bins
   private int xMin_ = 0;
   private int xMax_ = 255;
   private int currentHandle_;
   //click location: 1 is low cursor text, 2 is high cursor text
   private int clickLocation_ = 0;
   private ArrayList<CursorListener> cursorListeners_;
   private Float ptDevBottom_;
   private Float ptDevTop_;
   private Float ptDevTopUnclippedX_;
   private boolean contrastMinEditable_ = false, contrastMaxEditable_ = false;
   private String newContrast_ = "";
   private String cursorTextLow_ = "",cursorTextHigh_ = "";

   private GraphData data_;
   protected GraphData.Bounds bounds_;

   private float xMargin_   = 50;
   private float yMargin_   = 50;

   float cursorLoPos_;
   float cursorHiPos_;
   double gamma_;

   private boolean fillTrace_ = false;
   private Color traceColor_ = Color.black;

   public HistogramPanel() {
      super();
      addFocusListener(this);
      addKeyListener(this);
      data_ = new GraphData();
      setAutoBounds();
      cursorLoPos_ = (float) bounds_.xMin;
      cursorHiPos_ = (float) bounds_.xMax;
      gamma_ = 1.0;
      this.setFocusable(true);
      cursorListeners_ = new ArrayList<CursorListener>();
      setupMouseListeners();
   }

   private GeneralPath generateGammaCurvePath(Float ptDevTop, Float ptDevBottom, double gamma) {
      double xn, yn;
      int X;
      int Y;
      int w = (int) (ptDevTop.x - ptDevBottom.x) + 1;
      int h = (int) (ptDevBottom.y - ptDevTop.y);
      GeneralPath path = new GeneralPath();
      path.moveTo(ptDevBottom.x, ptDevBottom.y);
      for (int x = 0; x < w; x += 3) {
         xn = (double) x / (double) w;
         yn = Math.pow(xn, gamma);
         X = x + (int) ptDevBottom.x;
         Y = (int) ((1 - yn) * h + ptDevTop.y);
         path.lineTo(X, Y);
      }
      path.lineTo(ptDevTop.x, ptDevTop.y);
      return path;
   }

   /**
    * Auto-scales Y axis.
    *
    */
   public void setAutoScale() {
      setAutoBounds();
   }

   public void setDataSource(GraphData data){
      setData(data);
      refresh();
   }

   /*
    * Draws a dashed vertical line at minimum and maximum pixel value
    * position.
    */
   public void drawCursor(Graphics2D g, Rectangle box, float xPos) {
      // correct if Y range is zero
      if (bounds_.getRangeY() == 0.0) {
         if (bounds_.yMax > 0.0)
            bounds_.yMin = 0.0;
         else if (bounds_.yMax < 0.0) {
            bounds_.yMax = 0.0;
         }
      }

      if (bounds_.getRangeX() <= 0.0 || bounds_.getRangeY() <= 0.0) {
         return; // invalid range data
      }

      // set scaling
      float xUnit = (float) (box.width / bounds_.getRangeX());
      float yUnit = (float) (box.height / bounds_.getRangeY());

      Point2D.Float ptPosBottom = new Point2D.Float(xPos, (float)bounds_.yMax);
      Point2D.Float ptDevBottom = getDevicePoint(ptPosBottom, box, xUnit, yUnit);
      Point2D.Float ptPosTop = new Point2D.Float(xPos, (float)bounds_.yMin);
      Point2D.Float ptDevTop = getDevicePoint(ptPosTop, box, xUnit, yUnit);

      Color oldColor = g.getColor();
      Stroke oldStroke = g.getStroke();
      g.setColor(new Color(120,120,120));

      float dash1[] = {3.0f};
      BasicStroke dashed = new BasicStroke(1.0f, BasicStroke.CAP_BUTT,
            BasicStroke.JOIN_MITER, 3.0f, dash1, 0.0f);
      g.setStroke(dashed);
      g.draw(new Line2D.Float(ptDevBottom, ptDevTop));
      g.setColor(oldColor);
      g.setStroke(oldStroke);
   }

   /*
    * Draws a line showing the mapping between pixel values and display
    * intensity on the screen.
    */
   public void drawMapping(Graphics2D g, Rectangle box,
         float xStart, float xEnd, double gamma) {
      // correct if Y range is zero
      if (bounds_.getRangeY() == 0.0) {
         if (bounds_.yMax > 0.0)
            bounds_.yMin = 0.0;
         else if (bounds_.yMax < 0.0) {
            bounds_.yMax = 0.0;
         }
      }

      if (bounds_.getRangeX() <= 0.0 || bounds_.getRangeY() <= 1.e-10) {
         return; // invalid range data
      }

      // set scaling
      float xUnit = (float) (box.width / bounds_.getRangeX());
      float yUnit = (float) (box.height / bounds_.getRangeY());

      Point2D.Float ptPosBottom = new Point2D.Float(xStart,
            (float) bounds_.yMin);
      ptDevBottom_ = getDevicePoint(ptPosBottom, box, xUnit, yUnit);
      Point2D.Float ptPosTop = new Point2D.Float(xEnd, (float) bounds_.yMax);
      ptDevTop_ = getDevicePoint(ptPosTop, box, xUnit, yUnit);
      ptDevTopUnclippedX_ = getDevicePointUnclippedXMax(
            ptPosTop, box, xUnit, yUnit);

      GeneralPath path = generateGammaCurvePath(
            ptDevTopUnclippedX_, ptDevBottom_, gamma);

      Color oldColor = g.getColor();
      Stroke oldStroke = g.getStroke();
      g.setColor(new Color(120, 120, 120));

      BasicStroke solid = new BasicStroke(2.0f, BasicStroke.CAP_BUTT,
            BasicStroke.JOIN_MITER);
      g.setStroke(solid);
      g.draw(path);
      g.setColor(oldColor);
      g.setStroke(oldStroke);

      drawLUTHandles(g, (int) ptDevBottom_.x, (int) ptDevBottom_.y,
              (int) ptDevTop_.x, (int) ptDevTop_.y);
   }

   private void drawLUTHandles(Graphics2D g, int xmin, int ymin,
         int xmax, int ymax) {
      drawTopHandle(g, xmax, ymax);
      drawBottomHandle(g, xmin, ymin);
   }

   private void drawTopHandle(Graphics2D g, int x, int y) {
      drawTriangle(g, x, y, true);

      g.setFont(new java.awt.Font("Lucida Grande", 0, 11));
      String text = cursorTextHigh_;
      if (contrastMaxEditable_ && newContrast_.length() != 0) {
          text = newContrast_;
      }

      int width = PIXELS_PER_HANDLE_DIGIT * text.length() + TOP_HANDLE_OFFSET;
      if (contrastMaxEditable_) {
         g.setColor(HIGHLIGHT_COLOR);
         g.fillRect(x - width, y - LUT_HANDLE_SIZE, width, LUT_HANDLE_SIZE);
         g.setColor(UIManager.getColor("Panel.background"));
         g.drawString(text, x - width, y - 1);
      } else {
         g.setColor(UIManager.getColor("Panel.background"));
         g.fillRect(x - width, y - LUT_HANDLE_SIZE, width, LUT_HANDLE_SIZE);
         g.setColor(Color.black);
         g.drawString(text, x - width, y - 1);
      }
   }

   private void drawBottomHandle(Graphics2D g, int x, int y) {
      drawTriangle(g, x, y, false);
      g.setFont(new java.awt.Font("Lucida Grande", 0, 11));
      String text = cursorTextLow_;
      if (contrastMinEditable_ && newContrast_.length() != 0) {
         text = newContrast_;
      }
      int width = PIXELS_PER_HANDLE_DIGIT * text.length() + 7;
      if (contrastMinEditable_) {
         g.setColor(HIGHLIGHT_COLOR);
         g.fillRect(x, y, width, LUT_HANDLE_SIZE + 1);
         g.setColor(UIManager.getColor("Panel.background"));
         g.drawString(newContrast_.length() != 0 ? newContrast_ : text,
               x + BOTTOM_HANDLE_OFFSET, y + 10);
      } else {
         g.setColor(UIManager.getColor("Panel.background"));
         g.fillRect(x, y, width, LUT_HANDLE_SIZE + 1);
         g.setColor(Color.black);
         g.drawString(text, x + BOTTOM_HANDLE_OFFSET, y + 10);
      }
   }

   static void drawTriangle(Graphics2D g, int x, int y, boolean top) {
      int s = LUT_HANDLE_SIZE;
      if (top) {
         s = -s;
      }
      int[] xs = {x, x - s, x};
      int[] ys = {y, y + s, y + s};
      Stroke oldStroke = g.getStroke();
      //draw outline
      g.setStroke(new BasicStroke(1));
      g.setColor(top ? Color.white : Color.black);
      g.fillPolygon(xs, ys, 3);
      //fill center
      g.setColor(Color.black);
      g.drawPolygon(xs, ys, 3);
      g.setStroke(oldStroke);
   }

   public void refresh() {
      GraphData.Bounds bounds = getGraphBounds();
      bounds.xMin = xMin_;
      bounds.xMax = xMax_;
      setBounds(bounds);
      repaint();
   }

   @Override
   public void focusGained(FocusEvent e) {}

   @Override
   public void focusLost(FocusEvent e) {
      applyContrastValues();
   }

   @Override
   public void keyTyped(KeyEvent e) {
      try {
         int i = Integer.parseInt("" + e.getKeyChar());
         if (contrastMaxEditable_ || contrastMinEditable_) {
            newContrast_ += i;
            repaint();
         }
      } catch (Exception ex) {} // not a digit
   }

   @Override
   public void keyPressed(KeyEvent e) {
      if (e.getKeyCode() == KeyEvent.VK_ENTER) {
         applyContrastValues();
      } else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
         if (contrastMaxEditable_ && newContrast_.length() == 0) {
            setContrastMax(Integer.parseInt(cursorTextHigh_) - 1);
         } else if (contrastMinEditable_ && newContrast_.length() == 0) {
             setContrastMin(Integer.parseInt(cursorTextLow_) - 1);
         }
      } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
         if (contrastMaxEditable_ && newContrast_.length() == 0) {
            setContrastMax(Integer.parseInt(cursorTextHigh_) + 1);
         } else if (contrastMinEditable_ && newContrast_.length() == 0) {
            setContrastMin(Integer.parseInt(cursorTextLow_) + 1);
         }
      }
      repaint();
   }

   @Override
   public void keyReleased(KeyEvent e) {}

   public interface CursorListener {
      public void contrastMinInput(int min);
      public void contrastMaxInput(int max);
      public void onLeftCursor(double pos);
      public void onRightCursor(double pos);
      public void onGammaCurve(double gamma);
   }

   public void addCursorListener(CursorListener cursorListener) {
      cursorListeners_.add(cursorListener);
   }

   public void removeCursorListeners(CursorListener cursorListener) {
      cursorListeners_.remove(cursorListener);
   }

   public CursorListener[] getCursorListeners() {
      return (CursorListener[]) cursorListeners_.toArray();
   }

   private void notifyCursorLeft(double pos) {
      for (CursorListener cursorListener:cursorListeners_) {
         cursorListener.onLeftCursor(pos);
      }
   }

   private void notifyCursorRight(double pos) {
      for (CursorListener cursorListener:cursorListeners_) {
         cursorListener.onRightCursor(pos);
      }
   }

   private void notifyGammaMouse(double gamma) {
      for (CursorListener cursorListener:cursorListeners_) {
         cursorListener.onGammaCurve(gamma);
      }
   }

   private void setContrastMax(int max) {
      for (CursorListener cursorListener : cursorListeners_) {
         cursorListener.contrastMaxInput(max);
      }
   }

   private void setContrastMin(int min) {
      for (CursorListener cursorListener : cursorListeners_) {
         cursorListener.contrastMinInput(min);
      }
   }

   private void applyContrastValues() {
      //apply the values
      if (!newContrast_.equals("")) {
         if (contrastMaxEditable_) {
            setContrastMax(Integer.parseInt(newContrast_));
         } else if (contrastMinEditable_) {
            setContrastMin(Integer.parseInt(newContrast_));
         }
      }
      contrastMaxEditable_ = false;
      contrastMinEditable_ = false;
      newContrast_ = "";

      repaint();
   }

   private void setupMouseListeners() {
      final JPanel panelRef = this;
      addMouseListener(new MouseAdapter() {
         @Override
         public void mousePressed(MouseEvent e) {
            panelRef.requestFocus();
            int x = e.getX();
            int y = e.getY();
            getClickBand(x,y);
            if (currentHandle_ != 0) {
               Point2D.Float pt = getPositionPoint(x,y);
               if (currentHandle_ == 1)
                  notifyCursorLeft(pt.x);
               if (currentHandle_ == 2)
                  notifyCursorRight(pt.x);
               if (currentHandle_ == 3) {
                  double gamma = getGammaFromMousePosition(x,y);
                  if (Math.abs((gamma_ - gamma)/gamma_) < 0.2) {
                     notifyGammaMouse(getGammaFromMousePosition(x, y));
                     currentHandle_ = 4;
                  }
               }
            }
         }
         @Override
         public void mouseReleased(MouseEvent e) {
            currentHandle_ = 0;
         }

         @Override
         public void mouseClicked(MouseEvent e) {
            if (e.getClickCount() >= 2 && clickLocation_ == 1) {
               applyContrastValues();
               contrastMinEditable_ = true;
               contrastMaxEditable_ = false;
            } else if (e.getClickCount() >= 2 && clickLocation_ == 2) {
               applyContrastValues();
               contrastMaxEditable_ = true;
               contrastMinEditable_ = false;
            } else if (clickLocation_ == 0) {
               applyContrastValues();
            }
            repaint();
         }
      });

      addMouseMotionListener(new MouseMotionAdapter() {
         @Override
         public void mouseDragged(MouseEvent e) {
            if (currentHandle_ == 0)
               return;
            Point2D.Float pt = getPositionPoint(e.getX(),e.getY());
            if (currentHandle_ == 1)
               notifyCursorLeft(pt.x);
            if (currentHandle_ == 2)
               notifyCursorRight(pt.x);
            if (currentHandle_ == 4)
               notifyGammaMouse(getGammaFromMousePosition(e.getX(), e.getY()));
         }
      });
   }

      private double getGammaFromMousePosition(int x, int y) {
         if ((ptDevTopUnclippedX_ == null) || (ptDevBottom_ == null)) {
            return 0;
         }
         double width = ptDevTopUnclippedX_.x - ptDevBottom_.x;
         double height = ptDevBottom_.y - ptDevTopUnclippedX_.y;
         double xn = (x - ptDevBottom_.x) / width;
         double yn = (ptDevBottom_.y - y) / height;
         double gammaClick;
         if (xn > 0.05 && xn < 0.95 && yn > 0.05 && yn < 0.95) {
            gammaClick = Math.log(yn) / Math.log(xn);
         } else {
            gammaClick = 0;
         }
         return gammaClick;
      }

   static int clipVal(int v, int min, int max) {
      return Math.max(min, Math.min(v, max));
   }

   private float getHistogramTopNumbersWidth() {
      return (float) (PIXELS_PER_HANDLE_DIGIT * cursorTextHigh_.length() + TOP_HANDLE_OFFSET);
   }

   private float getHistogramBottomNumbersWidth() {
      return (float) (PIXELS_PER_HANDLE_DIGIT * cursorTextLow_.length() + BOTTOM_HANDLE_OFFSET);
   }

   private void getClickBand(int x, int y) {
      Rectangle box = getBox();
      int ymin = box.y + box.height;
      int ymax = box.y;
      float xUnit = (float) (box.width / bounds_.getRangeX());
      float deviceCursorLoX = getDevicePoint(
            new Point2D.Float(cursorLoPos_, 0), box, xUnit, (float) 1.0).x;
      float deviceCursorHiX = getDevicePoint(
            new Point2D.Float(cursorHiPos_, 0), box, xUnit, (float) 1.0).x;
      clickLocation_ = 0;
      if (y < ymin + 10 && y >= ymin) {
         if (x > deviceCursorLoX &&
               x < deviceCursorLoX + getHistogramBottomNumbersWidth()) {
            clickLocation_ = 1;
            currentHandle_ = 0; //low cursor text field
            return;
         }
         currentHandle_ = 1; // Low cursor margin
      } else if (y <= ymax && y > ymax - 10) {
         if (x < deviceCursorHiX &&
               x > deviceCursorHiX - getHistogramTopNumbersWidth()) {
            clickLocation_ = 2;
            currentHandle_ = 0; //hi cursor text field
            return;
         }
         currentHandle_ = 2; // High cursor margin
      }  else if ((x > deviceCursorLoX - 5) && (x < deviceCursorLoX + 5)) {
         currentHandle_ = 1; // Low cursor vertical line
      }  else if ((x > deviceCursorHiX - 5) && (x < deviceCursorHiX + 5)) {
         currentHandle_ = 2; // High cursor vertical line
      } else if (y > ymax && y < ymin) {
         currentHandle_ = 3; // Gamma curve margin
      } else {
         currentHandle_ = 0;
      }
   }

   public void setData(GraphData d) {
      data_ = d;
   }

   public void setGamma(double gamma) {
      gamma_ = gamma;
   }

   public void setTraceStyle(boolean fillTrace, Color color) {
      fillTrace_ = fillTrace;
      traceColor_ = color;
   }

   public final void setAutoBounds(){
      bounds_ = data_.getBounds();
      AdjustCursors();
   }

   public void setMargins(float x, float y) {
      xMargin_ = x;
      yMargin_ = y;
   }

   public void setCursorText(String low, String high) {
      cursorTextLow_ = low;
      cursorTextHigh_ = high;
   }

   public void setCursors(double low, double high, double gamma) {
      cursorLoPos_ = (float)low;
      cursorHiPos_ = (float)high;
      gamma_ = gamma;
   }

   public GraphData.Bounds getGraphBounds() {
      return bounds_;
   }

   public void setBounds(double xMin, double xMax, double yMin, double yMax){
      bounds_.xMin = xMin;
      bounds_.xMax = xMax;
      bounds_.yMin = yMin;
      bounds_.yMax = yMax;
      AdjustCursors();
   }

   public void setBounds(GraphData.Bounds b){
      bounds_ = b;
      AdjustCursors();
   }

   // Note: doesn't adjust cursorHiPos_, so that the contrast line can have an
   // endpoint past the end of the histogram.
   private void AdjustCursors() {
      cursorLoPos_ = Math.max(cursorLoPos_, (float) bounds_.xMin);
   }

   /**
    * Draw graph traces.
    * @param g
    * @param box
    */
   protected void drawGraph(Graphics2D g, Rectangle box) {
      if (data_.getSize() < 2)
         return;

      //Make black background
      Color oldC = g.getColor();
      g.setColor(Color.black);
      g.fillRect(box.x, box.y, box.width, box.height);
      g.setColor(oldC);

      Color oldColor = g.getColor();
      g.setColor(traceColor_);

      // correct if Y range is zero
      if (bounds_.getRangeY() == 0.0) {
         if (bounds_.yMax > 0.0)
            bounds_.yMin = 0.0;
         else if (bounds_.yMax < 0.0) {
            bounds_.yMax = 0.0;
         }
      }

      // bounds can have strange values (i.e. 1e-42).  Avoid artefacts:
      if (bounds_.getRangeX() <= 0.0 || bounds_.getRangeY() <= 1.e-10) {
         return; // invalid range data
      }

      // set scaling
      float xUnit = (float) (box.width / bounds_.getRangeX());
      float yUnit = (float) (box.height / bounds_.getRangeY());

      GeneralPath trace = new GeneralPath(
            GeneralPath.WIND_EVEN_ODD, data_.getSize() + 1);
      // we need to start and end at y=0 to avoid strange display issues
      Point2D.Float pt0 = getDevicePoint(
            new Point2D.Float(0.0f, 0.0f), box, xUnit, yUnit);
      trace.moveTo(pt0.x, pt0.y);
      Point2D.Float pt1 = getDevicePoint(
            new Point2D.Float(1.0f, 0.0f), box, xUnit, yUnit);
      float halfWidth = (pt1.x - pt0.x) / 2;
      for (int i = 0; i < data_.getSize(); i++) {
         Point2D.Float pt = getDevicePoint(
               data_.getPoint(i), box, xUnit, yUnit);
         trace.lineTo(pt.x - halfWidth, pt.y);
         trace.lineTo(pt.x + halfWidth, pt.y);
      }
      pt0 = getDevicePoint(
            new Point2D.Float((float) data_.getPoint(data_.getSize() - 1).getX(), 0.0f),
            box, xUnit, yUnit);
      trace.lineTo(pt0.x, pt0.y);

      if (fillTrace_)
         g.fill(trace);
      else
         g.draw(trace);

      g.setColor(oldColor);
   }

   public Point2D.Float getDevicePointUnclippedXMax(
         Point2D.Float pt, Rectangle box, float xUnit, float yUnit) {
      Point2D.Float ptDev = new Point2D.Float(
            (float) (pt.x - bounds_.xMin) * xUnit + box.x, box.height - (float) (pt.y - bounds_.yMin) * yUnit + box.y);
      // clip the drawing region
      ptDev.x = Math.max(ptDev.x, (float) box.x);
      ptDev.y = Math.max(Math.min(ptDev.y, (float) box.y + box.height),
            (float) box.y);
      return ptDev;
   }

   public Point2D.Float getDevicePoint(Point2D.Float pt, Rectangle box,
         float xUnit, float yUnit){
      Point2D.Float ptDev = new Point2D.Float(
            (float) (pt.x - bounds_.xMin) * xUnit + box.x,
            box.height - (float) (pt.y - bounds_.yMin) * yUnit + box.y);
      // clip the drawing region
      ptDev.x = Math.max(Math.min(ptDev.x, (float) box.x + box.width),
            (float) box.x);
      ptDev.y = Math.max(Math.min(ptDev.y, (float) box.y + box.height),
            (float) box.y);
      return ptDev;
   }

   public Point2D.Float getPositionPoint(int x, int y) {
      Rectangle box = getBox();
      Point2D.Float posPt = new Point2D.Float(
              (float) (((x - box.x) / (float) box.width) * (bounds_.xMax - bounds_.xMin)),
              (float) ((((box.y + box.height) - y) / (float) box.height) * (bounds_.yMax - bounds_.yMin)));
      return posPt;
   }

   public Rectangle getBox() {
      Rectangle box = getBounds();
      box.x = (int) xMargin_;
      box.y = (int) yMargin_;
      box.height -= 2 * yMargin_;
      box.width -= 2 * xMargin_;
      return box;
   }

   @Override
   public void paintComponent(Graphics g) {
      g.setColor(Color.red);
      super.paintComponent(g); // JPanel draws background
      Graphics2D  g2d = (Graphics2D) g;

      g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);

      // get drawing rectangle
      Rectangle box = getBox();

      // save current settings
      Color oldColor = g2d.getColor();
      Paint oldPaint = g2d.getPaint();
      Stroke oldStroke = g2d.getStroke();

      g2d.setPaint(Color.black);
      g2d.setStroke(new BasicStroke(2.0f));

      drawGraph(g2d, box);
      drawCursor(g2d, box, cursorLoPos_);
      drawCursor(g2d, box, cursorHiPos_);
      drawMapping(g2d, box, cursorLoPos_, cursorHiPos_, gamma_);

      // restore settings
      g2d.setPaint(oldPaint);
      g2d.setStroke(oldStroke);
      g2d.setColor(oldColor);
   }
}


text:
Importance of Kru Yodtong SenananKru Yai Brian Edwards2015-07-21T04:41:53-04:00
Yodtong Siriwalak (28 August 1937 – 8 February 2013) most commonly known by his Muay Thai ring name Yodtong Senanan or Kru Tui was a Muay Thai fighter, trainer, and owner of the Sityodtong Muay Thai Camp in Chonburi, Thailand. He has produced 57 Muay Thai Champions, the most number in the history of Muay Thai in Thailand. His most famous Muay Thai World Champions include Samart Payakaroon, Kongtoranee Payakaroon, Nuengpichit Sityodtong, Detpitak Sityodtong, Chartchai Sityodtong, Yoddecha Sityodtong, Daotong Sityodtong, and others. Additionally, top Muay Thai, K-1, and UFC professional fighters from around the world such as Rob Kaman, Ramon Dekkers, Ernesto Hoost, Peter Aerts, Musashi, Kenny Florian, Antonio Braga Neto, and many others have made pilgrimage to the Sityodtong Gym in Pattaya to train and sharpen their skills. His top trainers include Saknarong Sityodtong, Daorung Sityodtong, Chatri Sityodtong, Yodsanan Sityodtong, Kongtoranee Sityodtong and others.
Yodtong started training in Muay Thai when he was fourteen years old under Kru Sithidet Samanachan and he had his first fight shortly after his fifteenth birthday. His first ring name was Erawan Detprasit Banpra (after his camp, Detrprasit, and his stadium, Banpra). At the age of seventeen, Erawan moved to the Senanan camp to train under Kru Suwan Senanan, and adopted the surname of his teacher as his ring name. There he first started instructing other fighters in Muay Thai. He continued to fight professionally until the age of twenty-one, after which he went into semi-retirement, fighting only if the money was right. Yodtong had a total of forty nine fights.
Yodtong founded his own camp in 1959 at Mabtapud municipality, Rayong province. He stayed in Mabtapud for approximately 15 years, before moving it to Banglamung district of Chonburi, where it remained. In 1971, Daothong Sityodtong became the first champion produced by the gym, winning the Lumpini Stadium Championship. In 1972, Yodtong's fighters engaged in a memorable feud with Japanese kickboxers led by Osamu Noguchi.
In 1 November 2005, Yodtong won the 1st prize in the lottery, worth 56 million baht. He saved approximately 10 million baht for himself and donated the rest to various social causes. This made him very popular in Banglamung district.
Kru Yodtong appointed one of his students, Chatri Sityodtong, to be conservator of Muay Thai in Asia. Mark Dellagrotte of UFC fame is a conservator of Muay Thai in the US under Kru Yodtong Senanan. There are several Sityodtong Muay Thai camps around the world.
Kru Yodtong Senanan resided in Chonburi province, Thailand until his death in 2013.


text:
Alex Corretja 'a little bit concerned about Rafael Nadal's future' after injury forces Spaniard out of US Open
Eurosport analyst Alex Corretja admits he was "shocked" by Rafael Nadal's announcement that he is to miss the remainder of the 2021 season due to injury.
Following a full clay-court season that culminated in defeat in the semi-finals of the French Open, Nadal opted to skip the grass-court season – including Wimbledon – and the Tokyo Olympics.
The 20-time Grand Slam winner finally made his return at the Washington Open two weeks, but he aggravated the foot injury he picked up at Roland Garros before losing in the third round.
It resulted in his withdrawal from the Canadian Open and Cincinnati Open as he opted to rest ahead of the US Open.
However, on Friday the Spaniard confirmed that he is not 100% and will miss the hard-court Grand Slam as well as the final few months of the season.
'I am confident that I will recover again,' says Rafael Nadal as injury forces him out of US Open
Although the announcement was not unexpected, Corretja admits he is worried about Nadal's future.
"We kind of expected something like that since he pulled out of Toronto and Cincinnati. We were wondering if he is going to be okay for the US Open and unfortunately he is not okay," he told Eurosport.
"It is shocking news because we want Rafa to play in New York, but if he is not 100% to play, it is normal that he takes a while to recover.
"What concerns me a little bit is [the fact that] he pulled out of Wimbledon, the Olympics and now the US Open that means the injury is more serious than we expected and I am a little bit concerned about the future as well."
How Novak Djokovic will end the GOAT debate once and for all
With Djokovic now level with Nadal in 22 major wins, tennis legend John McEnroe has predicted how many more he will win.
Novak Djokovic proud of 'special journey' to 22nd Grand Slam title
Novak Djokovic's victory over Stefanos Tsitsipas gave him his 10th title in Melbourne, a year after being deported.
Elena Rybakina hits back over 'fake news' about her 'passionate coach' Stefano Vukov
"I want to clarify any misinterpretations," says Elena Rybakina.
Novak Djokovic has 'at least three more Grand Slams' in him – John McEnroe
How many more Grand Slam titles can Novak Djokovic win? John McEnroe expects plenty more from world No 1.
Novak Djokovic breaks down after 'biggest victory of his life' at Australian Open
Novak Djokovic joined Rafael Nadal at the top of the men's list for most Grand Slams.
Stefanos Tsitsipas hails Novak Djokovic as the 'greatest that has ever held a tennis racket'
Stefanos Tsitsipas hailed Novak Djokovic as the greatest ever following Australian Open final.
WATCH: Raw emotion from 'superhuman' Novak Djokovic after he returns to his perch in Australia
Novak Djokovic let it all out after winning the 2023 Australian Open.
The King Returns: Novak Djokovic wins 10th Australian Open, returns to No 1, joins Rafael Nadal on 22 Slams
Novak Djokovic, who also becomes world number one, defeated Stefanos Tsitsipas in straight sets.
Top 10 men's title winners in the Open Era: Novak Djokovic moves ahead of Rafael Nadal and closer to 100th title
A 10th Australian Open title sees Novak Djokovic move ahead of Rafael Nadal.
Aryna Sabalenka ready to battle at top of women's game after Australian Open win
A terrific Australian Open final indicated Iga Swiatek will soon have company at the top in Aryna Sabalenka.
Rafael Nadal gives fitness and comeback update following latest injury setback
Aryna Sabalenka to take on Magda Linette in Australian Open semi-finals after Donna Vekic rout