text:
Home/Movies/My Name Is Vendetta Movie Review
My Name Is Vendetta Movie Review
The new My Name is Vendetta movie from Netflix is a revenge drama that follows a former Mafia enforcer and his teenage daughter. The story unfolds as the former Mafioso tries to escape from old enemies and reunite with his teenage daughter. He must learn to overcome his past if he wants to have a chance to make a fresh start.
My Name is Vendetta is a film that is basically an Italian version of a classic revenge story. It is about a former Mafia henchman who has to flee with his teenage daughter from the same group of people that killed his older son. The movie is directed by Cosimo Gomez and produced by Roberto Amoroso. The movie has some great mountain views and a lot of action.
The story of My Name is Vendetta revolves around a former Mafia henchman, who has escaped from Italy and is now living in the mountains with his teenage daughter. The Mafia is still looking for him, though, and they plan to kill him and his daughter. But Santo and his daughter Sofia agree to do something together.
As they get closer to each other, they start to understand the nature of the 'Ndrangheta. But the two are still fighting for their lives, and the former mafia henchman has to confront the evils of his secret past. He must show his daughter the right way to deal with evil in order to have a chance at a new life. But he also has to deal with a brutal vendetta against those that killed his loved ones.
My Name Is Vendetta is a film that will surely please hardcore action fans. But if you're not a fan of blood and guts, you'll likely find it skimpy. The violence is a little over the top, with characters being stabbed in chests and tires being beaten to death.
But the movie does its job and keeps the story moving. It's a good enough attempt to break out of the traditional revenge formula and to introduce a fresh layer to an old story. The movie's director, Cosimo Gomez, aimed to create an original story for the film and didn't give in to the temptation of creating a one-man drama.
The film's lead character, Santo, has a dark history in the Sicilian mafia. He is a former Franze and a ruthless killer, but he is a father to his teenage daughter, Sofia. He would have preferred to spend more time educating her on a vintage Land Rover, but his wife Ingrid and his daughter's soccer coach have plans for him.
When Sofia accidentally posts her dad's photo on Instagram, the entire chain of events starts. The mafia sends hitmen to kill Santo, his daughter and Ingrid. They arrive at the family house. But before the villains can take down the family, Sofia sneaks out of the house in the dead of night and runs away. But her father has a plan to escape, and he is determined to track down the hitmen.
21 Jump Street Movie Review


Norovirus is a major cause of acute gastroenteritis worldwide and has emerged as an important issue of chronic infection in transplantation patients. Since no approved antiviral is available, we evaluated the effects of different immunosuppressants and ribavirin on norovirus and explored their mechanisms of action by using a human norovirus (HuNV) replicon-harboring model and a surrogate murine norovirus (MNV) infectious model. The roles of the corresponding drug targets were investigated by gain- or loss-of-function approaches. We found that the calcineurin inhibitors cyclosporine (CsA) and tacrolimus (FK506) moderately inhibited HuNV replication. Gene silencing of their cellular targets, cyclophilin A, FKBP12, and calcineurin, significantly inhibited HuNV replication. A low concentration, therapeutically speaking, of mycophenolic acid (MPA), an uncompetitive IMP dehydrogenase (IMPDH) inhibitor, potently and rapidly inhibited norovirus replication and ultimately cleared HuNV replicons without inducible resistance following long-term drug exposure. Knockdown of the MPA cellular targets IMPDH1 and IMPDH2 suppressed HuNV replication. Consistent with the nucleotide-synthesizing function of IMPDH, exogenous guanosine counteracted the antinorovirus effects of MPA. Furthermore, the competitive IMPDH inhibitor ribavirin efficiently inhibited norovirus and resulted in an additive effect when combined with immunosuppressants. The results from this study demonstrate that calcineurin phosphatase activity and IMPDH guanine synthase activity are crucial in sustaining norovirus infection; thus, they can be therapeutically targeted. Our results suggest that MPA shall be preferentially considered immunosuppressive medication for transplantation patients at risk of norovirus infection, whereas ribavirin represents as a potential antiviral for both immunocompromised and immunocompetent patients with norovirus gastroenteritis.


Finding an open-source alternative to Ghost. Have I mentioned lately just how pathetic a software company Symantec is? Norton Utilities is adequate, don't get me wrong. But I don't think I'd put Norton AntiVirus on any computer that I wanted to work right. I'd give you my opinion of McAfee's product, but that's a violation of the license agreement, so I'll give you my opinion of the company instead. They'd rather spend their time and money and energy keeping you from talking about their products than they would making them worth buying.
So, anyway. Since Symantec is making my life difficult, why do we keep rewarding them by buying Ghost licenses over and over again?
Knowing that the Unix command dd if=/dev/hda of=[filename] makes a bit-for-bit copy of a hard drive, I sought to utilize the Linux kernel and dd as an alternative. Pipe it through bzip2 and it'd be great, right?
Uh, no. I imaged a 1.6-gig HD that had about 400 MB in use. About an hour later, I had a 900 MB disk image. This is bad. Very bad. Ghost would have given me a 250-300 MB image in 15 minutes.
But then I stumbled across PartImage, which does an intelligent, files-only disk image like Ghost does. It's fast, it's small, it works. NTFS support is experimental, but as long as you defragment your drive before you try to make an image, it seems to do fine.
However, it doesn't do a full disk clone like Ghost does. Not yet, at least. Not on its own, at least. But this is Unix. Where there's a will, there are 47 ways.
Yes, Eagle Eye, dd does grab your partition table. But restoring the table with DD will only get your primary partition(s). It won't get your extended partitions, so that's why sfdisk is necessary.
Now that we've got that detail out of the way, you can use PartImage to create images of all your disk partitions. It's menu driven like Ghost. It's text mode and not graphics-mode, so it's not as pretty, but it's also a fraction of the size.
Got your files made? Great. Now, to make the clone, you reverse it.
Then restore your partitions, one at a time, using PartImage either in interactive mode or with command-line switches.
It's a lot to remember, so the best bet would be to dump the images plus these two small files to a CD, make a Linux boot floppy containing dd, sfdisk, and partimage, and write a shell script that does it all. Then you can think about getting fancy and making a bootable CD that holds all of it and restores a system lickety-split.
A lot of trouble? Ugh. Yeah. Worth it? Probably. Ghost licenses aren't cheap, and PartImage has the potential to be a whole lot quicker, since it's built on a better foundation. Today's PCs are extremely powerful, and DOS has been underutilizing PCs' power since the introduction of the PC/AT in 1985. Linux will very happily scale up to whatever amount of memory and CPU power your PC has under the hood, making compression and decompression go faster. And if you do a little tweaking with hdparam before creating and before restoring (again, a good job for a shell script), you'll get far better disk throughput than DOS could ever give you. On these P3-866s, I found PartImage was a good 20-60 MB/minute faster than Ghost.
So this is not only faster, it also frees you from the difficulty of keeping track of Ghost licenses, which is a hidden administrative expense. With Linux and PartImage and the associated tools, you're free to use them as you like. The only questions anyone will ask is, "How'd you do that?"
That's not to say I have any objection to paying for a good product, but when you can't even buy a site license to escape the paperwork, it gets ridiculous. I suspect some companies just count their PCs and buy that many Ghost licenses once a year in order to be rid of the administrative overhead.
So I think it's more than worth it to figure out how to effectively do this job with open-source tools.
Of course I've left some questions. How do you make Linux boot floppies? How do you make Linux CDs? The PartImage site has images of bootdisks and boot CDs, but they don't have everything you need. Notably, sfdisk is missing from those images. And obviously you'd have to write your shell scripts and add those yourself.
I'll let you know when I figure it out. I'm pretty darn close.
Well, I seem to be searching for the same "Holy Grail" you are, and speed is about the only issue I can't figure out. I don't want to use PartImage as of yet — it just doesn't seem straightforward enough for a non-Unix type (others I work with). So far, I'm looking at just making some scripts that quickly mimic most of what Ghost does, without the bit-for-bit copying of the partitions. I'm curious how you've fared at this so far.
I have been using patimage for the past year to deploy linux, and windows systems. The only problem is that the partition size needs to match, and you have to defrag the ntfs drives proir to image creation.


While downloading excel file on IE8 over SSL, we are getting error: "Unable to download Document.ashx from MyHostName.Unable to open this Internet site. The requested site is either unavailable or cannot be found. Please try again later."
We tried couple of solutions, but none of them worked except regedit(which is not viable).
1)Tried the registry edit as per http://support.microsoft.com/kb/323308 and it worked. But, this is not a viable solution. 2) Tried the solution as per this link http://support.microsoft.com/kb/815313 where they say the files will download if you 'copy shortcut' and run it on via the browser URL. But, this solution was not consistent and worked sometimes but mostly did not work.
also searched on internet with various options suggested as above, but none of them are working full proof.
if anyone has solution other than listed above. please do share it.
Make sure that "no-store" and "no-cache" occur in your header in that order. IE8 pukes if it's reversed.
I found that I needed to also remove the "pragma" header to make it work. Apparently, pragma is not intended for responses although I don't know if any old browsers out there require it.
Source: Difference between Pragma and Cache-control headers?
The problem is that if the server sends to the browser an http header that disables caching, Explorer gives an error. We also tried all the solutions you said without luck, but analyzing the http response we saw that the application server added no-cache= "Set-Cookie" http header automatically and it disabled IE8 caching... There is a setting that can be made on the AS but in our case we could not do it, so we changed our cookie-management code server side and we resolved the problem.
Not the answer you're looking for? Browse other questions tagged ssl internet-explorer-8 download attachment or ask your own question.


I believe the process of change comes from exploring, discovering and addressing what we learned about relationships in our family of origin. These patterns learned in our families are repeated throughout our lives: partners, spouses, children, extended family, employment and our community. I work in a collaborative, active and personal way to help you discover and practice the wisdom within to develop truly rich, deeply rewarding and renewed connections with people in your life.


