text:
- Warning
FLIR E50bx Compact Infrared Thermal Imaging Camera
The FLIR E50Bx offers excellent value vs. performance in compact thermal imaging cameras. Designed to fit into your IR inspection program, budget, and comfortably in your hand. The E50bx is designed specifically for building diagnostic applications and offers:
- Focal Plane Array detector with 240 × 180 infrared resolution (43,200 pixels)
- -4°F to 248°F (-20°C to 120°C)
- ±2°C or ±2% of reading
- Manual focus, fixed zoom
- Built-in laser pointer, 3.5" Touch-Screen LCD display
- Functions include IR Window Correction
- Measurement modes: 1 movable Spot, 1 Area (Min/Max/Average), Auto Hot/Cold spot marker, Isotherm (Above/Below)
- Thumbnail Image Gallery, Radiometric IR Video Streaming to PC via USB
- Memory card slot for image storage (more than 1,000 Radiometric JPEG images)
- Complete with Memory card, Li-Ion rechargeable battery, power supply, USB cable, hand strap, lens cap and hard carrying case
- Includes FLIR Tools software for analysis of radiometric images
Find problems faster, work smarter, and grow your infrared career with powerful, FLIR E-Series and FLIR E-Series bx thermal cameras.
Large Landscape Touchscreen
Brighter than other brands, the FLIR E-Series and FLIR E-Series bx touchscreen provides an intuitive interface that takes full advantage of the entire 3.5" display with no image cropping.
Multiple Measurements
Add up to three box areas and three moveable spots using the touchscreen to gather more detailed temperature information.
Wi-Fi Connectivity
Send images and data to an Apple or Android mobile device to create and share reports and critical information quickly using the FLIR Tools Mobile App.
Measure More than Temperature with MeterLink™
Quantify the severity of electrical problems with Extech MeterLink clamp meters that use Bluetooth wireless communication to send data to the camera for annotation on stored thermal images.
Laser Pointer
Pinpoints a reference spot with a laser and aligns a marker to it on the image for precise detection.
Plenty of Extras
Small, light, and rugged with large, backlit, easy-tooperate buttons, six palette choices, and more.
Scalable P-i-P and Thermal Fusion
Overlay thermal and visible images for easy location identification and clearer documentation


