text:
You stated that there are almost 6,000 Greek NT manuscript (around 5778 copies). Among them are 400,000 variants of differences, while there are only 139,000 words in the NT. However, Prof. Bruce Metzger wrote that the NT is 95% reliable when compared to the original manuscript of the New Testament.
Prof. Bruce Metzger was one of the 20th century’s the greatest textual critics of the New Testament manuscripts. However, if you do not read Prof. Bruce Metzger’s work for yourself, you will not fully grasp the meaning or full force of his conclusions.
We now have discovered nearly 6,000 Greek manuscripts of the New Testament (NT). We don’t know how many mistakes there are among our surviving copies, but they appear to number somewhere about 400,000. I will put this in comparative terms: there are far more differences in the NT manuscripts than there are words in the New Testament.
Bear in mind that well over 90% of these errors are the result of sloppy slipups, and are insignificant. They show us nothing more than ancient scribes could spell no better than most people can today. Textual critics, however, contend that they can reconstruct more than 90% of these mistakes. This may be the case. We can never say that we can know that this would be matched to the ORIGINAL books of the NT, because NOBODY has the originals. They are lost!
The kinds of errors we tend to discover are the sleepy mistakes of the scribes. The later manuscripts, of the Middle Ages are much more plentiful and uniform because they were copied by trained, professional scribes. The earliest manuscripts have the most errors.
The most important thing to keep in mind is that 90% of the contradictions in the NT manuscripts are not important. In other words, 360,000 errors in the manuscripts in the NT are unimportant. However, 40,000 errors are significant. Even if we reduce this number by 50%, we are left with 20,000 mistakes that are very important! 20,000 mistakes that are very critical and have significant theological implications!
Keep in mind that there are only 139,000 words in the whole NT. Would God permit such a thing to be done to the New Testament if this was His holy book that God wished to preserve for all future generations? Why didn’t God protect the integrity of the NT if it is in fact a holy and an eternal book? You might ask, how could God preserve the text? As it turns out, God did exactly that with the Torah, which is much bigger and older than the NT. The whole Torah is the same! All 304,805 letters preserved by God!
1) Is the doctrine of the Trinity found in 1 John 5:7-8? It depends on which manuscript you read.
2) Did Jesus appear to any of his followers after the resurrection in the book of Mark? It depends on which manuscript you read. None of the earliest manuscripts have any appearances. The last 12 verses of the book of Mark (16:9-20) were inserted by later scribes who were disappointed that the apostles didn’t encounter Jesus following his resurrection according to this account.
4) In the Book of Luke, did Jesus say to God that the Jews should be forgiven? Did Jesus request, “Father, forgive them for they know not what they do” (Luke 23:34)? It depends on which manuscript you read. Early Christians interpreted this as a prayer of forgiveness for the Jews, ignorant of what they had done. No wonder some scribes deliberately deleted the verse in the second and third centuries, when many Christians believed that Jews knew exactly what they were doing and that God had in no way had forgiven them.
5) Did Jesus have an encounter with an adulterous woman and her accusers in which he told them, “Let the one without sin among you be the first to cast a stone at her,” and in which he told her, after all her accusers had left, “Neither do I condemn you. Go and sin no more”? It depends on which manuscripts of John you read in chapter 7-8! The oldest manuscripts don’t have it. It was added later.
6) Did Luke understand that Jesus’ death was an atonement for sin? It depends on what you do with Luke 22:19– 20. Everywhere else in Luke and Acts, the author eliminated Mark’s references to Jesus’ death as an atonement. The only remnant of that teaching is in some manuscripts of the Lord’s Supper, where Jesus says that the bread is his body to be broken “for you” and the cup is his blood poured out “for you.” But in the earliest and best manuscripts, these words are missing (much of v. 19 and all of v. 20). Scribes have added them to make Luke’s view of Jesus’ death conform to Mark’s and Matthew’s. In other words, Luke disagreed with Mark and Matthew on one of the most important theological claims of the other gospels and Paul.
This variant questions whether Luke (whoever he was) believed that Jesus dies as a sacrifice for sin. It is not that Luke didn’t think that Jesus’ death was important. But he believed that if you think about Jesus’ death, you will repent. Thus, according to Luke, it is the repentance, NOT the sacrificial death of Jesus that atoned for sin. Meaning, without that later scribe addition, the author of Luke and Acts did not believe that Jesus died as an atoning sacrifice for your sins! Anyone would say that these variances are terrifically important for knowing what traditions about Jesus were in circulation among the early Christians.
7) After his resurrection, did Jesus tell his disciples that those who came to believe in him would be able to handle snakes and drink deadly poison without being harmed? It depends on which manuscripts of Mark you read.
8) Paul’s injunction to women to be “silent” in the churches and “subordinate” to their husbands was not originally part of 1 Corinthians 14:34– 35, but was added by later scribes intent on keeping women in their place. Is that significant error or not?
No Christian scholar would disagree with what I wrote; and you will find these errors noted in many scholarly annotated Christian Bibles, especially those edited by Prof. Bruce Metzger!
I listed for you only a tiny number of errors and variances in the New Testament so that you can see for yourself that the consequences for many of the errors in the manuscripts are monumental. If time would permit, I could record hundreds of NT variations that are significant, but I only wanted to give you a taste of the significant error in thinking that the NT is the “word of God” or there is 90-95% agreement. That 5-10% of errors in the NT makes all the difference in the world! Is God the author of mischief and lies?
Just a brief comment, how much I am learning and enjoying your Outreach on Israel National Radio and youtube and Facebook.
It appears that the uninspired New Testament is from human hand and your research confirms this. — I have some of your material, DVDS, the former single volume “Let’s Get Biblical” etc., which along with learning sessions resulted in leaving Christendom Cults and Churches and retun to my Jewish roots, which by the way I knew virtually nothing. So I thank HaShem first of all and others HaShem used. Amen!
Good for you brother… Thanks to our lovely rabbi Tovia Singer.
Whoa, I didn’t know that such trivial mistakes could help create profusion of denominations all across the world which never cease lambasting each other. Thanks for this article. I guess, bravo Gutenberg!
All lessons from rav Singer opened my eyes that we jews need only our hebrew /aramaic holy books and not the misguiding greece new testament. I dropped all teachings from the church and went back to the synagoge.
I greatly respect Rabbi Singer for much of his scholarship, and have even used some of it on my own site. However, Mr. Singer’s handling of NT textual criticism, and of textual criticism in general, is inconsistent and misrepresents the facts.
A perfect example is how he treats Mark 16. Singer says in the article, “None of the earliest manuscripts have” verses 9-20 and that they “were inserted by later scribes who were disappointed” (see example 2 in his article).
These statements are incredibly misleading, if not outright deceptive. When Singer says “None of the earliest manuscripts”, he means a grand total of four manuscripts: Sinaiticus, Vaticanus, Bobiensis, and Sinatic Syriac. These are the four major manuscripts that leave out Mark 16:9-20.
He does not say that somewhere around 1200 manuscripts in Greek, plus scores of manuscripts in Latin, Boharic, Fayyumic, Syriac, Armenian, Ethiopic, and Georgian, have Mark 16:9-20 with no problems what so ever. And many of these manuscripts are just as old, *or markedly older*, than the ones that leave the verses out. Irenaeus and Justin quote from Mark 16 during the *second century*; Sinaiticus, Vaticanus, and Bobiensis weren’t copied until about 140 years later. Four manuscripts verses 1200? Give me a break.
Things get even worse when he says that we can never know what the NT originally said because we don’t have the original manuscripts. I point out that there are textual differences in the Old Testament too, and we don’t have any original manuscripts for them either. We don’t trust a text because it is free from variation; because NO ancient text is free from variation. We trust a text because it is consistent through its transmissional history; and the OT, as well as the NT, is consistent in this fashion.
I confess that I didn’t think anyone—conservative Christians included—would be surprised to encounter someone who held that the last 12 passages of the Book of Mark to be a later addition to the oldest gospel. My judgement on this matter reflects the consensus opinion of New Testament scholars today. In fact, the vast majority of annotated New Testaments note that Mark’s ending may be of spurious origin. Don’t tell that to the Appalachian snake handlers who base their dangerous practice on what they believe is an authentic ending of the book of Mark.
New Testament scholars widely believe that that later Christians found the original ending of Mark so deficient that the last 12 passages (16:9-20) were added in some manuscripts to improve the gospel’s epilogue. In other words, while you can disagree with this assessment, it would be mighty difficult to impugn the character of those who disagree with you.
The evidence here is overwhelming: Mark 16:9-20 does not exist in our earliest and most dependable Greek manuscripts. Our oldest fragment of the book of Mark dates to about 220 CE, and our earliest complete copy dates to the fourth century—three centuries after the book of Mark was written!
This section is a later addition; the original ending of Mark appears to have been lost. The best and oldest manuscripts of Mark end with ch. 16:8. Two endings were added very early. The shorter reads: “But they reported briefly to those with Peter all that had been commanded them. And afterward Jesus himself sent out through them from the East even to the West the sacred and incorruptible message of eternal salvation.” The longer addition appears in English Bibles; its origin is uncertain; a medieval source ascribes it to an elder Ariston (Aristion), perhaps the man whom Papias (c. A.D. 135) calls a disciple of the Lord. It is drawn for the most part from Luke, chapter 24, and from John, chapter 20; there is a possibility that verse 15 may come from Matthew 28:18-20. It is believed that the original ending must have contained an account of the risen Christ’s meeting with the disciples in Galilee (chs. 14:28; 16:7).
Not surprisingly, the expanded ending of Mark was popular with Christians. The same was the case with the 12 verses in the book of John that tell the story of the adulterous woman (7:53-8:11). Christians love that story. These passages are also well-known to be a fabrication. As a result of their popularity, however, Christian scribes copied these and other forgeries into the manuscripts.
We have in our hands today nearly 6,000 Greek manuscripts of the New Testament. The vast majority of them were penned after the 6th century. Few are from the early period. Understandably, Christian scribes eventually copied the embellished and popular version of Mark and John that Christians cherished. For this reason, the vast majority of New Testament manuscripts and printed Bibles contain the fabricated 12 verses of both Mark and John.
Thank you Rabbi Singer for helping me in my spiritual journey. I have had so many questions my entire life and I believe they are finally being answered in multiple ways.