text:
Optimized Expressions
Developing hard-core mathematics code, such as physical simulations (constraint networks, cloth, rigid body, fem), is already enough of a challenge without the added burden of having to write the code in an obscure way to avoid typical code inefficiencies. Ideally, you want to devote your brain cycles on the high-level algorithms instead of the details of how you encode them into a .cpp file. Fortunately, efficient code doesn't have to be ugly. This document describes an approach called optimized expressions that can make it easier to work with mathematical code in C++ without sacrificing performance. More specifically, the burden of optimization is done on the lower level routines you care less about. Meanwhile, the important code that you are working on can remain clean.
Magnitude Example
Consider the following line of code that conditionally branches if the length of a vector is less than 3 units long:
if( magnitude(v) < 3.0f) ...
Many experienced programmers will immediately recognize that the expression is taking a square root when it doesn't have to. Instead they would write it as:
if( dot(v,v) < 9.0f) ...
Such programmers would typically type it this way the first time - even if the code was not in a critical section. i.e. premature and possibly unnecessary optimization. Essentially the programmer's fingers are part of the compilation process. Through years of experience and pattern recognition, this line of code is likely to be instantly recognized as a magnitude check by another game programmer with similar experience. However, if another developer is not wearing the same coke-bottle eyeglasses of automatic disassembly, he/she will have to spend a bit more time reverse engineering the code to figure out what it is actually doing.
Clearly the initial implementation that uses magnitude() is "higher level" and most directly corresponds to the way anybody, including the hardcore types, would actually think about that line of code. Ideally it would be nice to keep that line of code exactly the way it is, yet have the program run as efficiently as had we written it using the dot product and the square of the comparison operand. Well, even without a super smart compiler, it is possible. Consider the following implementation of magnitude:
class magnitude {
float m2;
magnitude(const float3 &v):m2(dot(v,v)){}
operator float(){return sqrtf(m2);}
int operator < (const float &rhs) {return (m2 < rhs*rhs);}
Even though magnitude is a class instead of a function, its usage remains the same. There's no changes to how you write the code using magnitude(). The difference is how the code executes. Now if we ever need to compare the magnitude of a vector with a float, the magnitude class will instead square the right hand side of the equation. Should we need the actual value, the cast operator will complete the computation of the vector's length.
I'm not suggesting that people have to apply this approach to programming for such a trivial function like magnitude(). This example is just to illustrate the general idea of optimizing expressions without having to change them. Admittedly, the implementation of our magnitude function has been modified away from a typical implementation. However, once we know this implementation works, we don't worry about it after that. The average game programmer will spend a typical day working on code that uses magnitude instead of the code that implements magnitude. In general, optimized expressions pursues a form of code optimization that requires rearrangement and obfuscation that is done on the core well-understood basic math library routines. Meanwhile, the important high-level algorithms and game code remain as clean as possible.
Large Vectors and Matrices
Many applications make use of N dimensional vectors and matrices. There are many more applications that could use generic N dimensional vectors but were not initially written that way. For example, a physical system may be represented as an array of its parts where element in the array is a struct containing that part's properties including position, orientation, velocity, angular momentum, forces, and so on. Initially this might seem more intuitive during development. In order to utilize certain simulation or integration techniques, it is better to think of the entire system as a whole and represent these properties as large vectors. For example, the positions of all the parts is concatenated into a single large state vector, the velocities into another big vector and so on. Auxiliary and temporary vectors such as change in velocity (dv) are implemented using a single big vector as well. Then integration can be viewed as operations on these larger vectors. As a result, the algorithms will often fit into standard off-the-shelf linear methods. After this refactoring, the code for the physical system will be a structure of arrays instead of having an array of structs. It's not just source code, many papers on physical modeling present their research using this type of representation.
I'd suggest an array of float3s encapsulated in a class called float3N or something. Then you can index into it nicely without multiplying by 3. Then you can write operators and functions to work on these big vectors. Note that this is just a suggestion; coding styles are an individual choice.
Optimization will be important since any physical simulation implementation is always judged by performance. A simple implementation of a big vector and sparse matrix library probably wont be efficient if you are using C++ overloaded operators (+-*/). There is likely to be lots of big vector objects constructed, memory allocated, and excessive copying. For example, look at the line of code:
V = A*s + B*t;  // V,A,B are big vectors,  s,t are scalars
Using typical operator overloading, the scalar multiply operations will each create temporary big vectors and likely allocate memory to do so. Then these two new vectors are added together into another newly allocated vector which then gets copied into the final destination 'V'.
All of this work isn't necessary and should be avoided. One option is to write inline for loops for any sort of express that will iterate over the elements of the arrays. This turns every such line of code into many lines of code and makes it harder to read. While computers are good at boring repetitive tasks, programmers are not. So this approach is likely to introduce bugs along the way since every single mathematical expression has to be converted by hand. The internals of the big vector classes are exposed at every usage which defeats the idea of encapsulation and abstraction.
Another option is to go back to C-style programming. Referring to our vector addition example we would provide a single function to do the job:
VecSumOfMuls(V,A,s,B,t);
At least now we wont have to have a for loop for each statement that happens to do something with variables of our big vector type. The same function can be used for any similar line of code. Unfortunately, the meaning isn't obvious without looking up the function in a header file. Furthermore, different math library programmers will likely pick alternative argument orderings and different function names since there is no obvious single correct standard. The clearest way of writing this line of code in an implementation would simply be the universal standard:
V = A*s + B*t;
That's what we'd really like to see in our code. Fortunately, efficient execution of such code can be achieved using an expression optimization system. Recall that how this expression gets processed depends on the implementation of the operators. Like our magnitude example, the idea is that operators do not cause any processing to occur. Instead they simply return expression objects that can be combined with other expression objects. Only the final assignment triggers execution of the entire expression which is implemented in a single function. So you will need one such class for each expression form that you are going to use in your code (and the subexpressions leading up to it). Even the longer mathematical lines of code only consist of a handful of terms. So in practice, you are probably wont need too many expression classes. See the comments and code in the vec3n.h header file for more details and the implementation. By using this library, the standard conjugate gradient algorithm can now be cleanly implemented: conjgrad.cpp.
What About Template MetaProgramming
One approach is to write a template metaprogramming implementation. Its like the expression optimization approach described in the previous section, however, template compiler tricks are used to automatically generate the required classes instead of manually programming these by hand.
Feel free to see the file vec3ntm.h header file for an example of how you might implement a large vector/matrix library using template metaprogramming. You could probably find better samples out on the web.
While it's certainly sexy, metaprogramming isn't always that great for practical use. It requires that your compiler is able to properly recurse and produce the minimal code. You only get optimization in 'release' mode. Furthermore, you have to inspect the resulting assembly code to verify that it did produce the optimized result you were looking for. There is less control over the result since you didn't implement it directly. Stepping through the code in debug mode can be very confusing. Only by implementing template metaprogramming code yourself would you have much hope of understanding it.
Further Optimization
Optimization shouldn't stop with simple code rearrangement. In addition to optimized expressions you may wish to also explore 128 bit simd acceleration. Unlike MetaProgramming, it would be fairly easy to do this in conjunction with the more straightforward optimized expression system. For big vector libraries, there are two approaches you can take. One option is to keep the vectors packed and think of 128bit simd register is that it just happens to do 4 at a time. x0y0z0x1, then y1z1x2y2, and so on. This works for some operations (but not all) where it is possible to think of them as happening on the 'big' vectors. Alternatively, one can pad the float3s so they are actually float4s. This would guarantee the memory alignment when doing the sparse block matrix multiply. The downside is the increased memory cost - which implies a performance cost. I don't know which is the better strategy here. You'd really have to test both yourself.
There is a reason why developers use high level languages - it makes them more productive. The value of the source code does not end once the initial binary executables have been compiled. Source code can be modified or reused in other applications. However, source code typically gets chopped up and rearranged due to optimizations, feature hacks, and poorly implemented bug fixes. After this happens, the now unreadable code has less potential for future reuse. So to maximize the value of the ascii text in a .cpp file, its best to keep it true to the algorithm that it is implementing. After all, that's why it's called the "source" - something that is effectively lost when a "human compilation step" is added to the development process.
S Melax 2006

redpajama_set_name: RedPajamaCommonCrawl


text:
New video shows President Trump saluting North Korean general
Jun 14, 2018 · Courtney Kube, NBC News · Link to Article
WASHINGTON — North Korean state television aired video on Thursday from the historic summit between President Donald Trump and Kim Jong Un that included a surprising moment when the American president saluted a North Korean general.
Trump reached out to shake the general's hand, and the general responded with a salute. Trump reciprocated, saluting the general back before the men shook hands.
The video is now running over and over on North Korean state television with an enthusiastic anchor track.
Social media exploded with outrage about Trump's salute.
Retired Army Maj. Gen. Paul Eaton, a senior adviser to the advocacy group VoteVets.org, said, "It is wholly inappropriate for the commander in chief of our armed forces to salute the military of our adversary, especially one which is responsible for a regime of terror, murder and unspeakable horror against its own people."
Col. Jack Jacobs, a Medal of Honor recipient and an NBC News analyst, said that the North Korean general's salute was a sign of respect but Trump's salute "seemed like a reflexive action."
"If I had been his military aide I would have told him, 'They're going to salute you, but don't return the salute, just move smartly down the line.'"
Presidential historian Michael Beschloss told NBC News that "one test of a leader is that he knows what message a public gesture sends. In this case, either he made a mistake or he was trying to send the message that he doesn't take the human rights abuses by the North Korean military as seriously as many other Americans do."
In the military a salute is a sign of respect, with a junior officer or junior enlisted service member always saluting first.
While civilians do not return a salute from a military member, the President is the Commander in Chief and will generally return a salute from U.S. military service members but not military from other nations.
In 2009 during his first visit to Japan as president, Barack Obama bowed deeply from the waist when greeting Japanese Emperor Akihito, eliciting criticism from conservatives who said the gesture projected weakness on the world stage.
Trump was quick to criticize Obama a few years later when he bowed during a greeting of Saudi King Abdullah in 2012. "@BarackObama bowed to Saudi king in public — yet the Dems are questioning @MittRomney's diplomatic skills," Trump tweeted.
A salute is a sacred element of military service and history. U.S. military members are taught the salute originated in Roman times when knights in armor would raise their visors with their right hand when greeting a fellow knight.
According to a New York Times story from 2009, Ronald Reagan was thought to be the first president to begin returning salutes regularly. He had sought advice from the commandant of the Marine Corps, who told him that as commander in chief he could salute anyone he liked.
In September 2014 Obama saluted with a cup of coffee in his hand, drawing criticism from conservatives and retired military who deemed it the latte salute and displayed it as a evidence that Obama lacked understanding about the military.
Asked about the salute by NBC News, White House spokesman Hogan Gidley said he hadn't seen the video, "so it's tough for me to comment on that."
The White House did not immediately respond to an additional request for comment.


text:
Q: How to save array to memory in Android i'm new to android and i'ld like to understand how i can save an array to memory. I don't mean internal memory, as i know about shared preferences, external storage and sqlite. I'm looking at something within the range of RAM/Heap.
The actual challenge is that i have a string array of names. I get the names from an sqlite database when app is first started.
e.g
String[] names = new String[] {"dave", "james", "tommy" }

This list can grow to contain over 10000 items.
In another activity, i want to check if some names exist in the list. I don't want to query the database back and forth to achieve this. That is why i'm thinking that saving in memory may just be the best bet as it can improve performance.
So i'ld like to know how to save this array in memory and read from it in another activity. I already know how to manage my RAM i'm just looking for ways to get this info there and read from it.
Thanks

A: Create a Singleton Pattern and put your array into it and you can share your array across your app instance but remember this singleton class will be destroyed with the app so will your you array inside it.
This is how a singleton is created.
class Bar {
private static class ArrayHolder {
    public static List<String> array = new ArrayList<>();
}

public static Bar getArray() {
    return array;
}
}

Whenever you need to access your array just do this ArrayHolder.getArray()

redpajama_set_name: RedPajamaStackExchange


Thomas Merton said (and I'm paraphrasing without my source in front of me) to write for yourself is in the end, sickening. To write for others is more noble, but the only way to speak to many, truthfully and well, is to write for God.
There's lots to write about. Man of La Mancha opens this Friday at Taproot Theatre, and I continue to tilt with the windmills involved in playing Cervantes/Quixote. It's both thrilling and invigorating, and will no doubt–from my point of view–be a highlight of my acting work of recent years. At the same time, it's scary, thought-provoking, even indicting as I work to fill these words, these moments, and these songs. Impossible dreams, indeed.
The work at the Northwest Church, from a paid staff point of view, is drawing to an end. This past Sunday, Chris Goldman announced that as of January 1st, 2011, I will be resigning my part-time post as Real Encounter Catalyst Leader and Worship Leader. Lots of implications to this, but to reflect on my work of the past three years at Northwest is humbling, satisfying, and disappointing all at once. One day I will write this experience in ways that I hope will honor the people who have allowed me to serve among them. Whether it's a piece of fiction or non-fiction remains to be seen, but I have my ideas.
On the family side, my daughter Amy is now firmly ensconced in New York City, living on the Upper West Side, suffering from the heat wave currently hitting the country. Working hard at the business of living and acting, she seems resolute and happy to be doing what she's doing, and I couldn't be more proud. My son Daniel is home for the summer after a bit of opera exploration in Italy, and is currently preparing to appear in a new musical at the end of August. Our conversations often run into the night, and between the two of us, we may figure life out yet. And my sweet wife continues to shore me up as she soldiers lovingly on with the business of living with her own version of the crazed and faulty knight.
"Look always forward. In last year's nest, there are no birds this year." So says Don Quixote as he stands vigil the night before his dubbing. I thought about it, and tore out the carpet in my office revealing a beautiful, but somewhat beat-up, hardwood floor. I repainted the walls a rich version of my favorite yellow (I could write about why yellow has become my favorite in the past couple of years), and am in the middle of building a new nest from which I hope powerful new work emerges.
The point is, there's lots to write about. How about the spill in the gulf? The World Cup? The upcoming elections and the projected make-up of the next Congress? What it means to befriend the poor? What art demands and why? Why the Bible continues to demand a fidelity so many young people just can't seem to muster up? The discipline of putting words on the page no matter what? The efficacy of prayer? The design of the human for faith? The means by which we pick and keep and cultivate friends? The nature of seeds and the ongoing explosion of new life in the world? The stripping of language into the mundane and the trivial?
Summer has arrived in Seattle. A new play opens, temperatures soar, light bounces off the wooden tables at the coffee shop, silhouetting the woman rearranging her purse, her coffee cups, and who knows, perhaps her life. Another woman hustles in for her latte, apologizing for her lack of shoes. A gray-haired man takes a table near the front as upbeat chatter mixes with the early morning jazz. I'm in the back, in the corner, feeling much better now that we've talked, reader, you and me.
Do we write for God? Do we live for Him, to discover Him, to reveal Him, to experience Him? Daniel and I have conversations about the experience of God and what it means to sing for Him, to create for Him, to live the entire human enterprise on His behalf. Do we, as Paul enjoined, do whatever we do for the glory of God? And if we say we do, what do we mean?
To write for God is no doubt many things, but it is at least to be present, to speak truth, to listen, to persuade, to reflect, and to work. To bear witness. There are times I'm afraid to bear witness to life as I see it, yet that is the job. Being faithful is nothing less than showing up for the day's work.


At the age of 32, Ted Lilly doesn't have the same giddy-up on his fastball as he used to. In fact, his average fastball was just about 88 mph last year, which ranked near the bottom of the league for starters. Despite this, Lilly continued to throw a lot of high fastballs and he paid the price, giving up 32 home runs, nearly a home run and a half per game. This should be no surprise throwing soft fastballs up in the zone causes many souvenirs for fans.
The question, then, is why Lilly would continue to work upstairs. The answer lies in Lilly's curveball, which is one of the best in the game. Lilly throws a lollipop curve that, at 70 mph, doesn't look like it ever is going to get to the plate. Combine that speed differential with almost 10 inches of vertical drop and you have a pitch that needs to be thrown relatively high in the air or it is going to bounce well before it reaches home plate. The problem is Lilly's fastball doesn't require nearly as much height, so the result is his curveball looks much different than his fastball to a hitter. Here is a side view of the average of all Lilly's fastballs and curveballs put on the same plot.
The back tip of home plate is at a horizontal distance of 55 feet, so 0 feet is near the rubber but not quite on it (because pitchers release the ball a few feet in front of the rubber). The two tick marks on the fastball and the curveball represent how far the ball has traveled in .075 seconds, which is when Bob Adair found is the time the batter has to decide whether to begin to swing. The line drawn between the curveball and the fastball represents the maximum distance between the two pitches.
As you can see, Lilly's average curveball looks nothing like his average fastball, and major league hitters definitely can distinguish the two. When the fastball and curveball line up closely during the first half of the flight it is called pitching on the same plane. When they differ, a "hump" is produced, like what you see here from Lilly. Because curveballs rely so much on deception, this is a big problem for Lilly.
Lilly needs good production from his bread-and-butter pitch, so he needs a way to make these two pitches look more alike. He can't lower his curveball's height because that would produce a ball that bounced well before it got to home plate. The solution is to throw his fastball higher. Lilly knows he can't work upstairs all the time, but he chooses to throw high heat some of the time to hide his more effective curve. In particular, Lilly will follow up a high fastball with a curveball so that the height is fresh in a hitter's mind.
Of course, hitters don't have the luxury of seeing the side view; they have to view the pitch mostly head-on. Here is a simple animation to give you an idea of what a hitter is looking at. Actually, this is from the catcher's perspective, so the coordinate system is identical to what we have been using and shifting to the hitter's head doesn't change the perspective much. Let's start by looking at Lilly's average fastball and curveball.
This is slowed down by a factor of 10, so you can really see what is going on. Notice how the fastball begins to lose altitude right from the start, but the curveball must first move up before it can fall. Once it starts to fall, it drops very rapidly and ends up below the fastball. This is the hump I was referring to in the side view. Look how dissimilar these two pitches appear. Now here is a random example of a high fastball followed by a curveball from Lilly.
The curveball still needs to rise before it can fall and the fastball still is falling from the beginning, but the higher launch angle means these two pitches appear similar for a much longer time. The fastball now ends up much higher than before, but now, Lilly hopes, the hitter will be confused by the curveball and swing over the top.
This logic makes perfect sense. Lilly is choosing to make his fastball a little less effective to try to make his curveball more effective. John Walsh has already studied the effects of throwing high fastballs in the link above, showing that, overall, Lilly isn't going to be punished too much by throwing a lot of high fastballs. The real question is how much Lilly is gaining with his curveball when it is preceded by a high fastball.
The first thing we need to do is to define exactly what we mean by a high fastball. I am going to define it for this study as any fastball that crosses the front of home plate 33 inches off the ground or higher. I picked this number because at that height an average fastball and an average curveball would produce no hump. I don't care about the horizontal location of the ball; that doesn't impact the hump of a curveball that might follow.
Next, we need to determine a metric for success. We will choose a slightly modified version of runs100. Runs100 is a metric developed by John Walsh to measure how many runs a pitcher saved with a given type of pitch in 100 pitches. Negative numbers here are good for the pitcher so if I said that Barry Zito's runs100 for his curveball was -2.0 that means that Zito saved two runs over 100 curveballs.
The only modification we need to make is to normalize this quantity by the count. Curveballs are much more successful when the hitter has two strikes on him and trying to protect the plate. Since we are interested in curveballs following high fastballs, this situation tends to occur later in the count. Lastly, we count only curveballs after high fastballs to the same batter. So if a pitcher strikes out a hitter with a high fastball and then starts the next hitter with a curveball, that doesn't count.
Major league pitchers throw a curveball about eight percent of the time and about 15 percent of the time a curveball is preceded by a high fastball. When a pitcher does this, he decreases (remember lower is better) his runs100 by .62 which is a very large difference. It isn't a perfect analogy. but consider the difference between a pitcher with a 4.00 and a 4.62 ERA.
Getting back to Lilly, he threw a high fastball before a curveball 28 percent of the time—almost double league average. Interestingly, his gains were insignificant compared to his curveballs not preceded by a fastball. At first I thought this was because Lilly's hump was so pronounced that a marginally high fastball wasn't enough and he would require even higher fastballs to show results. So I ramped up my high fastball definition to 40 inches, which is at the very top of the strike zone for most hitters. Lilly still throws a really high fastball before a curve 10 percent of the time but again his results were flat. It is possible that this is just a blip and if I looked at other years Lilly would show improvement with curveballs following high fastballs. Or, it is possible that Lilly is throwing enough high fastballs that that height is always in hitters' minds, so all his curveballs are befitting.
Yankee prospect Phil Hughes is another interesting pitcher to track this with because of his large hump on his curveball. In fact, Hughes' hump is the largest in the league by more than two inches. You would expect that Hughes would be throwing some high fastballs to help with the deception, but he didn't once throw a high fastball followed by a curveball all year. In Hughes' defense, his year was less than 40 innings but still you would have expected at least some high fastball/curveball sequences.
Hughes mowed down minor league hitters at every level, but he is still a very young pitcher. He also is almost exclusively a two-pitch pitcher (fastball/curveball) so he needs both pitches working to be successful. His curveball last year was over two runs100 worse than a league average curveball. surprising considering how much scouts love the pitch and how much movement he gets with it.
It seems pretty clear that Hughes just doesn't have the necessary deception yet and big league hitters are recognizing his curve and either laying off the pitch or hitting it hard. It is very possible that Hughes' great movement was enough to fool minor league hitters and up until this point he never needed to properly disguise the pitch. With the Yankees' rotation looking full after their offseason spending spree, it seems likely Hughes will start the year in Triple-A. He is likely to do well there as he has already shown he can get hitters out at that level, but without some tweaks, I would be very surprised if he had a lot of success at the major league level. Obviously, he is a very young pitcher and has a lot of time to make the proper changes, but it can be hard to work on something at a level where you don't really need to use it to be successful.
While this study was done with major league players, it is likely that the sequence of high fastball then curveball is a successful one at lower levels as well. Because hitters are less sophisticated the lower you go, the effect is probably smaller but still present. Sadly, PITCHf/x hasn't made its way to minor league or college stadiums yet, so pitchers might not be aware of exactly how big a hump their curveball creates. One way of finding out is through video, but make sure you have a decent enough sample before rushing to a judgment. You can also have a coach or teammate watch you while you pitch, preferably from the side. to look for the hump. Be a bit careful of this, too, because the eye can play tricks on people.
Fortunately, there is another way to guesstimate if your curveball's hump is noticeable. First, is your arm angle. Pitchers who throw over the top tend to have a lot of backspin on their fastballs, a lot of front spin on their curveballs and little side spin on either. This produces the classic 12 to 6 curve and can lead to a hump. Second, is the speed of your pitches. If your curveball is significantly slower than your fastball, it will be in the air for a lot longer and will likely need to be thrown at a different height. Third, is the movement of the pitches. If your fastball has a lot of "rise" to it and your curveball has a lot of downward movement, there likely is a hump between the two. If two of these three things describe you, you likely have a somewhat significant hump between your fastball and curveball.
If this is the case, consider mixing in some high fastball/curveball sequences. It's important to remember that the whole point of this is to get the hitter seeing at a different level. If the hitter you are facing hacks at anything, don't bother with the fastball; just throw him the curve and he will likely chase. Use this only against polished hitters who see the ball well.
Also, if you intended to throw a high fastball but it ended up lower than you wanted you aren't necessarily set up for the curveball. The hitter has no idea what you were actually planning, so if the ball ended up in a different location you have to use the result of the pitch, not the intention, to figure out what to throw next.
Conversely, if you meant to throw a fastball at the knees but it ended up letter high, now might be an excellent time for a curveball. This is especially the case if the hitter swung and missed or foul-tipped it. He is probably cursing to himself that he missed that last pitch and trying to make sure he doesn't miss it again. Now when you throw the curve he will see high fastball and likely swing over it.
Lastly, don't overdo it. Major league pitchers use this sequence about 15 percent of the time and 25-35 percent if their hump is larger. While this is probably an effective sequence for deceiving the hitter, if you use it too regularly you will lose all the deception you worked so hard to achieve.


text:
9/10/18 – Naomi Osaka wins emotional grand slam
by admin2 | Sep 12, 2018 | Articles - BEAR, Insider Blog | 0 comments
Wow, did you catch all the tennis drama over the weekend? What began as a "slightest of hand gestures" by a coach in the stands soon ended in "chaos, recrimination and, oh, yes, Naomi Osaka's remarkable upset victory." Yes, the 20-year old Naomi Osaka, described as "shy" and grew up "admiring and emulating Williams", was up 6-2 in the first set, ready to pull of a huge upset victory for the Grand Slam title.
Serena was visibly frustrated, so when Carlos Ramos, the "notoriously strict chair umpire," called a code violation for coaching after Patrick Mouratoglou (Serena's coach) made a slight wobbling motion with his two hands (as if to remind Williams how to move), Serena's in-the-moment Empirical, Animate "feelings" kicked in, and it was all downhill from there. Williams approached the chair and said to Ramos, "One thing I've never done is cheat, ever. If he gives me a thumbs up he's telling me to, 'Come on.' I don't cheat to win, I'd rather lose. I'm just letting you know." (After hundreds of matches, you'd think she would have told the coach by now don't give me coaching hand signals?)
Williams returned to play in the second set by breaking Osaka's serve, which could have been a turning point, only to hit a backhand into the net for an unforced error. Osaka came back to win the next game, and that's when Williams racket came firing down, destroying it. It was an automatic code violation, and because it was Williams' second, Osaka gained a point for the next game. Serena apparently forgot this rule, so when she saw the scoreboard, she returned to Ramos with more words to say. "You owe me an apology. I have never cheated in my life. I have a daughter and I stand for what's right for her and I have never cheated. You owe me an apology." After some more bantering, Williams stated, "And you stole a point from me, you're a thief, too." Ramos threw in a third violation, which is a loss of a game, and soon the match was over.
The crowd booed, and when the M.C. started to speak to congratulate Naomi Osaka, they continued with loud boos. Osaka pulled her visor over her face again and cried. "Seeing that, Williams put her arm around Osaka and said something to ease the tension. When it was her turn to speak to the crowd, she implored the fans to stop booing and to laud Osaka's achievement."
Let's now forget the match and instead focus on Ms. Osaka. Can anyone guess her inborn Brain Type? She is unique, not just in the world, but in the world of tennis. In fact, we had to pull out Niednagel's old "Your Key To Sports Success" to double-check and make sure that, yes, we have never witnessed her Brain Type on the female tennis circuit ever before. Consider, she's quiet, has a powerful ground stroke, and in her interviews she often is a woman of few words. In fact, after she beat Serena, Osaka "giggled, fidgeted and rambled, before admitting 'this is probably going to be the worst acceptance speech of all time'. Osaka is one of just a few women in pro tennis with a forehand shot clocked at more than 100 miles per hour. How does she do it? As one sports scientist observes, she "grabs the throat of her racket with her left hand. This seemingly innocuous gesture starts a sequence of motion that will muster her incredible forces and release them into a thunderous shot … Having both hands on the racket helps create a singular movement of shoulders and hips away from the ball, called a unit turn." At this point, our readers should be honing in on her inborn BT.
Osaka is a #2 BEAR. As we hinted earlier, this design has only been seen on the men's tour, and rarely at that. Bjorn Borg shared this inborn makeup. Often times, #2s lack the passion, energy, and discipline required to be the best at tennis, and we have no doubt Osaka's nurturing in Japan played a large part in her success. We'll be talking more of her in the future, but for now, congratulations to Naomi Osaka for a match well-played, and for keeping her head in the game despite Serena's emotional, child-like breakdown.
By the way, Mouratoglou later admitted he was coaching Serena, though he added that all coaches do it. Oh well.


text:
Q: Where am I supposed to call the method connection.Open() using C#? Hi I am trying to get data from a database shown in a textbox. Doing this I have created three classes: Dal, Controller and TestForm. The thing is that I dont really know where to open the connection nor where to close it. This is what I've done.
In the class Dal I have:
  using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data.SqlClient;
    using System.Data.Odbc;

    namespace TestingDatabaseConnection
    {
        class Dal
        {
    private SqlConnection connection = new SqlConnection();

        public SqlConnection GetConnection()
        {

            if (connection == null)
            {
               connection.ConnectionString = "Server=Mnemonics-DAT;Database=mem;    Integrated Security = true;";
            }

            return connection;
        }

     public SqlDataReader GetData()
        {
            SqlDataReader sqlReads = null;

                SqlCommand sqlCommand = new SqlCommand("select * from table_name", GetConnection());
                 sqlReads = sqlCommand.ExecuteReader();

            return sqlReads;

        }
    }
    }

In the class Controller I have:
 using System;
    using System.Collections.Generic;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace TestingDatabaseConnection
    {
    class Controller
    {
        private Dal dal = new Dal();

        public SqlDataReader GetData()
        {
            return dal.GetData();
        }
    }
    }

and finally in the form:
public partial class TestForm : Form
{
Controller controll;

public TestForm()
{
    InitializeComponent();
    controll = new Controller();
}

private void showBtn_Click(object sender, EventArgs e)
{
    try
    {
        SqlDataReader sqlReader = controll.GetData();
        while (sqlReader.Read())
        {
            infTxtBox.Text = sqlReader.ToString();
        }
    }
    catch (Exception e1)
    {
        MessageBox.Show("Something is wrong: " + e1);
    }

}

}

The message I get says "Something is wrong: ExecuteReader requires an open and available Connection. The connection's current state is closed.

What I have tried to do to solve the problem(in the class Dal):
Making a property that gets the connection value like this:
public SqlConnection Connect
    {
        get
        {
            return connection;
        }
    }

And then using it in the method GetData():
 public SqlDataReader GetData()
        {
            SqlDataReader sqlReads = null;
            try
            {
                 //I call the method Open() here
                Connect.Open();
                SqlCommand sqlCommand = new SqlCommand("select * from table_name", GetConnection());
                sqlReads = sqlCommand.ExecuteReader();
            }
            catch (Exception e)
            {
                Console.WriteLine("Error is: " + e);
            }
            finally
            {
                //and close it here
                Connect.Close();
            }
            return sqlReads;

        }

The error message I get now says: "Something is wrong: Invalid attempt to call Read when reader is closed"
While referring to the class TestForm.

A: Problem is here:
if (connection == null)
{
     connection.ConnectionString = "Server=Mnemonics-DAT;Database=mem;    Integrated Security = true;";
}

Your connection can't be null because you initializing it before calling GetConnection method.Instead check your connection string:
if(connection.ConnectionString == "")
{
    connection.ConnectionString = "Server=Mnemonics-DAT;Database=mem;    Integrated Security = true;";
}

Probably it would better if you use using statements,it will automatically Dispose your Connection object when it's job is done, just define a connection string variable then use:
string connString = "Server=Mnemonics-DAT;Database=mem; Integrated Security = true";

using(var conn = new SqlConnection(connString))
using(var sqlCommand = new SqlCommand("select * from table_name", conn))
{
      conn.Open();
      sqlReads = sqlCommand.ExecuteReader();
      conn.Close();
}

A: Problem : in Dal class file you are not opening your connection object connection before reading the data.
Solution : You need to Open the SqlConnection object using Open() method before reading the data.
Try This:
    public SqlDataReader GetData()
    {
        SqlDataReader sqlReads = null;
        SqlCommand sqlCommand = new SqlCommand("select * from table_name", GetConnection());
        connection.Open(); //Open your connection object here.
        sqlReads = sqlCommand.ExecuteReader();
        return sqlReads;
    }

A: Its because you're trying to read your SqlDataReader on a closed connection.
Do not call connection.close() in your getData() method instead add a method to your Dal class
like so :
public void CloseConnection()
{
    connect.close()
}

and then call your closeConnection method after looping trough your DataReader :
SqlDataReader sqlReader = controll.GetData();
        while (sqlReader.Read())
        {
            infTxtBox.Text = sqlReader.ToString();
        }

control.CloseConnection();


text:
Lee Jin-man
# totally macadamia
Ex-airline executive walks free after bizarre 'nut rage' court case
Cho Hyun-Ah became enraged when a flight attendant served her some nuts in a bag, rather than on a plate.
May 22nd 2015, 7:25 AM
A FORMER KOREAN Air executive jailed for disrupting a flight in a rage over macadamia nuts walked free today – when a South Korean appeals court overturned her conviction for violating aviation safety laws.
The High Court in Seoul ruled that Cho Hyun-Ah, who had been in jail since her arrest in December, was not guilty of the most serious charge of altering an aircraft's route while in flight.
That overturned the verdict of a lower district court, which had jailed Cho for one year in February.
"The accused had no intention of hampering the safe operation of the plane," High Court judge Kim Sang-Hwan said, handing down a reduced sentence of 10 months, suspended for two years.
After the hearing, Cho, 40, changed out of her prison clothes and left the court, dressed in black coat and wearing heavy dark-rimmed glasses.
Mobbed by reporters outside, Cho, walking with her head bowed, was shielded by a small group of minders who whisked her away to a waiting black sedan.
Apology to those 'hurt'
One of her lawyers offered Cho's apologies to "all those who have been hurt by this incident".
The eldest daughter of the airline's chairman, Cho was a Korean Air (KAL) vice president in charge of in-flight service at the time of her December 5 "nut rage" meltdown on board a Seoul-bound KAL flight that had just left the gate in New York.
As the plane was taxiing to the runway, Cho, sitting in first class, became enraged when a flight attendant served her some nuts in a bag, rather than on a plate.
She lambasted the chief steward over the behaviour of his cabin crew and then ordered the plane back to the gate so he could be ejected.
In her original trial, the district court determined that an aircraft was "in flight" from the moment it began to move, and therefore Cho had violated aviation safety laws by illegally changing the plane's route.
But the High Court overturned that decision, ruling that the return to the gate "did not constitute a change" of flight path.
Lee Jin-man Lee Jin-man
'Modest' safety threat
While describing the threat Cho's actions had presented to the safety and security of the aircraft as "modest", the court upheld her conviction for hampering the plane's operations and violence against the cabin crew.
Chief steward Park Chang-Jin had testified that Cho had made him kneel and beg for forgiveness while jabbing him with a service manual.
The flight attendant who served the now infamous nuts has since filed a civil lawsuit, alleging Cho attacked, threatened and screamed obscenities and then pressured her to cover up the incident by lying to government regulators.
Many South Koreans saw Cho's behaviour as emblematic of a generation of spoilt and arrogant offspring of owners of the giant family-run conglomerates, or "chaebols", that dominate the national economy.
The "nut rage" case invited international ridicule and Cho was criticised at home for embarrassing the country and damaging its image.
A 'tainted' life
At the same time, some commentators had suggested the original one-year custodial term was harsh given that Cho had already been publicly humiliated and forced to resign her post with the airline.
In deciding on a sentence, Judge Kim said the court had taken into account that Cho had two-year-old twins at home, and no past criminal record.
"She knows she has to live the rest of her life tainted by this incident," he added.
The initial reaction among South Korean Twitter users was largely critical of the High Court's decision, which some saw as another example of privilege trumping illegal behaviour.
"Does anyone think an ordinary person would have won a suspended sentence? This is why people don't trust the justice system," tweeted @sosa9053.
- © AFP 2015
Read: 9/11 victim identified nearly 14 years on from attack >
Read: Elderly Base jumper died after 'deliberately setting his parachute on fire'
CHO HYUN-AH HIGH COURT MACADAMIA NUTS SEOUL TOTALLY MACADAMIA
<iframe width="600" height="460" frameborder="0" style="border:0px;" src="https://www.thejournal.ie/https://www.thejournal.ie/korean-airline-exec-nuts-2117673-May2015/?embedpost=2117673&width=600&height=460" ></iframe>
Email "Ex-airline executive walks free after bizarre 'nut rage' court case".
Feedback on "Ex-airline executive walks free after bizarre 'nut rage' court case".


text:
Canadian Solar Announces New Sales Agreement for Solar PV Projects in Tanzania
Feb. 27, 2013 - Canadian Solar today announced a 85kW sales agreement with Zara Solar. Including this new order, Canadian Solar will have supplied more than 350kW of its solar modules to Zara Solar for off-grid PV projects in Tanzania.
Canadian Solar's off-grid solar modules between 15 and 90W are used for these projects. The modules are ideally suited for the local environmental conditions. "What convinced us to choose Canadian Solar was its proven performance and reliability, high quality and commitment to excellence. Additionally, we focus on long-term relationships with trustworthy partners. We also stress experience, an extended track record and a very good customer service. Canadian Solar excels in all of our required criteria," said Mohamedrafik Parpia, founder and owner of Zara Solar.
"We are very pleased about our agreement with Zara Solar, a leading solar PV company in the Tanzanian market. We are excited to further build our presence in this emerging marketplace for sustainable energy solutions. Our leadership, quality and cost benefits enable us to work with the best partners in important markets worldwide," said Dr. Shawn Qu, Chairman and CEO of Canadian Solar. "Together with Zara Solar, we can promote the use of solar PV by municipal organizations and commercial businesses in rural communities throughout Tanzania."
Source: Canadian Solar
CSI(Canadian Solar) (Solar Materials): https://www.enfsolar.com/csi-canadian-solar
CSI(Canadian Solar) (Solar Panels): https://www.enfsolar.com/csi-canadian-solar
CSI(Canadian Solar) (Solar Components): https://www.enfsolar.com/csi-canadian-solar
CSI(Canadian Solar) (Solar System Installers): https://www.enfsolar.com/csi-canadian-solar
Zara Solar (Solar System Installers): https://www.enfsolar.com/zara-solar
Zara Solar (Sellers): https://www.enfsolar.com/zara-solar


text:
#include <arm_nnfunctions.h>
#include <stdlib.h>
#include <unity.h>

#include "../TestData/depthwise_kernel_3x3/test_data.h"
#include "../Utils/validate.h"

static const uint16_t dilation = 1;

void depthwise_kernel_3x3_arm_depthwise_conv_3x3_s8(void)
{
    const arm_cmsis_nn_status expected = ARM_CMSIS_NN_SUCCESS;
    q7_t output[DEPTHWISE_KERNEL_3X3_DST_SIZE] = {0};

    cmsis_nn_context ctx;
    cmsis_nn_dw_conv_params dw_conv_params;
    cmsis_nn_per_channel_quant_params quant_params;
    cmsis_nn_dims input_dims;
    cmsis_nn_dims filter_dims;
    cmsis_nn_dims bias_dims = {};
    cmsis_nn_dims output_dims;

    const q31_t *bias_data = depthwise_kernel_3x3_biases;
    const q7_t *kernel_data = depthwise_kernel_3x3_weights;
    const q7_t *input_data = depthwise_kernel_3x3_input;

    input_dims.n = DEPTHWISE_KERNEL_3X3_INPUT_BATCHES;
    input_dims.w = DEPTHWISE_KERNEL_3X3_INPUT_W;
    input_dims.h = DEPTHWISE_KERNEL_3X3_INPUT_H;
    input_dims.c = DEPTHWISE_KERNEL_3X3_IN_CH;
    filter_dims.w = DEPTHWISE_KERNEL_3X3_FILTER_X;
    filter_dims.h = DEPTHWISE_KERNEL_3X3_FILTER_Y;
    output_dims.w = DEPTHWISE_KERNEL_3X3_OUTPUT_W;
    output_dims.h = DEPTHWISE_KERNEL_3X3_OUTPUT_H;
    output_dims.c = DEPTHWISE_KERNEL_3X3_OUT_CH;

    dw_conv_params.padding.w = DEPTHWISE_KERNEL_3X3_PAD_X;
    dw_conv_params.padding.h = DEPTHWISE_KERNEL_3X3_PAD_Y;
    dw_conv_params.stride.w = DEPTHWISE_KERNEL_3X3_STRIDE_X;
    dw_conv_params.stride.h = DEPTHWISE_KERNEL_3X3_STRIDE_Y;
    dw_conv_params.dilation.w = DEPTHWISE_KERNEL_3X3_DILATION_X;
    dw_conv_params.dilation.h = DEPTHWISE_KERNEL_3X3_DILATION_Y;

    dw_conv_params.ch_mult = DEPTHWISE_KERNEL_3X3_CH_MULT;

    dw_conv_params.input_offset = DEPTHWISE_KERNEL_3X3_INPUT_OFFSET;
    dw_conv_params.output_offset = DEPTHWISE_KERNEL_3X3_OUTPUT_OFFSET;
    dw_conv_params.activation.min = DEPTHWISE_KERNEL_3X3_OUT_ACTIVATION_MIN;
    dw_conv_params.activation.max = DEPTHWISE_KERNEL_3X3_OUT_ACTIVATION_MAX;
    quant_params.multiplier = (int32_t *)depthwise_kernel_3x3_output_mult;
    quant_params.shift = (int32_t *)depthwise_kernel_3x3_output_shift;

    ctx.buf = NULL;
    ctx.size = 0;

    arm_cmsis_nn_status result = arm_depthwise_conv_3x3_s8(&ctx,
                                                           &dw_conv_params,
                                                           &quant_params,
                                                           &input_dims,
                                                           input_data,
                                                           &filter_dims,
                                                           kernel_data,
                                                           &bias_dims,
                                                           bias_data,
                                                           &output_dims,
                                                           output);

    free(ctx.buf);
    TEST_ASSERT_EQUAL(expected, result);
    TEST_ASSERT_TRUE(validate(output, depthwise_kernel_3x3_output_ref, DEPTHWISE_KERNEL_3X3_DST_SIZE));

    const int32_t buf_size =
        arm_depthwise_conv_wrapper_s8_get_buffer_size(&dw_conv_params, &input_dims, &filter_dims, &output_dims);
    ctx.buf = malloc(buf_size);
    ctx.size = 0;
    result = arm_depthwise_conv_wrapper_s8(&ctx,
                                           &dw_conv_params,
                                           &quant_params,
                                           &input_dims,
                                           input_data,
                                           &filter_dims,
                                           kernel_data,
                                           &bias_dims,
                                           bias_data,
                                           &output_dims,
                                           output);

    free(ctx.buf);
    TEST_ASSERT_EQUAL(expected, result);
    TEST_ASSERT_TRUE(validate(output, depthwise_kernel_3x3_output_ref, DEPTHWISE_KERNEL_3X3_DST_SIZE));
}

void depthwise_kernel_3x3_arm_depthwise_conv_3x3_1_s8(void)
{
    const arm_cmsis_nn_status expected = ARM_CMSIS_NN_ARG_ERROR;
    q7_t output[DEPTHWISE_KERNEL_3X3_DST_SIZE] = {0};

    cmsis_nn_context ctx;
    cmsis_nn_dw_conv_params dw_conv_params;
    cmsis_nn_per_channel_quant_params quant_params;
    cmsis_nn_dims input_dims;
    cmsis_nn_dims filter_dims;
    cmsis_nn_dims bias_dims = {};
    cmsis_nn_dims output_dims;

    const q31_t *bias_data = depthwise_kernel_3x3_biases;
    const q7_t *kernel_data = depthwise_kernel_3x3_weights;
    const q7_t *input_data = depthwise_kernel_3x3_input;

    input_dims.n = DEPTHWISE_KERNEL_3X3_INPUT_BATCHES;
    input_dims.w = DEPTHWISE_KERNEL_3X3_INPUT_W;
    input_dims.h = DEPTHWISE_KERNEL_3X3_INPUT_H;
    input_dims.c = DEPTHWISE_KERNEL_3X3_IN_CH;
    filter_dims.w = DEPTHWISE_KERNEL_3X3_FILTER_X;
    filter_dims.h = DEPTHWISE_KERNEL_3X3_FILTER_Y;
    output_dims.w = DEPTHWISE_KERNEL_3X3_OUTPUT_W;
    output_dims.h = DEPTHWISE_KERNEL_3X3_OUTPUT_H;
    output_dims.c = DEPTHWISE_KERNEL_3X3_OUT_CH;

    dw_conv_params.padding.w = DEPTHWISE_KERNEL_3X3_PAD_X + 2;
    dw_conv_params.padding.h = DEPTHWISE_KERNEL_3X3_PAD_Y;
    dw_conv_params.stride.w = DEPTHWISE_KERNEL_3X3_STRIDE_X;
    dw_conv_params.stride.h = DEPTHWISE_KERNEL_3X3_STRIDE_Y;
    dw_conv_params.dilation.w = DEPTHWISE_KERNEL_3X3_DILATION_X;
    dw_conv_params.dilation.h = DEPTHWISE_KERNEL_3X3_DILATION_Y;

    dw_conv_params.ch_mult = DEPTHWISE_KERNEL_3X3_CH_MULT;

    dw_conv_params.input_offset = DEPTHWISE_KERNEL_3X3_INPUT_OFFSET;
    dw_conv_params.output_offset = DEPTHWISE_KERNEL_3X3_OUTPUT_OFFSET;
    dw_conv_params.activation.min = DEPTHWISE_KERNEL_3X3_OUT_ACTIVATION_MIN;
    dw_conv_params.activation.max = DEPTHWISE_KERNEL_3X3_OUT_ACTIVATION_MAX;
    quant_params.multiplier = (int32_t *)depthwise_kernel_3x3_output_mult;
    quant_params.shift = (int32_t *)depthwise_kernel_3x3_output_shift;

    ctx.buf = NULL;
    ctx.size = 0;

    arm_cmsis_nn_status result = arm_depthwise_conv_3x3_s8(&ctx,
                                                           &dw_conv_params,
                                                           &quant_params,
                                                           &input_dims,
                                                           input_data,
                                                           &filter_dims,
                                                           kernel_data,
                                                           &bias_dims,
                                                           bias_data,
                                                           &output_dims,
                                                           output);

    free(ctx.buf);
    TEST_ASSERT_EQUAL(expected, result);

    const arm_cmsis_nn_status expected_wrapper = ARM_CMSIS_NN_SUCCESS;
    const int32_t buf_size =
        arm_depthwise_conv_wrapper_s8_get_buffer_size(&dw_conv_params, &input_dims, &filter_dims, &output_dims);
    ctx.buf = malloc(buf_size);
    ctx.size = 0;

    result = arm_depthwise_conv_wrapper_s8(&ctx,
                                           &dw_conv_params,
                                           &quant_params,
                                           &input_dims,
                                           input_data,
                                           &filter_dims,
                                           kernel_data,
                                           &bias_dims,
                                           bias_data,
                                           &output_dims,
                                           output);

    free(ctx.buf);
    TEST_ASSERT_EQUAL(expected_wrapper, result);
}

void depthwise_kernel_3x3_arm_depthwise_conv_3x3_2_s8(void)
{
    const arm_cmsis_nn_status expected = ARM_CMSIS_NN_ARG_ERROR;
    q7_t output[DEPTHWISE_KERNEL_3X3_DST_SIZE] = {0};

    cmsis_nn_context ctx;
    cmsis_nn_dw_conv_params dw_conv_params;
    cmsis_nn_per_channel_quant_params quant_params;
    cmsis_nn_dims input_dims;
    cmsis_nn_dims filter_dims;
    cmsis_nn_dims bias_dims = {};
    cmsis_nn_dims output_dims;

    const q31_t *bias_data = depthwise_kernel_3x3_biases;
    const q7_t *kernel_data = depthwise_kernel_3x3_weights;
    const q7_t *input_data = depthwise_kernel_3x3_input;

    input_dims.n = DEPTHWISE_KERNEL_3X3_INPUT_BATCHES;
    input_dims.w = DEPTHWISE_KERNEL_3X3_INPUT_W;
    input_dims.h = DEPTHWISE_KERNEL_3X3_INPUT_H;
    input_dims.c = DEPTHWISE_KERNEL_3X3_IN_CH;
    filter_dims.w = DEPTHWISE_KERNEL_3X3_FILTER_X + 1;
    filter_dims.h = DEPTHWISE_KERNEL_3X3_FILTER_Y;
    output_dims.w = DEPTHWISE_KERNEL_3X3_OUTPUT_W;
    output_dims.h = DEPTHWISE_KERNEL_3X3_OUTPUT_H;
    output_dims.c = DEPTHWISE_KERNEL_3X3_OUT_CH;

    dw_conv_params.padding.w = DEPTHWISE_KERNEL_3X3_PAD_X;
    dw_conv_params.padding.h = DEPTHWISE_KERNEL_3X3_PAD_Y;
    dw_conv_params.stride.w = DEPTHWISE_KERNEL_3X3_STRIDE_X;
    dw_conv_params.stride.h = DEPTHWISE_KERNEL_3X3_STRIDE_Y;
    dw_conv_params.dilation.w = DEPTHWISE_KERNEL_3X3_DILATION_X;
    dw_conv_params.dilation.h = DEPTHWISE_KERNEL_3X3_DILATION_Y;

    dw_conv_params.ch_mult = DEPTHWISE_KERNEL_3X3_CH_MULT;

    dw_conv_params.input_offset = DEPTHWISE_KERNEL_3X3_INPUT_OFFSET;
    dw_conv_params.output_offset = DEPTHWISE_KERNEL_3X3_OUTPUT_OFFSET;
    dw_conv_params.activation.min = DEPTHWISE_KERNEL_3X3_OUT_ACTIVATION_MIN;
    dw_conv_params.activation.max = DEPTHWISE_KERNEL_3X3_OUT_ACTIVATION_MAX;
    quant_params.multiplier = (int32_t *)depthwise_kernel_3x3_output_mult;
    quant_params.shift = (int32_t *)depthwise_kernel_3x3_output_shift;

    ctx.buf = NULL;
    ctx.size = 0;

    arm_cmsis_nn_status result = arm_depthwise_conv_3x3_s8(&ctx,
                                                           &dw_conv_params,
                                                           &quant_params,
                                                           &input_dims,
                                                           input_data,
                                                           &filter_dims,
                                                           kernel_data,
                                                           &bias_dims,
                                                           bias_data,
                                                           &output_dims,
                                                           output);

    free(ctx.buf);
    TEST_ASSERT_EQUAL(expected, result);
}

redpajama_set_name: RedPajamaGithub


The new Meadow Picnic collection from Juliska. Available now at Chelsea Gifts.
Whether it's something for Mother's Day or just a little something for yourself, you can now save 10% off all Juliska products at Chelsea Gifts.
Simply enter JULISKA10 at checkout and you'll get 10% off all Juliska brand serveware and drinkware.
Click here to see all our our current Chelsea Gifts coupons and deals.


Do you have a PC or Apple Mac problem or struggling to use Windows 8 & 10?
Need Help with your iPhone, iPad, Kindle, e-Reader or Tablet Computer?
WITH ANY I.T. RELATED PROBLEM!
Resolving Computer crashes or fixing your freezing computer.
Friendly Local, Professional & Trusted service at a fair price!
Fast turnaround & most problems are solved within a few hours and on-site.
Jargon free advice while your computer problem is being fixed!
PC Help Norfolk's head office is based in Clenchwarton, King's Lynn, but being a mobile company who has always specialized in home and on-site visits - cover a wide area of Norfolk, North Norfolk, Northeast and Northwest Norfolk and parts of the Cambridge and Lincolnshire area covering towns including: King's Lynn, Downham Market, Ely, Wisbech, March, Fakenham, Spalding, Snettisham, Swaffham, East Dereham, Brandon, Thetford, Watton, Wells and surrounding areas.
Supporting the following villages around norfolk including Blackborough End, Brancaster, Brandon Creek, Burnham Market, Castle Acre, Clenchwarton, Dersingham, Docking, East Winch, Emneth, Friday Bridge, Gayton, Great Burcham, Great Massingham, Grimston, Heacham, Hilgay, Holbeach, Holme, Hunstanton, Ingoldisthorpe, Leverington, Little Massingham, Litcham, Long Sutton, Magdalen, Marham, Marshland St James, Middleton, Narborough, North Runcton, Outwell, Pentney, Pott Row, Ringstead, Saddlebow, South Runcton, Southery, St Germans, Sutton Bridge, The Walpoles, Tilney All Saints, Tilney St John, Tilney St Lawrence, Terrington St Clements, Tydd St Mary, Tydd St Giles, Upwell, Watlington (King's Lynn), Walpole Cross Keys, Walpole Highway, Walpole St Andrew, Walpole St Peter, Walsoken, Walton Highway, West Dereham, West Newton, West Walton, West Winch, Wormegay and more.


Citizen's Against Government Waste– non-partisan pork barrel funding.
The Smoking Gun Is it true or not? Debunking myths, lies and misstatements about politics and all sorts of other things. Check here before you forward those emails!
Town of Miami Lakes Miami Lakes reportsInterestingly, they post all resolutions and audits for easy access.


text:
Privacy Policy of hotelbelfiore.com
This Website collects some Personal Data from its Users.
Personal data collected for the following purposes and using the following services:
Contact the user
Contatto via telefono Contact by telephone Personal Data: telephone number Mailing list o newsletter Personal Data: surname, date of birth, email, country, name, telephone number and province Contact form Personal Data: surname, email, name and telephone number
Interaction with live chat platforms
Facebook Messenger Customer Chat Facebook Messenger Customer Chat Personal Data: Cookies, Data communicated while using the service, Usage Data and About me
Remarketing and behavioral targeting
AdWords Remarketing, Facebook Remarketing and Remarketing with Google Analytics for display advertising Personal Data: Cookies and Usage Data Facebook Custom Audience Personal Data: Cookies and emails
Google Tag Manager Cookies and Usage Data
Google reCAPTCHA Personal Data: Cookies and Usage Data
Platform and hosting services
WordPress.com Personal Data: various types of Data as specified in the privacy policy of the services
Viewing content from external platforms
Widget Google Maps Personal Data: Cookies and Usage Data
Display Advertisers Extension for Google Analytics, Google Analytics, Facebook Ads Conversion Tracking and Google Ads Conversion Tracking Personal Data: Cookies and Usage Data User ID extension for Google Analytics Personal Data: Cookies
Further information on Personal Data
Automated decision-making processes
When a decision that can produce legal effects for the User or can affect his person in a similarly significant way is made exclusively with technological tools and without human intervention, there is an automated decision-making process. As part of the purposes described in this document, this Website may use the User's Personal Data to make decisions based entirely or partially on automated processes. This Site Web uses automated decision-making processes to the extent that it is necessary to conclude or execute a contract between the User and the Owner or, if required by law, with the consent given by the User. Automated decisions depend on technological tools provided by the Owner or by third parties and are generally based on algorithms that meet predefined criteria. The logic behind the automated decision-making processes aims to:
enable or improve decision making
guarantee Users fair and impartial treatment;
reduce the potential harm resulting from human error, personal bias or other similar circumstances that could lead to discrimination or imbalances in the treatment of individuals;
reduce the risk of the User breaching the obligations of a contract.
To obtain further information on the purposes, any third-party services and on the specific logic of the automated decision-making processes adopted by this Website, the User can refer to the respective sections of this document. Effects of automated decision-making processes and rights of Users subject to them Users subject to this type of processing may exercise specific rights aimed at preventing or limiting the potential effects of automated decision-making processes. In particular, Users have the right to: receive an explanation of each decision taken as a result of an automated decision-making process and express an opinion in this regard; contest the decision by asking the Data Controller to reconsider it or adopt a new decision on a different basis; request and obtain from the Owner a human intervention in the treatment. To obtain further information on rights of Users and on their exercise, the User can refer to the section of this document relating to Users' rights.
Sale of goods and services online
The Personal Data collected are used for the provision of services to the User or for the sale of products, including payment and possible delivery . The Personal Data collected to complete the payment may be those relating to the credit card, the current account used for the transfer or other payment instruments provided. The payment data collected by this website depend on the payment system used.
Hotel Belfiore
Via Via Po, 7 - 47843 Misano Adriatico (RN)
Owner contact email: [email protected]


 NIOSHTIC-2 Publications Search - 10001573 - Conceptual Design of an Automated Longwall System - 4 Volume Set. Phase I--survey of Operating Longwalls.
Conceptual Design of an Automated Longwall System - 4 Volume Set. Phase I--survey of Operating Longwalls.
The objective of this study was to develop conceptual designs for a fully automated longwall mining system. The study was divided into three phases. Phase I included a survey and pertinent characteristics of all longwall faces operating in the United States. It includes the results of time and motion studies conducted at the face in an operating mine, it identifies the causes of production slowdowns or stoppages, and it identifies areas for improvement in longwall mining systems.


In our last issue we looked at the importance of building levels of employee engagement for a stronger safety culture. Simply stated, engaged employees are safer on the job and tend to lead a safety culture rather than merely comply with it.
There are six drivers of engagement that we can use to build levels of engagement in our employees to strengthen our safety culture. It's important to understand that while we should be looking for direct application of these drivers to specific safety situations, even a generic application of these drivers will strengthen a safety culture.
Why? Because as we mentioned in a previous article in this series, a heightened level of engagement entails a heightened sense of ownership, and a heightened sense of ownership entails a greater commitment to safe behaviors.
Hence, if we build levels of engagement, even generically, the safety culture will benefit from that effort. Having said that, we'll make a special effort here to apply these drivers specifically to a safety culture.
We'll take a look at the first three drivers here, and save the final three for the next article.
Driver 1: Perception of job contribution and value of the job: Do I as an employee understand how what I do on the job contributes to the big picture? In other words, do I have a clear "line of sight"? Line of sight refers to an employee's ability to see the larger picture of how what they do on the job impacts the end game. Employees who have a clear line of sight make better decisions on the job and understand the value of their contribution. As an employee, the more I understand the end game of my job, the more engaged I will be as an employee.
One of the best ways to build "line of sight" and to get employees to understand how what they do impacts everything else is to cross-train them on other positions in both directions of the process — or at least let them observe that process! Where do the materials for the widget they make come from (upstream), and what happens to that widget after they make it (downstream)? How does the widget they make help build the larger machine, and how does the customer use it and perceive it?
All of this is important for establishing an employee's line of sight and for building their level of ownership around what they do on the job. Principles of engagement dictate that as ownership for the job grows, so does their commitment to a safe work environment.
Driver 2: Clarity of job expectations and the ability to work well: Do I as am employee understand all that you expect me to do, or am I left to guess? And have you provided me the tools and training I need to do my job well, or am I left to figure that out on my own? The more I understand the expectations of my job, the more engaged I will be as an employee.
One way to verify and even build clarity of job expectations is to put them in charge of the documented safe-work procedures. You probably have a JSA (Job Safety Analysis) for each job they do, as well as SOPs (Standard Operating Procedures) that record what the job is supposed to be. When's the last time these documents were updated? More importantly, who does the updating? Updating and maintaining these documents is best done by the employees who actually do those jobs. Not only does that give them a voice in what they do, but it also helps clarify job expectations for them.
Driver 3: Involvement in decision making: Do I as an employee have a voice in what I do on the job and how I do it, or are you deciding this for me? The more ownership you give me for what I do on the job, the more engaged I will be as an employee.
There's an axiom I like to use in my workshops that goes like this: "No one disagrees with his/her own ideas." If I as a manager or supervisor tell you as an employee what to do on the job and just how to do it, those end up being my ideas and not yours. And because they are not your ideas,you'll never internalize them or be fully committed to them.
But if I allow you to determine how you do that same job in better ways, now it's your idea. And if it's your idea then you won't disagree with it later. Giving our employees a voice in what they do and how they do it fosters a sense of ownership in them, which in turn (as we've already shown) raises their levels of engagement and their commitment to a safe work environment.
The same principles hold true when applied specifically to a safety culture. By giving our employees a voice in that safety culture (whether through participation in safety committees, giving them the lead in safety communication in their toolbox meetings, or some other safety-leadership activity) we only strengthen that culture.
In our next issue we'll look at three more drivers of engagement and make the connections to strengthening a safety culture. That's it for this edition of Recordable INSIGHTS Newsletter. Until next time.


text:
Review of Markus Neuwirth and Pieter Bergé, eds., What Is A Cadence? Theoretical and Analytical Perspectives on Cadences in the Classical Repertoire (Leuven University Press, 2015)
William M. Marvin
KEYWORDS: Classical style, cadence, closure, formal function, schemata, Schenker, generative grammar, history of theory.
Received October 2015
[1] Questions related to underlying principles of tonal process often engender heated disagreement among musicians. Are there three tonal functions or seven Stufen? How is the minor mode derived, and how should it be understood in relation to major? Why are parallel fifths forbidden in common-practice (and a significant body of earlier) music? What are the conditions under which parallel fifths or octaves are acceptable in the foreground or middleground? Do seventh chords exist? What is the status of scales within tonal theory? Should we sing with fixed or movable do syllables, and if movable, according to Kodály or Curwen? The list could go on and on, but the titular question of the book under review now joins the others, and it provides more contention than one might at first expect, even within the strict chronological confines of this volume. "What is a cadence?" resembles my other questions in that we cannot get very far until we have provided a provisional answer for ourselves, yet we are unlikely to reach a consensus anytime soon.
[2] Markus Neuwirth and Pieter Bergé have brought together nine essays on the subject, all of which were presented in January 2011 at a four-day conference held at the Academia Belgica in Rome. The authors explore a wide range of music-theoretic perspectives: Schenkerian theory; Formenlehre according to Caplin or Hepokoski/Darcy; schemata and partimento; eighteenth-century compositional theory according to Kirnberger, Koch, Riepel, and others; generative grammar according to Lerdahl and Jackendoff as well as Rohrmeier; and many others. Methodologies range from corpus studies, through music-cognition experiments, to traditional theoretical explorations. The editors have allowed the conflicts between approaches and readings to stand unmediated, and thus the collection reads like a music-academic free-for-all, with several musical examples reappearing from one article to another and the authors responding to each other throughout. In this respect, the collection will remind readers of another well-known volume from the same publisher (Bergé 2009).
[3] While the essays all intersect with each other in fascinating dialogue, both explicit and implicit, the editors suggest a two-part organization to the book (Introduction, 10). Five essays (by William Caplin, Felix Diergarten, Poundie Burstein, Markus Neuwirth, and Danuta Mirka) offer mechanical or technical investigations of the theory and practice of cadence in late eighteenth-century composition. Four further essays (by Nathan John Martin and Julie Pedneault-Deslauriers, Vasili Byros, David Sears, and Martin Rohrmeier and Markus Neuwirth) are interdisciplinary in nature, and offer methodological innovations that lie further from traditional approaches to tonal theory and analysis. The nine essays all gain from being read as a collection; I suspect that many readers will reconsider some cherished notions in favor of what is offered here, while remaining firm in their convictions when confronted with other ideas in the collection. My own Schenkerian orientation will be quite evident as I discuss the individual contributions to this volume. Reading the essays collectively, I found ample evidence that the question of what constitutes a cadence in tonal music is bound to an understanding of hierarchical levels, and that all of the work presented here is explicitly or implicitly in dialogue with questions of levels. Among the many possible examples to be raised here, the following can be understood as specific versions of the question of levels: Koch's or Riepel's variously weighted cadential/punctuation types; Caplin's hierarchy of beginning, middle, and ending functions; preferred placement of the EEC or ESC within Hepokoski and Darcy's Sonata Theory; and right- vs. left-branching, or nesting decisions, in generative-grammar approaches to musical structure. Several of these issues are raised in Anson-Cartwright 2007, an important study of musical closure that appears in only one of the bibliographies within the collection under review.
[4] The opening essay of the collection, by William Caplin, is a rigorous examination of one of Robert Gjerdingen's voice-leading schemata, the Prinner, from Caplin's own form-functional perspective as outlined in Caplin 1998 and 2004. Caplin's goals are revealed towards the end of his article, where he claims he has provided " . . . only a small step in the much-needed, broader project of providing form-functional interpretations of the various eighteenth-century schemata identified by Gjerdingen" (55). For Caplin, the Prinner exhibits special properties in that it can function prolongationally, sequentially, or cadentially within a phrase, and thus is more flexible in its deployment than other schemata might be. Among the questions raised by Caplin's research is the issue of schematic variants: if a Prinner is altered so that a cadential dominant is interpolated between the penultimate and ultimate dyads, does it remain a Prinner, or is it now a different schema? Of particular interest for Schenkerians is the status of the Prinner within Schenkerian theory. It is clear that Schenker himself could never have conceived of the Prinner as a generative unit, as it does not project a complete prolongational span. For Schenkerians, this shallow middleground voice-leading pattern is understood to be generated as a part of many potential progressions or Züge, and it would be indicated in a Schenkerian graph, if at all, using a motivic bracket.
[5] Felix Diergarten introduces readers to an underexplored region of eighteenth-century compositional theory, namely partitura: a stable Austrian and South German pedagogical tradition derived from Italian partimento and thoroughbass approaches. His work is presented as a response to analyses by Caplin and other contemporary scholars, and he suggests that the cadential types as identified in partitura treatises offer solutions to problems that more recent theoretical approaches have found intractable. Of particular value here is the historical continuity that Diergarten proposes between sixteenth- and seventeenth-century theoretical approaches to cadence and eighteenth-century definitions, a continuity that is downplayed in much contemporary pedagogy and scholarship.
[6] Poundie Burstein's essay, "The Half Cadence and Related Analytic Fictions," is a companion to his similarly titled article in Music Theory Spectrum (Burstein 2014). His point of departure here is the incongruity of Formenlehre definitions of cadences as ending formulas when confronted with the open-ended realities of half cadences, which point towards an ending that does not materialize, at least not immediately. In addition to referencing Schenker's explanation of voice-leading being "cut off" from succeeding events, Burstein proposes interpretive solutions for the common scenario of a back-relating dominant occurring simultaneously with a forward-relating lead-in to the next phrase. Burstein also engages historical definitions, demonstrating that eighteenth-century authors provided strict limits over cadential definitions, and that the concept of the half cadence became broader and more inclusive over time. That said, he provides fascinating lists of late eighteenth-century half cadences from the repertoire, all of which contain sevenths over the dominant, or inversions of the V chord. These examples merit case-by-case examinations that consider the specific voice-leading derivations.
[7] Just as Burstein problematizes received notions of the half cadence, Markus Neuwirth problematizes our understanding of deceptive cadences. Drawing on multiple methodologies, Neuwirth views the deceptive cadence as a device intended to delay closure. He thus places the deceptive cadence in dialogue with Schenker's notion of Aufhaltung, which encompasses many voice-leading transformations, including deceptive harmonic motion. Like Diergarten, Neuwirth advocates reconnecting Renaissance definitions and compositional theories with those of the seventeenth and eighteenth centuries to provide us with a broader array of harmonic strategies that point towards closure and then avoid it. The analyses tend to emphasize real-time experience, and do not engage a top-down understanding of harmonic levels. The broad generalities about Schenker's understanding of deceptive motion are based on a partial misreading of a single figure from Der freie Satz. In claiming that " . . . the deceptive harmony is usually interpreted by Schenkerians as a prolongation of the dominant . . . until it is resolved to the tonic that concludes the subsequent phrase" (131), Neuwirth has ignored the equally if not more common phenomenon in which the deceptive motion marks the end of a Zug that moves to an inner voice; subsequent motion connects back to the initiating tonic, and the dominant that introduces the deceptive motion is at a decidedly lower level than the ensuing cadential dominant.
[8] Rounding out the first section of the book is an essay by Danuta Mirka on the dual status of chords in eighteenth-century theory and compositional practice. The discussion of Rameau and Kirnberger's contrasting views on these sonorities is well known from numerous secondary sources, but it is convenient to have Kirnberger's statements regarding the chord gathered in one place. In moving from theory to practice, the connections become highly speculative, with Mirka resorting to conjectures about how Haydn "could have" or "might have" conceptualized the sonorities in specific compositions in relation to contemporary theoretical accounts. Ultimately Mirka's juxtaposition of Kirnberger's writings and Haydn's compositions demonstrate that both were deeply interested in the nature of chords and explored their multiple possibilities for interpretations, but the documentary evidence does not go beyond demonstrating mutual interest and analogy. Readers' individual reactions regarding how much the individual pieces by Haydn should be interpreted as playing with a potential tonic interpretation of the sonority will likely depend on their own predispositions for understanding the sonority's possibilities and derivation.
[9] The second half of the collection opens with a corpus study by Nathan John Martin and Julie Pedneault-Deslauriers, through which they propose a taxonomy of half-cadence types within the keyboard music of Mozart. The authors present four main types of half cadences in the corpus, with a provisional fifth category whose representatives may be better understood as elliptical presentations of other types. The categories are described in terms of scale-degree patterns in counterpoint with each other (e.g., the "converging half cadence" consists of 2ˆ–1ˆ–7ˆ over 4ˆ– 4ˆ–5ˆ), and variants of each type are identified. Disentangling the strands of essential voice leading in each example is a critical implicit procedure that underlies the authors' categorization of each excerpt, but I found each of their representative examples to be reasonably identified and interpreted. Avenues for future research along these lines might be to integrate these cadential formulae with opening gestures, in order to provide better middleground understandings of Mozartean phrase-length prototypes. To ask but one specific Schenkerian question: Does the choice of a linear progression's initiating tone (3ˆ, 5ˆ, or 8ˆ) limit or influence the half-cadential type available to a composer?
[10] Vasili Byros offers a wide-ranging article that brings together Gjerdingen's schemata, eighteenth-century rhetorical cadential terminology, Caplin's formal functions, and pedagogical recomposition of masterpieces. He uses all of these ingredients to his own purposes, emphasizing the cognitive aspects of Koch's language and at times moving rather far from the book's stated focus on cadences. Byros proposes his own half-cadential formula, the "le-sol-fi-sol cadenza lunga" (223), and proceeds to explicate its formal function. Recent work by Gilad Rabinovitch (2015) examines the intersections among these theories along related lines. The analytic punch line of the article is an exploration of a passage from the first movement of Beethoven's Second Symphony in relation to an authorial constructed model, which serves to show the intersection between schemata and formal functions within various cadential approaches and expansions.
[11] David Sears's contribution reviews work on musical perception and cognition of classical cadences, and offers the results of his own experiments on how listeners perceive the relative strength of various cadence types. Once again, the relationship of this research question to a theory of levels provides a provocative subtext for reading the article. While Sears differentiates between musicians and non-musicians within his study, there is no way for him to account for differing types and levels of education and their impact on results. This is a problem that remains unsolved (and potentially unsolvable) within music-cognition research.
[12] The collection closes with an article by Martin Rohrmeier and Markus Neuwirth proposing a generative grammar to model the chordal syntax of the Classical cadence. The introduction to formal grammars in the manner of Noam Chomsky is helpful for those who do not work in this area of music theory, and the analyses themselves were fairly easy to understand. The formalism is presented rigorously, and the authors systematically examine the syntax of approaches to the various types of cadences familiar to listeners and readers. What remains unclear from the article is what analytic value this type of modeling provides for our musical understanding of harmonic syntax. The lack of counterpoint as a parameter prevents the authors from engaging upper-voice motion (the contrast with the work of Martin and Pedneault-Deslauriers is obvious here), and the use of Roman numerals-plus-inversions as input nodes seems decidedly old-fashioned, in spite of the authors' embrace of the cadential with dominant label.
[13] As mentioned above, this collection gains by being read completely, and offers a tangled counterpoint of approaches to a topic that all scholars and pedagogues in music theory engage with on a daily basis. It is hoped that continued exploration of the musical problems and ambiguities raised in this collection will find its way into undergraduate and graduate pedagogy, and will generate further speculation on the nature and weight of musical closure in the Classical period and beyond its narrow chronological confines.
26 Gibbs Street
wmarvin@esm.rochester.edu
Anson-Cartwright, Mark. 2007. "Concepts of Closure in Tonal Music: A Critical Study." Theory and Practice 32: 1–17.
Bergé, Pieter, ed. 2009. Musical Form, Forms, and Formenlehre: Three Methodological Reflections. Leuven University Press.
Burstein, L. Poundie. 2014. "The Half Cadence and Other Such Slippery Events." Music Theory Spectrum 36 (2): 203–27.
Caplin, William E. 2004. "The Classical Cadence: Conceptions and Misconceptions." Journal of the American Musicological Society 57 (1): 51–117.
Caplin, William E. 1998. Classical Form: A Study of Formal Functions for the Instrumental Music of Haydn, Mozart, and Beethoven. Oxford University Press.
—————. 1998. Classical Form: A Study of Formal Functions for the Instrumental Music of Haydn, Mozart, and Beethoven. Oxford University Press.
Rabinovitch, Gilad. 2015. "Tracing Galant Threads: Gjerdingen's Schemata and the Evolution of Musical Form, 1730–1780." PhD diss., Eastman School of Music.