text:
With horsepower seemingly growing on trees these days, picking a set of high-flow cylinder heads for your engine combination is the easy part. A mother load of rotating assemblies and aftermarket blocks means that building a big-cube short-block to take advantage of all that airflow isn't exactly difficult, either. With the top and bottom end of an engine build covered, the wild card in the horsepower equation often comes down to the camshaft. While it's true that manufacturers offer a diverse range of off-the-shelf camshafts for every conceivable combination, several important decisions must be made before you even narrow the field of part numbers down to a list of finalists.
First off, which section of the catalog should you even turn to? Valvetrain technology has advanced so rapidly in the past few years that many of the old rules and generalizations no longer hold true. For instance, while it's true that roller cams generally offer both horsepower and longevity advantages over a flat-tappet cam, a flat-tappet valvetrain done right will handily smoke a roller valvetrain done wrong. Likewise, although hydraulic lifters were once too heavy and unstable to survive much past 6,500 rpm, they're now surviving in 7,500-plus rpm race motors, giving their mechanical lifter counterparts a run for their money. Consequently, where a mechanical-lifter cam was once the obvious choice, the decision isn't so clear-cut anymore. The lines are blurring, and anyone who doesn't get up to speed with the state of modern valvetrain technology risks getting left behind. To stack the odds in your favor and simplify the selection process, we solicited the help of Billy Godbold of COMP Cams. Widely regarded as one of the foremost camshaft authorities in the industry, we were lucky just to have the opportunity to pick his brain. Here's what we learned straight from the source.
Roller, Flat-Tappet, or Solid?
In the walk of performance camshafts, enthusiasts can choose from solid flat-tappet, solid roller, hydraulic flat-tappet, and hydraulic roller designs. The type of cam you elect to use is sometimes dictated by rules restrictions in whichever class you're racing in, but when this isn't the case, there are clear advantages and disadvantages of each type of cam. It was not that long ago that explaining the benefits of each type of cam required a rather complex answer, but now it is pretty simple. If your engine was ever equipped with a roller cam, stick with a roller unless the rules require a flat-tappet cam. If you have a flat-tappet motor, the cost to upgrade to a roller is generally a good investment unless there are clearly other aspects of the engine, like the cylinder heads, that might be limiting performance. Furthermore, it used to be that above 6,000 rpm, a solid-lifter system was clearly superior to any hydraulic cam. With modern short-travel lifters and lightweight valvetrain systems, we are seeing peak engine speeds migrating north of 7,000 rpm with hydraulic cams, and 8,000-plus rpm is not totally out of the realm of possibility with a next generation of valvetrain improvements. If someone had shown me those specs 10 years ago, I think you could have knocked me over with a feather.
Roller Advantage
Roller camshafts generally make more power than their flat-tappet counterparts, but contrary to popular belief, this isn't due to a substantial reduction in friction. The frictional differences between a flat-tappet and a roller lifter are typically under the measurable resolution of the dyno or Spintron. Roller lifters allow for far greater tappet velocity-up to 30 percent more-in addition to higher lift without resulting in nose wear. Another benefit is that rollers enable higher spring loads, resulting in more aggressive valve motion. While the common misconception that the OEMs went to roller lifters to reduce friction, the real reason they switched was to reduce lifter failures instead. The lower failure rate is also a major consideration today for both street and strip motors.
Hydraulic Breakthroughs
Hydraulic roller cams have come a long way in recent years, and the thought of production engines like the LS7 that turn 7,000 rpm with a 100,000-mile warranty was inconceivable back in the '90s. The LS7's lightweight titanium intake valve in conjunction with the very stiff LS valvetrain layout and smooth cam design allow for this level of high-rpm performance out of an OEM engine. As impressive as that may be, however, COMP Cams is introducing a new hydraulic roller camshaft series capable of 8,000 rpm on old Gen I small-block Chevys, even with solid, 135-gram intake valves. Accomplishing this requires new valvespring technology, short travel lifters, COMP Pro Magnum or Gold rocker arms, and a whole new design philosophy on the lobe profiles themselves. All that said, five or ten years ago, we would have all thought that this kind of performance was impossible. Let's not forget that these are street grinds with over 0.600-inch valve lift!
Flat-Tappets, Big Power
Since many muscle car motors came equipped with flat-tappet cams from the factory, hot rodders sometimes underestimate their performance. As NASCAR Sprint Cup motors prove, however, the solid flat-tappet design is extremely capable. At a track like Pocono, these motors turn 9,800 rpm for 500 miles, so clearly you can make a flat-tappet cam that has the same horsepower and durability as a roller. The catch is that it is extremely expensive to do so. For instance, the coating on the tappets in these types of motors runs over $100 per piece in large batches. These are the same DLC coatings used in Formula 1 engines. The tappets are all custom pieces, typically made from material similar to the Maraging steels used in nuclear reactors. I'm not certain about the exact cost, but they are well over $250 per lifter, or $4,000 to $8,000 per set. The camshafts in these motors are ground from PM M4 tool steel, and the raw material alone costs about $500 to $600 per core. After making, heat treating, grinding, and super finishing the cam, you are almost assuredly over $2,000 per cam in batches of 10 or more. The valvesprings in these engines are about 1.200- to 1.400 inches in length and handle more than 0.800-inch lift. Those types of springs are not in a catalog anywhere and have to be custom ordered at four to fives times what you would pay for the best set of roller springs available. Moreover, the rocker arms in a Cup motor are typically custom systems, with ratios from 2.0:1 to 2.5:1, that typically cost over $10,000 per set. If you have the tappets, rockers, and valvesprings from a used Cup engine, it is still often cheaper to change over to a roller camshaft to use that engine in a different series of racing instead of sticking with a flat-tappet setup. As you can see, it can be done, but it costs a substantial amount of money to match the performance of a roller cam with a flat-tappet cam.
Lifter Diameter
As camshaft profiles and spring pressures become more aggressive, it's standard practice to step up to a larger diameter lifter body. In addition to the increased strength of a lifter body itself, the biggest benefit is the larger wheel diameter. Larger wheels allow for faster lobe profiles and lower pressure angles. In high-end race motors with revised cylinder head port geometry and aftermarket blocks, sometimes a larger lifter body can allow for more offset as well.
Solid Roller Reliability
Many years ago, solid roller cams were perceived to be unreliable for extended street use, but several changes have been implemented in recent years to improve oiling and extend lifter longevity. Several years back, we noticed that bracket racers were putting more time on roller lifters with fewer failures than the guys who only drove their cars once a week to the burger stand for cruise night. The main difference in the two engines is that the cruise night engine rarely sees high rpm, but in a bracket motor there is often more oil getting thrown around all over the engine from windage. With that in mind, we began developing lifters with improved oiling for the needle bearings. The culmination of that technology is in COMP Cam's Elite Race lifters with pressurized tool steel axle. These lifters feature pressurized oil inlets that deliver oil through the axles and directly to the needle bearings.
Modern Oil and Flat-Tappet Wear
In modern motor oils, many of the additives necessary for reliable flat-tappet cam performance have been removed. We try never to get tied up in environmental debates, but the EPA did place severe limits to the amount of zinc phosphates allowed on any road use oils because they believed those chemicals might get past the rings and damage the catalytic converters. The oil industry fought back because these ZDDPs are very inexpensive and effective soldiers that sacrifice themselves instead of the wear surfaces under high loads, such as those seen in flat-tappet cam applications. The EPA won, despite the fact that the industry would have preferred some more testing on the stability of different zinc phosphate combinations. We always recommend using either oils developed specifically for flat-tappet lifters or using special additive packages when running flat-tappet cams. Since not too many people have a stash of late '90s Rotella motor oil in their garage, COMP Cams offers a range of oils and additive solutions, and there are other good products on the market, such as those from Joe Gibbs Racing. At COMP Cams, we never really wanted to get in the oil business, but we had to get in to keep the cam failures to a minimum. COMP Cams' Hot Rod Oil and Joe Gibbs Racing Oil are excellent solutions for providing the protection that flat-tappet motors need. Another alternative is adding a bottle of COMP's "159" break-in additive to any off-the-shelf motor oil.
Offset Lifters
Some cylinder heads require offset lifters to kick the pushrod over to the side in an effort to optimize port geometry. That means that the pushrod is not centered on lifter body as it is with a traditional lifter. While this does affect valvetrain stability and wear, it's not as much as you might think. Anything under a 2-degree angle does not reduce stability. Past that point, it's safe to assume that every additional 2 degrees takes stiffness out of the pushrod equivalent to reducing the pushrod diameter by roughly 1/16 inch or more. The offset does not harm the stiffness, but does increase the wear on both the cam and lift as it tries to twist the lifter in the bore. How much wear is increased depends on the amount of load placed on the system.
Lifter Preload
As basic as it may seem, not everyone agrees on how to set the preload with a hydraulic cam. Many engine builders refer to this preload as "turns past zero lash". In production engines, manufacturers set the lifter near the middle of its travel. We have done considerable testing and with anywhere from approximately one turn from the top to one turn from the bottom, the valvetrain system behaves very consistently. Performance engine builders tend to fall into one of two schools of thought. Running light preload-zero to half a turn-allows the system to recover quickly if you go through an instability region. This is because the hydraulic system can try to hold the valve open after any bounce of more than a few thousandths of an inch. With solid lifters, the shape of valve bounce is a classic parabolic motion with symmetrical up and down patterns. With hydraulic lifters, the valve bounces off the seat and can then close very slowly on the way down, as the hydraulic system tries to take up the newfound clearance. To keep the system from hanging the valve open, some racers run minimum preload. On the other hand, the less preload you run, the more oil volume you have under the piston. The greater volume also means you have more aeration, or tiny oil bubbles in suspension, under the piston that can compress. Hence, some engine builders like to set the lifters from the bottom up, perhaps half a turn from the bottom, while using a longer pushrod to maintain good geometry. Clearly the first method allows the engine to go through mild "bad spots" better and the second method helps improve overall stability. The beauty of a short-travel lifter is that it allows the engine builder to choose both options and take advantage of the best of both worlds.
Lifter Materials
The materials used to manufacture lifters have evolved over the years, and directly contribute to increased durability. Most mechanical lifters are made from very high-grade cast iron that has values of 55 or greater on the Rockwell hardness scale. Tool steel lifters are also becoming quite common. They can be used on cast-iron cams without coatings if the cam is either nitrided or super finished. On steel cams, the lifter foot requires a special DLC coating to prevent micro-welding between the mating parts. Beware that of the 100-plus companies that say they can DLC coat lifters, only about three have DLC recipes that will live with the impacts common to the tappet face in performance engines without flaking or wearing prematurely.
Roller Durability
In a high-rpm race motor with big valves and lots of spring pressure, the roller assembly in a solid-roller cam takes a lot of abuse. To enhance durability, several features can be incorporated into a lifter's design. Larger axles are pretty much a must, as the needles contact the axle at approximately the same angle every time on the opening side, as the valve opens and applies roughly 3,000 pounds of force for a few milliseconds. This will result in spalling of the axle unless the forces can be well distributed. For the same reason, more needles help spread the load between needles more evenly. With a larger axle, the wheel will become thinner unless you go to a larger outside diameter wheel. Using great materials in all three components is paramount. At the same time, direct oiling reduces surface temperature and scrubbing friction. We certainly prefer a 0.904-inch outside diameter COMP Cams Elite lifter with a 0.820-inch wheel over the 0.842-inch outside diameter lifter with a 0.755-inch outside diameter wheel when a customer can fit the larger body in the block.
Rebuildable Lifters
The cost of replacing lifters every season in a race motor can get expensive, so at COMP Cams we developed our Endure-X lifters with rebuilds in mind. Typically, most bracket racers will replace lifters about twice a season. During the rebuild process, we replace high-wear items like the axle, needles, and wheel. Since the lifter bodies also incur wear during race use, I would not recommend more than one or maybe two rebuilds. Now that the wheels, needles, and axles are so much better than even five or ten years ago, by the time you get to the second rebuild the body would really need to be replaced as well as the rolling assembly.

subset: commoncrawl