text:
Not only is Rocky an educator at the L'Oréal Professional African Salon Institute, he is also the proud owner of a hair salon in Johannesburg, specialising in both ethnic and Caucasian hair.
Rocky was nominated for the Educator of the Year award in 2017, and has worked as a stylist for a few prestigious events and TV shows, including David Tlale's The Intern, Miss Heritage South Africa, Idols SA season 10 and Miss SA 2015.
From a diffuser to a wide-tooth comb, these are our picks for the most notable necessities for natural locks.
Find out how to keep natural hair in good nick with our top tips.
Want to look incredible at the drop of a hat? No matter what head-gear you choose to wear, here are three hairstyles guaranteed to look great underneath it.
Looking for the best treatment for curly damaged hair? Here’s the low-down on how to rescue damaged curls, STAT.
Three ways to elevate the goodness of ethnic haircare.
Got no time for leave in conditioner? Fear not - you can leave it on all day, and still look chic and sleek for work!
Here’s what you need to know about pulling off this flawless look that checks all the right style boxes!
Dreaming of a wash and go hairstyle? It’s possible, and easy - just avoid these 5 air drying no-nos!
Summer means ditching your hairdryer… and besides, heat styling too often is just bad for your hair. We’ll show you how to get a heat free, stretched out look!
Wet up-dos, sky high ponytails… these are some of the hairstyles that are damaging your hair. Luckily, we have some tips to help you stop hair breakage for good.
Keep those gorgeous natural locks primed and protected against heat damage with these products!
Have you heard about the international trend of hair milk and what it can do for your curly hair?
Perfect, naturally messy hair is often anything but natural! Here’s how to pull off the highly popular laid-back look.

industry_corpus2: Others


text:
When you need affordable, complete detailing for your car or window tinting services, look no further than the pros at Vega MotorSport located in Waldorf, Maryland. Since 2006, we have dazzled customers with our outstanding workmanship & customer service. See for yourself why we have become so popular in the local area.
We bring more than 15 years of experience to our customized tinting and vehicle detailing services. You can find our shop in the heart of Waldorf Md, where we take pride in serving clients in Southern Maryland, Washington DC, and in Northern Virginia. Vega is the only Madico window film dealer in southern Maryland and we are committed to providing 100% customer satisfaction every time.
Our trained staff is equipped with professional techniques that leave a lasting impression. We understand that “time is money” so our window tinting & detailing company provides mobile services so you don’t have to compromise on your busy schedule. As an active member of IWFA® (International Window Film Association) and IDA (International Detailing Association), we separate ourselves from the rest by using the highest-quality Window Films, security systems and detailing products.
At Vega Motor Sport, we aspire to make your drive not only a private and UV-shielding one but a safe one as well. Our company sells and installs HID (high-intensity discharge) auto Headlamps, remote starter, and car alarm systems. Talk to us today and create your own package. If you wish to give the gift of motor vehicle safety and security to a loved one, ask us about our gift certificates.
To find out more about our amazing vehicle detailing and window tinting services, contact us in Waldorf, Maryland, to request your quote.

industry_corpus2: Automobiles


text:
Matt Recommends Brian Clark | Brian D. Clark P.C.
I never thought I would find myself facing a very serious charge and in need of legal representation, but you never really do think about those things until you are faced with them. I found Mr. Clark and his entire team to be not just professional and very detailed orientated but also understanding and they treated me like a person not just a case. My case was dropped by the DA, a direct result of the hard work and dedication of the team working on my behalf. I hope to never need an attorney again but if I do I would not think twice before calling the great folks here.

industry_corpus2: Law & Justice


text:
Do you need a fun game to practice multi-digit addition? This is a fun bingo game with a TWIST! The object of the game is to get 5 in a row but be careful not to lose any covered spots during the game. There are 5 different game boards which are marked with letters to help with organization.
This is perfect for groups to play or you can use it as a center after introducing it in small groups. Please check out the preview and let me know if you have questions before purchasing.

industry_corpus2: Gaming


text:
Some individuals who venture into opening a boutique can design their very own clothes as well. Though on-line purchasing has set its foot firmly within the lives of many people, there are numerous women who don’t realize that it can be enjoyable and less exhausting than going out and shopping from your local malls.
You can store at midnight if you want to. If you are in search of one thing very specific like cute gown boutiques online, you may get your shopping accomplished in a few minutes with the wide selection of choices out there.


text:
This delicious lamb curry is authentic Asian dish which is easy to make. It can be cooked with thick sauce or lightly soupy consistency. This can be eaten with boiled rice, hot chapattis, hot Nan, warm bread, bhaturas (Fried Puri’s). Baby potatoes can be also added to this dish as accompanied with vegetable. It can be accompanied by sliced red onions and cucumber salad with a dash of vinegar and salt to taste, or it tastes equally delicious with mixed salad and mango pickle (optional).
In a bowl take 2 tsp oil, add 1/2 tsp salt, green chilies, ginger garlic paste, turmeric powder, Add the lamb and marinade overnight in the fridge. (This is optional to enhance the flavour to penetrate into the meat).
In a heavy saucepan heat the oil on a low to medium heat. Add the whole garam masala and add the chopped onions. Stir and cook until the onions are golden brown ( not burnt). Add the marinated lamb stir and cook until all the pieces coated and turn brown. Cook covered on a low heat till the meat releases some of its juices. Add all the ingredients leaving the garam masala and chopped coriander. After 5 minutes add the chopped tomatoes stir, cover and cook on medium heat. Add water as required to avoid the curry sticking to the bottom.
After 20 minutes check if the meat is tender and comes away from the bone. Add the garam masala powder and chopped coriander. Serve Hot with Hot Nan, Chapattis, Warm French bread or boiled rice.
This delicious lamb curry is authentic Asian dish which is easy to make. It can be cooked with thick sauce or lightly soupy consistency. This can be eaten with boiled rice, hot chapattis, hot Nan, warm bread, bhaturas (Fried Puri’s). It can be accompanied by sliced red onions and cucumber salad with a dash of vinegar and salt to taste, or it tastes equally delicious with mixed salad and mango pickle (optional).

industry_corpus2: Hospitality & Catering


text:
Today is my favorite persons birthday, my grandfather. He is the voice in my head steering me right from wrong. We may not always see eye to eye on everything, but I love and respect him so much. I don't know where I would be today without him. He never ceases to amaze me. He makes me laugh and has taught me some very important life lessons. I wish nothing, but the best for him and I hope he has an amazing day today and always. Love you forever and always, Grandpa!
It is my first real day in Thailand and I am in elephant heaven. There are elephants everywhere and I am in love. As you could probably guess. Elephants are my favorite animal, but its more than that. Elephants are my spirit animal. I have a tiny elephant tattoo on my hand. Every time I look at it, I am reminded to be wild and free. They are beautiful creatures that express emotion like very few others. Everywhere we went there were elephants.
We went to several (10) Wats today. Wats are Buddhist temples. The spiritual energy at them is incredible. Wat a day it was. See what I did there? Despite the Wats being very spiritual with great energy, Brian and I had seen enough after our 8th or 9th one. However, after a bird hit Brian in the head as it flew by at our 10th Wat, we took it as a sign and find some dinner.
We ended up at a nearby restaurant. I ordered basil chicken, but it was weird and like no other basil chicken I had, had before. The taste was good. I guess authentic basil chicken is much different from Americanized basil chicken.
After dinner we went back to our house and settled in for the evening. I went to bed early, my body still needs rest and I am doing my best to listen to it.

industry_corpus2: Travel & Geography


text:
Learning to active listen and build rapport is the most important thing we can do so that the other person feels relaxed and comfortable in our company. I find that I naturally do this when I get into deep discussion and am really active listening to the other person.
Having rapport with someone is about being who you are. It is being able to meet the other person in a space that is comfortable to them, with them knowing that you are hearing them.
Really listening using a neuro-linguistic process to support us to adopt a similar tone, pitch, volume and speed of voice plus posture and body language is all important to really connect. This matching them, is very valuable.
Neuro-linguistic programming (NLP) is an approach to communication used not only in business but in life too. Learning how to connect with rapport will make and grow a relationship. This is a skill which is a significant part of our communication, which depends on the above as mentioned.. By matching someone’s tone and body language the other person feels safe, relaxed and able to be themselves.
Living in a world with constant change, is important to be authentic yourself and to treat others in the same way. We all come from different backgrounds and learnings and to be ‘real’ we need to understand that our way is not the only way.
Are you really actively listening to the other person or are you thinking your own thoughts on what they are saying?
We can do this whilst being true to who we are. This is not to seek approval but to gain rapport with the other person. It is not being manipulative but supporting the other person by really listening, learning and hearing their point of view. be it our clients, friends or family!
You may ask me what I mean by being authentic.
I define authenticity as being real and true to yourself. It is about knowing, understanding and finding your own authentic self and showing that to the world.
Being authentic is a choice. A choice to be honest, unique, and to be really real with yourself and others. Embrace who you really are.
By understanding yourself, you become more focused in directing your life. You start to know your purpose in life and most especially free yourself from stress, anxiety, and rejection.
Being authentic is all you need to succeed in business and your personal life.
If you want more from yourself and your business tomorrow than you are experiencing today, there is an opportunities for you to work with me from a coaching/mentoring perspective.
Let’s get you and your business moving in the direction you want.

industry_corpus2: Subject Education


