Hey. Im a 25 year old guy looki g for chill people to hang with. Looking for friends, hookups or more. Message me.
¡respect iz everything & positive vibez!
¡A KOOL, FUN, UNIQUE SENSE OF HUMOR INDIVIDUAL.REALLY INTO PLEASING THEE OTHER. LUVZ TO TRY NEW THINGZ. ALL ABOUT BEIN POSITIVE, HAPPY & IZ PROFESSIONALLY EXPERTALENTED.
A gurl looking to have some fun.
Mature sissy seeking ltr with benefits with a poly mind.


Congratulations to the 2018 Searcy High School Homecoming Royalty! The SHS Lion football team chose Kamie Provence as the 2018 homecoming queen. Her court includes Grace Ziegenbalg, maid of honor: Carly Campbell, Senior Maid; Sarah McCammon, Junior Maid; and Grace Sledge, Sophomore Maid. Homecoming festivities will be held on October 5th with an assembly at 2 P.M. at the Searcy High School Performing Arts Center and field events beginning at 6:30 P.M. at Lion Stadium prior to the football game against Marion.


The United States Capitol Historical Society joins in mourning the passing of former Congresswoman and Ambassador Corinne "Lindy" Boggs on July 27, 2013. In addition to serving as the first woman elected to Congress from Louisiana from 1973 to 1991 and as U.S. ambassador to the Holy See (1997-2001), Lindy Boggs served for several years as a member of the board of trustees of the U.S. Capitol Historical Society.
Boggs was the widow of former Majority Leader of the U.S. House of Representatives Hale Boggs, and the mother of three children: broadcast journalist Cokie Roberts, Washington, D.C. lawyer Thomas Hale Boggs, Jr., and the late Barbara Boggs Sigmund, a mayor of Princeton, New Jersey.
The USCHS recognized Lindy Boggs' lifetime achievement in public service by awarding her the organization's 2001 Freedom Award.


Laboratory studies suggest that vitamin D (vitD) enhances chemotherapy- induced cell death. The objective of this study was to determine whether pretreatment vitD levels were associated with response to neoadjuvant chemo- therapy (NACT) in women with breast cancer. Study patients (n = 82) were enrolled on the I-SPY TRIAL, had HER2-negative tumors, and available pre- treatment serum. VitD levels were measured via DiaSorin radioimmunoassay. The primary outcome was pathologic residual cancer burden (RCB; dichoto- mized 0/1 vs. 2/3). Secondary outcomes included biomarkers of proliferation, differentiation, and apoptosis (Ki67, grade, Bcl2, respectively) and 3-year relapse-free survival (RFS). Mean and median vitD values were 22.7 ng/mL (SD 11.9) and 23.1 ng/mL, respectively; 72% of patients had levels deemed "insufficient" (<30 ng/mL) by the Institute of Medicine (IOM). VitD level was not associated with attaining RCB 0/1 after NACT (univariate odds ratio [OR], 1.01; 95% CI, 0.96–1.05) even after adjustment for hormone receptor status (HR), grade, Ki67, or body mass index (BMI). Lower vitD levels were associ- ated with higher tumor Ki67 adjusting for race (OR, 0.95; 95% CI, 0.90–0.99). VitD level was not associated with 3-year RFS, either alone (hazard ratio [HzR], 0.98; 95% CI, 0.95–1.02) or after adjustment for HR, grade, Ki-67, BMI, or response. VitD insufficiency was common at the time of breast cancer diag- nosis among women who were candidates for NACT and was associated with a more proliferative phenotype. However, vitD levels had no impact on tumor response to NACT or short-term prognosis.


Abstract: A device intended for the dispensing of a powdered medication by inhalation. The device includes a powder container (1), and air channel (2), and a metering strip (4) equipped with a dosing recess (3). The metering strip (4) can be moved along a flat surface (5) from a filling position, in which the dosing recess (3) is filled with powder coming from the container (1), to an inhalation position, in which the dosing recess (3) is in the air channel (2).


Winter graphics and animated gifs. Winter images. Free animated Winter animations. Winter gifs. Winter photos and pictures. Winter graphics and gifs to share on social media. Click on a Winter graphic to see the share links.


text:
Toyota Vellfire snapped at a dealership in India, has no infotainment system
14/10/2019 - 21:30 | Toyota Vellfire, Toyota | Prashant Singh
After introducing the Fortuner TRD Celebratory Edition in India last month, Toyota Kirloskar Motor is now set to launch the Vellfire in India. Not long after displaying the luxury MPV to dealers and potential customers, it had started dealer dispatch recently. Now, showrooms have started getting first units, as seen in the images below.
Internationally, the Toyota Vellfire is offered in two styles - Standard Body and Aero Body.
The Vellfire is the most luxury-oriented people mover from Toyota and can be seen as an indirect Mercedes V-Class rival. It is the sassier version of the Toyota Alphard and is mainly offered in two body styles - Standard Body and Aero Body. For India, Toyota has planned out the Vellfire with Standard Body. As for the dimensions, it measures 4,935 mm in length, 1,850 mm in width and 1,935 mm/1,950 mm in height. Its ground clearance ranges from 160 mm to 170 mm, this depends on the configuration selected.
In terms of mechanicals, the Toyota Vellfire sources its power from the 2AR-FE 2.5-litre petrol engine (182 PS/235 Nm) mated to a CVT or the 2GR-FKS 3.5-litre petrol engine (301 PS/361 Nm) mated to an 8-speed AT. There's also a hybrid powertrain option, with a combination of the 2AR-FXE 2.5-litre petrol engine (152 PS/206 Nm), the 2JM electric motor (143 PS/270 Nm) and the 2FM electric motor (68 PS/139 Nm).
In India, the Toyota Vellfire will be offered with the hybrid powertrain as standard. The Indian-spec Toyota Vellfire will feature LED headlights with cornering lamps, sequential turn indicators, power slide & back doors, 7 airbags, powered extendable Ottoman full recline seats, twin moonroof, multi-colour ambient lighting, individual seat tables, seat ventilation, heating and memory functions and Black/Flaxen interior. For the interiors, it will employ faux-wood treatment on the dashboard, gear lever, steering wheel and on a few other elements. Strangely, the unit seen here is missing an infotainment system. Maybe there's going be a dealer-level retrofitted unit.
The Vellfire is the most luxury-oriented people mover from Toyota.
If you are planning to buy the Toyota Vellfire then you will have to shell out at least around INR 75 lakh (expected ex-showroom).
[Image Source: Instagram]
Toyota Vellfire - Image Gallery
New Toyota Fortuner vs Ford Endeavour vs Mahindra Alturas G4 vs MG Gloster: Price Comparo
2021 Toyota Fortuner Facelift Variants Explained; Detailed Features List
Toyota e-Palette Electric Autonomous Vehicle Inches Closer To Reality
Toyota Fortuner Facelift Teased Ahead Of Launch on January 6, 2021
Toyota Fortuner Facelift Varaints and Color Options Leaked Ahead of Launch
Toyota Fortuner Facelift India Launch Slated For January 6, 2021

redpajama_set_name: RedPajamaCommonCrawl


Want a clear looking gravy? Use cornflour instead.
The best way to combine the ingredients is to start melting the butter and flour together in a pot to create a "Roux". Once that delicious ball of fat and flour has been created slowly add the fluid and bash with a whisk to break down the blobs of flour. Keep adding the fluid until desired consistency is reached. Keep in mind when the gravy cools it gets thicker.
Enjoy, Rinse pot & repeat!


text:
Rome Study Abroad Students Encounter "People as People"
Students studying abroad in Rome during spring 2015 curated a photo exhibit entitled Negli Occhi dell'altro: Cinque americani raccontano le periferie di Roma (In the other's eyes, five Americans portray the Roman peripheries), which was organized in collaboration with Centro Culturale Roma at Il Cantuccio al Senato and opened May 5, 2015. Notre Dame collaborates with several organizations in Rome, including the Community of Sant'Egidio, Tevereterno, and Comunione e Liberazione.
In the words of student Antonio Marchi:
In its inaugural year, "All Roads Lead to Rome," the interdisciplinary course for Notre Dame students studying abroad in Rome, sought to encourage an authentic encounter with the rich past and present of the city, both inside and outside the classroom. As part of this mission, the course includes a civic engagement component that allows students the opportunity to experience the life of the city on a deep and personal level. For me and three other students and friends in the class, this encounter has come in the form of working on Rome's periphery with Comunione e Liberazione. Our mission was simple: exposure as a means of encouraging compassionate eyes and hearts.
As a team, we venture out to some of the more impoverished outskirts of the city, and we photograph the mysterious and the intriguing. Whether we are capturing moments of the life of people on the streets or laundry in the wind, at the heart of each image is a story that needs to be told. Though we are working toward a final goal of putting together an exhibition, the process along the way has proved to be the most invaluable aspect of this experience. Every shot we take gives us an opportunity to reflect on who we are in terms of whom or what we encounter. All the while, we are left with a deep awareness of the fundamental value of the individual and a striking appreciation of what it means to see people as people.
Antonio Marchi, Class of 2016
Majors: Theology and psychology
Minors: Art studio and Italian


text:
HOME | INTRODUCTION | PICTURES | FEATURE | FORUM | INFO | YOUR HOST | ARCHIVE | GUESTBOOK | LINKS
by Michael Neal �
Bringing you the buses of south-west Norway
� WEB-CAM
Click the picture to see
Stavanger city-centre
as it is now.
Updated every 5 minutes.
Introduction to Stavanger and its buses.
Latest Pictures from Stavanger and surrounding district.
Feature on a variety of bus related subjects.
Forum is the opinion page.
Travel Information and contacts in the Stavanger area. Also in Norwegian.
MeetYour Host on this page.
The Archive for more pictures and features.
The Guestbook. Don't forget to sign !
Links to other (mainly bus related) sites.
SBP SITE SEARCH
Enter Searchword
Looking for pictures of specific bus types on this Site? Use
WebPoll
Do you travel by bus ?
Click here to see how others have voted.
What's new on site?
3. October 2003, the Pictures pages is updated with a selection of pictures taken in October 2003 in Stavanger city centre.
22. July 2003, yes at last, an update on this website. Continuing with what has been a very popular theme in the past, old advertising, the Feature Page has been updated with a selection of British Road Transport industry advertisements from 1955.
With 2 other websites to look after and many other commitments the time available to maintain the site is limited. I have therefore decided to omit the News section from the index page which has resulted in this slightly new format.
19. January 2003, the Pictures page gets an update which is now well overdue. The delay was caused by my working on a new site for Rutebilhistorisk Forening of which I am now also webmaster.
1. October 2002, the Pictures page is updated with a new set of pictures taken in Stavanger in July and September 2002.
18. September 2002, to help you find what you're looking for, the archived features have now been grouped according to subject matter.
26. August 2002, the Links page has received a thorough overhaul. There shouldn't be a dead link to be seen!
12. August 2002, a number of minor changes; page update dates are now shown near the foot of each page. Among improvements to the Site Search Engine script are: The sample text displayed in the Search Engine results will now begin and end with whole words instead of them being randomly and unceremoniously chopped off. Total matches will now be shown at the top of the results display.
1. August 2002, the Feature page is updated with two pages of pictures taken in various locations along Norway's south coast.
1. June 2002, at last, the Pictures page is updated with a selection of pictures from Stavanger.
8. May 2002, I have recently discovered that visitors with "Norton Internet Security" software running on their PCs have been unable to run the scripts on this site. I have now made the necessary changes to the code which seems to have alleviated the problem.
1. April 2002, you can see the final part of the Park Royal Vehicles series on the Feature page, with pictures of the bus body production process at the old Abbey Road Works.
26. March 2002, sometime between December 2001 and now I uploaded an old version of one of the Guestbook files which has resulted in visitors getting an error message when they tried to sign the Guestbook. It's the second time I've done this and I promise I will not do it again!
1. February 2002, the Feature is updated with 2 pages of pictures from the southern Norwegian town of Arendal.
29. January 2002, the Drammen page is updated with production years for the DOB buses. The information was gleaned from the RHF website's fleet lists.
� e-mail: post@motorbus.net �
This page was last updated on: 3 June 2011
Copyright �1999-2003 Michael Neal