text:
23 's
Handmade Glass Pendant Necklace
Check out now. Fast, Easy, Secure Checkout.
Color: Purple
Lovely Pendants, hard to decide which one to wear! Many Thanks, Linda
As usual this was a perfect transaction from beginning to end, and the product is absolutely perfect. Thank you and will purchase from in the future.
This seller is wonderful to deal with, The necklaces are gorgeous, and I was supposed to give them as Christmas presents, but have decided to gift them to myself instead. Wonderful craftmanship, shipping and very easy to communicate with. All around perfect experience. Will definetely by from her again.... Thank you.... Oh and the Earrings were absolutely adorable......
The bracelet is wonderful - so unique and special. I am very happy with it. The necklace you included is also very unique and special! Thank you for your talents!
Handmade Artisan Jewelry
After 2 weeks your items will automatically renewed for another 60 days and $0.23 per item will be added to your billing ledger.
While you were away our TOU was updated,
read the terms of use here.
*No action is required on your part.


text:
(Excerpted from U.S. Senate records -- 03 March 1999)
Let me begin with the question that is on my mind today: How is it possible to engage in peace negotiations with people who maintain the right to obliterate you, who are filled with hatred toward you, and who harbor the dream of one day destroying your homeland? Peace is a matter of the heart. I believe in the depths of every person's heart is a desire to live in peace. But what I saw, which was the outcome of the Palestinian Authority rule, convinced me that their hearts and minds are set on other goals. The Palestinian leadership does not want peace. They want, first, their own state which they can control with total power. Then they want to use that state to eliminate the State of Israel.
Let's be clear. The peace process, to be meaningful, must be about more than rules and laws and lines on a map. We can reach a short-term agreement on these points, but if the Palestinian leadership fails to abandon incitement of hatred, persecution, and terrorism, then we are all dreaming, only dreaming, and our President's behavior must be labeled foolish appeasement. There will not be peace until hearts and minds are changed, and we must focus our attention on these issues. Mr. President, many of my colleagues in the Senate and in the House are aware of the promotion of hatred contained in the Palestinian media, and more significantly in the Palestinian schoolbooks. Let me provide some examples.
This is a picture that was taken off of Palestinian Authority-controlled television. It is a picture of a young girl, probably 6 or 7 years old.This is a young girl singing into a microphone. She is on a television show that would be what we would refer to as kind of a Mickey Mouse Club type of show that would be shown to children by the Palestinian Authority. I want to read to you what this little girl is singing. Again, this is a program that was produced by the people who are sitting across the table from you, supposedly negotiating peace. This is what the little girl is singing:
"When I wander into the entrance of Jerusalem, I'll turn into a suicide warrior in battledress, In battledress. In battledress."
There is no way I can convey to you the emotion of actually seeing that scene on television. There is no way I can put the emotion into what she was expressing and the emotion that she was expressing as she sang those words. And after her song, she got an ovation from her classmates and from her teacher.
This focuses us on the fundamental difference in approach between the Palestinians and the Israelis. I have a grandson about that age, about the age of that little girl. How would I feel if he were being taught hatred in school? If he were being taught hatred on television, how would I feel? How would you feel if your government was teaching your children to hate? Could you conclude that they were serious about long-term peace with their neighbors?
I also have some examples from Palestinian textbooks for a third-grade grammar lesson. Here is the task: "Complete the following blank spaces with the appropriate word." And the sentence is: "The Zionist enemy blank civilians with its aircraft." The correct answer is: "The Zionist enemy attacked civilians with its aircraft."
For seventh graders: "Answer the following question: Why do the Jews hate Muslim unity and want to cause division among them? Give an example of the evil attempts of the Jews, from events happening today." These are from Palestinian textbooks today.
One would expect, rather than focus on hatred, if they were serious about peace, they would focus on how the two peoples are working to live side by side. A history book for 12th graders published only last summer teaches: "The clearest examples of racist belief and racial discrimination in the world are Nazism and Zionism."
To see this taking place today is chilling.
I had another profound meeting during this week. I met one evening privately-- secretly--with Arabs who were being persecuted for their Christian faith. I met with about 10 Palestinian Christians. I will tell you just one of their stories, but I will change some of the details to protect the person I am describing. I remember an energetic man, in his early 40s, at the end of the table. I remember him because he seemed so full of life and love. He had a great smile on his face and displayed a wonderful sense of humor. I say this was memorable because, frankly, after hearing what he had been through, I do not know if I could express the sense of peace and love he did. This is his story.
He had many children and very little money. He converted to Christianity in 1993. He clearly loved God, and he loved to tell people about his conversion. He described to me how in 1997, the Palestinian Authority asked him to come to the police station for questioning. When he arrived, he was immediately arrested and detained on charges of selling land to Jews. He denied this charge, since he was very poor and owned no land. He was beaten. He was hung from the ceiling by his hands for many hours. He showed me what I just said. He showed me how his hands were tied behind his back and then raised from the floor and hung that way for many, many hours.
After two weeks, he was transferred to a larger prison where he was held for eight months without trial. He was released in February 1998, after his family borrowed thousands of dollars to pay off the local authorities. And even though he is free, they are keeping his father in prison. They believe it is for his son's beliefs. He feels his father is being held hostage to prevent him from talking with people about his faith. Needless to say, these Christians met with me at considerable risk. They conveyed to me a message of fear and desperation. But their mere presence in the room with me demonstrated their hope, and it also caused me to ask: How can the people of Israel find peace with the Palestinian Authority while the Palestinian Authority engages in coercion and torture based upon religious beliefs?
I also met with the parents of American children killed by Palestinian terrorists. In this meeting, I was struck by the courage displayed by these families after suffering the tremendous loss of a child brutally murdered. These families told me of the hopes and dreams they had for their children.
I understand that the Palestinian Authority knows a great deal about these murderers, but they are not being punished. Some of them have gone to trial and were sentenced, but we don't know if they remain in prison. I was told that we know some have been released.
There are reports that the Palestinian Authority allows them to leave prison each day and return in the evening -- like free room and board more than like prison. I was also presented with stories of the lionization of these murderers in the press and again in the classrooms. Try to imagine how you would feel, try to imagine what would be going through your mind when you are dealing with the grief of the loss of your child. You know who is responsible. You know they know who is responsible. You saw them go on trial. You saw them then released. You have to ask yourself, what are we going through this peace process for?
I would like to mention one story of many that I heard. Mrs. Dosberg sat directly across the table from me. When she told us of the loss of her daughter and son-in-law, the lesson of these murders became so clear--we must fight terror and we cannot back off. Mrs. Dosberg's family, her daughter, American son-in-law, and their 9-month-old daughter attended a wedding in central Israel on June 9, 1996. They decided not to bring their 2-year-old daughter along. Thank God. On the way home from the wedding they were stopped by Palestinian terrorists and killed in a so-called drive-by shooting.
Fifty bullets were found to have been used in this murder, and yet, by some miracle, the baby survived. Even with a crime this gross, the Palestinian Authority did not arrest everyone involved or suspected in the shooting. One of those who remained free, it is believed, later took part in the bombing of the Apropos Cafe, killing many others. Another suspected killer, according to the Israeli Justice Ministry, was under arrest but given permission to come and go as he pleases from prison. Mohammed Dief, another suspected Palestinian terrorist, took part in the murder of two other Americans, at two different times, according to the mothers with whom I spoke. Mrs. Sharon Weinstock lost her 19-year-old son in a drive-by shooting masterminded by Dief. And only a year later, Mrs. Wachsman told me of the kidnap-murder of their son, also believed to have been planned by Dief.
I am told Mohammed Dief remains a free man today. The obvious lesson--terrorists kill and those who are not jailed remain free to kill and to kill again thanks to the Palestinian Authority. How would I feel in their place? I couldn't keep the thought from my mind, as I listened. If I had lost a child and knew that the murderer or accomplices were on the loose, how would I feel? And if I knew the killer remained free to kill other people's children, how would I feel? It is so hard, hard to even consider, but I do know that I left there committed to doing whatever I could to help each of those families.
Once again, I began to better understand the way the Palestinian Authority leadership was approaching peace. How can one find peace with people who do not condemn terrorism? Mr. President, how is it possible to engage in peace negotiations with people who want to teach their children to die in a holy war against you? How is it possible to engage in peace negotiations with people who persecute those of other faiths? How is it possible to engage in peace negotiations with people who keep terrorists on the loose to wreak havoc and evil against you and praise them for heroism?
Today the Israeli people are exhausted by 50 years of violence against their homes and families, of sending their sons and daughters into the army, and they dream of a promised peace now. This is our hope and our dream as well. But we must not get confused. History is replete with examples of compromises which bring terror and destroy dreams.
In the United States, many people seem to think that if we do not confront these obstacles to peace and if we look the other way, then we will be able to come to an agreement. The reality, however, is just the opposite. If we do not acknowledge the attitudes and acts of those at the peace table, then the peace process is already over -- and we just won't admit it. In other words, the surest way to kill the peace process is to avoid confrontation, to fear upsetting a belligerent force and to avoid addressing incitement, violence, persecution and terrorism. The only way to keep the peace process alive is to focus on truth, freedom, security and justice.
Israeli efforts, to date, have sought to keep the peace process alive, improve security during the negotiating process, and obtain reciprocity as a vital element of implementation. The process remains alive, but terrorism continues and is exalted by many in the Palestinian Authority, and reciprocity does not exist. The United States role has been to seek the middle ground. Unfortunately, this only rewards those willing to go to new extremes. The United States must not engage in moral equivocation. We must not shy away from holding Arafat responsible for acts of violence, incitement and persecution.
The United States must demonstrate principled leadership and end the appeasement that perpetuates the cycle of violence. The peace process can only work when leaders uphold their agreements and answer to the people, and the United States remains a vigilant defender of the principles which bind us to Israel: freedom, democracy, and the rule of law.
What should we do? I believe there are three things. First, we should insist upon the strict adherence to Oslo and the reciprocity codified at Wye. The purpose of the Wye accord was at long last to force the Palestinians to comply with commitments before further territory would be turned over...
Reciprocity makes no sense unless it is based upon this formulation. Once Israel has ceded territory, it is unlikely it ever could recover it. The Palestinians, on the other hand, can turn on and off their promises. In fact, this is exactly what they have done.
Second, we should stop paying Arafat. Any funds provided to the Palestinian people should continue to go through private voluntary organizations. We should also monitor much more closely the rampant corruption and mismanagement of funds provided currently.
And third, we must aggressively seek the bringing to justice of Palestinian terrorists who killed American citizens.
Israel has come a long way since I first began following the fate of this state and the people of Israel. In so many respects, life appears and feels normal.
The economy is developing, the standard of living is growing and improving. But just below the surface of this normalcy, Mr. President, Israel still faces a threat to the state's very existence. Israel's survival remains, unfortunately, a very real and central concern 50 years after its independence. Some people believe, however, that by ignoring this threat, that the peace process can succeed. Mr. President, it will fail. It is clear to me that many in the Palestinian leadership today see the peace process toward the goal of eliminating the State of Israel.
I suggest today that we get back to the basics. Peace is not possible while teaching children to hate and kill. Peace is not possible while persecuting those of other faiths. Peace is not possible while lionizing terrorism. We must stand up for freedom, security, and human dignity. We must stand up to ensure the security of Israel.
The only way to truly attain peace is to support freedom, democracy and justice, and oppose the cycle of hatred. We must face tyranny and oppression where it exists, condemn it, and stand up for peace --real peace based upon security, freedom, and a change of heart.