text: We may have inacurrate auto service business data. If you are an auto service business member of Bell's Auto World in 860 N Hc Mathis Dr, Paducah, KY 42001, (270) 443-6513 and wish to list or update your business (Bell's Auto World) details, it is FREE for submitting your business (Bell's Auto World) information into our directory. Email to john ( at ) AutoServiceList.com about your request.


text:
Genre Music -- Australian, Music -- Comedy.
Danish composer, songwriter, entertainer and "comedian of the keyboard", Victor Borge made his American radio debut on the Bing Crosby show. He then created a one-man show "Comedy in Music" and made concert appearances throughout the USA and Europe, delighting audiences with his unique hybrid between stand-up and high art. Victor Borge takes the musical mickey out of the great composers in laugh-out-loud spoofs filled with his trademark double-takes and double-entendres. Invited time and again to Australian television, his Channel 9 appearances in the '80s and early '90s are legendary as he steals the show from Don Lane, Derryn Hinch and Ray Martin on both The Midday Show and A Current Affair. Interviews with Liz Hayes and footage from Sunday provide fascinating background to this showbiz legend.

industry_corpus2: Film & Entertainment


text:
This is a basic implementation of the ComboPopup interface. This class represents the ui for the popup portion of the combo box.
All event handling is handled by listener classes created with the createxxxListener() methods and internal classes. You can change the behavior of this class by overriding the createxxxListener() methods and supplying your own event listeners or subclassing from the ones supplied in this class.
As of Java 2 platform v 1.4, this class is now obsolete and is only included for backwards API compatibility.
A listener to be registered upon the combo box (not its popup menu) to handle mouse events that affect the state of the popup menu.
This listener watches for dragging and updates the current selection in the list if it is dragging over the list.
This listener watches for changes to the selection in the combo box.
As of 1.4, this class is now obsolete, doesn't do anything, and is only included for backwards API compatibility.
This listener hides the popup when the mouse is released in the list.
This listener changes the selected item as you move the mouse over the list.
As of Java 2 platform v 1.4, this class is now obsolete, doesn't do anything, and is only included for backwards API compatibility.
As of Java 2 platform v1.4 this previously undocumented field is no longer used.
This protected method is implementation specific and should be private.
Calculate the placement and size of the popup portion of the combo box based on the combo box location and the enclosing screen bounds.
Configures the list which is used to hold the combo box items in the popup.
Configures the popup portion of the combo box.
Configures the scrollable portion which holds the list within the combo box popup.
Creates an ItemListener which will be added to the combo box.
Creates the key listener that will be added to the combo box.
Creates the JList used in the popup to display the items in the combo box model.
Creates a list data listener which will be added to the ComboBoxModel.
Creates a mouse listener that watches for mouse events in the popup's list.
Creates a mouse motion listener that watches for mouse motion events in the popup's list.
Creates a list selection listener that watches for selection changes in the popup's list.
Creates a listener that will watch for mouse-press and release events on the combo box.
Creates the mouse motion listener which will be added to the combo box.
Creates a PropertyChangeListener which will be added to the combo box.
Creates the scroll pane which houses the scrollable list.
This is is a utility method that helps event handlers figure out where to send the focus when the popup is brought up.
Gets the AccessibleContext associated with this BasicComboPopup.
Retrieves the height of the popup based on the current ListCellRenderer and the maximum row count.
This method adds the necessary listeners to the JComboBox.
Installs the listeners on the combo box model.
Adds the listeners to the list control.
Overridden to unconditionally return false.
Makes the popup visible if it is hidden and makes it hidden if it is visible.
Called when the UI is uninstalling.
A utility method used by the event listeners.
This protected field is implementation specific. Do not access directly or override. Use the accessor or create methods instead.
This protected field is implementation specific. Do not access directly or override. Use the create method instead.
Called when the UI is uninstalling. Since this popup isn't in the component tree, it won't get it's uninstallUI() called. It removes the listeners that were added in addComboBoxListeners().
Creates a listener that will watch for mouse-press and release events on the combo box. Warning: When overriding this method, make sure to maintain the existing behavior.
Creates the mouse motion listener which will be added to the combo box. Warning: When overriding this method, make sure to maintain the existing behavior.
Creates the key listener that will be added to the combo box. If this method returns null then it will not be added to the combo box.
Creates a list selection listener that watches for selection changes in the popup's list. If this method returns null then it will not be added to the popup list.
Creates a list data listener which will be added to the ComboBoxModel. If this method returns null then it will not be added to the combo box model.
Creates a mouse listener that watches for mouse events in the popup's list. If this method returns null then it will not be added to the combo box.
Creates a mouse motion listener that watches for mouse motion events in the popup's list. If this method returns null then it will not be added to the combo box.
Creates a PropertyChangeListener which will be added to the combo box. If this method returns null then it will not be added to the combo box.
Creates an ItemListener which will be added to the combo box. If this method returns null then it will not be added to the combo box.
Subclasses may override this method to return instances of their own ItemEvent handlers.
Creates the JList used in the popup to display the items in the combo box model. This method is called when the UI class is created.
Configures the list which is used to hold the combo box items in the popup. This method is called when the UI class is created.
Configures the scrollable portion which holds the list within the combo box popup. This method is called when the UI class is created.
Configures the popup portion of the combo box. This method is called when the UI class is created.
Installs the listeners on the combo box model. Any listeners installed on the combo box model should be removed in uninstallComboBoxModelListeners.
This protected method is implementation specific and should be private. do not call or override.
Gets the AccessibleContext associated with this BasicComboPopup. The AccessibleContext will have its parent set to the ComboBox.
This is is a utility method that helps event handlers figure out where to send the focus when the popup is brought up. The standard implementation delegates the focus to the editor (if the combo box is editable) or to the JComboBox if it is not editable.
Calculate the placement and size of the popup portion of the combo box based on the combo box location and the enclosing screen bounds. If no transformations are required, then the returned rectangle will have the same values as the parameters.
A utility method used by the event listeners. Given a mouse event, it changes the list selection to the list item below the mouse.

industry_corpus2: Computing & Telecommunications


text:
Beginning with a 10-gallon aquarium, elementary school teacher Tom Watts began a club that would grow to impact thousands of students throughout the years.
In 1964, as the Civil Rights Act, Space Race, and Great Society brought promise of a brighter future, Tom Watts started a science club in his Kennedy Elementary School classroom to ensure his students would have the opportunity to be part of that brighter future.
The club surged to 70 members by 1967. Watts expanded the program to an abandoned house that the City of San Diego agreed to rent for one dollar. Within five years, the National Science Foundation recognized EIS as one of two programs in the U.S. and one of five in the world focusing on hands-on science for youth.
Since day one, parents, teachers, and countless others have worked to support EIS's students and mission. The Salk Institute, Rosenberg Foundation and Scripps Institute of Oceanography became EIS's first organizational partners between 1968 and 1969. Since then, supporting organizations and businesses have been integral to EIS's success.
In 2004, passionate EIS students and alumni rallied community support to raise $6 million to construct a new 15,000-square foot facility. The Jacobs Center for Neighborhood Innovation, the Kresge Foundation and other anonymous donors committed challenge grants that helped galvanize support from dozens of other local, state and national institutions.
In its five-decade history, EIS has served thousands of students, many of whom have gone on to thrive in careers in medicine, engineering, computing, and more. Last year we served a record 2,400 students. With community support, we plan to reach 10,000 students per year within the next five years.
Your support helps us carry on the EIS legacy and impact future generations of innovators and explorers.


text:
121-HIGH NOISE is a wireless Bluetooth hearing protection headset, which allows hands-free, full duplex encrypted communication with a cell phone, dongle or between two matching headsets up to 200 meters apart.
Communicating between two people in noisy environments can be difficult, sometimes impossible. Noise and poor communications can compromise safety and greatly reduce productivity. With the 121-HIGH NOISE headset you will greatly increase the operators safety and productivity through improved, reliable communications, leading to reduced downtime.


text: The Trust for Indigenous Culture and Health (TICAH) was established in Kenya in 2003. Our aim is to promote health. Our focus is on good relationships, healthy households, and community action. We seek to learn from indigenous wisdom wherever we can. We believe beauty is important, our stories matter, and health is a matter of the body, the spirit, and the heart.

industry_corpus2: Health & Medicine


text:
The contract appears to have been signed on Nov. 15, 2015, and states that AMI has exclusive rights to Sajudin's story but does not mention the details of the story itself beyond saying, "Source shall provide AMI with information regarding Donald Trump's illegitimate child..."
"Mr. Sajudin has been unable to discuss the circumstances regarding his deal with American Media Inc. and the story that he sold to them, due to a significant financial penalty," Held told CNN. "Just recently, AMI released Mr. Sajudin from the terms of his agreement and he is now able to speak about his personal experience with them, as well as his story, which is now known to be one of the 'catch and kill' pieces. Mr. Sajudin hopes the truth will come out in the very near future."
At the time, AMI called Sajudin's story "not credible" and denied any connection between the story and Trump and his then-personal attorney Michael Cohen.
The White House did not respond to CNN's requests for comments in April.
Sajudin's allegation that Trump fathered a child out of wedlock has not been independently confirmed by any of the outlets that have investigated the story.
"He's a blue-collar worker and a million dollars would have ruined him for life," Held told CNN.
"Today I awoke to learn that a confidential agreement that I had with AMI (The National Enquirer) with regard to a story about President Trump was leaked to the press. I can confirm that while working at Trump World Tower I was instructed not to criticize President Trump's former housekeeper due to a prior relationship she had with President Trump, which produced a child."
The Associated Press reported in April that Cohen "acknowledged to the AP that he had discussed Sajudin's story with the magazine when the tabloid was working on it. He said he was acting as a Trump spokesman when he did so and denied knowing anything beforehand about the Enquirer payment to the ex-doorman."

industry_corpus2: Media & Journalism


text: This week Professor Siegel and I chatted with Gavin Serkin, Emerging Markets (EM) Editor at Bloomberg News. Gavin recently wrote a book called Frontier: Exploring the Top Ten Emerging Markets of Tomorrow. The book contains an excellent narrative of Gavin’s trips and is well worth reading for anyone exploring investments in the region. We also spoke to Worth Wray, Chief Strategist at Mauldin Economics, whose current focus is also on EM and the implications of a stronger U.S. dollar. The Future Emerging Markets Gavin polled top-ranking money managers for their hit lists of countries for investments over the next five to ten years, and then he asked if he could travel to those countries with them. He ended up creating a list of top 10 countries whose dynamics today may suggest potential for sustained growth in the future. The top four countries on his list—based on opportunities for long-term allocations—are Nigeria, Vietnam, Argentina and Saudi Arabia. Optimism for Nigeria, Gavin’s top-ranked country, stems primarily from the potential for a rise in its consumer base due to its healthy demographics. According to the United Nations, Nigeria has the potential to become the third most populous country in the world by 20501 and also boasts the highest percentage of people under the age of 15 today. This demographic trend, along with Nigeria’s rich mineral wealth, will likely serve as a tailwind for economic growth in the years ahead. Further, Nigeria is coming from such a low base—in terms of low income, lack of disposable wealth, inefficient taxation systems and bad infrastructure—that there are bound to be many changes over the years, and this growth could eventually rival China’s. Saudi Arabia Culture Shock We found Gavin’s discussion on Saudi Arabia particularly noteworthy. Saudi Arabia has been closed to foreign investors and is potentially opening up as early as this year. Given Saudi Arabia’s size, Gavin speculated that the region could skip inclusion into the frontier indexes and instead be added directly to broader emerging market indexes. Again, because of its size, it could eventually achieve greater weights in these indexes than such countries as Turkey. The Biggest Unknown: Governments In discussing the single most important factor in determining the future for these frontier and emerging markets, both Gavin and Worth brought up the relevance of their governments. In the case of Nigeria, while president-elect Muhammadu Buhari is relatively untested in his capacity of serving as a market friendly president and has previously had a track record of being a military dictator in the 1980s, if successful in his fight against corruption, he could set the stage for significant growth in the years ahead. China’s Great Leap Forward Worth Wray offered a very interesting perspective on China. Together with his colleague John Mauldin, he is about to publish a book on China called A Great Leap Forward. Worth noted the unexpected performance in Chinese equity markets since last summer. He mentioned that a Renminbi (RMB) devaluation may be a forced outcome for Beijing in order to sustain this equity market rally and to combat the competitive pressures from the strong U.S. dollar and weak euro and yen. Worth believes the Chinese government must moderate growth expectations from above 7% to between 4% and 5% and do whatever it takes to transition to a more stable path. The alternative is for the government to drive Chinese growth through credit expansion and excessive monetary stimulus, which he believes could lead to a financial crisis the size of which would make the 2008–2009 U.S. financial crisis pale in comparison. Strong U.S. Dollar and Its Implications Worth pointed to a speech by Federal Reserve (Fed) vice chairman Stanley Fischer in late 2014, where he said that the Fed will focus on the U.S. economy but has a responsibility to communicate its policy intentions to the rest of the world such that policy makers can prepare in advance. The Fed’s forward guidance and communication has steadily been trending toward tightening policy, although this has been mixed with softening assessments of the U.S. economy. Consequently, expectations for the forward curve have come down, and this might provide a reprieve to EM nations that may still be fragile in an environment of higher U.S. rates. Separately, Gavin commented on the biggest surprise in the markets year-to-date (YTD): Russia, whose equity performance has caught markets off guard. Not only is Russia one of the top-performing markets in EM YTD, but its currency has also been appreciating. U.S. investors have been caught short on this trade and many are starting to go back in full force, driving performance even higher. Gavin also believes there is no indication that sanctions will be ratcheted up any further. Fed Future Trajectory Wrapping up this week’s conversation, Professor Siegel reiterated his belief that the Fed will continue to remain accommodative on the monetary policy front, given U.S. dollar strength, the weak payroll report and lackluster inflationary pressures. Read the Conversations with Professor Siegel Series here. 1Source: United Nations, Department of Economics and Social Affairs, World Population Prospects: 2012 Revision, June 2013.

industry_corpus2: Finance & Economics


text: Fontana and Co. is one of Vermont’s premier full service salons. We are a Bumble & Bumble hair care and Goldwell elite color system salon, with Bare Minerals make-up to finish your look . If you’re ready for a fun, high energy experience we invite you to join us.


text:
When you publish any content on the Internet, your aim is for people to read what you have written. For this to happen, people must be able to find your content.
Sure, you can use social media to spread the word, but the benefits of doing so are very short lived. However, the best way by far to get your content noticed and read is to get it indexed by search engines.
You are probably thinking immediately that I am only referring to blog posts and articles. But no, search engines can and do index book descriptions, so if you are an author, you should read on.
Search engines are getting a lot smarter. Long gone are the days when you could keyword stuff your title, text and meta description with one or two words. This practice does not work any longer.
Search engines now analyse the whole text and look for key elements that indicate a depth of information in the content that will be informative.
To stand a chance of getting a high Google page ranking for your great article now, your text needs contain words that are often associated with your topic. To put it another way, you need to use words that are related, or in SEO strategy, semantic.
Using semantic related keywords is not difficult. Whenever you create new content you probably already know that you need to think about keywords and long tail keywords.
As an example, if you are writing about fish, your core keywords might be fish and fishing. Your long tail or phrase keywords might then be, why I like fishing, where can you catch fish, or what every fisherman should know.
The best way to find relevant and high-quality semantic keywords is to use an SEO suite such as Semrush as I have done to quickly research the following examples. It provides me with a list of keywords used by the top ten ranking pages for a base keyword, which is very helpful indeed.
You could also use an online latent semantic indexing (LSI) tool, but the results are not nearly as comprehensive.
The first thing to do is to check for a relevant main keyword. The example following is tracing how I prepared to write this article. My keyword is obviously semantic keywords.
Here is the result of my first broad search.
My main keyword is not bad at all as it doesn’t look like it will face a lot of competition. I don’t want to write about a specific tool, so I chose the second and third keywords.
The next thing to do is to see if anyone is interested in this topic. This can be achieved by checking the topic trend.
There are peaks and troughs but there is enough interest to want to continue writing about the subject. Anyway, it’s important information for bloggers and authors, so I don’t need a huge trend to motivate me.
From this basic information, I now want to gather a list of semantic keywords that I will need to use to write the article.
Semrush has a great content creation tool. All I need to do is enter a couple or a few basic keyword phrases.
My two base phrases are, what are semantic keywords and latent semantic indexing.
The result is the detailed content template below for this article.
I have starred out letters because I don’t want to keyword stuff this article. There is complete example following.
If you check this article carefully, you will see the occurrences of the recommended semantic keywords I have used.
Great for blog posts, but how can I use LSI keywords for a book description?
Your book description is probably on many sites including Amazon, Goodreads Apple and your blog and website. But is it being indexed by Google? If so, does it rank? If not, semantic keywords can help.
I will use one of my own books, One Last Love, which is set in a hospice as an example. I used a few basic words that describe the themes in the book to use as my main keywords to enter into the Semrush content creation tool, as I did in the first example.
I certainly wouldn’t use all of the suggested words, but there are enough new words to include in my book description to make it more informative and more discoverable by a search engine. No one will ever search for my book by its title or my name. But now, people who search using one of the new words may find it from these related searches.
By applying this simple semantic link SEO strategy you can only improve the chances of your book being discovered by readers using one of the semantic words when they search.
You don’t need to use an SEO suite as I have done in the above examples. But it does make it a lot faster and more complete, which is ideal for serious bloggers and content marketers.
For authors, you can use a free online tool to find semantic keywords, or simply sit down and make a list of twenty or so words or short phrases that relate to the topics, themes, locations and time periods of your book.
You can then use these to improve and enhance your book description.
The only word of warning is that you should be careful when it comes to keyword densities. Don’t try to stuff your article full of related keywords. Write as you normally do, but when there is an opportunity, include a keyword in your text as naturally as possible.
Semantic indexing is not a cure-all for poor writing. It helps to know what Google and other search engines include this in their algorithms, but nothing is more powerful that fantastic content.
Well written, long form, and highly informative articles that answer readers’ questions are still the best winning formula.


text: iglidurs’ last stop in Switzerland was Luzern. We visited the Kapellbrücke which is the oldest and second longest wooden covered bridge in Europe. It was built in 1365, contains many old paintings and spans the river Reuss.


text:
Emoji are now everywhere. In fact, they are now cooler than ever. There was a time when their usage was decreasing, but it seems that with the rapid growth of messaging apps, Emoji are now, once again, part of the popular culture.
Emoji is now a language of its own, and brands are even starting to launch their own sets of Emoji, trying to be “cool” and surf on the trend.
Emoji are cool. You can express feelings or emotions with just one emoticon and they usually are way more fun that having to type in text instead. And you know what is even cooler? Transforming any photo or image into an amazing mosaic of Emoji.
Eric Andrew Lewis, one of the New York Times tech guys, had a brilliant idea: he created a web app that will create a mosaic of Emoji based on any photo you upload (by now you should have recognised who is on the photo above, right?). All you have to do is upload a pic within the (very basic looking, but still awesome) app, and voilà!
It’s not very useful, it’s not art, but this is the coolest app we have seen in a long time. Now go fill up your social media timelines with amazing Emoji mosaic, and make all your friends jealous.
➤ Check the Emoji Mosaic web app now, here.


text:
My Gosh! Why is Importants to Reading Food Labels of Your Food?
How’re you? Encouraged to my personal blog site, in this period We’ll teach you concerning Nutrition Facts Ground Turkey.
The Nutrition Facts Label be able to help you make decisions for complete health. Even so some goody can also affect certain health conditions and diseases. Consequently, its really noteworthy for you to eat healthy food and live a healthy lifestyle.
So, if you desire to secure all these awesome pictures regarding Nutrition Facts Ground Turkey, just click save link to save these shots for your personal pc.
There’re available for save, if you’d rather and wish to obtain it, click save logo on the page, and it’ll be instantly downloaded to your laptop.
Lastly if you’d like to grab unique and the latest image related to Nutrition Facts Ground Turkey, please follow us on google plus or book mark this site, we try our best to give you daily up-date with all new and fresh pictures. We do hope you like staying here. For some upgrades and recent news about Nutrition Facts Ground Turkey pics, please kindly follow us too, or you can bookmark this page on bookmark section. We attempt to provide you with up-date periodically with fresh and new photos, enjoy your browsing, and find the ideal for you.
Thanks for visiting our website! Today we are excited to announce that we have discovered an incredibly interesting content to be discussed, that is Nutrition Facts Ground Turkey Lots of people trying to find specifics of Nutrition Facts Ground Turkey and definitely one of them is you, is not it?

industry_corpus2: Agriculture & Fisheries


text:
Just a quick article today… but it is one of the best ways to make more money on every deal you do.
Real estate financing is amazingly complex. You’ve got Fannie Mae, Freddie Mac, and Ginnie Mae. There are conforming loans and non-conforming loans.
There is A paper, B paper C paper and D paper. You’ve also got credit bureau scoring… FICO scores and beacon scores. You have LTV and CLTV. You’ve got front and back end ratios.
I’m going to discuss one small part of the real estate financing spectrum – conforming, non-owner occupied loans.
Typically, these loans are used for purchasing rental properties with one to four units. Most lenders will not allow more than 90% loan to value. This means that you need at least 10% down payment. So, to purchase a $100,000 investment property, you (or your investor) would need $10,000.
To qualify for these mortgages, you must have good credit. This means that you can’t have any late payments in the past year, bankruptcies, judgments or liens. You must also have established a record of good credit.
You must have two years on the job. It doesn’t have to be the same job, but it does have to be the same line of work.
If you’re self-employed, you must be able to show two years of tax returns. They will average the last two years to determine your qualifying income.
It doesn’t really matter what your income is when you buy rental property. The income the property can qualify you.
This is pretty cool. I helped a fellow buy $305,000 worth of rental units with 10% down (which he got by refinancing his home) even though he only had an income of $25,000 per year.
His income wouldn’t qualify him for more than a $70k purchase, but the income of the property qualified him for the purchase.
I never knew that the existing income on a rental property could qualify you! This just opened up a whole lot more opportunity to get into the rental game for me. I suppose this only works if the tenants are already in place, established and long term though, right?
I have one rental property currently, from which I’m making a good chunk of monthly change, but would love to expand.
Iraq War Vet Asks, How Do I Buy A House With My VA Voucher?

industry_corpus2: Real Estate & Construction


text:
This past Tuesday, I was lucky enough to attend Portland's Taste of the Nation food festival, a gathering of some of Oregon's best chefs, winemakers, brewers and distillers to raise money and awareness for Share Our Strength's No Kid Hungry campaign. No Kid Hungry is an effort to eliminate childhood hunger by providing children from low-income families access to nutritional school meals and other related education programs. Every ticket purchased for Taste of the Nation helps the campaign.
The last picture up top? I think I already instagrammed this, but that dish was probably one of my favorites from the night. Truffle oil mac and cheese from Grassa. Simple and delicious and decadent, all at the same time.
Learn more about Share our Strength's No Kid Hungry campaign and visit their events page to find an event near you!
This isn't the first time I've done work with No Kid Hungry. Earlier this spring, I participated in their No Kid Hungry's "Baking a Difference" campaign and whipped up some Mexican chocolate rolls. My recipe was featured in their e-cookbook (which you can download for FREE on their Facebook page), and contains recipes from other talented bakers and bloggers like Joy the Baker.
Portland folks — there are other No Kid Hungry benefits coming up soon! A group of lovely local bloggers are participating in their National Blogger Bake Sale this weekend. My friends Erin of Bakery Bingo and Marisa of Margaritas in the Rain will be there, along with other talented bloggers. All proceeds go to Share Our Strength and visit local blogger Fabi's Not Just Baked blog to learn more.
Feast Portland is also coming up soon, which also benefits No Kid Hungry. If Taste of the Nation appeals to you, you should definitely, definitely, DEFINITELY check out the Night Market, which is like Taste of the Nation but outdoors in the summer. I've got photos from last year!
Finally, a shameless plug (please forgive me) — like the photos you see? You can now hire me as a food photographer! Check out more of my pictures on my ever-burgeoning portfolio and email me for more information.
That sounds interesting and yumm;)!
Wish you a wonderful and creative weekend.
um holy crap. is this what heaven is like?
You did an amazing job of capturing the event! Wonderful post!
Oh my good gosh. I want to eat everything. And everything looks so pretty. You burgeoning food photographer, you! Fabulous photos!!
All of the food looks marvelous. I love this event. Both the cause and the yummy eats!!
This looks like such a great event, beautiful photos!!
Oh how I wish I would have known about this event sooner... Looks absolutely divine!
These photos are gorgeous!! I attended the Taste of the Nation in Atlanta and did a post on it on my blog in case you'd like to check it out :) Still working on my photography skills - you give me something to aspire to!!