Genomics-2015 conference welcomes attendees, participants, students and exhibitors from all over the world to San Antonio, USA. We are delighted to invite you all to attend and register for the "3rd International Conference on Genomics and Pharmacogenomics (Genomics-2015)" which is going to be held during September 21-23, 2015 in San Antonio, USA. Genomics events San Antonio deals with current issues in the fields of Next generation sequencing, Pharmacogenomics, Clinical Genomics, Cancer Genomics, Bioinformatics and Biotechnology which are certainly a key issue in the modern perspective and through this conference we will get all relevant information regarding the recent achievements in the respective field. This Genomics & Pharmacogenomics 2015 Conference will provide a perfect platform to all the Doctors, Researchers, Business Delegates and Scientists to approach and deliver all the attendees about the latest scientific advancements on the respective sphere.
San Antonio is the fastest growing of the top 10 largest cities in the United States from 2000 to 2010, and the second from 1990 to 2000. The San Antonio 1000 Cancer Genome Project was established to accelerate the development of a cure for cancer by conducting whole genome sequencing of cancerous and normal tissues. The global genomics market was valued at an estimated $11.11 billion in 2013 and is expected to grow at a CAGR of over 12.0% from 2013 to 2018. The largest segment in the products market was the consumables segment, which accounted for over 60% of the total market revenues. The PCR segment constitutes the largest technology segment in the global market.
The previous conferences on Genomics & Pharmacogenomics which were held at Chicago, USA and North Carolina, USA have explained Research& advancements in Genomics gained so much of interest for eminent scientists all over the world in the field of Genomics & and its allied areas. Now it is the time for the 3rd International Conference on Genomics and Pharmacogenomics to address the theme "Implications and Impacts of Genomic Advances on Global Health" which will be held from September 21-23, 2015 at San Antonio, USA.
Cancer Genomics study is being supported by more than 50+ national genetic societies. American Society of Human Genetics (ASHG), National Society of Genetic Counselors (NSGC), American College of Medical Genetics (ACMG), Canadian College of Medical Geneticists, College Canadian de Généticiens Médicaux (CCMG), Association of Genetic Nurses and Counselors (AGNC), United Kingdom, Association of Clinical Cytogeneticists(ACC), British Society for Human Genetics (BSHG), Armenian Society of Human Genetics, Austrian Society of Human Genetics, Belgian Society of Human Genetics, British Society of Genetic Medicine, Bulgarian Society of Human Genetics.
The key players in the cancer/tumor profiling market are Boreal Genomics Inc. (U.S.), Caris Life Sciences (U.S.), Genomic Health Inc. (U.S.), Illumina Inc. (U.S.), Life Technologies Corporation (U.S.), NeoGenomics Laboratories (U.S.), Oxford Gene Technology Ltd. (U.K.), Precision Therapeutics Inc. (U.S.), bioTheranostics (U.S.), Proteome Sciences PLC (U.K.), Agendia (The Netherlands), Nanostring Technologies (U.S.), Rational Therapeutics (U.S.), Oncopath Laboratories (U.S.), and RiboMed Biotechnologies Inc.(U.S).The global cancer/tumor profiling market was valued at $13.30 billion in 2012. At the end of 2013, the market is estimated to be $14.99 billion and is poised to reach around $35 billion by 2018, growing at a CAGR of 18.50% from 2013 to 2018. National Institutes of Health awards total approximately $6.7 million in the first year and, if funding remains available, approximately $27 million in total.
Functional Genomics use vast wealth of data produced by genomic and transcriptomic projectstodescribe gene functions and interactions. Trends in Functional Genomics are Affymetrix emerged as an early innovator in this area by inventing a practical way to analyze gene function as a system. NimbleGen Systems and Febit, are developing fabricated microarrays that are produced using a micro mirror based, mask less system. Texas Instruments developed the micro mirrors that direct light onto specific areas of a grid to activate the DNA synthesis reaction and elongate oligonucleotide chains. BioRobotics, Genetix, Genomic Solutions, and others offer a wide range of products needed to manufacture arrays. Applied Biosystems, PerkinElmer, Qiagen, and Zymark Corporation manufacture automated work stations and robotic systems to fully automate routine laboratory procedures. Invitrogen, PanVera, and Roche Applied Science, have developed complete biochemical and cellular assays that are compatible with high throughput systems Applied Bio systems offers a wide range of core instruments and systems necessary for functional genomics, such as DNA sequencers and synthesizers.
American Society of Transplant Surgeons Up to $100,000 per year ($50,000 in cash and up to $50,000 in-kind) for 2 years. For purposes of this grant, in-kind support is limited to the cost of assays. Genomics Market in the US 2014-2018 and Global Genomics Market 2014-2018 research reports to its store. Functional Genomics market in the US is forecast to grow at a CAGR of 7.28% over the period 2013-2018 whereas the global genomics industry is projected to grow at 11.21% CAGR during the same time. Global genomics market research for 2014-2018 considers the revenue generated by vendors through the sales of instruments, consumables, and services for genomics to arrive at a ranking of the leading vendors of the market, and to calculate the market size.
Next generation sequencing (NGS), massively parallel or deep sequencing are related terms that describe a DNA sequencing technology which has revolutionized genomic research. The global next Generation Sequencing market is poised to grow at a CAGR of more than 20% to reach around $5.0 billion by 2020. The NGS market assessment was made based on products, technologies, end users, applications and geography.
NGS Providers : AC-Gen Reading Life S.L., Eurofins MWG Operon, Mount Sinai Genomics Core Facility, Otogenetics Corporation, Xcelris Genomics, Zymo Research, Cofactor Genomics. The North American region accounts for the largest share of the next generation sequencing market. The European and Asian markets are also expected to grow due to the favorable funding from the government to adopt this technology. The major factors contributing to this market growth include rising adoption by new customers, rising adoption of high-throughput sequencing platforms by government organizations such as Biotechnology and Biological Sciences Research Council (BBSRC) (U.K.) and NHGRI (National Human Genome Research Institute) (U.S.). Roche and Foundation Medicine announced an agreement that is worth up to $1.2 billion. Roche agreed to acquire a majority interest in Foundation Medicine for approximately $780 million. Roche also agreed to invest $250 million in Foundation Medicine, and to fund potentially more than $150 million of R&D.
Companies are raising money: In just the first part of January 2015, In addition to Roche's investment in Foundation Medicine, 10X Genomics closed a $55.5 million Series B financing and Invitae filed for an initial public offering, These follow a busy 2014 year that saw many investments in next generation sequencing companies and companies with products or services related to next generation sequencing. Agreements with pharmaceutical companies: Companies in the pharmaceutical industry have recognized the potential benefits of next generation sequencing as a research and development tool. During just part of 2015, Genentech announced two agreements, and Pfizer announced one.
Biomarker is a measurable indicator of the severity or presence of some disease state.
Biomarkers continue to become increasingly relevant in research and healthcare applications, as evidenced by the global market for products involved in their identification, validation, and use estimated at $8.3 billion in 2007 and projected to increase to $15 billion in 2010. The accelerating pace of activity in this area is further underlined by a cursory review of the publication space, where the number of relevant scientific articles generated annually has doubled from 20,000 to 40,000 over the past decade. AACR, in partnership with the Food and Drug Administration (FDA) and National Cancer Institute (NCI), formed the AACR-FDA-NCI Cancer Biomarkers Collaborative (CBC) to accelerate the translation of cancer therapeutics into the clinic by shaping the processes for the effective development of validated biomarkers and their use in clinical trials for maximum patient benefit.
Biomarkers Market - ([Discovery Technologies - Proteomics, Genomics, Imaging, Bioinformatics], Validation Services, Applications [drug development, personalized medicine], Diseases [Oncology, Cardiology, Neurology]) - Global Trends & Forecasts (2013–2018), analyzes and studies the major market drivers, restraints, and opportunities in North America, Europe, Asia-Pacific, and Rest of the World (RoW). A number of factors such as the rising demand for personalized medicine and companion diagnostics have increased the utility of biomarkers in the healthcare sector. The global biomarkers market is expected to grow at a CAGR of 18.5% from 2013-2018,to reach $40.8 billion by 2018. Roche Diagnostics Limited (Switzerland), Johnson & Johnson (U.S.), Siemens Healthcare (Germany), Abbott Laboratories, Inc. (U.S.), and Bio-Rad Laboratories, Inc. (U.S.) are actively adopting the strategy of partnerships and collaborations, to ensure their growth in the biomarkers market.
Pharmacogenomics is the study of the role of genetics in drug response.
Computational advances in Pharmacogenomics has proven to be a blessing in research. A large amount of research in the biomedical sciences regarding Pharmacogenomics as of late stems from combinatorial chemistry, genomic mining, omic technologies and high throughput screening. In order for the field to grow rich knowledge enterprises and business must work more closely together and adopt simulation strategies. Major Universities dealing Pharmacogenomics are: Harvard University, US, , University of Cambridge, UK, National University of Singapore, Singapore, University of Oxford, UK, Karolinska Institute, Sweden, Monash University, Australia, Imperial College London, UK, University of Tokyo, Japan, University of Melbourne, Australia, University of Michigan, US.
North America holds the leading position in Pharmacogenomics market followed by Europe.
The global genotyping market is expected to reach $17.0 Billion in 2020 from $ 6.2 Billion in 2015, at a healthy CAGR of 22.3% from 2015 to 2020. Growth in this market is attributed to the increasing incidence of genetic diseases & increasing awareness about personalized medicine, technological advancements, decreasing prices of DNA sequencing, growing importance of SNP genotyping in drug development, and the increasing demand for genetic analysis in animal & plant livestock. The Asia-Pacific market is expected to grow at a CAGR of 25.4% during the forecast period of 2015-2020.
Clinical Genomics is the use of genome sequencing to inform patient diagnosis and care. The California Initiative to Advance Precision Medicine has just been launched, and it is being headed by UCSF's high profile recent hire, Atul Butte.
American College of Medical Genetics, formed in 1991 to help improve health through medical genetics, regularly publishes a list of internationally-recognized standards and guidelines describing best practices for testing using genetic approaches. In addition, the International Standards for Cytogenomic Arrays (ISCA) Consortium, of which OGT is a member, is a growing group of molecular genetics laboratories actively working towards improving healthcare through the establishment of guidelines for molecular testing, including the creation of standardized a CGH arrays for clinical genetics research. The Cancer Cytogenomics Microarray Consortium (CCMC) is a similar group, recently founded with the goal of maximizing the benefits provided by microarrays for cancer research. These groups continue to work towards outlining a set of standards to ensure that molecular techniques improve and enhance the services provided by clinical research laboratories.
The global market for Clinical Genomics is expected to reach USD 22.1 billion by 2020, growing at an estimated CAGR of 10.3% from 2014 to 2020, according to a new study by Grand View Research, Inc.
Genomics play an imperative role in the field of infectious disease testing by enabling the use of fast and effective result rendering molecular diagnostic tests. Genomics based diagnostics dominated the overall market in terms of revenue at 36.4% in 2013 majorly owing to the presence of a relatively larger number of R&D programs. Genomics based personalized medicine segment on the other hand is expected to grow at the fastest CAGR of over 12.0% from 2014 to 2020 due to increasing demand for population based therapeutic solutions and subsequent increase in R&D initiatives. Australian Genome Research Facility (Australia), Baylor College of Medicine Human Genome Sequencing Center (Houston, TX, USA), BC Genome Sciences Centre (BCGSC) – Vancouver, BC, Canada, Beijing Genomics Institute (BGI) – China, Broad Institute of MIT and Harvard – Boston, MA, USA, Cold Spring Harbor Laboratory (CSHL) – Cold Spring Harbor, NY, USA, DOE Joint Genome Institute (JGI) – Walnut Creek, CA, USA, Garvan Institute – Australia, Genome Analysis Center (TGAC) - Norwich, UK, Genome Institute at Washington University (TGI) – St. Louis, MO, USA.
MicroRNAs constitute a recently discovered class of non-coding RNAs that play key roles in the regulation of gene expression. According to the International Agency for Research on Cancer (IARC), a specialized agency of the WHO, about 12.7 million new cancer cases were reported in 2008 and the number reached 14.1 million in 2012. MicroRNAs are used as a biomarker for cancer diagnosis and treatment. Some of the major companies operating in the global microRNA market are Affymetrix Inc., Alnylam Pharmaceuticals Inc., Santaris Pharma A/S, Exiqon A/S, AstraZeneca Pharmaceuticals LP, Biogen Idec Inc., Eli Lilly and Co., Pfizer Inc., CBC Comprehensive Biomarker Center GmbH, F. Hoffman-La Roche, GlaxoSmithKline, Merck & Co. Inc., Novartis AG and Sigma-Aldrich. GlaxoSmithKline (GSK) has established collaboration with Regulus Therapeutics to develop and commercialize therapeutics targeting microRNA-122 for hepatitis C virus (HCV) infection. Universities offering MicroRNA Research studies are: Johns Hopkins University, Harvard University, NCI, University of California, University of Virginia, University of Cambridge, Vienna Bioctr, and Babraham Institute. The Danish High Technology has granted Research fund EUR 1.3 m (USD 1.6 m) for a research project in microRNA (miRNA) which is being conducted in collaboration between the Department for Medical Biochemistry and Genetics at the University of Copenhagen and Santaris Pharma, a biopharmaceutical company based in Horsholm SciencePark.
Genome Project is an international scientific research project with the goal of determining the sequence of chemical base pairs which make up DNA, and of identifying and mapping all of the genes of the genome from both a physical and functional standpoint. Human Genome Project were to provide a complete and accurate sequence of the 3 billion DNA base pairs that make up the human genome and to find all of the estimated 20,000 to 25,000 human genes. The Project also aimed to sequence the genomes of several other organisms that are important to medical research, such as the mouse and the fruit fly.
Bioinformatics the science of collecting and analyzing complex biological data such as genetic codes. Molecular medicine requires the integration and analysis of genomic, molecular, cellular, as well as clinical data and it thus offers a remarkable set of challenges to bioinformatics. Bioinformatics nowadays has an essential role both, in deciphering genomic, transcriptomic, and proteomic data generated by high-throughput experimental technologies, and in organizing information gathered from traditional biology and medicine. Research Centers for Bioinformatics are: National Centers for Biomedical Computing, National Center for Simulation of Biological Structures, National Center for the Multiscale Analysis of Genomic and Cellular Networks, National Alliance for Medical Image Computing (NA-MIC), National Center for Biomedical Ontology (NCBO) at Stanford University, Integrate Data for Analysis, Anonymization, and Sharing (IDASH) at the University of California, San Diego. The Canadian government is also ponying up cash for omics research, with the Canada Foundation for Innovation backing several projects as part of a C$30.4 million ($27.6 million) investment in academic research. McGill University scooped the joint-biggest award for a project, C$400,000, to advance its single-cell genomics infrastructure.
TSB is working with its partners in Northern Ireland and Scotland to make £2.75 million ($4.6 million) available to small businesses involved with bioinformatics and other sectors. The cash will be divvied up into £50,000 to £150,000 awards to help startups run feasibility studies. The global bioinformatics market is estimated to reach $4.2 billion by the end in 2014 and is poised to reach $13.3 billion by 2020 at a CAGR of 20.9% from 2015 to 2020. In 2015, North America is expected to account for the largest share of the bioinformatics market, followed by Europe. Both markets are estimated to register double-digit growth rates over the next five years.
Reproductive Genomics a field of medical genetics integrated with reproductive medicine, assisted reproduction, and developmental genetics, involves a wide array of genetic tests that are conducted with the intent of informing individuals about the possible outcomes of current or future pregnancies. The tests themselves can include the analysis of chromosomes, DNA, RNA, genes, and/or gene products to determine whether an alteration is present that is causing or is likely to cause a specific disease or condition. A five-year, $10 million Specialized Research Center grant from the National Institutes of Health (NIH) for Reproductive Genomics will help scientists from across campus tackle the roots of reproductive issues and train the next generation of reproduction scientists.
National Science Foundation (NSF) announces its intention to continue to support plant genome research through the Plant Genome Research Program (PGRP). Plant Genomics Research Program (PGRP) awards from the National Science Foundation (NSF) that NSF offers supplements to support research collaboration with scientist sin developing countries. The intent of Developing Country Collaborations in Plant Genome Research (DCC-PGR) awards is to support collaborative research linking U.S. researchers with partners from developing countries to solve problems of mutual interest in agriculture, energy and the environment, while placing U.S. and international researchers at the center of a global network of scientific excellence.
The Department of Energy's (DOE) Office of Biological and Environmental Research has teamed with the U.S. Department of Agriculture (USDA) National Institute of Food and Agriculture's Agriculture and Food Research Initiative to fund projects that accelerate plant breeding programs and improve biomass feed stocks by characterizing the genes, proteins, and molecular interactions that influence biomass production. According to a new market research report the global Genotyping Market is expected to reach $17.0 Billion in 2020 from $ 6.2 Billion in 2015, at a healthy CAGR of 22.3% from 2015 to 2020. DALLAS – a new report from Markets and Markets predicts that the global market for genotyping will hit $17 billion by 2020, up from its current $6.2 billion, which translates to a robust 22.3 percent compound annual growth rate for the years 2015-2020. Universities offering Plant Genomics are: Cornell University, University of California—Davis, University of California—Berkeley, Harvard University, Wageningen, University and Research Center, University of Oxford, University of British Columbia, University of Tokyo, University of Florida, University of Cambridge.
Microbial Genomics- applies recombinant DNA, DNA sequencing methods, and bioinformatics to sequence, assemble, and analyze the function and structure of genomes in microbes. Genetics Otago is the largest center for advanced Genetics research in Australia. Focus on 7 main themes, which cover the full spectrum of genetics research. The Centre of Microbial and Plant Genetics (CMPG) was founded in 1953 discoverer of crossing-over sites in chromosomes of meiotic cells. A number of important scientific opportunities exist in genome analysis related to microbiology. Current genome projects, however, do not adequately represent the full range of microorganisms. A microbial genome program based on rational priorities is needed to make strategic decisions about the appropriation and distribution of funding and resources. OpGen filed plans with the U.S. Securities and Exchange Commission to sell 3.75 million shares in an initial public offering with the goal of securing up to $35.2 million. The Gaithersburg, Md.-based microbial genetics analysis company said it will use the money as working capital and to support increased sales and marketing efforts for its genetic tests for multidrug resistance organisms.
A decade ago, researchers were tentatively exploring the first reference human genome sequences, which cost over $1 billion to produce. Advances in sequencing technologies that can now sequence a person's entire genome — more than 6000 million bases — in days, at a cost of US$1000,3 with costs expected to fall further in coming years. Genomic medicine has already shown benefit in refining diagnoses and guiding therapeutic approaches for cancer. Pharmacogenomics is the study of the role of genetics in drug response. Computational advances in Pharmacogenomics has proven to be a blessing in research. A large amount of research in the biomedical sciences regarding Pharmacogenomics as of late stems from combinatorial chemistry, genomic mining, omic technologies and high throughput screening.
Analysts forecast the Global mRNA market to grow at a CAGR of 13.36 percent over the period 2014-2019. Current trends in mRNA analysis are: RNA sequencing uncovers mechanisms regulating gene expression. The global transcriptomics market was valued at $1,743.2 in 2013. This market is expected to reach $3,773.0 million by 2019 at a CAGR of 13.7% from 2014 to 2019. In this report, the global transcriptomics market is segmented as by technology, by applications, and by end-users. Market by technology comprises of microarray, PCR, sequencing, and RNAi gene silencing technologies whereas, the market by applications include clinical diagnostics, drug discovery, and toxicogenomics. The market by end-users includes pharmaceutical and biotechnology companies, academic research and government institutes, and hospitals and diagnostic centers.
Clinical genomics is the use of genome sequencing to inform patient diagnosis and care. The global market for clinical laboratory services in Clinical Genomics is expected to record a CAGR of 5.8% during the forecast period of 2013 to 2019, to grow from a USD 162.71 billion market in 2012 to a USD 241.37 billion market in 2019.
Genome medicine has been predicated upon advances in genomics, proteomics and metabolomics, completion of the human genome map and development of targeted diagnostics and therapeutics. The market for Genome Medicine in the United States is already $232 billion, and it is projected to grow 11 percent annually.
Genomic imprinting is the epigenetic phenomenon by which certain genes are expressed in a parent-of-origin-specific manner. Genome Imprinting is a dynamic process. It must be possible to erase and re-establish imprints through each generation so that genes that are imprinted in an adult may still be expressed in that adult's offspring.
Single Cell Genomics approaches to understand the scale of genomic, epigenomic, and transcriptomic diversity that occurs during the lifetime of an individual organism. Single-Cell Genomics Reveals the Extent of Somatic Variation in Development and Disease.
Synthetic Genomics is using modified or synthetically produced microorganisms to produce the alternative bio-fuels. Synthetic genomics is unlike genetic modification in the sense that it does not use naturally occurring genes in its life forms. It use custom designed base pair series, though in a more expanded and presently unrealized sense synthetic genomics could utilize genetic codes that are not composed of the two base pairs of DNA that are currently used by life.
Gene Annotation is the process by which pertinent information about these raw DNA sequences is added to the genome databases. Genome annotation remains a major challenge for scientists investigating the human genome, now that the genome sequences of more than a thousand human individuals and several model organisms are largely complete.
Genomics Health is the use of genomics information to benefit public health. Genomics Health is visualized as more effective personalized preventive care and disease treatments with better specificity, targeted to the genetic makeup of each patient.
Computational Genomics refers to the use of computational and statistical analysis to decipher biology from genome sequences and related data. Computational genomics regarded as a subset of bioinformatics and computational biology, with a focus on using whole genomes to understand the principles of how the DNA of a species controls its biology at the molecular level and beyond.
Genome Sequencing determines the complete DNA sequence of an organism's genome at a single time. The Genome sequencing all of organisms includes chromosomal DNA as well as DNA contained in the mitochondria and, for plants, in the chloroplast.
Marine genomics has enormous potential to improve our lifestyles and prosperity, and to assist with governance and sustainable management of the marine environment. Today, Marine genomics knowledge is a vital part of "blue biotechnology", and is leading to applications in the management of natural and cultured resources, and preserving marine environments.
The aim of structural genomics is to characterize the structure of the genome. Structural genomics proceeds through increasing levels of analytic resolution, starting with the assignment of genes and markers to individual chromosomes, then the mapping of these genes and markers within a chromosome, and finally the preparation of a physical map culminating in sequencing.
Genomic Seminars brings the world's leading researchers from a broad spectrum of scientific areas to campus to discuss latest advances in genetics, genomics, proteomics, computational research and related emerging tools and technologies. The Genomics Seminar is a unique forum for graduate students, post-docs, and other scientists with comparable levels of experience and education to present and exchange new data and cutting edge ideas.
Genomic Meetings provide a platform for all the Professors, Researchers, Students to show case their research in the field of Genomics & Pharmacogenomics. Genomics Meetings discuss recent inventions and innovations in the genetic technology.
Genomics Conference is a directory for Scientific and technical advancements in the field of Genomics & Pharmacogenomics. Genomics Conference gathers technocrats and industrial giants to exchange their views in the upgrading of genomics in global health.
Genome Expo introduces the heights of recent innovative advancements in the Genomic Technology. Genome Expo will lay stone for exhibiting updated modules in center of human intelligence.
Genome Biology is the study of genes, heredity, and genetic variation in living organisms. Genome Biology considered a field of biology, but it intersects frequently with many of the life sciences and is strongly linked with the study of information systems.
Pharmacogenomics is the tailoring of drug treatments to people's genetic makeup, a form of personalized medicine. Pharmacogenomics aims to develop rational means to optimize drug therapy, with respect to the patients' genotype, to ensure maximum efficacy with minimal adverse effects.