text:
Home > News & Events > Wayland Press Release Archives > 2007 News Releases > February 2007 > WBU Brings Contemporary Music and Performance Style to the Stage
WBU Brings Contemporary Music and Performance Style to the Stage
PLAINVIEW -- Wayland Baptist University's faculty and students will come together Monday night to present a special project unlike anything typically presented at a university level.
Contemporary Music Project II: A Night at the Gallery is scheduled for 7:30 p.m. on Monday in the Harral Fine Arts Center on the Wayland campus. This event celebrates art music from the 20th Century and beyond with a diverse array of vocal and instrumental performances. An informal reception will be held in the Miller Recital Hall following the event where audience members can interact with the performers.
Admission to the event is free and open to the public.
The art center will be divided into four concert venues, each featuring a different performance. Audience members will receive a program outlining the features at each performance area. They may then begin their tour at the venue of their choice and may move freely from venue to venue as if viewing various pieces at an art show.
"We are trying to have the effect of touring an art gallery," said Dr. Ann Stutes, co-chair of the Division of Fine Arts at Wayland. "But instead of viewing works of art, they are going to hear musical performances."
Each venue will feature about 4 pieces performed by the artists. The performances will loop, giving audience members a chance to experience each style of music. Stutes said no one will be able to hear everything, but instead will get "snippets" of the different performances and styles.
"There are 16 pieces. If we did that in a concert, no one could sit there that long," Stutes said. "Plus, modern music is kind of edgy and our ears aren't trained to listen to it for that long. We are giving them the opportunity to move about the building and clear their ears before moving on to the next venue."
Stutes said the reception at last year's event was very informative as audience members questioned performers about techniques used in learning and playing various styles of music.
The original concept for the project grew from a vision held by four Wayland students who wanted an opportunity to study contemporary music and to help Plainview audiences better understand and appreciate music that is often difficult to process due to its diversity and newness. Rachel Merrill, a senior music and English major from Lubbock, is the only one of the four students still in school.
"This is my second year to be a part of this project," Merrill said. "I feel that it is important to have a night dedicated to modern music in order to expose it and allow performers and listeners alike to better understand its significance and beauty."
Dr. Gary Belshaw, associate professor of piano pedagogy at Wayland, said that seeing students willing to step out and experience this type of music and performance style is exciting.
"More than any other time in the history of Western art music, composers have at their disposal the materials and techniques to create any kind of sound imaginable -- from new sounds of incredible beauty and unspeakable joy to sounds which perfectly accompany the 20th Century newsreel and television coverage of the darkest realms of human experience," Belshaw said. "The fact that our students have been so excited about exploring this new music and bringing it to performance and placing it in the context of contemporary art puts Wayland on equal footing with any other school of music anywhere in the world."