text:
B. Architecture, Faculty of Architecture, University of Manitoba, 1964.
David has more than 50 years of urban planning and development experience. He has over 28 years experience in the public sector with the City of Calgary. He also has over 22 years of experience in the private sector as owner of Collins Development Consultants Ltd (CDC), an urban design and planning consulting firm which he founded in 1992.
David was Director of Planning with BCMP Architects (2006-2009) and continued as owner of CDC until joining Scheffer Andrew Ltd. in 2014. David has extensive experience in both urban and rural settings with expertise in conceptual development plans, land use development approvals, community and public consultation and three-dimensional urban design solutions.


text:
With FIREBALL, you can replace one of the Lottery drawn Pick-3 winning numbers with the FIREBALL number for more ways to win.
Lottery Number Generator. Generate lucky numbers for all of New Jersey's lotteries.
While this might sound a bit corny, Mega Millions, Powerball and the New Jersey Pick 6 mean that you certainly have plenty chances to win a multi-million dollar NJ jackpot – regardless of what you dream about!
Mega Millions. Lottery Predictions. Number Generator. Home. New Jersey. Pick 3. New Jersey Pick 3.
Please check your search criteria and try again.
In the case of a discrepancy between these numbers and the official drawing results, the official drawing results will prevail.
The only official winning numbers are the numbers actually drawn. Information should always be verified before it is used in any way. Click here for more information and click here to view actual Maryland Lottery drawings.
Latest winning numbers for New Jersey Pick 3 Midday.
Lottery Post is proud to bring you complete game information for New Jersey (NJ) Pick 3 Midday, including the latest lottery drawing results, as well as jackpot prize amounts and past winning numbers.