A Ponemon Institute research into the bring your own device (BYOD) trend has found that about 60% of UK businesses have no personal device policy in place and are putting critical data at risk once it leaves a company, whether through BYOD or public cloud-based file-sharing.
By ignoring simple security steps and employee BYOD education, companies are jeopardising their confidential data, exposing it to theft, corruption, hackers, malware and more, the research report has warned.
The study, 2013 Data Protection Trends Research, found that 58% of the 570 UK IT chiefs surveyed admitted to not having a BYOD policy in place to manage employee-owned mobile devices, such as tablets and smartphones.
A wide majority (80%) of organisations have not educated employees on BYOD privacy risks, while 31% of IT teams said employee-owned devices were not allowed, illustrating that organisations are still in denial when it comes to consumer IT trends.
Another 23% have opened up the company network to make exceptions for executives, who may be handling sensitive data. This puts businesses at an increasing risk of data loss and serious compliance issues, according to the research firm.
BYOD - a bright idea with a tarnished lifecycle?
The report, commissioned by backup provider Acronis, revealed that currently, only 21% of the respondents mandated a device password or key lock on personal devices, and only 18% performed remote device wipes when employees leave the company.
The study stated that employees commonly share corporate files through third-party cloud storage solutions such as DropBox, but as many as 69% of organisations do not have a policy in place around public cloud use and 80% have not trained their employees in the proper use of these platforms.
Experts have previously warned that BYOD and IT consumerisation are not just passing fads and that they are here to stay.
While 59% of UK organisations said they will support Apple's Mac machines in the next year, more than half (61%) said compatibility and interoperability are still big obstacles to making Macs compliant with enterprise IT, which puts data stored and shared across the corporate network and on Apple devices at risk.
The study's findings are in line with a previous YouGov report which revealed that many UK employers are failing to provide guidance on the usage of personal devices at work – potentially putting personal information at risk.
"Personal devices have permanently and positively changed the workplace, particularly in the way employees collaborate, work remotely and interact with company data," said Rick Powles, managing director UK and Ireland at Acronis.
To optimise BYOD and to avoid data loss and compliance issues, organisations should take immediate steps to ensure employees are trained in safe BYOD practices, that personal device and public cloud use are monitored and managed, and that effective data protection strategies are in place to prevent data loss, Powles advised. These are the critical steps to achieving safe BYOD.
The study was part of Ponemon Institute's global survey of 4,374 IT practitioners which included more than 570 respondents from the UK, spanning from mid-sized to large enterprises.
It also showed that, despite many UK companies lacking in devising a BYOD strategy, the UK was ahead of the US in embracing BYOD and planning policies around employee device management. This finding echoed Citrix's European chief's remark that BYOD strategies are being adopted much faster in Europe than the US.