text:
Jay Baruchel continues his movie star rise with the release of Disney's "Sorcerer's Apprentice" next month, which gave us pause -- does he really rate only a 5 on the hotness scale?
Should the filmmakers in "She's Out of My League" revise this score for history's sake?
As the comedy comes out on DVD and Blu-ray Tuesday, we tracked down "League" co-star TJ Miller, the buddy who assigned the score and laid out the technical reasons for it in the movie.
Miller argues his co-star has moved up in the rankings.
"He's got to be an 8 right now," Miller tells PopcornBiz. "He's got 'Sorcerer's Apprentice' and stuff. This is getting serious."
And by getting an 8, Baruchel can now even woo 10's by his own "League" theory of attraction. "I think he can finally jump that 2-point chasm," says Miller.
The ratings system and the hilarious bowling scene highlights one of the great aspects of "League" -- the improv-heavy buddy scenes between the self-deprecating Baruchel, comedian Miller and the other pals from the fictional Pittsburgh airport security team.
Miller has revised his own personal score, which was a tepid 6 in the movie ("and they put me at a six in billboards all over the city with my face on it," he adds).
"I'm doing well, but I'm down to a 4 since the alternator went out on my car," he says. "But I'm hoping to get to a 7 real soon."
With parts in "Gulliver's Travels" and as Ranger Jones in "Gulliver's Travels," there's little doubt that Miller will be there soon enough.


text:
Les Georgettes Nid D'Abeille 25mm Yellow Gold Plated Metal Cuff Bangle.
Mix with our range of Les Georgettes Leather Inserts for endless possibilities. Find a style and colour that suits any occasion.
Bangle size is 25mm wide.
Comes with official Les Georgettes Packaging.
Free UK Delivery on All Orders. Free UK Next Day Delivery on orders over £95.*
You can return an item to us for either exchange or refund within 21 days of receiving it.
Please see our Delivery & Returns page for more details.
*Subject to stock availability.


text:
Bluffton High senior C.J. Frazier verbally committed to Newberry over the weekend, athletic director Dave Adams said Tuesday.
The prolific quarterback, who threw for 3,080 yards and 38 touchdowns in the fall, can sign with the in-state Division II college on national signing day Feb. 6.
Frazier has had a scholarship offer since last year from Newberry, which went 5-6 and finished fifth in the South Atlantic Conference last season.
In three years as the Bobcats' starting quarterback, Frazier had 7,752 career passing yards along with 106 touchdowns and only 19 interceptions. He also led Bluffton to three consecutive appearances in the state semifinals and region titles in 2010 and 2011.
Frazier's best statistical season came in 2011, when he directed an offense that set a state record for scoring. He had 3,577 yards and 56 touchdowns for a team that lost to South Pointe in the SCHSL Class AAA championship game.
Bluffton advanced to the semifinals last season, its first in Class AAAA, where it fell at Northwestern.


text:
Split Rock Springs Ranch is nestled in the Northern Sonoma County Mayacamas mountain range overlooking the famed Alexander Valley, home to more than 40 of California's most distinctive wineries, world class lodging and award winning cuisine. In 2011 Pine Mountain Cloverdale Peak Appellation was designated and proudly produces extraordinarily distinctive grapes for some of the finest wineries in the region including Benziger, Francis Ford Coppola and Kendall Jackson.
In recent years the region has become well known for its exceptional Olive Oil production. We are quite proud to be a part of this wonderful movement.
In 2005 we began construction and development of the Split Rock Springs Ranch bungalows, gardens and olive groves. With more than 1,500 trees of Italian and Spanish varietals (Leccino, Pendolino, Frantoio, Arbequino among others) we produce fruit exclusively for oil production. Utilizing only organic farming practices we have been certified organic by California Certified Organic Farmers organization (CCOF).
Thanks for visiting. We hope you'll enjoy this photo tour of the ranch.
All our best,
Glen and Gerry


text:
Category Archives: Non-Profit-Sector
Business Tips for those in the Non-Profit Sector
The Magic of the Magnet: Refrigerator Advertising
As a business owner, you are always trying to promote and brand your business. In order to develop your brand's image, your main focus should be keeping your name, and or logo front and center all of the time, and see it so often that it practically blends into their every day scenery. Refrigerator Magnets […]
Post Tagged with fridge magnets, Magnets, reminders, service callRead More