text:
After patient care, professional satisfaction and financial security are significant concerns for STS members. This was clearly evident by the standing-room-only attendance at the 2017 Practice Management Summit, held during the STS 53rd Annual Meeting this past January. In this issue of STS News, Dr. Paul Levy shares some of the most important lessons from the Summit.
STS News, Spring 2017 -- Proposed changes in health care finance and delivery have stimulated renewed interest in securing our specialty’s place in this new order. At the 2017 Practice Management Summit, several experts shared how cardiothoracic surgeons can best function in this evolving environment.
Several talks dealt specifically with contract negotiation. Health care consultant Michael N. Heaton explained best practices, how fair market value is determined and utilized, and how to strengthen and leverage one’s professional position. The importance of competent representation during a contract negotiation became very evident.
Michael G. Moront, MD, of ProMedica Toledo Hospital in Ohio, provided a surgeon’s perspective of why using a professional medical contract consultant is so important. When his practice first entered an employment contract with a local hospital, they did not consult with an advisor. Years later, they realized that the work Relative Value Unit compensation model had many downsides, such as internal competition and increasing unpaid administrative work. The group retained a consultant who helped them shift to a salary model, which has been successful for both the surgeons and the hospital.
Health care attorney Mark Kopson, JD discussed important aspects of employment contract negotiation, such as verbal promises, fraud and abuse, and fair market practice valuations. “If it’s important enough to make a difference in whether or not you accept the position, it ought to be in black and white,” he said. “Please, please, please do not accept the fact that we have standard contracts and they can’t be changed—because they can if they want you."
"Do not accept the fact that we have standard contracts and they can’t be changed—because they can if they want you."
Steven V. Manoukian, MD, who is the Cardiovascular Service Line Leader for Health Corporation of America, highlighted the value of the service line structure. He pointed to the importance of defined expectations for stakeholders (both administrators and physicians) and data-driven health care delivery.
Richard I. Whyte, MD, Chair of the STS Standards and Ethics Committee, discussed potential ethical conflicts that employed physicians may face. He emphasized the importance of always staying focused upon our “true north”—the patient.
Alan M. Speir, MD, Chair of the STS Council on Health Policy and Relationships, explained how the Medicare Access and CHIP Reauthorization Act may affect cardiothoracic surgeons, including the concept of “risk-sharing” and a bundled payment pilot for coronary artery bypass grafting surgery.
In the final presentation, Steven F. Bolling, MD, of the University of Michigan Health System, spoke about the logistics of taking an innovative idea to market. He warned that significant financial investment may be required—but that good ideas are worth the effort.
If you would like to experience the full Practice Management Summit, it is included in STS 53rd Annual Meeting Online.


text: This comfortable 3-star hotel is conveniently located 5 minutes away from the parc des expositions and is the ideal place to stay for business or pleasure. A direct metro line gives access to the heart of paris in a few minutes. All rooms -renovated in 2012- have air-conditioning, an internet connection and all modern amenities. There is a bar where guests can relax after a long day of work or sightseeing in paris and a very pleasant patio. Guests have free access to the fully equipped fitness room and sauna.