text:
The Library of Congress > Researchers > Search Finding Aids > Gatewood W. Dunston collection relating to William S. Hart, 1914-1955
Gatewood W. Dunston collection relating to William S. Hart, 1914-1955
William Surrey Hart
circa 1874 Born, Newburgh, N.Y.
1890-1914 As an actor, barnstormed the country playing opposite leading stars such as Julia Arthur and Modjeska, later finding success in western plays
1914 Made first screen appearance in Jim Cameron's Wife, a California production by his friend, Thomas H. Ince
1917-1926 Became a world-famous film star and director of many movies in which he played the leading roles
1921 Married Winifred Westover, actress and his leading lady in several films
1926-1940 Claimed that he was kept out of movies by Joseph Schenck, head of United Artists Corp., and other businessmen in the movies
1929 Published My Life East and West. Boston: Houghton Mifflin
1940 Was awarded $375,000 by the New York Supreme Court in suit against United Artists for selling Tumbleweeds in violation of contract
1946, June 23 Died, Hollywood, Calif.


I run a scan and this comes up - Insecure program: Sun Java JRE 1.6.x / 6.x I click on the Solution and the program comes up. I download it. I'm told that the program is already in my computer. The problem remains. Help? I am using a Dell 5100, an XP machine. Everything is up to date.
If still having problems, post back here.