text:
Well, today will officially be my first day back to work after maternity leave. I will miss my little man greatly today. I wanted to share a thank you card that I put together for my baby shower gifts. I made two versions of this card, a green and a blue, but I used up all the cards before I realized that I hadn't taken a picture for my blog!! This is all I had left.
I started by using Stampin Up Certainly Celery and Bashful Blue card stock which are both now retired. :( I then embossed each with the Stampin Up Cloud embossing folder which you can currently get on the clearance rack on Stampin Up!'s website.
I then cut the baby on page 43 from the Cricut Baby Steps cartridge. I did not cut out the face. I used Peachy Keen Stamps baby faces for the face of the baby. I also colored in the eyes with a white gel pen. I added a little pink chalk to the cheeks too that you can't see in the photo because I took a picture with my iphone and I'm not realizing they aren't that great! I embossed the baby's outfit with the swiss dots folder. The sentiment is a retired SU! set punched with the word window and modern label punches.
I made almost 50 of these and I used all but this one! Hopefully my day will go well and I'll be home before I know it! Thanks for looking!


text:
American Violet Movie Review
In American Violet, Nicole Beharie makes a strong debut as Dee Roberts, an African-American single mother of four who finds her life turned upside down when she is falsely arrested for selling crack cocaine. After the chief D.A. offers her a plea deal in exchange for no jail time - versus a long, expensive court battle in which she could face years in prison away from her children, she becomes aware of a plot that involves racism and manipulation of the U.S. legal system.
Based on a true story, American Violet is essentially a direct-to-DVD release, having earned just over half a million dollars during its theatrical run earlier in 2009. Most movies go straight to DVD for a reason, but every once in a while one slips through the cracks. American Violet is one of those films. Why Samuel Goldwyn chose to sit on this one is anyone's guess.
Beharie is excellent in the lead, delivering an emotional, heartfelt performance. She's supported by a very good and more experienced supporting cast that includes Will Patton, Alfre Woodard, Michael O'Keefe and Tim Blake Nelson. O'Keefe does a particularly good job playing the film's villain.
The movie works on account of its story, which tackles the issue of racism in the legal system. The plot drives the film more so than anything else, and this works both for and against it. American Violet is succinct and to-the-point; it moves along at a fast clip, presenting the plot points, turns and developments in an engaging and entertaining way. And yet, when you compare it to the great legal films of the last several decades, it feels small and insignificant, not because of what it's about but because of what it's missing. The characters are good but not particularly developed; what drives them and keeps them up at night is never explored. How Dee is affected by her circumstances are shown but never felt. American Violet is an engaging film, but not a gripping one. It lacks the emotional drama necessary to take it to the next level.
Nonetheless, the movie's still worth seeing; it just isn't award caliber. American Violet is remarkable for the story it presents and the actress it introduces - Nicole Beharie. Recommended.
Review by Erik Samdahl unless otherwise indicated.


text:
String Manipulation
What can we do with strings? More importantly, what can't we do with strings? These are two extremely important questions that anyone who wants to be a good C# programmer should know the answers to.
This tutorial will cover the techniques for basic string manipulation, as well as some of the more important "gotchas" that go along with working with strings.
Why is this important to learn about?
Strings are probably the most common representation of data, if you stop and think about it. Of all the programs you've written or worked with, how much of the data it dealt with was in a text format? That's why strings are so important: they are a computer's representation of text. Learning how to properly manipulate text will greatly benefit all your future work.
Definitions of terms used.
string: "In computer programming, a string is traditionally a sequence of characters, either as a literal constant or as some kind of variable. The latter may allow its elements to be mutated and/or the length changed, or it may be fixed (after creation). A string is generally understood as a data type and is often implemented as an array of bytes (or words) that stores a sequence of elements, typically characters, using some character encoding. A string may also denote more general arrays or other sequence (or list) data types and structures."
Concatenation: "...string concatenation is the operation of joining two character strings end-to-end"
- All examples were created using Visual Studio 2012, targetting the .NET Framework 4.5. We'll do our best to point out anything that might not work in older versions.
- The definition mentions two kinds of string: a literal constant and a variable. A previous tutorial on built-in types covers the difference between literals and variables, and gives examples of string literals. If you are still confused on this concept, please leave a comment and we will cover it more deeply. From this point on, the tutorial will assume you understand how to use variables and string literals.
String Manipulation
So, on to the tutorial. We'll start by listing a few useful operations. Then we'll list methods and discussing their use, in order of what we feel most used/useful. For a full reference of the String type that includes all methods, follow this link: http://msdn.microsof...ng_methods.aspx
Basic Strings
Strings are all of type System.String. You might have noticed that many online resources use the lower-case string rather than the capital String. Don't worry about the difference. C# uses some keywords as aliases for built-in types. So you can use them interchangeably (just like int and Int32), though I'd suggest picking one and sticking with it.
Strings are delimited by the double-quote mark, whereas characters are delimited by single-quotes. Important note: if you're ever writing code in something like a word processor, or you've copied code from certain web sites, you might run into serious issues. Word processors and some sites automatically replace straight quotes ( ' , " ) with curved quotes ( ' ' , " " ). The C# compiler doesn't honor those as string or char delimieters, so make sure to avoid them or replace them with the correct characters.
Chars and strings are not interchangeable. Strings are, at their very core, an array of chars. So, individual pieces of strings can be represented as chars, and any char can be made into a string (basically an array with one element), but not all strings can fit into a char.
You can access any character in a string by treating the string as an array. Strings have their indexer overloaded, so you can directly access each character from the string itself. Here are a few examples showing how to access individual characters of a string:
string stringExample = "hello"; char third = stringExample[2]; for (int i = 0; i < stringExample.Length; i++) { Console.WriteLine(stringExample[i]); } foreach (char c in "test") { Console.WriteLine(c); }
Strings can be declared as literals, references to other strings, or by calling the string constructor with a character array. Examples:
string s1 = "hello"; //using a char array char[] chars = {'w', 'o', 'r', 'l', 'd'}; string s2 = new string(chars); //using a char array without storing it separately string s3 = new string(new[] {'F','o','o'}); string s4 = s1;
Strings can be concatenated (joined) by using the + operator. When you concatenate two strings, you end up with a third, completely new string. Example:
string s1 = "this is"; string s2 = "a test"; string combined = s1 + " " + s2; //combined now contains "this is a test"
You can also use the += operator to concatenate a string with another string and store it in the first variable:
string s1 = "this is"; s1 += " a test"; //s1 now contains "this is a test"
note: see section on string immutability
String Equality
If you've used Java before, you're probably used to seeing things like string1.Equals(string2). They do that because Java did not overload String's equality operator. Because of this, it inherited its default behavior, which is to determine if two reference types are pointing to the same reference.
In .NET, Object uses the same behavior. However, the C# developers overloaded the == and != operators to actually compare string contents rather than string references.
The upshot of this is that you can compare strings the same way you compare most other types, using the == and != operators. To achieve the Java behavior, you can cast your strings to objects, or use Object.ReferenceEquals:
string s1 = "test"; string s2 = new StringBuilder("te").Append("st").ToString(); Console.WriteLine(s1 == s2); //true Console.WriteLine((object)s1 == (object)s2); //false Console.WriteLine(Object.ReferenceEquals(s1, s2));//false
note: for more information, see the StringBuilder section. For more information as to why that is necessary for this example, see the String Interning section.
Common String Methods
So, we've covered the basics of strings. What they are, how to create them, how to join them, etc...Now let's delve into some of the more advanced topics, like using the methods that string exposes.
Splitting strings is probably one of the most common questions we've seen on this forum. Which makes sense, really. It's easy to load text in big chunks, like lines of a file, or the entire file itself. But sometimes you need to operate on individual parts of a string. For that, we use the Split method defined on string.
String.Split can split strings around either single chars, or by other strings. The benefit of using another string is that you can split against a sequence of characters. The downside is that there are no overloads that let you give just a string, or a list of strings. If you need to split a string around a substring, you must pass a string array and a StringSplitOptions value (None or RemoveEmptyEntries). This is less complicated than it sounds, as you can see in the examples provided.
When you split a string, you get an array of strings back. We call the pieces of the original string "tokens".
string test1 = "this.is.a.test"; string test2 = "another, test! really."; string test3 = "split around || double pipes"; //using a single char string[] tokens1 = test1.Split('.'); //using many chars string[] tokens2 = test2.Split(',', ' ', '!'); //using many chars with StringSplitOptions string[] tokens3 = test2.Split(new[] {',', ' ', '!'}, StringSplitOptions.None); //using strings and StringSplitOptions //note, there is no method that splits around a single string //also, all overloads that use strings as splitters require a StringSplitOption string[] tokens4 = test3.Split(new[] { "||" }, StringSplitOptions.RemoveEmptyEntries);
Reader exercise: write loops that will print the value of each element. This will help you learn how each overload behaves, as well as the difference between the StringSplitOptions.
Not technically a string method, but one that operates on a collection of strings to return a single string. What we like to think of as the logical opposite of splitting a string. To fully understand the example, you need to understand Lambdas, and possibly LINQ, but we still think it's an important tool to know.
Aggregate is not defined on String, nor is it defined on on Array. It's an extension method defined in the System.Linq namespace, and operates on IEnumerable<T>. However, for this tutorial, we'll limit it to just strings.
What the Aggregate method lets you do is basically stitch together an array (or other collection) of strings. You provide a function that tells the Aggregate method how to combine the individual elements. We usually provide this method in the form of a Lambda expression. Here's an example:
string test = "this is a test"; string[] tokens = test.Split(' '); //we're going back to where we started! string test2 = tokens.Aggregate((aggregate, current) => aggregate + " " + current);
Without going too deeply into what's happening, we've told the code to take all the strings in the array, and join them with spaces in between. Behind the scenes, the code loops through the array, and performs the operation you specified on each element. The aggregate parameter is the result of each previous operation, and the current parameter represents the current string in the loop. The result of the operation is stored in the aggregate variable and passed back in again on the next round of the loop.
Sometimes, you need to get part of a string, but you do not have an easy pivot to split against. That's no big deal, you can always grab any part of a string if you know where to start (and optionally, how big of a part you want). A piece of a string is called a substring. Very simple:
string test = "this is a test"; string sub1 = test.Substring(5); //"is a test" string sub2 = test.Substring(5, 2); //"is"
Format is probably one of the most important string methods for you to learn, if not the most important. Format lets you take a "format string" and some arguments, and it will replace the format items in the format string with a formatted representation of each argument in the correct position. Sounds way more complicated than it is. Basic example:
int one = 1; string test = string.Format("The number {0}", one); //test now contains "The number 1"
Format items are represented by a number surrounded by curly brackets ( "{0}" ). You can include multiple format items in your format string:
DateTime date = DateTime.Today; int number = 5; string hi = "Hello!"; string formatString = "{0}{3}Today is the {1}th day of the month. {2}{3}See?"; string result = string.Format(formatString, hi, number, date, Environment.NewLine);
Notice how each format item has a number. Each number corresponds to one of the parameters that follows the format string, starting from zero. Notice how we've used the format items out of order, and some more than once.
We could (and indeed likely will) write an entire tutorial on formatting strings. It's extremely flexible, and you can create your own custom formatters to further extend its capabilities.
Also note that Console.WriteLine has overloads that match string.Format's overloads. This is because under the covers, Console.WriteLine will call string.Format, so you can just use Console.WriteLine if you're only outputting to the Console:
Console.WriteLine("This is {0}!", "awesome");
Last note: String.Format is a static method. It cannot be called from a string itself, but only from the string class.
Further reading:
Sometimes, you need to find where in a string a particular character (or sequence of characters) occur(s). To do this, we use the IndexOf method:
string test = "test"; int index1 = test.IndexOf("e"); //1 int index2 = test.IndexOf("st"); //2 int index3 = test.IndexOf("somethignelse");//-1
Pretty self explanatory. If the search value is not found, it will return -1. Otherwise, it will return the index of the first instance it finds. If you search for a string, it will return the index of the first character of the first occurrence.
One particularly useful use for IndexOf is when you need to get a substring, but you don't know exactly what index you need to start at. Use IndexOf to find the first match, then use that index for the start parameter of Substring.
Often, we need to take a string, swap out some of its characters, and replace them with something else. To do this, we use the Replace method. Replace can take either a char or a string, and replace all instances of it with another char or string (respectively). Also note that you can (and really should) use Replace to remove characters from a string, by replacing with String.Empty (which is a static representation of an empty string). Don't confuse this with the Remove method, which removes by index rather than character. If you need to remove all instances of a particular string or character in another string, use Replace rather than Remove.
string bad1 = "s0mething"; string bad2 = "[email protected]#d"; string bad3 = "is. happening."; string fixed1 = bad1.Replace('0', 'o'); string fixed2 = bad2.Replace("@#", "a"); string fixed3 = bad3.Replace(".", String.Empty);
Other usefull string methods
I won't go into each of these as deep.
You can clip whitespace (or specific characters) from the ends of strings using Trim. If you only want to trim one side, use TrimStart and TrimEnd:
string bad1 = " this is a string "; string bad2 = "abthis is a stringab"; string bad3 = " this is a string"; string bad4 = "this is a string "; string fixed1 = bad1.Trim(); string fixed2 = bad2.Trim('a', 'b'); string fixed3 = bad3.TrimStart(); string fixed4 = bad4.TrimEnd(); //all fixed strings contain "this is a string"
Converting a string to all upper-case or all lower-case is a simple matter:
string up = "abcde".ToUpper(); string down = "ABCDE".ToLower();
Please use this responsibly. People love to think that they can do a case-insensitive comparison with .ToLower or .ToUpper, but there are better tools for the job.
We mentioned earlier that you don't have to use the Equals method to compare strings. However, you don't always want to compare apples to apples. Sometimes, we want to compare strings regardless of case, or even culture. There is an overload on String.Equals that allows you to do these comparisons. Read up here:
Checking Null and Empty
There's a static method on the string class called String.IsNullOrEmpty. This returns true if a string equals either null or a completely empty string. Frequently useful. In .NET 4.0, another method was added, String.IsNullOrWhiteSpace. This behaves similarly to the previous method, but will also return true if the string is nothing but whitespace. In effect, it's the equivalent of this code: String.IsNullOrEmpty(str) || str.Trim().Length == 0, though the MSDN claims IsNullOrWhiteSpace performs better.
Escape Sequences
We know that there are some characters that cannot be represented by text, but they do exist. We call these Non-Printable Characters. Some of these are more useful than others, like newline characters, but how do we use them?
In C# and many other C-like languages, we can represent certain characters with "Escape Sequences", which are a backslash ( \ ) followed by a sequence of characters. For example, to enter a "tab" character into a string, you use '\t'. \r matches the carriage return (CR) whereas \n matches the line-feed character (LF). Since Windows likes to use CRLF line endings, we can represent that with "\r\n". On UNIX systems, newlines are just line feeds ("\n").
Another notable escape sequence is the Unicode escape, which follows the general pattern of '\uXXXX', where XXXX is the hex code of the character in the unicode tables. For example, set a string to "\u263A" and print it to the console. See what comes out ?
Lastly, how do we represent characters that strings themselves use? How can we make a string with a backslash, or with a quotation mark? Simple, the escape sequence for a backslash is '\\' (two backslashes). If you set a string to "\\" then print it, you will see that only one backslash is printed. The escape sequence for quote marks is '\"'. Set a string to "\"", and you'll see that it contains one quote mark.
Verbatim Strings
Sometimes, the last thing we want is to escape a string. For example, a file path. We know that windows uses backslashes for file paths, so naturally a path might be "C:\Test.txt". Unfortunately, that will probably report a file not found error, because there is no file that starts with the tab character! So, we either make our file paths like this: "C:\\test.txt", or we use Verbatim Strings. Verbatim strings do not honor escape sequences, and can span line breaks (which normal strings cannot).
To create a verbatim string, simply prefix a normal string with an at symbol ( @ ) :
string path = @"c:\test.txt";
Note that the at symbol is outside of the quote marks.
There is one problem: if you can't use escape sequences, how can you embed a quotation mark in a verbatim string? Use two:
string s = @"this is a ""test"""; Console.WriteLine(s); //output: this is a "test"
Gotchas and other things you may not know about strings
By this point in the tutorial, you may have noticed something: all the string methods seem to return a value, rather than changing the string in place. That's because strings in C# are immutable, which means that once a string is created, it cannot be modified in any way. This throws lots of people off, because they don't really understand what that means. Here's a common question: "If strings are immutable, why can I do this?"
string example = "test"; example = "test2";
"That's mutating a string!" Actually, it isn't. Remember that strings are reference types. So what you're actually changing there is a memory address, not a string. You've said that the variable example now points to "test2" (which will be somewhere in the intern pool, read the next section for more info), but the old "test1" string didn't change. It just doesn't have anyone pointing at it anymore.
There are several justifications for this behavior, such as thread safety, but like it or not, you have to get used to it. There's officially no way to modify strings in-place. The implications of this, as previously mentioned, are that all the string methods return a new string (or a reference to a string in the intern pool, again, see next section) rather than operating directly on the string in question.
Further reading: http://en.wikipedia....tring_interning , http://msdn.microsof...ing.intern.aspx
In C# (and many other languages, Java included), string literals are pooled to reduce memory overhead. This has some benefits and downsides, and you could go your entire programming career and never run into any of them. For most programmers, this is just something that happens behind the scenes and keeps your application's memory footprint smaller than it would be. For some extremely performance/memory intensive applications, you might need to understand string interning and how it works.
The simple explanation is that if I re-use the same string literal, I'm not creating a new string. I'm re-using the same string from the last time I used it. There are gotchas here too, because interning doesn't always behave exactly like you might expect. Consider the following example:
string s1 = "test"; string s2 = "test"; string s3 = "te" + "st"; string s4 = new StringBuilder("te").Append("st").ToString(); string p1 = "te"; String p2 = "st"; string s5 = p1 + p2; Console.WriteLine(ReferenceEquals(s1, s2)); //true Console.WriteLine(ReferenceEquals(s1, s3)); //true Console.WriteLine(ReferenceEquals(s1, s4)); //false Console.WriteLine(ReferenceEquals(s1, s5)); //false
s3 is one you might expect not to match s1, because it is composed from two other literals. However, If you check the IL, you'll notice that the compiler has optimized away the concatenation:
IL_0001: ldstr "test" IL_0006: stloc.0 IL_0007: ldstr "test" IL_000c: stloc.1 IL_000d: ldstr "test" IL_0012: stloc.2
For those of you that don't read IL, just notice how there are three ldstr "test" instructions instead of two. Then, when the runtime gets instructions to load three strings onto the stack, it will push the same memory location three times.
As we said, it's entirely possible to go through a business programming career without ever understanding this concept. Not advisable, but you rarely are required to know this. Side note: string interning is possible because of string immutability. This is also why it is necessary; if you can never change strings, you might end up with a big pile of them, so might as well re-use them for efficiency.
String Building, and StringBuilder
You may have noticed two things at this point: 1) We've used a class called StringBulder in my examples a few times, but haven't explained it, and 2) if strings are immutable, what do you do if you really need a mutable string?
Use a StringBuilder, of course. But what is it, and why would we use one? A StringBuilder represents a mutable string of characters. Sounds simple enough. You can almost think about it like a List<char> compared to a char[]. It's not, but it the comparison is useful. You can add characters to a string builder, delete them, insert them at specific indexes; all the things you can't do to a string.
When to use it and why? I'll let Microsoft do the explaining. From the last link:
Consider using the String class under these conditions:
Consider using the StringBuilder class under these conditions:
- When the number of changes that your app will make to a string is small. In these cases, StringBuilder might offer negligible or no performance improvement over String.
- When you are performing a fixed number of concatenation operations, particularly with string literals. In this case, the compiler might combine the concatenation operations into a single operation.
- When you have to perform extensive search operations while you are building your string. The StringBuilder class lacks search methods such as IndexOf or StartsWith. You'll have to convert the StringBuilder object to a String for these operations, and this can negate the performance benefit from using StringBuilder. For more information, see the Searching the text in a StringBuilder object section.
Consider using the StringBuilder class under these conditions:
- When you expect your app to make an unknown number of changes to a string at design time (for example, when you are using a loop to concatenate a random number of strings that contain user input).
- When you expect your app to make a significant number of changes to a string.
Different people have tested the performance implications and come up with different results, so its hard to give an actual value to "extensive" or "significant number of". Experiment with it, you'll understand when its appropriate.
As to why we've used StringBuilder in the interning examples, that's because we needed an example where the compiler wouldn't optimize our "bad" code into good code. Since the compiler optimizes "te" + "st" to "test", we used a StringBuilder to concatenate the strings together.
In Conclusion
Strings are deeply important to .NET programming. We haven't covered all string methods, just the more common ones. More may be edited into this tutorial as needs be. Please leave any questions you have in the comment section.
See all the C# Learning Series tutorials here!
More reading:
MSDN String Programming Guide