text:
You’ve already taken the biggest step on the path less traveled. You’ve determined the right way to balance your earnings, your responsibilities and your life is to start your own business. You’ve forgone the corporate ladder no matter the rung you climbed to, and you’re out here, in the bright wide open, going your own way.
CEOs in the corporate world are usually highly educated, with degrees from the Ivy League and lots of hand holding and executive coaching by the time they open their corner office door on mahogany row.
They’re accountable for the company numbers and if they’re publicly traded companies, they’re accountable to Wall Street. You can bet they’ve got teams of people accumulating and accounting for the management of those numbers.
These kinds of CEOs might be flanked with more folks in suits, but knowing how to manage your numbers is critical to on-going business success no matter the size of the company you grow.
Of course, the first thing any Chief Executive does is accept her role with or without the corner office. So, your first step is to accept your role as it is right now. Hire yourself. Appoint yourself. Roll your shoulders back, stand proud—you’re the captain of your business ship and you have already set sail.
What I’m suggesting here is a powerful mindset shift. I want you—today, now—to appoint yourself the CEO of your Personal Financial Future Corporation (PFFC). This is the company you always own no matter the fate of your business ships.
This may sound a little silly at first, but it makes it very clear what role your play in your financial life, and helps you get into the right mindset to make powerful, confident, profit producing decisions that result in the earning, growth and protection of your own personal wealth.
It’s time, now, to throw all the emotional baggage you’ve built up about money overboard. You won’t need it. There’s nothing it can do for you and it will never be valuable.
Just allow for the possibility that everything you’ve ever thought about money is tainted with a kind of programming you unwittingly installed as a child.
It’s time to get acquainted with the that money operating system so you can de-install it and put systems of automation in place so your money has clear channels to flow to easily and often.
Dumping this baggage is the first step to getting on the profitable track to personal wealth building through your business.
A Chief Executive who just secured her first round of funding would pay herself a minimal salary and hire an executive team who would also take company equity in lieu of current income. They’d work out of home offices, a garage, or some other low-cost space. The start ups that turn into successful corporations that change the landscape of what’s possible as business success never entertain conversations that they needed to spend money on Class A office space with a view to appear bigger or more successful than they are. They’re authentic to the realities of their current situation and mindful of their long-term, blue chip dreams.
In the beginning, every dollar counts, and you want your investments to pay off. You don’t need expensive suits or cars or office digs to impress your future clients. You need the tools that will help you do your job and earn the business that helps you grow profitable.
Pay cash while you’ve got it. Be mindful of the obligations you take on. Don’t load yourself up with debt. Don’t mortgage tomorrow to pay for today.
Notice, with a plan in place, the confidence you have when making decisions to spend.
While you’re bootstrapping the first years of your business dream, keep lifestyle expenses low. Maintain your financial plan and budget for the joys you want to add into your life experience. A good saving and investing plan will scale like a startup in real time. As your business succeeds, your plan will help you know when to channel income out of the business, into personal earnings. The plan for these funds will help you earn, grow and protect your personal wealth.
“Rule No. 1: Never lose money. Rule No. 2: Never forget rule No. 1”.
If you’re running a business that should be making you money and doesn’t—stop. Get customer feedback, iterate the product, create a new product line, raise your prices, fold the firm and start a new one. Don’t be afraid of prototyping and failing fast. It takes, sometimes, hundreds of efforts to find the right formula. Don’t give up, and don’t keep doing what doesn’t work. Find the fortitude to keep re-inventing your approach to building a profitable company that generates personal wealth.
Whatever you need to do to stop what doesn’t work and find what does.
It’s likely that running a company that doesn’t make money, or that doesn’t make you money, co-exists with some awful and untrue thing you think about yourself. Please, I ask you, please stop that. Stop accepting less than you want.
This is that recurrence of financial baggage. Make sure that as new money shadows surface, you shine the brightest light of daylight right on them. Know your worth, focus on building profit, commit to staying the course, following your plan, recommitting to smart business principles that work.
If you’re considering liquidating your retirement accounts or life savings to start a company because you’re afraid to ask for investor money or don’t want to give up control—DON’T. Keep your retirement accounts whole—and don’t withdraw from them to pay for lifestyle or business expenses.
Think of it like this: large corporations like Intel incubate startups extensively. They dedicate time and financial resources to an idea, but they never risk everything. Don’t let yourself get into the quagmire of allowing your startup concepts to be more important than your own financial future.
Now, think of it like this: when big companies merge, they choose to do this in such a way that assets are preserved and maximized. Look for ways to leverage existing assets, skillsets or relationships by joining forces with others.
Look for slack resources you can put to work. Look for partners whose existing assets can amplify yours, and then negotiate satisfactory terms for yourself. To succeed at anything, you’ll need to partner with talented others to grow your business from idea to profitability to personal wealth. If you’ve risked this much—to boldly go where no one has gone before into your own business, your own enterprise, be certain you have the team alongside you to go the distance.
Now, in the comments below, let me know what you’re doing to grow your profitable dreams into personal wealth?


text:
Search Engine Optimization, otherwise known as SEO, is not just a trendy marketing tool. It’s a powerhouse that all but drives the digital marketing world. SEO is the art and science of making your website rank higher in the SERPs (Search Engine Results Pages). Thus, your SEO ranking directly affects how much attention and traffic you get.
If you’re on the fifth page of Google but your competitor is on the first, good luck competing with them in organic marketing. And the problem with that is that organic marketing is free, other than producing content. You don’t have to pay for ads, so you definitely want to take advantage of it. Luckily, Google rewards you when your site is mobile friendly and they boost your rankings for it.
The user experience has become somewhat of a punchline in online marketing and Silicon Valley alike. People talk about it so much you almost have to wonder if anything else matters today when it comes to making your company a success.
The reality is that the user experience is important for many factors: conversion, referrals, overall liking of your brand, and more. But it is essential for another reason: better experiences mean more SEO rankings. Make your site friendly for mobile users and watch your site climb the ranks.
Consumers today trust companies that get technology. If you are “with it” then you must have the resources, savvy, and intention to serve your audience better. While that might not always be true, this is something that people are thinking when they visit your site. The last thing you want is to get the reputation that you are outdated or not keeping up to date in your market. So have mobile views ready to access and stay ahead of the curve.
When it comes to websites today, you can’t afford to go without a great site that communicates your brand in the best way possible. This also means having your site adjust to mobile view without a hitch. If you don’t, you could frustrate users and miss out on business opportunities to grow. So, implement mobile optimization for your site and reap all the benefits.
Here at eLsqrd Media Group, we create digital marketing solutions that solve problems. Need someone to build you a great website that drives conversions, we’ve got your back. Get in touch today!


text:
i have completed setup for sugar chimp and have linked to my only list in mailchimp.
i specified that the MC list would come Sugar as targets, but i don't any records in Sugar > Targets.
Also, i'd also like to take my exisinting list of Sugar Contacts and send them into mailchimp; but i'm unsure how to do that- do i need to create unique lists in mailchimp for sugar contacts, sugar accounts, etc?
1) How many people were in your MailChimp list when you told them to come through to Sugar as Targets? If you did not have any in the MailChimp list, then they will not be added to Sugar.
2) If you had someone on the MailChimp List, Sugar's on-demand schedulers (what powers the integration) sometimes run a little slow. Now that some time has passed, do you see that the people came in as Targets? Do they show up on the Target List that was created?
3) If you'd like to add Sugar Contacts to MailChimp, all you need to do is go to your Target List in Sugar that you linked to MailChimp and add people to the list. When you do this, they will be queued to be synced to MailChimp. Once the scheduler has time to run (may take 5-10 minutes) you'll see your contacts on the same MailChimp list.
Let me know what you find here. Thanks!
Hi Robin, just following up here.
Any luck getting it working how you'd like?
Hi Robin, I'm going to go ahead and close this case for now.
Definitely let me know if you need any additional help.


text:
to realize the accurate inspection.
・ OIIG generates the minimum of 0.1 ms interruption.
・ Both 1,310nm and 1,550nm are available.
・ Interruption is generated by front panel button, external trigger and PC control.
・ The following parameters are available for configuration of instantaneous interruption signals: pulse width, interval, and the number of repetition.
Copyright © 2014. Trimatiz Ltd. All rights reserved.

industry_corpus2: Technology & Research


text:
Stick & Native American flutes recorded LIVE on Maui under a big tree.
Peaceful, meditative music that features both The Chapman Stick® and Native American flutes played by Lance Israel. This album was co-composed and recorded LIVE Under The Banyan Tree in Lahaina on Maui. These songs will have you floating away on balmy ocean breezes under swaying tropical palms.


text:
Leila "Nadine" Barker, 82, of Lebanon, Oregon passed away peacefully Wednesday with her sister, Rita, and caregiver, Mickey Yordy, by her side after a long battle with breast/lung cancer and congestive heart failure.
Nadine was born October 8, 1936 to Clifford Calvin and Lola Esther (Wycoff) Nicholson in Wilsonville, Nebraska. She lived in Wilsonville and Lebanon, Nebraska until her family moved first to Medford, Oregon in 1947, and then to Sweet Home in 1949.
In 1951, Nadine married Wayne Black of Sweet Home. They separated, and she moved to Lebanon in 1963 where she lived since. In 1965, she married Jimmie Barker.
She was proud of the fact that she had opened and closed both Cornets stores in Lebanon. Following the second store closing, she finally found a new home working at The Oaks for several years before she retired. She was continually knitting or crocheting everything from sweaters to stuffed animals. She was also a longtime member of the Lebanon Genealogy Society, where she spent many hours staring at microfiche and finding long, lost relatives until her failing health prevented it.
In March 2018, she gave up her home of 45 years and moved to her “other home, The Oaks” in Lebanon.
The family would like to give special thanks to her caregiver and special friend of the past year, Mickey Yordy, and her son, Jonathan. They would also like to thank the staff of The Oaks, Lebanon and Evergreen Hospice.
Nadine is survived by sons David (Peggy) Black of Jefferson, Larry (Donna) Black of Salem, Jim Barker of Richfield, UT, Jerry (Marilyn) Barker of Fairfield, CA.; daughters Virginia (Ken) Stanley of Sigurd, UT, Nancy (David) Keaton of Centralia, WA; unofficial adopted daughter Jane Hill of Vancouver, WA; brother Everett (Pat) Nicholson of Salem; sisters Elaine (Earl) Harcrow of Sweet Home, Rita (Ted) Holder of Cottage Grove; fourteen grandchildren; 21 great grandchildren; eight great-great grandchildren; numerous nieces and nephews; and a several foster children.
She was preceded in death by her parents, Clifford and Lola; first husband Wayne Black; second husband Jimmie Barker; son Ronald Everett Black; sister Jeanette Seiber; nephew Allen; grandson Jeremy Barker; and niece Gaye Huerta.
Viewing will be from 4:00 to 6:00 p.m., Tuesday, April 16, at Sweet Home Funeral Chapel. Graveside service will be at 10:00 a.m., Wednesday, April 17, at Gilliland Cemetery. In lieu of flowers, Nadine would have preferred donations be made in her name to Safehaven Humane Society of Tangent, OR.