text:
Mike Munsell
Canary Media
Riddle Earth
15 Minutes of Internet Fame
Tag Archives for Greatest Hits
Down and Up Again: A Grand Canyon Story
Standing at the top of the Grand Canyon, we peered over the rim. "That's the Colorado River," said Kev. "We're hiking down there tomorrow." The sun set 20 minutes before, and the canyon was shrouded in a dark blue haze. It was 40 degrees and Kyle was still damp from our swim at Slide Rock Park. The depth of the canyon was difficult to perceive from our vantage point, 5,000 feet above the floor. We'd learn first-hand in the morning.
"Don't try to make it to the river and back in a day," reads the signs. The phrase is also prominently featured on the Grand Canyon's home page. Depending on the route you choose, hiking from the rim of the canyon to the river and back is no fewer than 15 miles, while descending and ascending a total of 10,000 vertical feet.
First cliché (pronounced KLEETCH) photo of the day
The warnings are valid. The bottom of the canyon can reach well over 100 degrees Fahrenheit, and the top is at an elevation of 7,000 feet where the oxygen is much thinner than sea-level coast dwellers are used to.
But, we all have the adventure gene in us.
At 5:20 AM, we began our descent down South Kaibob with headlamps on, illuminating the dusty path in front of us. Spirits were high as we sauntered down the first mile, taking photographs along the way. Sharp corners and steep drops halted my excitement, and acrophobic waves swept over me. I'd round the corner and the tides of fear would go out, and the ecstasy rolled back in.
In most sections, the trail is about 7 feet wide. It's enough space for a fully-packed mule to pass a broad-shouldered man or wide-hipped woman, but not much more.
The sun rose at 5:54 AM. A couple sat on the edge of the trail and watched as the canyon turned from blue-grey to orange, then copper.
We could not have asked for a more perfect day. Temperatures never rose above 85, and a cloud ceiling protected us from the direct sun through the course of the entire day.
The hike down South Kaibob was 7.4 miles. Every mile was a new landscape. One mile we left Arizona and ended up on Mars.
http://instagram.com/p/m_vD_Qjzd0/
Another, we traversed what could have been the Moon. Paths evolved from dirt steps, to stone, to red dust and to fine sand. Temperatures climbed as we descended. Vegetation, rock formations, and colors were in constant flux.
Despite all of the time we spent taking pictures and admiring the landscape, we reached the surprisingly green Colorado River just after 9:00 AM.
"We're crossing the Colorado – you've been waiting all week for this!" I said to Kev. "I've been waiting almost my whole life," he replied.
Kyle took a life-altering reprieve in the bathroom, Kev scouted out a trail toward the northern rim, and I found a picnic table for us to take a snack break. We gobbled down fruit, meal replacement bars, and handfuls of nuts and hemp seeds, as a squirrel sat patiently, waiting for scraps to scavenge.
We began ascending the Bright Angel trail, a 9.5 mile hike back up to the South Rim. Walking along the Colorado, we waved to a group of white water rafters who were about at the halfway point of their 16-day float. They were to our right, about 60 feet below.
We approached a narrow pass. A man traveling alone was heading in the opposite direction, straight toward us. I began to slow, so we didn't have to simultaneously cross the approaching four foot wide path. Instead of continuing straight along his course, he jumped onto a stone wall, no wider than a balance beam, marking the edge of the cliff. A fall would kill him.
He didn't slow, nor blink, just kept on walking . As he hopped off the wall, back on the path, he lost footing in the gravel. He leaned forward and caught himself with his left leg. Unphased, he kept walking. "His life just flashed before my eyes," I told Kev.
After the near-death meander along the river and an underwhelming cave exploration, we ascended our first switchback of the day. We were able to catch our breath quickly as there were more flats to cross before hitting Indian Garden.
We thought we had seen it all – Mars red hillsides, Cape Cod sands, the Moon, a Grand Canyon sunrise. But Indian Garden was another new landscape in our ever shifting journey. A stream cuts through the arid terrain and feeds a narrow, lush forest. The scent of flowers was kept afloat in the slightly more humid air.
We filled our water vessels in Indian Garden and began the last leg of the journey, 3,000 vertical feet over the course of four miles. Kyle, with empty bowels and a sudden caffeine kick led the charge. We began the final ascent at a good clip, taking frequent but quick water and snack breaks.
Kevin, after accidentally breaking his jar of peanut butter the night before the trip, was running on fumes from a lack of protein. His dietary restrictions limited him to fruit and seeds for the day. Like a terribly inefficient SUV, he had to pull over and refuel every few hundred vertical feet.
Eventually, we rounded a corner and we could see the top. Our eyes straight ahead, we tried our best not to push any of the hundreds of tourists off the increasingly congested trail as we marched to the top. I grabbed the first person I came across and asked her to take our photo.
High energy and good spirits at the top
Our bodies sore, but our minds refreshed, we drove back to Phoenix the next day. We talked about hiking the Berkshires, Mt. Washington, John Muir Way, Joshua Tree National Park. Conversation led to weddings, work, wives, fiancees, budgets, vacation hours. No more trips this year, hopefully next though.
April 29, 2014 by mikemunsell Categories: Uncategorized | Tags: Greatest Hits | 2 Comments
The Munsell Limited
There are few items I own that I'm attached to. But one of them sits in my pocket all day and on my bed stand at night. And it's not my phone. That's more obsession than attachment.
It's actually a simple item and one of the most inexpensive purchases I've made outside of a penny candy store. It's a small wooden elephant, less than two inches in height. He hangs on a ring in between my house key and Hubway pass.
It was the summer of 2008. I had graduated college two months prior, and my younger brother Zack finished his senior year of high school. We sat in the living room watching The Darjeeling Limited, a movie about three brothers traversing a new country and continent. In twelve hours, we would be on a similar excursion with our older brother Dave who was volunteering with the Peace Corps in Mali. The three Munsell brothers, traversing West Africa. The Munsell Limited.
While in Mali, Dave kept a very regular blog. I'll summarize my experience of the trip by pulling out some quotes from his blog and adding my own photos and commentary. It will no doubt be a more realistic account than I could drum up after five and a half years.
"The first leg of our trip took us down to Bougoni and Sikasso where Zack freestyle rapped in a night club called Alcatraz and then threw up all over Mike's face in a taxi the next day."
We had to feed Zack a bit of liquid courage at the club, but the Malians were impressed with his rapping skills. Unbeknownst to them, due to language barriers, he did repeat the same lines a number of times.
As for getting puked on – it was unrelated to the liquid courage and brought on by something he ate. But, I laughed hysterically and wiped it off. Dave's friend Sophie commented on how close we were as brothers if we could handle being puked on by one another.
"The ride to Douentza was memorable because Mike was sick."
Yep. I puked upwards of twenty times that night. Though, I had eaten some inedible nut shells.
"I whipped out a pair of pants from my backpack and tied the legs together, creating a makeshift puke bag."
This is still the most MaGyver-esque thing I've ever witnessed.
"Sorry, but I have very little sympathy for throwing up and/or diarrhea in Mali. If you get Malaria, then I'll send you a get well card."
Thanks brother.
"At night, we brought out the iPod and speakers to accompany our meal of canned chicken, mango jelly, peanuts, and dates (it was REALLY good)."
Dave had been in the deserts of Mali for over a year at that point. We had very different palates at the time.
"Mike and Zack thought it was funny to see me attract a crowd everywhere I went as I had them rallied around me while I told stories and joked around. I don't know what I'll do when I go home and am anonymous again; I enjoy this quazi-celebrity status that I hold here."
He went home and became story-teller-Dave. He's got quazi-celebrity status in his social circles here.
"We got to village the next morning. What sounded like the coming of war ended up being the most hearty and warmest welcome I have ever experienced in my life… The entire village came out with guns blazing into the air and drums beating out rhythms. I introduced everyone and we were paraded into the village with such fanfare that I could have sworn we were in a movie. The villagers sang, danced, and jumped sporadically into the air as they accompanied us to all of the main households in village to greet the elders."
Pictures don't do it justice. It is a moment I will never forget.
"That afternoon, it was time for me to kill the goat I had bought for Mike and Zack's arrival….. Zack was squeamish and couldn't watch, but Mike was ready with the camera."
I believe some vegetarians we're friends with on Facebook flagged those photos as inappropriate. They have since been removed.
"I grabbed the goat's horn, pulled his head back as he faced Mecca and let out a loud "Bisimillah!" Slicing into the goat's neck, he reeled back, but we had a tight grip on him. As instructed, I said "Allah akbar" as the blood came out, and everyone was happy."
"After leaving village, we met up with other PCVs and headed north to Hombori for rock climbing".
Dave forgot to mention Zack getting sick, again, almost missing the bus and getting stranded by himself in Douentza.
"Mike really impressed me this day. On his first climb, he said it would be his last due to his fear of heights. But before I knew it, he was down on the ground and then strapped in on the other side for another climb! Go Mike! Zack was also really impressive. He got off to a slow start, but was consistently making it to the tops of his climbs. The second day he really came through. We had set a top rope on this face with tiny little holds. I belayed Zack on his climb and he just plugged away until he reached the top with no problems."
This is apparently where I impressed Dave.
Dave being a good big brother.
"That second morning, we were about to leave the campement we stayed at when I saw some odd looking clouds approaching. Hell's chariot was on its way in the form of a sand storm. Imagine rolling clouds of sand thousands of feet tall engulfing huge rock spires in the distance barreling directly towards you. It's scary and exciting, especially when your only shelter is a dried millet stock bungalow. Although Hell's chariot never reached us, we were in for a neat treat as everything around us turned a bright yellowish-reddish-orangish hue. I don't know how the storm missed us, but it did."
The approaching sand storm.
#nofilter. seriously.
"Leaving Hombori, we caught a ride to Boni in the back of a large truck full of people. Standing room only. A goat peed on Zack, Mike hit people in the face with his giant backpack and I was berated with questions in too many languages."
Hitchhiking with said 'giant backpack'
"Standing room only"
"Mike, Zack, Braxton (a fellow PCV) and I hopped into a 4X4 van (aka piece of junk) and rode out into the bush to search for elephants."
A safari, of sort with the "piece of junk" in the background.
"In time we found a Fulani watching over his animals who claimed to have seen elephants this morning. He jumped into the van and we were off again. Bringing us to a thicket of small trees, we exited the bus and headed downwind as not to be discovered by the elephant. Quietly, we tracked down an elephant near a watering hole and followed him for a short while. Stepping out from a patch of trees, we found ourselves face to face with the elephant himself (it was definitely a "him." The Fulani pointed this out to me with much enthusiasm). The elephant stood there for a while and threw his trunk around. After we snapped a few photos, the elephant decided it was time for us to move on. He puffed his ears up and took a few steps forward, just to let us know we were on his turf."
The male elephant, through the trees.
Dave reminding me what the elephant looked like.
After our safari, we trekked back to Bamako for a couple nights before heading home to the States.
There was nothing special about the wooden elephant key chain or the buying of it. At the time, it felt like an item on a checklist – buy myself something in Mali. Check.
But now, it's a reminder of the three weeks in Africa with my brothers. Getting sick together. Dancing with Dave's entire village. Rock climbing and sandstorms. Our safari. The elephant. It's a constant reminder of my brothers and two of my best friends.
The Munsell Limited.
If you enjoyed this, read Dave's entire post of our trip. He wrote it just days after Zack and I left Mali — so it was a very fresh memory at the time.
February 6, 2014 by mikemunsell Categories: Uncategorized | Tags: Greatest Hits | 1 Comment


text:
#include "OgreBorderPanelOverlayElement.h"
#include "OgreMaterialManager.h"
#include "OgreMaterial.h"
#include "OgreStringConverter.h"
#include "OgreOverlayManager.h"
#include "OgreHardwareBufferManager.h"
#include "OgreHardwareVertexBuffer.h"
#include "OgreHardwareIndexBuffer.h"
#include "OgreException.h"
#include "OgreRenderQueue.h"
#include "OgreRoot.h"
#include "OgreRenderSystem.h"

namespace Ogre {
    //---------------------------------------------------------------------
    String BorderPanelOverlayElement::msTypeName = "BorderPanel";
    BorderPanelOverlayElement::CmdBorderSize BorderPanelOverlayElement::msCmdBorderSize;
    BorderPanelOverlayElement::CmdBorderMaterial BorderPanelOverlayElement::msCmdBorderMaterial;
    BorderPanelOverlayElement::CmdBorderLeftUV BorderPanelOverlayElement::msCmdBorderLeftUV;
    BorderPanelOverlayElement::CmdBorderTopUV BorderPanelOverlayElement::msCmdBorderTopUV;
    BorderPanelOverlayElement::CmdBorderBottomUV BorderPanelOverlayElement::msCmdBorderBottomUV;
    BorderPanelOverlayElement::CmdBorderRightUV BorderPanelOverlayElement::msCmdBorderRightUV;
    BorderPanelOverlayElement::CmdBorderTopLeftUV BorderPanelOverlayElement::msCmdBorderTopLeftUV;
    BorderPanelOverlayElement::CmdBorderBottomLeftUV BorderPanelOverlayElement::msCmdBorderBottomLeftUV;
    BorderPanelOverlayElement::CmdBorderTopRightUV BorderPanelOverlayElement::msCmdBorderTopRightUV;
    BorderPanelOverlayElement::CmdBorderBottomRightUV BorderPanelOverlayElement::msCmdBorderBottomRightUV;