text:
Man, John…could you be more John? Way to seize upon the first regular-season game in five years to make the BCS look like a good idea and promote the hell out of your "let's-take-it-to-absurdist-realms-and-then-see-how-you-like-it" point that the BCS is good because it's different.* Once again, people dislike the BCS not because it's different, but because it's unfair. You've admitted this yourself.
*Methinks The Human Centipede made the same case on its own behalf.
Your pro-BCS screeds have taken on a pattern by now: you take a poorly conceived article from a member of the mainstream media, point out its flaws, conflate his vantage point with mine, and wonder if anyone writing such nonsense gets sports at all. You're fortunate that 14 seasons of the BCS have provided you with plenty of chances to squash such low-hanging fruit; sportswriters are running out of ways to say the same thing each autumn. Last year, it was Dan Wetzel's incorrect interpretation of college football rankings; this year, it's Dan Wolken's perplexing insistence that the hype surrounding LSU-Alabama is bad for the sport (since when is hype bad for a sport? Isn't it about time Jay Caspian King wrote an article for Grantland saying the NFL should annex the SEC West since it lacks star teams?). Maybe next time attack a sportswriter not named Dan.


text:
In addition to the Year-round Birds, there are some species (the Winter Visitors) that are only seen here during the winter months. These together make up the normal list of species that one can expect to see in Calgary during the winter months.
In addition, some individual birds from species that are not normally here in the winter sometimes try to overwinter here.
Gus Yaki has written the following informative article on some winter birds that are worth looking for.
Some of the birds that are present within the city in the first quarter, January-March, are ones that normally shouldn't be here at all, at this time of the year. Most disappear after the first major cold spell. This could include one or more warbler species that normally don't reappear again until May in the second quarter, if at all.
If a Snowy Owl (or any owl other than a Great Horned) is reported, try to see it immediately. In the arctic, Snowy Owls are most dependent upon lemmings, whose populations collapse, on average, every four years. Lemming numbers did collapse in 2009; so many Snowy Owls came south. However, there is always a high mortality when they do this. The remaining owls went back to the tundra, but because the lemming numbers were still low, the surviving owls, which have returned this year in the "Shadow Flight", are now further reduced in numbers.
Some of the other possible species that may not stay around and may not be seen again until the second or later quarters, should be pursued as soon as possible. This includes Greater White-fronted Goose, Snow Goose, Redhead, Ring-necked Duck, Greater Scaup and Red-breasted Merganser. If any loon is sighted, try to see it right away too, before it moves on. If a Gyrfalcon, Peregrine Falcon or Prairie Falcon is reported in the city, again spy it as soon as possible. Most gulls have left by January, but a Glaucous Gull may visit us. Again, it would be wise to search for it – as none may turn up again during the rest of the year.
American Three-toed and Black-backed Woodpecker appear in Calgary in some winters. If one is reported, get out to see it while it is here. Gray Jays used to be regular winter residents, but in recent years are seldom seen, perhaps due to global warming. If one is reported, perhaps at Shannon Terrace in Fish Creek Prov. Park, it would be worthwhile trying to see it. Similarly, Boreal Chickadees, also in the Shannon Terrace area, are becoming scarce and are worth pursuing. Another bird worth looking for is the American Dipper, from the fast-flowing streams in the mountains. When those waters freeze, some dippers move down to our elevation. Snow Buntings and Horned Larks are also worth looking for in the city, when reported. Evening Grosbeaks have become very scarce, but were reported several times in 2009. If they are again sighted, try to find them before they move on, too.
Good birding!
Gus Yaki, 403-243-22482 Comments