text:
Real Vision was recently profiled in the New York Times. One of their most recent interviews was Kiril Sokoloff interviewing Stanley F. Druckenmiller. In the interview Mr. Druckenmiller mentioned how health stocks drastically underperformed earlier this year perhaps in part due to political rhetoric about lowering drug prices.
He stated how it didn’t make sense they really went down then because if the economy was soft those should be some of the more stable stocks as people take their prescriptions in any economic environment. And now that it seems the economy is going better, the pharmaceutical stocks are on fire.
Pfizer, Abbvie, Merck, Johnson & Johnson, etc. .. you could pick just about anything and make money.
He noted how them being a hot sector right now does not perhaps make a lot of sense because the same political rhetoric is still in place.
One thing to consider is the passage of time is itself a signal. So the pharma stocks recovering from the early year swoon is the market stating they think the anti-pharma company statements from President Trump are hollow bullcrap.
One way to know of the perceived lack of importance of a particular political issue is to see how much action there is relative to jawboning. If a lot of time passes and there is still nothing but jawboning then it is a nothingburger.
If you recall I expressed grave concern during the election season that he really didn’t mean it on health reform — despite not one but three planks in his platform on the campaign web page related to same. A large part of my skepticism came from the fact that repeated inside attempts to obtain some sort of solid indication in public on the details or some sort of interaction or meeting were rebuffed.
Then, on election night, those planks disappeared. Literally gone while the votes were still being counted, as soon as the results were evident. They’ve never been seen again, although there was, during the transition, a brief flirtation through not one but two people I know (and who have impeccable credentials in terms of actual inside knowledge as a physician) with an alleged meeting on the issue. One such overture was postponed twice and then canceled with no reschedule, the second was just flat-out canceled.
So that’s at least 3 separate signals that restraining the pharmaceutical companies is political rhetoric versus political action. That would mean the market view earlier this year was wrong & the current market view is correct.
However, it is possible the market is just as incorrect today as it was during the pharmaceutical stock sell off earlier this year.
Next year the Obamacare penalty disappears. That will REALLY make the cost of healthcare hit people hard as the risk pools deteriorate. And the House of Representatives is likely to flip to being Democrat controlled after next month’s midterm elections.
When a party is sort of unopposed they can jawbone eventual changes that never come and appease their base, but when the direct consumer harm felt increases dramatically and populist party outsiders drive political discourse outside of the overture window they’ll likely end up calling each other’s bluffs & end up pushing through some sort of reform.
I recently sold out of my AbbVie & Johnson & Johnson shares on the thesis that actual change will be (almost accidentally?) forced when two different brands of fake populism are forced to square off over an issue where an increasing share of the pain is being felt directly by the populous.
With trillion dollar deficits during a non-recession, there isn’t an easy way to keep sinking an increasing share of GDP into the health industry.
As the Federal Reserve lifted short term rates over the past couple years it didn’t carry through into longer duration bonds & there was a fear of yield curve inversion. Financials have been beaten down recently as spreads dropped.
Today longer dated bonds started selling off with the yield on the 10-year Treasury bond touching the highest level in 7 years, settling at 3.159%. The 30-year Treasury bond jumped to a 4 year high of 3.315%.
As yields rise, debt service costs rise for both the government & heavily debt-levered companies. That in turn lowers the relative value of value stocks while also increasing their interest expenses.
Once I saw bond yields jumping like that yesterday I sold off a bunch of value stocks on the thesis there will be a rotation away from them in the coming week.
Renewed confidence in the economy has helped drive bond yields to fresh highs in the second half of the year after months of relatively driftless trading.
Commerce Department data showed the economy rose at a 4.2% seasonally and inflation-adjusted annual rate in the second quarter, thanks to gains in consumer spending and business investment. Measures of consumer confidence are at 18-year highs, and corporate profits are expected to grow at a rapid clip again in the third quarter.
Accelerating growth & rising rates is typically not the sort of environment where value stocks will outperform growth. The extreme underperformance of value is likely to continue for some time unless the whole market tanks.

industry_corpus2: Biopharmaceuticals


text:
In a time of record-shattering hurricanes, with our federal government bought and sold by the fossil fuel industry, states like New York must step up and fight climate change.
There has never been a climate march this big at the Capitol in Albany, and free buses are available from across the state. RSVP now to be there on April 23rd.

industry_corpus2: Power & Energy


text:
Chicago's Randolph Street Market is America's largest (& liveliest!) indoor/outdoor urban antique & vintage flea market! In the historic West Loop neighborhood.
Financial Expert, CFP Ambassador & FinLit Advocate. I help Millennials and young professionals achieve their goals. Now read this: http://bit.ly/1Oos8bj.