    #define BCELL_UV(x) (x * 4 * 2)
    #define POSITION_BINDING 0
    #define TEXCOORD_BINDING 1
    //---------------------------------------------------------------------
    BorderPanelOverlayElement::BorderPanelOverlayElement(const String& name)
      : PanelOverlayElement(name),
        mLeftBorderSize(0),
        mRightBorderSize(0),
        mTopBorderSize(0),
        mBottomBorderSize(0),
        mPixelLeftBorderSize(0),
        mPixelRightBorderSize(0),
        mPixelTopBorderSize(0),
        mPixelBottomBorderSize(0),
        mBorderMaterial(0),
        mBorderRenderable(0)
    {
        if (createParamDictionary("BorderPanelOverlayElement"))
        {
            addBaseParameters();
        }
    }
    //---------------------------------------------------------------------
    BorderPanelOverlayElement::~BorderPanelOverlayElement()
    {
        OGRE_DELETE mRenderOp2.vertexData;
        OGRE_DELETE mRenderOp2.indexData;
        OGRE_DELETE mBorderRenderable;
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::initialise(void)
    {
		bool init = !mInitialised;

        PanelOverlayElement::initialise();

        // superclass will handle the interior panel area

        if (init)
		{
			// Setup render op in advance
			mRenderOp2.vertexData = OGRE_NEW VertexData();
			mRenderOp2.vertexData->vertexCount = 4 * 8; // 8 cells, can't necessarily share vertices cos
														// texcoords may differ
			mRenderOp2.vertexData->vertexStart = 0;

			// Vertex declaration
			VertexDeclaration* decl = mRenderOp2.vertexData->vertexDeclaration;
			// Position and texture coords each have their own buffers to allow
			// each to be edited separately with the discard flag
			decl->addElement(POSITION_BINDING, 0, VET_FLOAT3, VES_POSITION);
			decl->addElement(TEXCOORD_BINDING, 0, VET_FLOAT2, VES_TEXTURE_COORDINATES, 0);

			// Vertex buffer #1, position
			HardwareVertexBufferSharedPtr vbuf = HardwareBufferManager::getSingleton()
				.createVertexBuffer(
					decl->getVertexSize(POSITION_BINDING),
					mRenderOp2.vertexData->vertexCount,
					HardwareBuffer::HBU_STATIC_WRITE_ONLY);
			// bind position
			VertexBufferBinding* binding = mRenderOp2.vertexData->vertexBufferBinding;
			binding->setBinding(POSITION_BINDING, vbuf);

			// Vertex buffer #2, texcoords
			vbuf = HardwareBufferManager::getSingleton()
				.createVertexBuffer(
					decl->getVertexSize(TEXCOORD_BINDING),
					mRenderOp2.vertexData->vertexCount,
					HardwareBuffer::HBU_STATIC_WRITE_ONLY, true);
			// bind texcoord
			binding->setBinding(TEXCOORD_BINDING, vbuf);

			mRenderOp2.operationType = RenderOperation::OT_TRIANGLE_LIST;
			mRenderOp2.useIndexes = true;
			// Index data
			mRenderOp2.indexData = OGRE_NEW IndexData();
			mRenderOp2.indexData->indexCount = 8 * 6;
			mRenderOp2.indexData->indexStart = 0;
            mRenderOp2.useGlobalInstancingVertexBufferIsAvailable = false;

			/* Each cell is
				0-----2
				|    /|
				|  /  |
				|/    |
				1-----3
			*/
			mRenderOp2.indexData->indexBuffer = HardwareBufferManager::getSingleton().
				createIndexBuffer(
					HardwareIndexBuffer::IT_16BIT,
					mRenderOp2.indexData->indexCount,
					HardwareBuffer::HBU_STATIC_WRITE_ONLY);

			ushort* pIdx = static_cast<ushort*>(
				mRenderOp2.indexData->indexBuffer->lock(
					0,
					mRenderOp2.indexData->indexBuffer->getSizeInBytes(),
					HardwareBuffer::HBL_DISCARD) );

			for (ushort cell = 0; cell < 8; ++cell)
			{
				ushort base = cell * 4;
				*pIdx++ = base;
				*pIdx++ = base + 1;
				*pIdx++ = base + 2;

				*pIdx++ = base + 2;
				*pIdx++ = base + 1;
				*pIdx++ = base + 3;
			}

			mRenderOp2.indexData->indexBuffer->unlock();

			// Create sub-object for rendering border
			mBorderRenderable = OGRE_NEW BorderRenderable(this);

			mInitialised = true;
		}
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::addBaseParameters(void)
    {
        PanelOverlayElement::addBaseParameters();
        ParamDictionary* dict = getParamDictionary();

        dict->addParameter(ParameterDef("border_size",
            "The sizes of the borders relative to the screen size, in the order "
            "left, right, top, bottom."
            , PT_STRING),
            &msCmdBorderSize);
        dict->addParameter(ParameterDef("border_material",
            "The material to use for the border."
            , PT_STRING),
            &msCmdBorderMaterial);
        dict->addParameter(ParameterDef("border_topleft_uv",
            "The texture coordinates for the top-left corner border texture. 2 sets of uv values, "
            "one for the top-left corner, the other for the bottom-right corner."
            , PT_STRING),
            &msCmdBorderTopLeftUV);
        dict->addParameter(ParameterDef("border_topright_uv",
            "The texture coordinates for the top-right corner border texture. 2 sets of uv values, "
            "one for the top-left corner, the other for the bottom-right corner."
            , PT_STRING),
            &msCmdBorderTopRightUV);
        dict->addParameter(ParameterDef("border_bottomright_uv",
            "The texture coordinates for the bottom-right corner border texture. 2 sets of uv values, "
            "one for the top-left corner, the other for the bottom-right corner."
            , PT_STRING),
            &msCmdBorderBottomRightUV);
        dict->addParameter(ParameterDef("border_bottomleft_uv",
            "The texture coordinates for the bottom-left corner border texture. 2 sets of uv values, "
            "one for the top-left corner, the other for the bottom-right corner."
            , PT_STRING),
            &msCmdBorderBottomLeftUV);
        dict->addParameter(ParameterDef("border_left_uv",
            "The texture coordinates for the left edge border texture. 2 sets of uv values, "
            "one for the top-left corner, the other for the bottom-right corner."
            , PT_STRING),
            &msCmdBorderLeftUV);
        dict->addParameter(ParameterDef("border_top_uv",
            "The texture coordinates for the top edge border texture. 2 sets of uv values, "
            "one for the top-left corner, the other for the bottom-right corner."
            , PT_STRING),
            &msCmdBorderTopUV);
        dict->addParameter(ParameterDef("border_right_uv",
            "The texture coordinates for the right edge border texture. 2 sets of uv values, "
            "one for the top-left corner, the other for the bottom-right corner."
            , PT_STRING),
            &msCmdBorderRightUV);
        dict->addParameter(ParameterDef("border_bottom_uv",
            "The texture coordinates for the bottom edge border texture. 2 sets of uv values, "
            "one for the top-left corner, the other for the bottom-right corner."
            , PT_STRING),
            &msCmdBorderBottomUV);

    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::setBorderSize(Real size)
    {
        if (mMetricsMode != GMM_RELATIVE)
        {
            mPixelLeftBorderSize = mPixelRightBorderSize =
                mPixelTopBorderSize = mPixelBottomBorderSize = static_cast<unsigned short>(size);
        }
        else
        {
            mLeftBorderSize = mRightBorderSize =
                mTopBorderSize = mBottomBorderSize = size;
        }
        mGeomPositionsOutOfDate = true;
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::setBorderSize(Real sides, Real topAndBottom)
    {
        if (mMetricsMode != GMM_RELATIVE)
        {
            mPixelLeftBorderSize = mPixelRightBorderSize = static_cast<unsigned short>(sides);
            mPixelTopBorderSize = mPixelBottomBorderSize = static_cast<unsigned short>(topAndBottom);
        }
        else
        {
            mLeftBorderSize = mRightBorderSize = sides;
            mTopBorderSize = mBottomBorderSize = topAndBottom;
        }
        mGeomPositionsOutOfDate = true;

    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::setBorderSize(Real left, Real right, Real top, Real bottom)
    {
        if (mMetricsMode != GMM_RELATIVE)
        {
            mPixelLeftBorderSize = static_cast<unsigned short>(left);
            mPixelRightBorderSize = static_cast<unsigned short>(right);
            mPixelTopBorderSize = static_cast<unsigned short>(top);
            mPixelBottomBorderSize = static_cast<unsigned short>(bottom);
        }
        else
        {
            mLeftBorderSize = left;
            mRightBorderSize = right;
            mTopBorderSize = top;
            mBottomBorderSize = bottom;
        }
        mGeomPositionsOutOfDate = true;
    }
    //---------------------------------------------------------------------
    Real BorderPanelOverlayElement::getLeftBorderSize(void) const
    {
        if (mMetricsMode == GMM_PIXELS)
        {
			return mPixelLeftBorderSize;
		}
		else
		{
			return mLeftBorderSize;
		}
    }
    //---------------------------------------------------------------------
    Real BorderPanelOverlayElement::getRightBorderSize(void) const
    {
        if (mMetricsMode == GMM_PIXELS)
        {
			return mPixelRightBorderSize;
		}
		else
		{
			return mRightBorderSize;
		}
    }
    //---------------------------------------------------------------------
    Real BorderPanelOverlayElement::getTopBorderSize(void) const
    {
        if (mMetricsMode == GMM_PIXELS)
        {
			return mPixelTopBorderSize;
		}
		else
		{
			return mTopBorderSize;
		}
    }
    //---------------------------------------------------------------------
    Real BorderPanelOverlayElement::getBottomBorderSize(void) const
    {
        if (mMetricsMode == GMM_PIXELS)
        {
			return mPixelBottomBorderSize;
		}
		else
		{
			return mBottomBorderSize;
		}
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::updateTextureGeometry()
    {
		PanelOverlayElement::updateTextureGeometry();
		/* Each cell is
			0-----2
			|    /|
			|  /  |
			|/    |
			1-----3
		*/
		// No choice but to lock / unlock each time here, but lock only small sections

		HardwareVertexBufferSharedPtr vbuf =
			mRenderOp2.vertexData->vertexBufferBinding->getBuffer(TEXCOORD_BINDING);
		// Can't use discard since this discards whole buffer
		float* pUV = static_cast<float*>(vbuf->lock(HardwareBuffer::HBL_DISCARD));

		for (uint i = 0; i < 8; ++i)
		{
			*pUV++ = mBorderUV[i].u1; *pUV++ = mBorderUV[i].v1;
			*pUV++ = mBorderUV[i].u1; *pUV++ = mBorderUV[i].v2;
			*pUV++ = mBorderUV[i].u2; *pUV++ = mBorderUV[i].v1;
			*pUV++ = mBorderUV[i].u2; *pUV++ = mBorderUV[i].v2;
		}

		vbuf->unlock();
    }
    //---------------------------------------------------------------------
    String BorderPanelOverlayElement::getCellUVString(BorderCellIndex idx) const
    {
        String ret = StringConverter::toString(mBorderUV[idx].u1) + " " +
		            StringConverter::toString(mBorderUV[idx].v1) + " " +
		            StringConverter::toString(mBorderUV[idx].u2) + " " +
		            StringConverter::toString(mBorderUV[idx].v2);
        return ret;
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::setLeftBorderUV(Real u1, Real v1, Real u2, Real v2)
    {
		mBorderUV[BCELL_LEFT].u1 = u1;
		mBorderUV[BCELL_LEFT].u2 = u2;
		mBorderUV[BCELL_LEFT].v1 = v1;
		mBorderUV[BCELL_LEFT].v2 = v2;
		mGeomUVsOutOfDate = true;
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::setRightBorderUV(Real u1, Real v1, Real u2, Real v2)
    {
		mBorderUV[BCELL_RIGHT].u1 = u1;
		mBorderUV[BCELL_RIGHT].u2 = u2;
		mBorderUV[BCELL_RIGHT].v1 = v1;
		mBorderUV[BCELL_RIGHT].v2 = v2;
		mGeomUVsOutOfDate = true;
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::setTopBorderUV(Real u1, Real v1, Real u2, Real v2)
    {
		mBorderUV[BCELL_TOP].u1 = u1;
		mBorderUV[BCELL_TOP].u2 = u2;
		mBorderUV[BCELL_TOP].v1 = v1;
		mBorderUV[BCELL_TOP].v2 = v2;
		mGeomUVsOutOfDate = true;
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::setBottomBorderUV(Real u1, Real v1, Real u2, Real v2)
    {
		mBorderUV[BCELL_BOTTOM].u1 = u1;
		mBorderUV[BCELL_BOTTOM].u2 = u2;
		mBorderUV[BCELL_BOTTOM].v1 = v1;
		mBorderUV[BCELL_BOTTOM].v2 = v2;
		mGeomUVsOutOfDate = true;
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::setTopLeftBorderUV(Real u1, Real v1, Real u2, Real v2)
    {
		mBorderUV[BCELL_TOP_LEFT].u1 = u1;
		mBorderUV[BCELL_TOP_LEFT].u2 = u2;
		mBorderUV[BCELL_TOP_LEFT].v1 = v1;
		mBorderUV[BCELL_TOP_LEFT].v2 = v2;
		mGeomUVsOutOfDate = true;
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::setTopRightBorderUV(Real u1, Real v1, Real u2, Real v2)
    {
		mBorderUV[BCELL_TOP_RIGHT].u1 = u1;
		mBorderUV[BCELL_TOP_RIGHT].u2 = u2;
		mBorderUV[BCELL_TOP_RIGHT].v1 = v1;
		mBorderUV[BCELL_TOP_RIGHT].v2 = v2;
		mGeomUVsOutOfDate = true;
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::setBottomLeftBorderUV(Real u1, Real v1, Real u2, Real v2)
    {
		mBorderUV[BCELL_BOTTOM_LEFT].u1 = u1;
		mBorderUV[BCELL_BOTTOM_LEFT].u2 = u2;
		mBorderUV[BCELL_BOTTOM_LEFT].v1 = v1;
		mBorderUV[BCELL_BOTTOM_LEFT].v2 = v2;
		mGeomUVsOutOfDate = true;
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::setBottomRightBorderUV(Real u1, Real v1, Real u2, Real v2)
    {
		mBorderUV[BCELL_BOTTOM_RIGHT].u1 = u1;
		mBorderUV[BCELL_BOTTOM_RIGHT].u2 = u2;
		mBorderUV[BCELL_BOTTOM_RIGHT].v1 = v1;
		mBorderUV[BCELL_BOTTOM_RIGHT].v2 = v2;
		mGeomUVsOutOfDate = true;
    }

    //---------------------------------------------------------------------
    String BorderPanelOverlayElement::getLeftBorderUVString() const
    {
        return getCellUVString(BCELL_LEFT);
    }
    //---------------------------------------------------------------------
    String BorderPanelOverlayElement::getRightBorderUVString() const
    {
        return getCellUVString(BCELL_RIGHT);
    }
    //---------------------------------------------------------------------
    String BorderPanelOverlayElement::getTopBorderUVString() const
    {
        return getCellUVString(BCELL_TOP);
    }
    //---------------------------------------------------------------------
    String BorderPanelOverlayElement::getBottomBorderUVString() const
    {
        return getCellUVString(BCELL_BOTTOM);
    }
    //---------------------------------------------------------------------
    String BorderPanelOverlayElement::getTopLeftBorderUVString() const
    {
        return getCellUVString(BCELL_TOP_LEFT);
    }
    //---------------------------------------------------------------------
    String BorderPanelOverlayElement::getTopRightBorderUVString() const
    {
        return getCellUVString(BCELL_TOP_RIGHT);
    }
    //---------------------------------------------------------------------
    String BorderPanelOverlayElement::getBottomLeftBorderUVString() const
    {
        return getCellUVString(BCELL_BOTTOM_LEFT);
    }
    //---------------------------------------------------------------------
    String BorderPanelOverlayElement::getBottomRightBorderUVString() const
    {
        return getCellUVString(BCELL_BOTTOM_RIGHT);
    }

    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::setBorderMaterialName(const String& name)
    {
        mBorderMaterialName = name;
        mBorderMaterial = MaterialManager::getSingleton().getByName(name);
        if (mBorderMaterial.isNull())
			OGRE_EXCEPT( Exception::ERR_ITEM_NOT_FOUND, "Could not find material " + name,
				"BorderPanelOverlayElement::setBorderMaterialName" );
        mBorderMaterial->load();
        // Set some prerequisites to be sure
        mBorderMaterial->setLightingEnabled(false);
        mBorderMaterial->setDepthCheckEnabled(false);

    }
    //---------------------------------------------------------------------
    const String& BorderPanelOverlayElement::getBorderMaterialName(void) const
    {
        return mBorderMaterialName;
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::updatePositionGeometry(void)
    {
		/*
		Grid is like this:
		+--+---------------+--+
		|0 |       1       |2 |
		+--+---------------+--+
		|  |               |  |
		|  |               |  |
		|3 |    center     |4 |
		|  |               |  |
		+--+---------------+--+
		|5 |       6       |7 |
		+--+---------------+--+
		*/
		// Convert positions into -1, 1 coordinate space (homogenous clip space)
		// Top / bottom also need inverting since y is upside down
		Real left[8], right[8], top[8], bottom[8];
		// Horizontal
		left[0] = left[3] = left[5] = _getDerivedLeft() * 2 - 1;
		left[1] = left[6] = right[0] = right[3] = right[5] = left[0] + (mLeftBorderSize * 2);
		right[2] = right[4] = right[7] = left[0] + (mWidth * 2);
		left[2] = left[4] = left[7] = right[1] = right[6] = right[2] - (mRightBorderSize * 2);
		// Vertical
		top[0] = top[1] = top[2] = -((_getDerivedTop() * 2) - 1);
		top[3] = top[4] = bottom[0] = bottom[1] = bottom[2] = top[0] - (mTopBorderSize * 2);
		bottom[5] = bottom[6] = bottom[7] = top[0] -  (mHeight * 2);
		top[5] = top[6] = top[7] = bottom[3] = bottom[4] = bottom[5] + (mBottomBorderSize * 2);

		// Lock the whole position buffer in discard mode
		HardwareVertexBufferSharedPtr vbuf =
			mRenderOp2.vertexData->vertexBufferBinding->getBuffer(POSITION_BINDING);
		float* pPos = static_cast<float*>(
			vbuf->lock(HardwareBuffer::HBL_DISCARD) );
		// Use the furthest away depth value, since materials should have depth-check off
		// This initialised the depth buffer for any 3D objects in front
		Real zValue = Root::getSingleton().getRenderSystem()->getMaximumDepthInputValue();
		for (ushort cell = 0; cell < 8; ++cell)
		{
			/*
				0-----2
				|    /|
				|  /  |
				|/    |
				1-----3
			*/
			*pPos++ = left[cell];
			*pPos++ = top[cell];
			*pPos++ = zValue;

			*pPos++ = left[cell];
			*pPos++ = bottom[cell];
			*pPos++ = zValue;

			*pPos++ = right[cell];
			*pPos++ = top[cell];
			*pPos++ = zValue;

			*pPos++ = right[cell];
			*pPos++ = bottom[cell];
			*pPos++ = zValue;

		}
		vbuf->unlock();

		// Also update center geometry
		// NB don't use superclass because we need to make it smaller because of border
		vbuf = mRenderOp.vertexData->vertexBufferBinding->getBuffer(POSITION_BINDING);
		pPos = static_cast<float*>(
			vbuf->lock(HardwareBuffer::HBL_DISCARD) );
		// Use cell 1 and 3 to determine positions
		*pPos++ = left[1];
		*pPos++ = top[3];
		*pPos++ = zValue;

		*pPos++ = left[1];
		*pPos++ = bottom[3];
		*pPos++ = zValue;

		*pPos++ = right[1];
		*pPos++ = top[3];
		*pPos++ = zValue;

		*pPos++ = right[1];
		*pPos++ = bottom[3];
		*pPos++ = zValue;

		vbuf->unlock();
    }
    //---------------------------------------------------------------------
    void BorderPanelOverlayElement::_updateRenderQueue(RenderQueue* queue)
    {
        // Add self twice to the queue
        // Have to do this to allow 2 materials
        if (mVisible)
        {

            // Add outer
            queue->addRenderable(mBorderRenderable, RENDER_QUEUE_OVERLAY, mZOrder);

			// do inner last so the border artifacts don't overwrite the children
            // Add inner
            PanelOverlayElement::_updateRenderQueue(queue);
        }
    }
	//---------------------------------------------------------------------
	void BorderPanelOverlayElement::visitRenderables(Renderable::Visitor* visitor,
		bool debugRenderables)
	{
		visitor->visit(mBorderRenderable, 0, false);
		PanelOverlayElement::visitRenderables(visitor, debugRenderables);
	}
    //-----------------------------------------------------------------------
    void BorderPanelOverlayElement::setMetricsMode(GuiMetricsMode gmm)
    {
        PanelOverlayElement::setMetricsMode(gmm);
        if (gmm != GMM_RELATIVE)
        {
            mPixelBottomBorderSize = static_cast<unsigned short>(mBottomBorderSize);
            mPixelLeftBorderSize = static_cast<unsigned short>(mLeftBorderSize);
            mPixelRightBorderSize = static_cast<unsigned short>(mRightBorderSize);
            mPixelTopBorderSize = static_cast<unsigned short>(mTopBorderSize);
        }
    }
    //-----------------------------------------------------------------------
    void BorderPanelOverlayElement::_update(void)
    {
        if (mMetricsMode != GMM_RELATIVE &&
            (OverlayManager::getSingleton().hasViewportChanged() || mGeomPositionsOutOfDate))
        {
            mLeftBorderSize = mPixelLeftBorderSize * mPixelScaleX;
            mRightBorderSize = mPixelRightBorderSize * mPixelScaleX;
            mTopBorderSize = mPixelTopBorderSize * mPixelScaleY;
            mBottomBorderSize = mPixelBottomBorderSize * mPixelScaleY;
            mGeomPositionsOutOfDate = true;
        }
		PanelOverlayElement::_update();
    }
    //-----------------------------------------------------------------------
    //---------------------------------------------------------------------
    //---------------------------------------------------------------------
    // Command objects
    //---------------------------------------------------------------------
    //-----------------------------------------------------------------------
    String BorderPanelOverlayElement::CmdBorderSize::doGet(const void* target) const
    {
		const BorderPanelOverlayElement* t = static_cast<const BorderPanelOverlayElement*>(target);
        return String(
			StringConverter::toString(t->getLeftBorderSize()) + " " +
			StringConverter::toString(t->getRightBorderSize()) + " " +
			StringConverter::toString(t->getTopBorderSize()) + " " +
			StringConverter::toString(t->getBottomBorderSize())	);
    }
    void BorderPanelOverlayElement::CmdBorderSize::doSet(void* target, const String& val)
    {
        vector<String>::type vec = StringUtil::split(val);

        static_cast<BorderPanelOverlayElement*>(target)->setBorderSize(
            StringConverter::parseReal(vec[0]),
            StringConverter::parseReal(vec[1]),
            StringConverter::parseReal(vec[2]),
            StringConverter::parseReal(vec[3])
            );
    }
    //-----------------------------------------------------------------------
    String BorderPanelOverlayElement::CmdBorderMaterial::doGet(const void* target) const
    {
        // No need right now..
        return static_cast<const BorderPanelOverlayElement*>(target)->getBorderMaterialName();
    }
    void BorderPanelOverlayElement::CmdBorderMaterial::doSet(void* target, const String& val)
    {
        vector<String>::type vec = StringUtil::split(val);

        static_cast<BorderPanelOverlayElement*>(target)->setBorderMaterialName(val);
    }
    //-----------------------------------------------------------------------
    String BorderPanelOverlayElement::CmdBorderBottomLeftUV::doGet(const void* target) const
    {
        // No need right now..
		return  static_cast<const BorderPanelOverlayElement*>(target)->getBottomLeftBorderUVString();
    }
    void BorderPanelOverlayElement::CmdBorderBottomLeftUV::doSet(void* target, const String& val)
    {
        vector<String>::type vec = StringUtil::split(val);

        static_cast<BorderPanelOverlayElement*>(target)->setBottomLeftBorderUV(
            StringConverter::parseReal(vec[0]),
            StringConverter::parseReal(vec[1]),
            StringConverter::parseReal(vec[2]),
            StringConverter::parseReal(vec[3])
            );
    }
    //-----------------------------------------------------------------------
    String BorderPanelOverlayElement::CmdBorderBottomRightUV::doGet(const void* target) const
    {
        // No need right now..
		return  static_cast<const BorderPanelOverlayElement*>(target)->getBottomRightBorderUVString();
    }
    void BorderPanelOverlayElement::CmdBorderBottomRightUV::doSet(void* target, const String& val)
    {
        vector<String>::type vec = StringUtil::split(val);

        static_cast<BorderPanelOverlayElement*>(target)->setBottomRightBorderUV(
            StringConverter::parseReal(vec[0]),
            StringConverter::parseReal(vec[1]),
            StringConverter::parseReal(vec[2]),
            StringConverter::parseReal(vec[3])
            );
    }
    //-----------------------------------------------------------------------
    String BorderPanelOverlayElement::CmdBorderTopLeftUV::doGet(const void* target) const
    {
        // No need right now..
		return  static_cast<const BorderPanelOverlayElement*>(target)->getTopLeftBorderUVString();
    }
    void BorderPanelOverlayElement::CmdBorderTopLeftUV::doSet(void* target, const String& val)
    {
        vector<String>::type vec = StringUtil::split(val);

        static_cast<BorderPanelOverlayElement*>(target)->setTopLeftBorderUV(
            StringConverter::parseReal(vec[0]),
            StringConverter::parseReal(vec[1]),
            StringConverter::parseReal(vec[2]),
            StringConverter::parseReal(vec[3])
            );
    }
    //-----------------------------------------------------------------------
    String BorderPanelOverlayElement::CmdBorderTopRightUV::doGet(const void* target) const
    {
        // No need right now..
		return  static_cast<const BorderPanelOverlayElement*>(target)->getTopRightBorderUVString();
    }
    void BorderPanelOverlayElement::CmdBorderTopRightUV::doSet(void* target, const String& val)
    {
        vector<String>::type vec = StringUtil::split(val);

        static_cast<BorderPanelOverlayElement*>(target)->setTopRightBorderUV(
            StringConverter::parseReal(vec[0]),
            StringConverter::parseReal(vec[1]),
            StringConverter::parseReal(vec[2]),
            StringConverter::parseReal(vec[3])
            );
    }
    //-----------------------------------------------------------------------
    String BorderPanelOverlayElement::CmdBorderLeftUV::doGet(const void* target) const
    {
        // No need right now..
		return  static_cast<const BorderPanelOverlayElement*>(target)->getLeftBorderUVString();
    }
    void BorderPanelOverlayElement::CmdBorderLeftUV::doSet(void* target, const String& val)
    {
        vector<String>::type vec = StringUtil::split(val);

        static_cast<BorderPanelOverlayElement*>(target)->setLeftBorderUV(
            StringConverter::parseReal(vec[0]),
            StringConverter::parseReal(vec[1]),
            StringConverter::parseReal(vec[2]),
            StringConverter::parseReal(vec[3])
            );
    }
    //-----------------------------------------------------------------------
    String BorderPanelOverlayElement::CmdBorderRightUV::doGet(const void* target) const
    {
        // No need right now..
		return  static_cast<const BorderPanelOverlayElement*>(target)->getRightBorderUVString();
    }
    void BorderPanelOverlayElement::CmdBorderRightUV::doSet(void* target, const String& val)
    {
        vector<String>::type vec = StringUtil::split(val);

        static_cast<BorderPanelOverlayElement*>(target)->setRightBorderUV(
            StringConverter::parseReal(vec[0]),
            StringConverter::parseReal(vec[1]),
            StringConverter::parseReal(vec[2]),
            StringConverter::parseReal(vec[3])
            );
    }
    //-----------------------------------------------------------------------
    String BorderPanelOverlayElement::CmdBorderTopUV::doGet(const void* target) const
    {
        // No need right now..
		return  static_cast<const BorderPanelOverlayElement*>(target)->getTopBorderUVString();
    }
    void BorderPanelOverlayElement::CmdBorderTopUV::doSet(void* target, const String& val)
    {
        vector<String>::type vec = StringUtil::split(val);

        static_cast<BorderPanelOverlayElement*>(target)->setTopBorderUV(
            StringConverter::parseReal(vec[0]),
            StringConverter::parseReal(vec[1]),
            StringConverter::parseReal(vec[2]),
            StringConverter::parseReal(vec[3])
            );
    }
    //-----------------------------------------------------------------------
    String BorderPanelOverlayElement::CmdBorderBottomUV::doGet(const void* target) const
    {
        // No need right now..
		return  static_cast<const BorderPanelOverlayElement*>(target)->getBottomBorderUVString();
    }
    void BorderPanelOverlayElement::CmdBorderBottomUV::doSet(void* target, const String& val)
    {
        vector<String>::type vec = StringUtil::split(val);

        static_cast<BorderPanelOverlayElement*>(target)->setBottomBorderUV(
            StringConverter::parseReal(vec[0]),
            StringConverter::parseReal(vec[1]),
            StringConverter::parseReal(vec[2]),
            StringConverter::parseReal(vec[3])
            );
    }
    //---------------------------------------------------------------------
    const String& BorderPanelOverlayElement::getTypeName(void) const
    {
        return msTypeName;
    }

}

redpajama_set_name: RedPajamaGithub


text:
Advertising Eve Creativity
Eve Sleep lobbies UK parliament to recognise sleep as 'fundamental human right'
By Rebecca Stewart | Trends Editor
August 27, 2019 | 4 min read
Eve Sleep has unveiled a campaign demanding that sleep is recognised as a fundamental human right.
The mattress e-commerce company has penned an open letter to the Lord Chancellor and Secretary of State for Justice / Eve Sleep
The mattress e-commerce company has penned an open letter to Lord Chancellor and Secretary of State for Justice, Robert Buckland, calling on him to support the initiative.
"Society depends and thrives on sleep," reads the letter, "so why aren't we doing something about it? Why aren't we protecting people's right to sleep?"
The company has identified vulnerable groups of people – including those living under the Heathrow runway flight path, shift workers, teachers and doctors – whose health and wellbeing it claims could be dramatically improved by amending The Human Rights Act 1998 to include sleep.
"We're asking for your help to change the law and recognize sleep in the Human Rights Act. It's time to wake up to the injustice of poor sleep and work together to give vulnerable groups the right to sleep," writes Eve.
The letter, which was delivered to parliament and published on a mobile billboard outside Westminster, marks the beginning of Eve's drive to get snoozing protected by law.
As part of its mission to be seen as a health and wellness brand, the company is also assembling a team of independent experts to act as a think tank around the proposed legislation. The group will produce a white paper detailing the impact of Eve's proposed update on UK life.
James Sturrock, chief executive at Eve Sleep said: "We're on a mission to help the nation realise and enjoy the power of sleep wellness and this campaign is another part of our mission to improve sleep for all.
"But to make a watertight case to the government, we are calling on the support of experts, businesses, community groups and charitable organisations across the country, to join us on our quest to help sleep become a fundamental human right."
The brand recently overhauled its positioning in a big to move out of the increasingly competitive "mattress in a box" category into the "sleep wellness business".
eve sleep: Right To Sleep
By eve sleep
Overall Rating 5/5
The Drum Advertising Awards
To some 'advertising' is a dirty word. To us, it is a source of pride. This event will remind the world that great advertising is as powerful today as it ever was. So say it loud, I'm in advertising a...
More from Advertising


text:
Charlie Cox On Appearing In A Marvel Film: "It's In My Contract"
Nicole Sobon
It seems that the one question every fan has had since finishing Daredevil on Netlix is whether or not Charlie Cox (Matt Murdock/Daredevil) would appear in the films. It's been rumored that the Defenders cast will, in fact, appear in Avengers: Infinity War, but we've never heard anything concrete.
In an interview with Close-Up, Cox confirmed that there is an option in his contract for him to appear in the films.
What would the likelihood be of Matt Murdoch turning up in other Marvel shows and films?
[Charlie grins]
It'd be great. I've read Civil War now, I've read The New Avengers, I know he's in there but I think I missed the boat on Civil War because they're filming that. I don't know, Marvel have not mentioned that to me at all. It's in my contract that if they want me to do it, I'm there, and I would love that. That would be an extension of the dream, but I'm a pretty happy customer at this point, to get to do the series again. And I get to do The Defenders at some point.
He also talks about wanting Bullseye to appear on the show, being excited for the second season, and his favorite Daredevil comics. You can read the full interview by heading to the source below. It's a lengthy interview, but one worth checking out.
And here's a new video of the cast talking about the show that Marvel uploaded earlier today.
Season one of Daredevil is currently available on Netflix, and season two is expected to release in April of 2016.
Source: Close-Up.
Tags: Daredevil, News
Nicole Sobon Senior Editor
When not obsessing over news regarding the MCU, I can be found writing YA novels (The Emile Reed Chronicles).
Stills From Episode 2×20 Of Agents Of S.H.I.E.L.D.: "Scars"
Podcast – Its All Connected 060 – Agents of SHIELD Frenemy of My Enemy – Marvel News
Kevin Feige Hints at Possibly Using Netflix Characters For Films Down the Road
Jeph Loeb Says He Won't Be Surprised if Cancelled Marvel-Netflix Shows Get Revived
STAFF PICKS: The Best Fight Sequences of the Year
Endgames: A Retrospective on the Best Finales of the MCU
Hulu Exec Interested in Saving Cancelled Marvel-Netflix Shows
STAFF PICKS: The Biggest Surprises and Reveals of The Year
Kevin Feige Affirms That Disney+ Shows Will Be Interwoven With Films Unlike Marvel TV
STAFF PICKS: Performance of the Year
Disney Exec Says Revival Of Cancelled Marvel-Netflix Shows on Disney+ Is A Possibility


Please take a moment to contact us today, to learn more about our veterinary practice and to find out more information about how SHERIDAN ANIMAL HOSPITAL can serve the needs of you and your cherished pet.
Attention current clients! Sheridan Animal Hospital needs your feedback! Please click here to take our AAHA survey.
Wonderful caring staff — from the Doctors to the receptionists and everyone in between!
You all are always so wonderful I would never go any place but here.