text:
This release has a few new (minor) features and a couple of bug fixes. The most important change is not in code, but in the license. With this release, I will no longer offer paid licenses. Instead, the code is released under the Apache Public License 2.0, and free for use in closed, commercial applications.
I have never worked full-time on upscaledb (and its predecessor hamsterdb), but the amount of time I have invested was often more than 40 hours per week. Over the last year I realized that I do no longer have the resources and the grit to do this. Spending time with the family is just way more valuable.
Still, it was a difficult decision. For many years I had the vision to write database code for a living. Working on my own database, my own project, felt like a dream coming true. Commercially, the dream turned out to be not sustainable. It did not feel good to see that others had the same problems, but it helped nevertheless.
What now? I will continue working on upscaledb. I will invest my limited time where it makes most sense (for me). Things that I do not enjoy or that consume too much time will be neglected. That's mostly related to providing Win32 builds (if you look at the download page then you will see that they are missing). Bugs will be fixed as soon as possible, patches are more than welcome.
The integer compression codec UPS_COMPRESSOR_UINT32_MASKEDVBYTE is now a synonym for UPS_COMPRESSOR_UINT32_VARBYTE, but uses the MaskedVbyte library under the hood.
All files are available on the download page.
After several months of hard work, I'm proud to release the first (beta) version of upscaledb-mysql, a MySQL storage engine based on upscaledb.
MySQL uses "storage engines" to persist and access the actual table data. The most prominent storage engines are InnoDB and MyISAM. The upscaledb storage engine tries to be 100% compatible to InnoDB, while offering higher performance and an even faster NoSQL interface to the table data. If MySQL hits a performance wall you can use the regular upscaledb API, connect (via the remote interface) to the MySQL process and directly query or modify the data.
I have tested performance with several benchmark programs.
Sysbench’s OLAP test uses transactions which are not yet implemented [Scroll down for the TODO list]. To avoid race conditions, they were run with one client connection only. The tests were run for 60 seconds, the test data consists of 1 million rows. Tests were run with BEGIN/COMMIT transaction envelopes and with LOCK TABLE. The graphs show the total number of queries.
For such simple operations %%upscledb outperforms InnoDB.
I have run two benchmarks using siege, a http benchmark tool. The first one retrieves the start page of a Wordpress blog with five posts and several comments. The second benchmark searches the blog by accessing the “Search” page. Both tests were run for 30 seconds, with 30 concurrent connections.
The results are slightly in favour of InnoDB. Upscaledb leaves some performance on the table, mostly because it requires two database accesses when reading or writing a secondary index. In addition, InnoDB implements a MySQL feature called “Index Condition Pushdown”, which optimizes range lookups via secondary index. Both optimizations are on the TODO list.
Upscaledb does not yet optimize the COUNT(*) queries, therefore InnoDB is currently much faster. But upscaledb’s built-in query interface (“UQI”) is still the winner. This query interface can be extended through plugins, and any type of full-table scan can thus be implemented. In addition, you can use all other upscaledb API functions to read or manipulate the table data. The graphs show the duration of the SELECT COUNT(*) query (in seconds).
You can find detailled information about the benchmarks in a GitHub Gist.
Both are described in the Wiki: Installation, Configuration.
Q: Is this ready for production?
A: No, unless your definition of "ready for production" is significantly different from mine.
Q: How can I improve the performance?
Q: Does upscaledb use the same cache size as InnoDB?
A: Like InnoDB, upscaledb's default cache size is 128mb. However, this cache size is *per table*, and not set globally! See this page for details, and make sure you keep this in mind when comparing the performance of InnoDB and upscaledb.
Q: Is the NoSQL API security critical?
A: Yes, you basically open a backdoor to your data and avoid all of MySQL's security layers and authentication features. By default, this interface is therefore switched off.
Q: How can I use the NoSQL API to access the various columns?
A: You have to de-serialize the keys and records that are stored. I'll cover this in another blog post.
Q: Does the upscaledb storage handler support compression?
A: Yes, you can compress the row data with zlib, snappy or lzf. See this page for more information.
Q: Does the upscaledb storage handler run with MariaDB?
A: I don’t know, I did not yet have time to test. But I would expect so.
This blog post continues with the summary of a research paper by Daniel Lemire and me about the use of 32bit integer compression for keys in a B+-tree index. We evaluate a wide range of compression schemes, some of which leverage the SIMD instructions available in modern processors. To our knowledge, such a comparison has never been attempted before.
You can read part one here. This part describes the integration of integer compression in upscaledb and presents benchmark results.
upscaledb’s B+-tree node stores keys and values separately from each other. Each node has a header structure of 32 bytes containing flags, a key counter, pointers to the left and right siblings and to the child node. This header is followed by the KeyList (where we store the key data) and the RecordList (where we store the value’s data). Their layout depends on the index configuration and data types.
The RecordList of an internal node stores 64-bit pointers to child nodes, whereas the RecordList of a leaf node stores values or 64-bit pointers to external blobs if the values are too large.
Fixed-length keys are always stored sequentially and without overhead. They are implemented as plain C arrays of the key type, i.e., uint32 t keys for a database of 32-bit integers. Variable-length keys use a small in-node index to manage the keys. Long keys are stored in separate blobs; the B+-tree node then points to this blob.
This in-memory representation of fixed-length keys makes applying compression easy - at least in theory. The keys are already stored in sorted order, therefore applying differential encoding does not require a change in the memory layout. Since keys are stored sequentially in memory, SIMD instructions can be used efficiently if needed.
When using integer compression, the keys are split into blocks of up to 256 integers per block. We chose this to offer faster random access (by skipping blocks). Also, inserting or deleting values will only affect a small block instead of a huge one.
I already described the various codecs in the previous part. In order to integrate a codec into upscaledb, it had to implement a few functions.
A full block is not decoded during CRUD (Create/Read/Update/Delete) operations, but it is decoded frequently during analytical queries (see below).
Used i.e. after a page split or in the "vacuumize" operation, which periodically compacts a node in order to save space (see below).
Inserts a new integer value in a compressed block. A few codecs (Varbyte, MaskedVByte and VarIntGB) can do this without uncompressing the block. All other codecs uncompress the block, modify it and then re-compress the block.
Appending an index key at the “end” of the database is a very common operation, therefore we optimized it. Most codecs are now able to append extremely fast with O(1), and without decoding the whole block. Appending an integer key to a compressed block would otherwise be costly, because all codecs (except FOR and SIMD FOR) have to reconstruct all values because of the differential encoding.
Performs a lower-bound search in a compressed block, without decompressing it.
Not a priority since we did not use this in our benchmark. Implemented for Varbyte (and therefore also for MaskedVByte) directly on the compressed data. All other codecs decode the block, delete the value and then re-encode the block again.
Performs a compaction by removing gaps between blocks. Gaps occur when keys are deleted and blocks therefore shrink, or blocks require more space and are moved to a different location in the node. SIMD FOR and BP128 periodically also decode all keys and re-encode them again.
Was originally used for cursor operations. But then we found out that cursors often access the same block. We decided to decode and cache the last used block. The select function is therefore no longer used.
All our experiments are executed on an Intel Core i7-4770 CPU (Haswell) with 32 GB memory (DDR3-1600 with double-channel). The CPU has 4 cores of 3.40 GHz each, and 8 MB of L3 cache. Turbo Boost is disabled on the test machine, and the processor is set to run at its highest clock speed. The computer runs Linux Ubuntu 14.04. We report wall-clock time.
This benchmark creates a new database for 32bit integer keys and inserts various numbers of keys. We should expect a compressed database to be slower for such applications, as insertions may require complete recompression of some blocks, at least in the worst case. Among the compressed formats, the best insertion performance is offered by the FOR, SIMD FOR and Masked VByte codecs, followed by BP128 and VarIntGB. VByte is slower than all other codecs. If one uses FOR, SIMD FOR and Masked VByte, insertions in a compressed database are only 2.5× slower than insertions in an uncompressed database.
This benchmark opens an existing database and performs point look-ups of all inserted keys. Each look-up requires a B+-tree traversal to the leaf node. The node then performs a linear search through the block index and locates the block which stores the requested key. The codec then searches the block for the key.
The benchmarks show that integer compression does not cause a significant performance hit for lookup operations. We get the best results with SIMD FOR, VarIntGB and FOR, and the worst results with VByte and BP128 (with a penalty of up to 60 %). Actually this was a positive surprise; we expected worse!
This benchmark opens an existing database and creates a cursor to traverse from the first to the last key. To position itself on the first key, the cursor traverses down the B+-tree at the left-most path down to the leaf, then visits each leaf. Since all leaf nodes are linked, no further traversal is required.
In our original implementation, the cursor then used the select method to retrieve the key directly from the compressed block. But since cursors are usually used for sequential access, and therefore frequently access the same block, we decided to decode the block and cache the decoded values. Our tests showed a significant performance improvement compared to the previous implementation based on select.
This benchmark performs a “SUM” operation on all keys. It is equivalent to a SELECT SUM(column) operation of a SQL database, where the specified column is an index of unique 32bit integer keys. For such operations, upscaledb does not use a cursor to traverse the B+-tree, but performs the operation directly on the B+-tree’s data, without copying the keys into the application’s memory. SUM performance is impacted by database size: the bigger the database, the more compression is beneficial, with BP128 and SIMD FOR offering the best performance.
Finally, here are the compression results with the various database sizes, using the default block sizes (128 for BP128 and 256 for other codecs). BP128 is the clear winner. It is able to compress the database by a factor of ten compared to an uncompressed B+-tree. The compression ratios offered by the other codecs are similar (compression ratio of 2 or 3), with SIMD FOR compressing slightly less and VByte compressing slightly better.
We have shown that fast key compression could improve the single-threaded performance of a key-value store - if these compression techniques are accelerated with SIMD instructions. We get the best performance for SIMD codecs (BP128 and SIMD FOR). Unlike other codecs, they show an ability to noticeably improve query performance in all our tests (from small to large databases) on the analytic “SUM” benchmark.
Another conclusion would be: if your application mostly appends keys (instead of inserting them at random positions), and you perform many analytical queries or full-table scans, then performance will improve (in the best case) or at least not deteriorate significantly (in the worst case). But you will save lots of RAM.
One of our codecs, BP128 ("SimdComp"), comes with an interesting limitation: it is not "delete stable" and often grows when keys are deleted. To our knowledge, upscaledb is the only database which is able to deal with such codecs. In the next blog I'll describe how we did this, a few other problems we faced when we integrated compression, and how upscaledb's B+-tree differs from the textbook B-tree algorithm. Sign up to our newsletter to get notified when the next blog is published.
This blog post shows how to use the new "UQI" query interface of upscaledb 2.2.0. It's the follow-up to the series "Building an embedded column store database with upscaledb" (part one, part two and part three).
In the previous parts I demonstrated how to use upscaledb to create multiple indexes on one or several columns, and how to perform range queries with cursors. This part will show how to run queries with the UQI query interface.
upscaledb has a lot to offer regarding analytics: it has a full set of APIs dedicated to analytical calculations. These APIs are called "UQI" (Upscaledb Query Interface) and declared in the header file `ups/upscaledb_uqi.h`. These functions were rewritten for version 2.2.0 and now support an SQL-ish query language which can be extended through custom plugins.
This query interface can run full-table scans over a single database and apply aggregation functions and filter predicates. Functions and predicates can be extended through user-supplied plugins. Joins are not supported.
Internally, the UQI functions can operate directly on the B+-tree node data. B+-trees store keys and records very compact and efficiently. While you could also use cursors to implement this functionality, a cursor requires the key- and record data to be copied from the B+-tree to the application. The new UQI interface does the opposite: it performs the query in the B+-tree and does not copy any data. This makes the UQI queries much faster.
Performs a "select" query. The query syntax is described below. Results are returned in result. This is a shortcut for uqi_select_range.
Performs a "select" query. If begin is not NULL then the query starts at the specified position, otherwise it starts at the beginning of the database. Afterwards, the begin cursor is advanced to the next element after end. If end is not NULL then the query stops at the specified position, otherwise it stops at the end of the database. This API can be used for pagination.
Returns the number of rows from a result object.
Returns the key type from a result object. Key types are UPS_TYPE_UINT8, UPS_TYPE_UINT32, UPS_TYPE_BINARY etc.
Returns the record type from a result object. Record types are UPS_TYPE_UINT8, UPS_TYPE_UINT32, UPS_TYPE_BINARY etc.
Returns a key from the specified row of an result object. I.e. uqi_result_get_key(&result, 0, &key); returns the first key from the query results.
Returns a record from the specified row of an result object. I.e. uqi_result_get_record(&result, 0, &record); returns the first record from the query results.
Returns the serialized key data. If the key type has fixed length (i.e. UPS_TYPE_UINT32) then the returned pointer can be casted directly into a uint32_t * pointer. The size returns the size of the integer array.
Returns the serialized record data. If the record type has fixed length (i.e. UPS_TYPE_UINT32) then the returned pointer can be casted directly into a uint32_t * pointer. The size returns the size of the integer array.
Note that you can only SUM up records (or keys) if their type is numeric!
The TOP and BOTTOM queries are the only queries which accept the LIMIT keyword. If you specify a LIMIT for any other function the the UQI parser will currently fail with an error. You can also query TOP/BOTTOM queries over the keys, but since keys are already sorted it would be much cheaper to use a cursor instead (with the BOTTOM elements starting at the beginning of the database, and the TOP elements at the end).
Again you can calculate the minimum and maximum from keys as well (by using MIN($keys) from database 1), but since keys are already sorted it would be much more efficient to use a cursor and retrieve the first (or last) element in the database.
A predicate can be supplied with the WHERE clause. In release 2.2.0 there are no predicates supplied, but they can be written as a plugin. A predicate can also be loaded from an external (dynamic) library.
Counts all distinct keys in database 13 with even records. The "even" predicate is loaded from a dynamic library, and therefore has to be quoted.
The "distinct" keyword ignores duplicate keys and skips them when processing the input data. Its meaning is therefore different from DISTINCT in an SQL database, where it filters duplicate results.
For performance reasons, plugins have to be written in C or C++. With some knowledge in C/C++, writing a plugin is not difficult, but it extends the scope of this blog post a bit. We've created a sample which demonstrates how an application can supply its own plugins for aggregating and filtering data: uqi2.c.
The UQI interface is brand new, and fairly unique. If you have any questions then please do not hesitate to write!