text:
\section{Introduction}

Turning large masses of data into useful information is a multidimensional problem, requiring appropriate data synthesis, analysis, results communication and visualisation. Current techniques generally fall short in delivering effective solutions for these problems, which consequently leads data scientists to struggle with decisions requiring the analysis of big data. New intelligent methods and the alternative employment of existing tools are therefore needed to empower users to explore their data sets. Additionally, different users and knowledge domains have different exploratory needs, and their success in obtaining useful insights from their data depends on how appropriately these requirements are fulfilled. In short, user-centric data knowledge discovery is needed, combining aspects of visualisation, presentation, and interactivity to communicate the analysis results in an appropriate manner. Our interest lies in alleviating the laborious, time-consuming task of creating suitable visual representations to a data content. We therefore introduce an intelligent, extensible, free, open-source framework to assist with data visualisation tasks.

Primarily, data visualization aims at making complex data more accessible and intelligible by accelerating the comprehension of large masses of data summarised in visual abstractions~\cite{Iliinski:2011,Wilkinson:2006}. In many cases, an effective graphic display of the dataset content represents on its own a powerful knowledge discovery tool. Understanding the data content and describing it in some sort of information graphics is a difficult, multi-disciplinary task~\cite{friendly2009milestones}. The information transmitted in a visual must be clear, tailored to the problem and appealing to the viewer. Furthermore, what may sound attractive to a certain profile of viewers or domain area might not be informative to others.

Current available visualisation tools mostly take into consideration solely the dataset metadata to suggest appropriate visualisations~\cite{ReviewVisualisation}, as further described in the next section.  In general, these tools give the user a list of all possible visuals that match the data characteristics. This, however adds a significant burden to the data owners, as they need to understand the charts and choose those that are more appropriate. In addition, users tend to get limited to the visuals they know, i.e. those they have seen or employed in their analysis before. This process is therefore laborious and not necessarily effective.

There are also other categories of visualisation tools offering intelligent support. However, they are mostly proprietary, which makes it difficult for the research community to contribute with their ideas and adapt the tool to their needs~\cite{ReviewVisualisation2}.

From these observations we therefore conclude that there is the need for an adaptable, extensible, open-source suggestion system that takes into consideration (i) the dataset characteristics; (ii) the knowledge domain; (iii) the user profile and preferences; (iv) successful previous visuals matching the problem and domain; (iv) human factors; and (v) possible visual improvements and/or variations to produce what could be an effective way of facilitating the data set knowledge exploration and understanding.

It is our aim therefore to outline a framework encompassing these elements to assist researchers and data owners from several domains to get the best matching graphics to assist interpreting their data set. We are not proposing a tool for visual design; instead, we envision a tool set to store, re-use, infer and evolve existing visual solutions to create effective representation suggestions for new data sets. We hope to implement a mechanism that dynamically finds and executes ``suitable'' representations of the given data set based on a host of bits of information. These representations are then available to the user to pass on, inform their analysis, provide a summary of the data, highlight aspects of the data, etc.

The proposed framework can be divided in four stages. The first phase involves the knowledge base compilation, where a collection of existing state-of-the-art visualisation techniques per domain and user preferences is built. Subsequently, an ensemble of machine learning algorithms is employed to learn and suggest new graphic solutions. These outputs are subsequently evaluated by multiple criteria methods, such as human factors, user ranking, surveys etc. Finally, the evaluation feedback is used to adjust and adapt the interface and feed the original database with additional information. These stages, as well as our overall vision, limitations and possible challenges are further discussed in the remainder of this article.

\section{Related Work}
\label{RelatedWork}

In this section we present a summary of the most relevant features of current visualisation tools from both academia and industry. We have performed an extensive search of existing mechanisms, their functionalities and their application domain. We focused our investigation on understanding how the collaboration between the user and the software occurs. These interactions are of our primary interest, as we want to understand their shortcomings and to propose improvements.

We have therefore divided the existing tools in four main groups, based on how the user interacts with the product: (i) software environments for statistics, computing and graphics; (ii) web-oriented visualisation tools; (iii) interactive tools; and (iv) intelligent interactive tools. Our aim is to discuss the main characteristics of these tools, their advantages, limitations and the existing gaps that culminated in our proposed research. It is not our intention to provide a complete review of existing mechanisms --- instead, we are interested in outlining their common features. For a more extensive review, see~\cite{ReviewVisualisation,ReviewVisualisation2}.

\subsection{Software Environments for Statistics, Computing and Graphics}

This group comprises well-known tools in the scientific community, such as Matlab~\cite{MATLAB:2014}, R~\cite{R}, GNU Octave~\cite{octave:2014}, Python(x,y)~\cite{PythonXY}, etc. They are development environments that allow for data manipulation and provide data visualisations.

These environments are very useful for data analysts, however, they require more effort to learn and use when compared to interactive tools. In addition, scientific programming background is required to produce the data visualisation scripts, which limits their usage to a specific public, such as computer scientists, mathematicians, statisticians, engineers, etc. Furthermore given the profile of the public that uses these tools, the visual charts are mostly tailored to represent research and engineering data.

\subsection{Web-oriented Visualisation Tools}

These tools offer a variety of customisable charts to be displayed in the web, via a web browser. In order to visualise a data set, the user needs to
incorporate the data into scripts, which are generally written in HTML, PhP, JavaScript, etc.

There several available libraries, such as Google Chart~\cite{GoogleCharts}, ZingChart~\cite{ZingChart} and Dygraphs~\cite{Dygraphs}, with a variety of charts for multiple purposes. In addition, there exists various domain-specific tools, such as Instant atlas~\cite{Atltas} (for maps) and Timeline~\cite{Timeline} (for temporal data), etc.

These tools however have the restriction of being web-based, which requires web development expertise and therefore they are not suitable for every user. In addition, having to incorporate the dataset in a web script can be burdensome when dealing with large data.

\subsection{Interactive tools}

Interactive tools enable data owners to develop and share customized data visualizations, from simple charts to advanced graphics. Popular examples are the IBM SPSS Visualisation Designer~\cite{SPSS} and the IBM Many Eyes~\cite{ManyEyes}. The appeal of these tools is that virtually no programming or technical expertise is needed; therefore, almost everyone has the power to create visualisations.

In specific, Many Eyes has several interesting features and operates in line with some of the ideas we are presenting. It creates visualisations from simple data formats, such as text files or spreadsheets. It stores previous data sets so that new users can browse existing visualisations, get ideas and match their problem with existing ones. In addition to their tool, IBM offers expert contributions from a team from the IBM Research's Center for Advanced Visualisation~\cite{ManyEyes}. This team of experts provides guidance on creating the most effective visualisations and also update user with new trends and advances.

Our intention with this position paper is to add further intelligence to tool sets such as Many Eyes in order to automatise their visualisation suggestions and their expert guidance. In this manner, rather than interacting directly with users, visualisation researchers would communicate primarily with our framework by inputting information and validating results.

\subsection{Intelligent interactive tools}

This group comprises the state-of-the-art of intelligent data visualisation, where additionally to the user interactivity features, system inputs are also offered. Most existing tools are business intelligence-oriented, with focus on a holistic approach for the data analysis rather than just visualisation. A collection of these tools is reviewed in~\cite{ReviewVisualisation2}.

Concerning tools focused only on data visualisation, IBM has recently developed the IBM Rapidly Adaptive Visualization Engine (RAVE)~\cite{ManyEyes}, which is the underlying technology for the most recent version of Many Eyes. RAVE enables the user to describe how his visualizations should look. The technology behind RAVE however is proprietary and therefore we have no information about how the intelligent algorithms used to render the visuals work.

By analysing the existing tools, it is possible to observe that they all have significant shortcomings that impact on data analytics. Some tools require time learning and programming expertise, other tools, such as those where the data needs to be incorporated into a script are only suitable for small data sets; there are environments which are domain-specific; and more sophisticated intelligent tools are not open-source and therefore cannot incorporate changes implemented by the scientific community.

In general, all available tools still fall short in exploring further artificial intelligence methods. Overall, they offer a possibility of visuals and the user chooses one of them to display the data. We envision, instead, intelligent tools that take as input the data set and an array of attributes (metadata, user, domain, etc) and recommends visuals representations of the data. We therefore propose a next generation, innovative framework to fill some of these gaps and to assist users in defining better ways of showing their data graphically. The objective is to create extra intelligent layers in the process of data visualisation to optimise the usefulness of the obtained visuals. Our framework is introduced next.

\section {The Framework}

In this section we introduce our vision and outline the main activities we view as necessary for its accomplishment.  We do not recommend definite solutions for the challenges presented, as some of them are quite complex. Instead, we aim at describing the problem to be addressed and outline a general framework for solving it. Furthermore, one of our objectives is to call other researchers to further explore and develop our proposal.

We envisage a system that takes in a new data set and produces different formats of data visualisation, considering aspects such as the domain area, metadata, user profile and preferences, keywords and previous successful data display cases. The main core of this framework is composed of intelligent methods for knowledge interpretation and inference, to generate and evolve suitable candidate solutions. The outputs produced are evaluated by the target user and other set of criteria; and the results of this evaluation will in turn feed the system with information for future inferences. The scheme of our framework is shown in Figure~\ref{fig_Framework}. There are four main stages to consider, the creation of a knowledge base, the development of the adaptive interface for data communication, the system output evaluation and the feedback. The motivations for the conceptualisation of this idea and each stage of the framework are presented next.

\begin{figure}[!t]
\centering
\includegraphics[width=3.6in]{Framework}
\caption{The adaptive data communication interface vision}
\label{fig_Framework}
\end{figure}

\subsection{Motivations}

The motivations for this framework arose from our work experience. We work with data analytics and we provide analysis for several partners in industry and academia. These partners belong to a variety of areas of expertise, and they have distinct exploratory needs. We are therefore always faced with the challenge of determining the most appropriate graphs to their data sets. In addition, due to budget and time restrictions of our projects, this task needs to be performed quickly and effectively. Our standard procedure when we start characterising the dataset is to produce a number of graphs and assessing their utility, by getting feedback from our clients --- which requires several iterations, each potentially lasting days, delaying the actual analysis.

As expected, each domain area and user are drawn to different types of visual interpretations; and we need to learn more about these preferences to ultimately reduce the time spent in the data visualisation task and increase our productivity. We require therefore an intelligent engine that `remembers' successful examples, associates them with tags (domain, user, sub-area, etc.) and recommends visual solutions to new datasets automatically.

\subsection{Framework Stages}

In order to further understand our idea and the motivations behind it, a fictional example is introduced in this section. Let us pretend that we are hired to work on a project involving three professionals, the first one with a Computer Science background, the second one from Biology and the third one from Mathematics. These experts want to investigate the iris dataset. This dataset is available from the UCI Repository of Machine Learning~\cite{umlr:2010} and is a simple, well-known benchmark in the pattern recognition community, which will serve our illustration purposes.  The data set consists of fifty samples from each of three species of iris flowers (Iris {\it setosa}, Iris {\it virginica} and Iris {\it versicolor}). Four features were measured from each sample: the length and the width of the sepals and petals, all in centimetres.

Let us assume the following facts about our researchers (1) the computer scientist is interested in validating a new cluster method; (2) the biologist has never seen this dataset and he is interested in looking at distributions of the species; and (3) the mathematician is interested in creating equations describing the relationship between the petals and sepals of the flowers.

\begin{figure*}[!t]
\centering
\includegraphics[width=7.3in]{Iris_Possible_Graphs}
\caption{Examples of possible visualisations for the Iris dataset}
\label{fig_Iris_Possible_Graphs}
\end{figure*}

Normally, our first step is to assist our partners with some data description and visualisation. We use a set of tools to produce a number of graphs.

Figure~\ref{fig_Iris_Possible_Graphs} shows examples of graphs we produced to interpret the data: (1) a table containing the correlation between the data set attributes; (2) a heat map, which also shows the correlations between the attributes, and therefore represents a different way of displaying the same information as item (1); (3) a scatter plot with histograms, displaying the projections and distributions of the attributes; (4) a line chart, where each line shows the corresponding value (in cm) for each attribute (y axis), for the 150 flowers of the database (x axis); (5) a pie chart with the distribution of flowers per class; and (6) another pie chart showing the same information as graph (5), but with a different design style. All these graphs extract elements of information from the data, however the usefulness of the information transmitted is subjective, depending on the viewers and their questions about the data.

In order to determine which are the best visuals, we need feedback from the viewers. Suppose the computer scientist finds graphs (1), (2) and (3) useful for his work and states that visualisation (4) is not useful; the biologist finds (1), (2) and (3) useful and cannot understand figures (3) and (4); and the mathematician understands all graphs, but finds graph (4) not very informative. Once these preferences, associated with the profiles are collected, they need to be stored for future reference. A schematic representation of this process is shown in Figure~\ref{fig_Users}. This part of our example falls into the first stage of our framework (Figure~\ref{fig_Framework}), which is further discussed next.

\begin{figure}[!htpb]
\centering
\includegraphics[width=3.5in]{Users}
\caption{Building the knowledge base}
\label{fig_Users}
\end{figure}

\subsubsection{Stage 1 - The Knowledge Base Compilation}

As explained in our example, in this stage a ``memory'' of successful cases of data visualisation is built. The purpose is to collect references for the intelligent engine, i.e. our adaptive interface to be able to provide user-centric visual schemes based on previous profiles of similar case studies. This database is supposed to store a maximum possible information about users, domains, types of data, keywords, etc.

To obtain this knowledge base, an extensive search in the literature, web sites, research papers, online news and open source online data visualisation tools needs to be conducted. In addition, pilot studies and user surveys need to be carried out to determine the human factor elements and requirements that need to be incorporated into the memory mechanism.

This information gathered is subsequently transferred to the intelligent core of our framework in distinct manners, for instance, via direct queries or through extracted knowledge. We foresee a considerable amount of facts being collected, therefore this knowledge base needs to be mined to determine the rules, patterns, tags, parameters, etc. that will serve as inputs to train and tune the adaptive learning system. In addition, once the data is input in the system, it is also likely that it will need some sort of pre-processing and standardisation.

We understand this phase can be quite laborious, and defining `how' and `what' needs to be collected to create our framework memory is a difficult task. In addition, there is the challenge of defining automatic ways and selecting the appropriate technologies to search, collect and store the information needed. Another difficulty that might be encountered is how to define noisy data, i.e. irrelevant information, the misuse of visuals, etc. There is therefore the need to employ different methods of information retrieval~\cite{Manning:2008:IIR:1394399,Turpin:2006:UPV:1148170.1148176,Singhal01moderninformation,Frakes:1992:IRD:129687} and text mining~\cite{CohenH08} in some sort of ensemble to guarantee that, as much as possible, only useful information is stored.

After the knowledge base is created, we subsequently need some sort of intelligent engine that will extract the knowledge collection to feed the next stage.
Data mining needs to be applied to extract rules, patterns, associations, etc to assist building the inference models for new case studies. The collection of inference models constitute the second stage of our framework, as discussed next.

\subsubsection{Stage 2 - The Adaptive Data Communication Interface}

\begin{figure*}[!ht]
\centering
\includegraphics[width=5in]{NewUser}
\caption{The recommendation process}
\label{fig_Recomendation_Process}
\end{figure*}

This is the intelligent nucleus of our framework. The purpose of this interface is to employ the knowledge obtained from past examples to infer and create new graphical interpretations for new problems. According to our ideas, after the knowledge base is created and the intelligent system is trained, the adaptive interface should be able to start providing recommendations.

Back to our case study, let us suppose a new user has new data and he/she wants to visualise it. The user is a Biology student. He spent his/her internship gathering more instances of the iris flowers and wants to visualise the data collected. He/she inputs his/her profile and dataset to the system, and the intelligent engine needs to work out the best visualisations. Figure~\ref{fig_Recomendation_Process} illustrates a possible manner this engine is supposed to work for this example.

As shown in the figure, the system should output successful graphs that were defined as preferable by similar users. For example, the system could indicate a heat map, a pie chart (based on previous experiences) and recommend a new visual interpretation, i.e. a box-plot (see Figure~\ref{fig_Recomendation_Process}).

As shown in Figure~\ref{fig_Framework}, we envision this adaptive intelligent interface as a combination of machine learning techniques, such as rule-based approaches~\cite{Piatetsky-Shapiro1991,Agrawal93miningassociation,Hipp00algorithmsfor,Girotra:2013,914856}, case-based reasoning~\cite{Aamodt:1994,Hüllermeier:2007,Schank:1983:DMT:538776,Kolodner1983281}, active learning~\cite{settles2009active,olsson2009literature,Lughofer12a} evolutionary algorithms~\cite{Back:1997:HEC:548530,Back:1996:EAT:229867,Goldberg:1989,Holland:1975:ANA,Michalewicz:1992}, recommendation systems,  and other machine learning methods~\cite{Mitchell:1997,Han:2001}.

ENDS HERE FOR NOW

{\bf Andr\' e, this is the bit I could use some of your brains :)
I want some sort of ensemble, where instead of a majority vote, there would be a majority (or consensus) of what visual would be suggested. (I am not using the word recommendation very often, because I dont want the reader to think this is purely a recommendation system. As discussed, we are creating new visuals, rather than just recommending existing. THis is novel and not part of the traditional recommendation systems (i hope). need to read a bit more about it. Any comments, bullet points very welcome}

As it can be observed... not recomendation system as it generates new unseen cases...

\subsubsection{Stage 3 - Evaluation}

The new user subsequently chooses his favorite graphs, which will in turn feed our knowledge base and adjust our intelligent system.

what the user likes
there could be an online survey also to collect preferences
we could have an input of psychological factors affecting profiles of users.

this would provide some sort of score or ranking of the existing associations between users, domains etc and the visuals
This would also provide a ranking of those inference models that are not working well. those that need to die, be fixed, those that perform poorly for this task.

this is therefore also a way to evaluate the recommendation/ML techniques used. this will provide an on-line feedback of how our intelligent mechanisms are performing. It will also evaluate the utility of each part of the ensemble.
concerned with testing the framework and a compilation of my multifactor evaluation (user, crowdsourcing, expert evaluation, human and psychological factors) [28-31] results. I intend to perform a detailed appraisal of the environment, outline the insights provided as well as report the types of data and users for which the interface works more appropriately.

\subsubsection{Stage 4 - Adaptation}

\subsection{Discussion}

\section{Conclusion}

Adding intelligence to suggest visualisations is a difficult task. It involves several elements working together to achieve final satisfactory results.

Limitations:

we understand that the domain of data visualisation is and encompassing most visualisation techniques into a single interface seems unachievable. However, the framework can be sucessfuly applied to specific domain areas, within a limited scope. In addition as the system is adaptable, it can migrate to the tecniques that are trendy (useful) for during a certain period. There is also a majority of cases that fall into a definite set of possible visualisations. It is the task of our framework to suggest (assist researchers to define), amongst the toolset, those methods (or set of methods) that combined produce useful visuals.

However, due to the complexity of the problem addressed and the many unforeseen questions that might arise during the implementation of this idea, each stage of the framework on its own represents a large avenue for research and new insights. This framework can possibly be extended to other areas of data analysis.

Our intent, however, is to add an extra interface that could better guide the data owners into the possibilities of exploration of their data.

I understand this is a long term ambitious vision, which might not be entirely accomplished by the end of this fellowship. This is however intended to be ground-breaking research which will lead to a number of long term research activities and further grant proposals.

 EXTENSIONS

this is future work
The results of the fellowship grant research will lead to an open-source, extensible framework capable of inputting, processing and outputting results for extremely large datasets.  High performance computing (HPC) based approaches provide a means to effectively manage my interface and thereby improve the interactivity of users of the system leading to a more rapid input-to-result loop. This grant has the aim of developing and adapting my Adaptive Data Communication Interface described below to a HPC environment.

\bibliographystyle{IEEEtran}

redpajama_set_name: RedPajamaArXiv


*NEW & IMPROVED! This mix has been reformulated!
A quick and easy bread dipper that taste amazing and simply mixes with olive oil. It will rival any you have ever had at an Italian restaurant. Made with garlic, herbs and spices.
Also makes a wonderful chicken or shrimp scampi served over pasta, and wonderful marinades, saute base, and dressing.
OMG this is sooo good. I used a scoop to cook an egg and it was even good. Yes this works great on shrimp as well.
I bought this recently and it was the first dip I tried. I did half the recipe on the package and it was very strong garlic taste. Id recommend that you use less of the dip to the amount of olive oil if you don't want a really strong taste of garlic. I am still playing with the amount, but I guess its just my taste preference. plan to try on potatoes.
Brought this to a work event and everyone went crazy for it! It was the most popular snack there. I toasted little chunks of bread to dip in it. One of my coworkers got some and used it to make garlic bread at home. Perfect flavors blend and so easy to use!
Made chicken and shrimp scampi with this. Only needed half but used all of it so it was strong. Next time I will save half for bread!
Great sauteed with fresh sliced potatoes or zucchini.
I LOVE this bread dipper! It has a great flavor. I've also used it to make garlic mashed potatoes, yum! Highly recommend, everyone that's tried it has love it.
This made an awesome seasoning for my grilled chicken. I used nothing else but this and I loved it.
I used this in my shrimp scampi and it was amazing!


In celebration of LGBTQ Pride Month, we're hosting a fundraising tap takeover with Hops & Grain in support of Out Youth, with $1 being donated for every House Rational and Hops & Grain beer sold. We chose Austin based Out Youth because everyone deserves a place to feel at home. Out Youth provides a safe haven for LGBTQ youth to meet new friends and be part of community where everyone is treated like family. They offer several services to young Austin adults including counseling, youth prom, and more. Out Youth works with the KIND Clinic to help provide resources for counseling, free HIV/STI testing, and gender affirming care for all.
Our friends at Hops & Grain were a clear choice for a tap takeover because of their work in the LGBTQ community. In April Hops & Grain brewed a beer named Chingona. The American lager is a collaboration with Hustle for a Cause, an Austin based social impact production firm that highlights and promotes LGBTQ women of color. As a socially conscious cooperative ourselves, we greatly admire, and continue to be inspired by Hops & Grain's commitment to and involvement in the LGBTQ community. We will be tapping their Maibock, Porter Culture and Dispensary Pale Ale.
There will be other opportunities to support these great organizations here at Black Star throughout the month, so be on the lookout!
Black Star Co-op has had a long relationship with our friends over at Blacklands Malt in Leander, TX, using several of their malts in a number of beers over the past few years. Maybe you have seen it noted on our beer board or listed in a description on a Facebook event: "Texas grown and malted". But what does that really mean? Well, it may surprise you to know that Blacklands was the first craft malthouse in Texas. It may also surprise you to know that prior to 2012 malting quality barley was not grown in Texas. Like, ever. It may also, also surprise you to know that this small company, in a industry of enormous scale and automation, back-breakingly produce tons of malt with one very driven owner and a small crew. This story is one we don't share nearly as often as we should, so we decided to do something about it. On June 27th we will be hosting a Blacklands Malt Tap Take over here at the pub and would love to share this story with as many folks as possible. Along with 6 of our own house beers, we will be showcasing several other local guest beers that share our love of Texas made, Blacklands malt. Join us for a beer or two as well as a Q&A session with the folks from Blacklands and find out what supporting a local craft malthouse truly means.
On a warm spring day Marco from Zilker Brewing Company and Andy from Black Star Co-op were chatting over beers after a brew day and it occurred to them that a collaboration beer between the two breweries was inevitable, and even overdue. After a couple of pints inspiration had yet to strike so a change in scenery was needed. Top Shelf was born where most great ideas are born, in the bottom of a $1 margarita at Fuzzy's Taco Shop. Brainfrozen and lethargic, Marco's eye began to water and Andy's heartburn subsided for just a moment when the words "Margarita beer" were uttered. They knew they had struck gold. Starting with a kettle-soured base beer they then added lime juice, tangerine puree and tequila-soaked oak to meld into a delicious beer concoction. Just in time for Cinco de Mayo, Top Shelf is the most refreshing beer you never knew was beer.


Spend one last summer with the Mother-Daughter Book Club at camp in this bittersweet conclusion to Heather Vogel Frederick's beloved and bestselling series.
After so many summers together, Emma, Jess, Megan, Becca, and Cassidy are reunited for one final hurrah before they go their separate ways. The plan is to spend their summer as counselors at Camp Lovejoy in a scenic, remote corner of New Hampshire, but things get off to a rocky start when their young charges are stricken with a severe case of homesickness. Hopefully, a little bit of bibliotherapy will do the trick, as the girls bring their longstanding book club to camp.
"I can't believe I gave up my internship for this," moans Megan, staring glumly out the rain-streaked window.
Cassidy turns the windshield wipers on the minivan to the highest setting. "Whose idea was it, anyway?" she asks, scowling at the road ahead.
My friends have been needling Jess ever since we left Concord. Not that I blame them—I haven't seen this much rain since that soggy year I lived in England. It drizzled all week back at home, but Mother Nature really turned on the faucets when we crossed the border from Massachusetts into New Hampshire a couple of hours ago.
"Things won't seem so bad once it clears up," says Becca, who is calmly filing her nails.
I give her a sidelong glance. Becca's not usually this cheerful. I'm guessing her good mood is the result of the care package she got from Theo Rochester, her long-distance crush. He sent it care of Pies & Prejudice, Megan's grandmother's tea shop, where Becca has been working part-time after school. It's kind of our hangout—and by "our" I mean the mother-daughter book club that we started back in middle school and that's been going strong ever since.
We all happened to be at the tea shop when the package arrived yesterday afternoon.
"Box of snakes?" Cassidy had asked, smirking.
Snakes are Theo Rochester's passion in life.
Becca had refused to take the bait. She'd just laughed and opened the box eagerly, pulling out a University of Minnesota T-shirt—the one she's now proudly wearing—some fudge, and a small stuffed gopher with an M on the front. Goldy Gopher is the university's mascot, as Becca has told us about a zillion times since she got her acceptance letter. A gopher isn't exactly the most inspiring mascot—it's not like a tiger or a bear or something—but Becca is so ridiculously happy about the fact that she's heading to Minneapolis for college this fall that no one wants to burst her bubble.
"That's because we are in the middle of nowhere," Cassidy replies, scanning the road ahead from under her baseball cap—her favorite Red Sox one, of course.
"Sheesh, Jess, way to give me a heart attack!" Cassidy slows, flipping on the blinker, and a moment later we turn off onto a gravel road marked CAMP LOVEJOY.
She pulls into a parking area in front of a small log cabin. There's a sign over the front door that says OFFICE, but no lights are on inside, and as far as I can tell, no people, either.
We watch as she picks her way gingerly across the puddle-pocked gravel, knocks on the door, peers through the window, knocks again, then looks over at us and shrugs.
"Nobody's there," she reports, climbing back in beside me again and shaking raindrops from the end of her long blond braid.
"Shut up, Megan," Jess snaps.
Megan was offered an internship at Flash magazine this summer, and even though the editors assured her that it wasn't her only chance, and that she could take them up on the offer any time she wanted, and even though she signed up of her own free will to be a counselor here along with the rest of us, she's been lamenting her choice ever since we started our road trip this morning.
The minivan lurches and swerves as Cassidy tries to avoid the potholes in the unpaved road. A moment later, we plunge into darkness. The sky is completely obscured by tall trees overhead. Tall, wet trees, their branches dripping nearly as much rain as the clouds above.
I reach over and pat her knee. She's my best friend in the whole world, and because I know her inside and out, I can tell she's just about had it.
The thing is, though, Megan's got a point. It's only 4:30 in the afternoon and it's the middle of summer, but this road is as dark and gloomy as something out of one of Grimms' fairy tales.
I stare glumly out the window. This was supposed to be a fun adventure—what could be better than spending our last summer before college together, working as camp counselors?—but so far the adventure hasn't been off to a good start. I'd been so looking forward to getting away from Concord. Too many memories in our hometown right now, and too much heartache.
Stewart and I were done. He'd gone off to Middlebury College and gotten himself a shiny new girlfriend, and even though we're technically still "friends," it's been really hard seeing him around town all the time these last few weeks. Which is pretty much inevitable, since he's Becca's brother and the Chadwick family and my family live on the same street. Plus, Stewart got a summer job at Vanderhof's Hardware, just a few doors down from Pies & Prejudice, and we'd been crossing paths almost daily ever since he got home from Vermont. So when the opportunity came to get out of town and head to a camp in the New Hampshire woods, I'd jumped at the chance.
Jess's mom and aunt were the ones who suggested it. I guess they went here when they were kids, and Jess was a camper for a couple of summers too. Her aunt and uncle own an inn not too far from Lake Lovejoy, and when her aunt saw an ad in the local paper that said the camp was hiring, she told Mrs. Delaney and Mrs. Delaney told Jess.
Technically, Camp Lovejoy prefers that their counselors spend a summer as CITs first—that's short for "counselor-in-training"—but we were all too old for that program. Jess's aunt Bridget is good friends with the camp director, though, and she vouched for us, so here we are.
Cassidy swerves to avoid another pothole, and Jess and I bump shoulders. She glances over at me. "Everything's going to be fine, I promise," she whispers.
She's not just talking about the weather. Jess is my best friend in the whole world too, and she knows me inside and out. She knows how hard these past few months have been. "I hope so," I whisper back.
As we emerge from under the protective canopy of trees, water drums against the roof. The rain isn't letting up a bit. If anything, it's coming down harder.
"There's the Dining Hall," Jess tells us, pointing through the water-streaked windshield to a large, rambling log building ahead. Lights gleam from the windows—that's a promising sign—and there are a dozen or so cars in the parking area near the flagpole. "See?" she says triumphantly. "We aren't the only ones here after all." Then she shrieks, and the minivan swerves again.
Sure enough, in the distance beyond the Dining Hall, shrouded in mist, I can just make out the expanse of gray that is Lake Lovejoy. Right now though, it doesn't look the least bit inviting. Just big and cold and wet.
Cassidy pulls into a parking spot and we all climb out, trying to avoid the mud puddles as we huddle together in our rain jackets, peering at what we'll be calling home for the next seven weeks. My heart sinks. It's not exactly the picture-perfect postcard setting I'd been expecting.
A gust of wind sends the rope on the nearby flagpole slapping soggily against the metal pole and drives a rivulet of cold water under my hood and down my neck. I jump, letting out a yelp of displeasure.
Jess turns around. Spotting the expression on my face, she shoots me a look that clearly says, Not you, too?
"I'm fine," I mutter, flinching as another gust rattles the big wooden WELCOME TO CAMP LOVEJOY! sign.
I'm feeling anything but welcome right now.
The door to the Dining Hall flies open, and someone emerges carrying a giant umbrella.
"Jessica Delaney!" the someone cries, splashing over to join us. She enfolds Jess in a one-armed hug while raising the umbrella high in an attempt to shelter the rest of us. We crowd under it like chicks under the wings of a mother hen.
Jess nods. Under the hood of the woman's rain poncho I catch sight of close-cropped Afro-style hair flecked with gray. Beneath it, a pair of bright brown eyes regard me cheerfully. When the woman smiles, I can't help smiling back.
We follow her across the parking lot to the Dining Hall's wide front porch. I make a mental note to revisit it on a sunny day, as the row of rocking chairs looks like a promising spot to sit and read. Inside, we hang up our rain jackets on wooden pegs in the coatroom, then continue into the main dining area.
"If Camp Lovejoy has a beating heart, this is it," Gwen tells us, raising her voice to be heard above the hubbub. The other counselors are clustered around a crackling fire in the big stone hearth at the far end of the room, talking and laughing. For a moment, I feel that familiar flutter of anxiety in my stomach that comes from being with a bunch of people I don't know, but I tell myself to quit being an idiot. I'm not in middle school anymore. I'm heading to college in a few months, and the girls all look friendly enough.
I give her a rueful smile. Sometimes it's a pain to have a best friend who knows you so well. Jess loves to remind me about the day we met. It was the first day of school, and I was so nervous I threw up on our kindergarten teacher's shoes.
She heads to the kitchen, and my friends and I make a beeline for the hot drinks. As I take a sip of cocoa, I feel myself start to relax. Jess is right. Everything is going to be just fine. The rain will stop, the sun will come out, and we'll all have an idyllic summer by the lake with a bunch of adorable girls to mother.
The best part? Jess and I are going to be co-counselors. We'd been assigned to Nest, the cabin for the youngest girls at camp. Becca and Megan will be right next door in Balsam, with the eight-year-olds, and Cassidy gamely volunteered to share a cabin with a stranger. She'd been assigned to Twin Pines, along with a seasoned counselor named Amanda Dixon. They'll be in charge of the nine-year-olds.
This announcement prompts a hearty cheer.
Now that all of you are here!
Cassidy elbows me in the ribs. "Stanley would totally love this place," she murmurs, and I have to stifle a laugh. Her stepfather has a cornball sense of humor. We all love him for it, though.
I'm not much for being the center of attention, but I muster a smile and wave gamely when Gwen announces my name. The other counselors smile and wave back, and I feel the flutters in my stomach subside.
Then Gwen drops a bombshell.
The fireplace crowd groans loudly. Amanda is clearly a favorite. I look over at Cassidy to see how she's taking the news about her co-counselor, but it doesn't seem to faze her.
Panic washes over me. We're not going to be together?
And then the bombshell explodes.
"I'll be assigning Felicia to take Jess's place in Nest," Gwen continues.
The crowd by the fireplace parts. A girl steps forward and I stare at her blankly for a moment. There's something familiar about those blond braids coiled around her ears like a pair of cinnamon rolls. For a moment I can't put my finger on it.
The Felicia that Gwen is talking about is Felicia Grunewald! Jess's know-it-all cousin!
"You didn't tell me she was going to be here!" I whisper frantically to Jess.
I look over at Gwen, hoping beyond hope that she was kidding. She had to be—Felicia nearly ruined my friendship with Jess the last time our paths crossed.
I clutch Jess's arm. This couldn't be happening! Our summer was ruined. With Felicia as my co-counselor, camp wasn't going to be any fun at all.
It was going to be a disaster.
1. Have you read other books in this series or was this your first introduction to the characters? If you hadn't met them before, were you interested in them? Were you curious enough to go back and read the earlier books? If you had met them before, is your favorite character the same as she was in previous books?
2. Have you read other books where more than one character narrated, in alternate chapters? Which ones? How was this book like those books? How was it different? Do you enjoy hearing more than one character's voice in a single story?
3. Have you read Understood Betsy? If not, do you want to read it now? If so, discuss how that book's events are reflected in this book's events. Why do these girls enjoy such an old-fashioned book? Share some examples of old-fashioned books that you like. Can you suggest a few books that each of the girls might especially enjoy, and why?
4. Did you go to camp? How was your experience? How was it similar to, or different from, the Camp Lovejoy experience? Share some camp memories.
5. What would your ideal camp job be? Would you enjoy spending the summer with your friends, or would you enjoy going to camp alone and making new friends? Would you rather be counselors with your friends, or go alone to make new ones?
6. This is the final book in the Mother-Daughter Book Club series. Do you think the author has chosen a good place to end the series, or do you think there could be more?
7. This is the girls' last summer together as they are on the brink of attending college. Do you think they will remain good friends, or will they grow apart?
8. Describe each girl with just one word. For example, for Megan you might say "fashion." How are these words a clue to the girls' futures? Which of their future careers can you identify with? Are you as focused on your future career as they seem to be?
9. Discuss how the opening setting of the book, with the girls' dark and rainy arrival at camp, sets up their expectations of their summer experience. What happens to make them start thinking in a more positive way? How would a bright and sunny setting have started the book off differently?
10. Give an example of when one of the girls surprised you, like when Cassidy says, "a person could get kind of choked up . . . if a person were the type to get choked up. Which I'm not." Do you enjoy being surprised by a character, or would you rather he or she stay predictable?
11. The camp motto is "Broadening horizons for over a century." What does this motto mean, and how does it relate to the girls? Discuss how the motto is also one of the main themes of the book.
12. Do you have a favorite book that is, as Emma says, "as comfortable as my favorite pair of slippers"? Are there common types of themes, plots, or characters in your favorite books?
13. The book club members think that Jess's cousin Felicia is O.D.D. (their code for "odd"). Do you agree? How is Felicia different, and how do the girls begin to appreciate her? Do you have friends like Felicia?
14. Discuss the character of Sergeant Marge and the stereotypes she represents. Why does the author include her? Does she seem inflexible just because she is an adult? Does the author succeed in showing her as a relatable person by the end of the book?
15. Do you think these books would make a good TV series? Why or why not?
16. The camp director tells the counselors to try and give the campers a "memory-maker" before the summer is over, to give them a chance to do something naughty with the thrill of getting caught. Do you think this idea of planned mischief works well? Does the fact that it's been planned make it an artificial experience?
17. Emma says, "Why is it that talking to my mother always makes me feel so much better?" Is this true for you? How are you and your mother alike, and different?
18. Megan and Becca think that Emma is in "full reinvention mode" after her breakup with Stewart. Have you ever wanted to reinvent yourself? Why? How would you begin?
19. Camp Lovejoy is a tech-free zone, and no mirrors, makeup, or beauty products are allowed. Do you think this is a good thing? Are those items unnecessary distractions? Would you be able to enjoy your summer without them?
20. Emma's mom tells her, "Happiness is about doing some good in this world . . . It comes from finding what you were meant to do, and doing it." Do you agree? Discuss how this advice might be received and understood by each character by the end of the book.
1. Choose one of the following quotes from Understood Betsy and write a short essay relating the quote to the plot or characters in Mother-Daughter Book Camp.
2. In Chapter 4, Gwen, the camp director, introduces the camp philosophy, saying, "We accept no limitations at Camp Lovejoy." Write your own pep talk welcoming campers and counselors, and then perform it for the others in your group.
3. Write a script for an episode of a TV show based on one of the book's chapters, and stage a reading with the group.
5. As the girls do for Dorothy Canfield Fisher, the author of Understood Betsy, compile a list of Fun Facts about this book's author, Heather Vogel Frederick.
6. If you are musically inclined, compose a new camp song for Camp Lovejoy. Then record and/or perform it for your group.
7. Imagine that you are a camper at Camp Lovejoy, and write a letter home to your best friend. Describe your cabin's counselors, and describe what a good (or rotten!) time you're having.
Heather Vogel Frederick is the award-winning author of the Mother-Daughter Book Club series, Absolutely Truly, the Patience Goodspeed books, the Spy Mice series, and Once Upon a Toad. An avid fan of all things maple, Heather and her husband have recently been transplanted from Portland, Oregon, back to New England, close to where Heather grew up. You can learn more about the author and her books at HeatherVogelFrederick.com.
"Pranks, songs, poems, food, and games. . . . all innocent fun for summer campers."


text:
describe("Jasmine fixture extension", function () {
    describe("Affixes dom elements to body", function () {
        it("Inserts a new element on affix", function () {
            expect('#test1').not.toExist();
            affix('#test1');
            expect('#test1').toExist();
        });
        it("Inserts subelements when given", function () {
            affix('#test2 .something-special');
            expect('.something-special').toExist();
            var parent = $('#test2 .something-special').parent();
            var id = parent.attr('id');
            expect(id).toBe('test2');
        });
        it("Can add elements with multiple classes", function () {
            affix('#test3 div.this.that');
            expect('#test3 div').toHaveClass('this');
            expect('#test3 div').toHaveClass('that');
        });
        it("Creates new elements as divs by default", function () {
            affix('#test4 .subelement');
            expect('#test4 .subelement').toBeMatchedBy('div');
        });
        it("Can add different types of elements", function () {
            affix('#test5 p.part1');
            expect('#test5 .part1').toBeMatchedBy('p');
            affix('#test5 span.part2');
            expect('#test5 .part2').toBeMatchedBy('span');
        });
    });
    describe("Cleans up after each test", function () {
        it("Formerly affixed parts are removed when out of scope", function () {
            expect('#test1').not.toExist();
            expect('#test2').not.toExist();
            expect('#test3').not.toExist();
        });
    });
});
//# sourceMappingURL=jasmine-fixture-tests.js.map

redpajama_set_name: RedPajamaGithub


Contact us for more information about Jody Victor or MarkerMan Productions.
There are a few newer features added to Gmail in the past year or so that can be annoying to some, helpful to others.
One newer feature is called Nudges. Do you forget to answer emails? Gmail can nudge you now to answer the email. I had noticed there was an older email (4 days old) that I wanted to wait to answer. All of a sudden the email was at the top again. In the subject line there was orange print that said "Received 4 days ago. Reply?" You can choose to reply or even "snooze" the email. If you snooze it, it will go into a new folder called "Snoozed". This can be enabled or disabled in Settings.
"Smart Reply" is another newer feature. The first time I saw it, I was a little confused because I hadn't read anything about it. These are the words that show up at the bottom of an email that allow you to choose a canned response. For instance, based on words in the email (yes that's creepy), I'm looking an email that ends "How's that sound?" and the canned response choices are: "Sounds good to me.", "Sounds like a plan.", and "Sounds great!" So I could choose any one of these quick replies. I can usually tell when I've gotten one of these from somebody. These Smart Replies can be enabled or disabled in Settings. This picture shows the instructions for disabled from your iOS device.
Another newer feature is the "Hover Actions" where you can hover over the email list and delete or label while in the list. This action can be enabled or disabled in Settings.
You can now add a split view to Gmail where you can see the list of mail on the site and a pane with email to the side or top of it (horizontal split or vertical split). If you have a wide screen, it makes it nice to work with.
Just a couple weeks after Collection #1 Breach was identified, there come Collection #2-5 Breaches. There are an estimated 2.2 billion unique accounts compromised in this breach.
The site we usually check for breaches (HaveIBeenPwned.com) has not been updated yet. In the meantime, you can use the Hasso-Plattner Institute's tool to check. When you enter your email into this tool, it will email you a report of what has been found in a breach.
Once again, we want to stress that you use a password manager, use hard to type or guess passwords, use 2FA where available.
You've gotten those emails asking to click on something. It could be to learn how to make more money, or maybe someone has your information, or something that really looks legitimate. They prey on people hoping to get more of your personal information.
There was a new breach found last week and reported by Troy Hunt on January 17, 2019. This one is a massive breach where a collection of emails and passwords of over 2.5 billion rows of combinations. There were over 1.1 billion of these as unique combinations found possibly due to emails being in both upper case and lowercase. There were a total of of over 700 million unique email address with passwords.
Perhaps you are no longer using a particular email that was found in the breach. Or maybe your password has been changed. Chances are you are or were a little lax about your passwords and re-used them on different sites.
We recommend you use a password manager and let it generate secure passwords for you. You would only have to remember that one password and can have access to all your passwords and sync them to your devices. Some managers even offer storage of sensitive documents.
Read Troy Hunt's article here.
Does Google know more than you want them to know?
Google services on Android or iPhones can store your location data, even when you try to prevent it through your device settings.
Google Maps can make a timeline of your movements, for example. It works so well that last year a warrant was served by police in North Carolina to Google to find devices near a murder scene. You can turn off your location history so the places you go will not be stored.
This may not keep Google from tracking your movements through nearby towers but it is something more you can do to make it a little more difficult for them.
There is a Chrome extension to help you pick better passwords. It is called PassProtect by okta. It will tell you right away if your password is in a list of data breaches. It doesn't necessarily mean your username/email and password combination are in that list but if your password is already in a list of compromised passwords, you might want to rethink that password. You can add it to your Chrome browser.
They do not store or collect any information from you, they simply use the HaveIBeenPwned.com API to check against the list of known breaches. If you want to check a password on your own, you can check it here as well manually to see if it is in the list of breached passwords, because it is the same list. Hackers that have collected passwords will often use them to breach a site and try to guess people's logins and if you are using a password from a breached list, and they know your email or username, you may find yourself hacked.
There is an extension for the Chrome browser called Windows Defender Browser Protection. It extends your Defender protection to include your browser. It will keep you from accidentally clicking to phishing site. You can also turn the protection on or off. If you click to a link from an email it will help by reporting to you that the website is unsafe.
After you install it on your browser, you will see a small defender icon on the top of your browser. You can click it and then you will see the dropdown (shown below). You can turn on or off temporarily.
Get the extension for Chrome here.
Learn more about how it works from Microsoft.
Cryptocurrency is the term given to currency such as bitcoin, ether, or any of the other digital currencies out there. So how does this work?
Cryptocurrency runs on what is called a blockchain, a ledger or document that is duplicated over networks of computers. As this is updated, it is made available to the holder of cryptocurrency. Every transaction is recorded of every cryptocurrency. The blockchain is run by miners. Their computers tally up the transactions. They update the transactions and also make sure of the authenticity of the information received. In payment, miners are paid fees for each transaction. The buyers and sellers agree on the value of the cryptocurrency as it fluctuates.
The transactions are made peer-to-peer without a mediator like a bank. The buyer and seller do not know who the other is, but everyone in the blockchain knows about the transaction as they are made public.
If I wanted to buy something that costs $10,000, and find a seller that accepts cryptocurrency, I would try to find out the current exchange rate get the public cryptocurrency address, say bitcoin, and we would stay anonymous to each other. I would then have my Bitcoin installed to his computer, say 10 bitcoins rated at $1000 each. My bitcoin client would sign the transaction with his private key. The transaction would be verified and transferred and recorded.
Coinhive cryptomining scripts were found recently in 19 apps in the Google Playstore. One of the apps had over 100,000 users. They have since been removed from the store.
You are browsing the Internet and maybe you look at some items and then it seems every where you go you are seeing the same things or related items that you just looked at. Maybe you abandoned a shopping cart or changed your mind about the purchase. Maybe you started filling out a form and stopped in the middle of it. They can't possibly know what you typed, right? Or can they?
In an article by Motherboard.com, they cite a study done by Princeton University about boundaries. Or rather "No Boundaries." How do you think Pinterest or Facebook or other social media sites get the information? There are sites such as FullStory that allow website owners to capture every keystroke a user makes. They use "session replay" scripts to capture what the customers are doing on their sites. You can see some of the major companies who use fullstory.com here.
Now more than ever it is important to read websites' terms and conditions. They may collect things like medical conditions, personal data, credit card info. Passwords may even be "accidently" included in the data.
So what can you do? Run AdBlock Plus in your browser. According to the Princeton study, AdBlock has been updated to block all these scripts, thanks to the study.
This video shows FullStory capturing a user's data as it is being entered into a form.
On the run with his new girlfriend, Malina, they try to figure out what is going on. Not knowing it in the beginning, Sergio finds out Malina's sister was murdered and blames it directly on Circles. Not knowing who he can trust he works it out with Malina and they continue to find the truth.
The crux of the mystery is that what was found was "socialbots," bots that parade as people and interact with people and learn using AI algorithms. The bots were going to be used in a bigger plot to sway people to vote for a certain president whose agenda was to bring the US to own over a third of the earth's rare earth metals. Once in, a Chinese diplomat was going to blackmail him into not doing this as China would lose out a lot of their economy over this.
We've talked about passwords before and yet it is such an important thing because of all the breaches we see. Some people say they don't have anything that important so it doesn't matter or they say they need to use the same password for everything.
This is a totally bad practice and attitude to have about this. Think about all your accounts where you have purchased items, or your banking or credit card accounts. Do you really want to use the same password for everything? Once they breach one account, say your email, they can look through that to find what other accounts you are subscribed to and have a field day. This is even how identities are stolen.
Go to HaveIBeenPwned.com and check your email for pwnage.
Also click on their password tab and check to see if your passwords are on any common lists.
Use a password manager like LastPass.
Use 2 step verification. Use an authenticator, too.
Once you download LastPass, set it up with a hard to hack easy to remember password (the first video below gives some suggestions on how to find one.) You can then import all the passwords saved to your browsers. Once you have LastPass you can also run a kind of audit check for recommendations on which passwords to change – it will show you duplicates or not so secure passwords you already have.
Firefox just got faster. Two times faster. This past week, Firefox updated to Firefox Quantum (Version 57.0.) There are two versions – one for regular browsers and one for developers. It is built on a new engine for better and faster page loading. It also will use less memory than previously, and they say it is 30% lighter than Chrome.
It has built in privacy modes. You can block even hidden trackers by turning on tracking protection. When you block the ads and scripts that are bogging you down, the page loads even faster.
If there's a page you want to see later, you can save it to Pocket to view later. There is a library where it will place these articles as well as your bookmarks. You can search with other search engines with just a click. You can also customize it with themes or placement of icons for your tools and addons. You can take screenshots without adding an extension – it's built right in.
We recently came across the term "whaling" so of course, we needed to know more about it. Here is what the Victor crew found out. It is a form of phishing aimed at high-profile business executives, managers, CEOs, etc. They are going after the "big fish." The emails sent to them are more official looking and target a particular person. A regular phishing attack usually goes out to a lot of people trying to lure anyone. Whaling is also considered "spear phishing" where it is an attempt to target an individual person or company.
As with phishing, whaling is used to get a person to reveal sensitive information, such as login credentials, to an account. They do this by trying to scare the individual into giving this information up.
Whaling goes so far as to make a web page or email that looks like the legitimate one. You may even be enticed into downloading a program in order to view a page or to get your information. It may come in the form of a false subpoena, message from the FBI, or some kind of legal complaint against you.
Be aware of what you are clicking. If you can, hover over the link and see where it is taking you. Try putting the URL in an analyzer, such as VirusTotal or TrendMicro to see if it is safe. If in doubt, don't click or download anything you are unsure of.
Maybe you love, maybe you hate it but social media is here to stay. Many people used it as their lifeline during the past storm in Texas, known as Harvey. Many used Twitter or Facebook or Instagram to let people know they were in stuck and needed to be rescued. Still others used social media to let people know they were able to help.
The U.S. Coast Guard preferred for people to call them or 911 but people had trouble getting through. People even turned to Airbnb to offer their homes as shelters for those in need. The Hurricane Harvey Texas Rescue Facebook group offered ways to help those trapped or in need of rescue.
Passwords: should you use the one you want?
If you are looking for a password, you can check to see if the password you want to use has ever been used. Just go to the Have I Been Pwned website and look at the Passwords link. They now have a list of the passwords that have been breached. You can test your password against it and it will tell you if it's been breached but it will also tell you it may not be a good password even if it's not been breached.
So what is a bliki? The Victor crew came across this work and wondered. Well, in short terms it is a mashup of BLOG and WIKI. Blog is already a shortening of weB LOG. WIKI is a Hawaiian word meaning quick. So let's look at all these terms.
A blog is posts put on a site diary-style. People use them to report news, rant, keep journals, etc. They are quite popular. If you have a blog, you are probably the only who posts on it. Some blogs may have guest authors contributing or employees if it is a news blog. There are many popular blog softwares out there such as WordPress, Blogger, Typepad. In the case of WordPress, you can either use their blog at wordpress.com or download the software at wordpress.org and install it yourself using your own domain.
A wiki is usually run on wiki software. It generally doesn't have just one owner or leader but rather is open to the public to edit or to a group of users to edit. This is not as carefully planned out since anyone can contribute. There may be misspellings, poor grammar, etc. Wikipedia is probably the most popular wiki. Wikis may also not be reliable as to its actual content as we are all humans and have our own opinions and experiences that may influence our contributions.
So now we come to explaining this. Some explanations are that it is a blog with wiki support, or a blog that allows others to edit and contribute. This goes beyond the usual comments only you would find on a regular blog. There are wiki plugins for WordPress.
The Victor crew found an article on PCMag.com about some things that you can do with Google Maps mobile app that not everyone may know about. From this app, you can add stops, you can hail a ride (taxi or Uber, for instance), travel through time in Street View, create a private map, remember where you parked. These are just a few of the tips listed along with short videos.
The Victor crew has heard a lot of news lately about a cyber attack nicknamed WannaCry using ransomware. Ransomware is holds an infected computer hostage until a ransom is paid, usually in bitcoin, money that is virtually untraceable. This latest attack has caused global problems. In the UK, hospitals have been attacked. In the US, FedEx fell victim. If you use a Macintosh computer you are most likely safe as these attacks are targeted at PC users. If you are still running Windows XP you are even more vulnerable as there are no more patches being made for these systems.
Keep your computer up to date. Do the patches for your operating system.
Make sure to do security updates for your security service.
Only open attachments from the person you know and trust.
Be careful of programs or other items you may want to download.
Back up your computer to an external hard drive.
Keep copies of your files on cloud services.
If you do get infected and don't want to pay the ransom, which has been about $300-$600, you will have to flatten your machine (reinstall your OS). If you have kept your files on a cloud service or on an external hard drive, you will have defeated them. You will need to reinstall all your programs if you haven't backed up the entire system.
The predictions are that today there will be even more as people turn on their computers if they haven't been kept up to date.
The Jody Victor crew ran across an article that is truly disturbing.
A flaw in Microsoft Office given the ID CVE-2017-0199 has quite a history. This vulnerability allowed remote attackers to use Microsoft products to execute arbitrary code and take over computers. Ryan Hanson found the flaw last year. He spent some time to see if it could be made more deadly before contacting Microsoft in October 2016. Microsoft did not patch this right away. If they told people of a change in Word settings that would fix the flaw, then word would be out that there was a flaw with more ramifications.
They decided to release a fix in a later update. However, they sat on it and took their time. They started working on a solution in January but attacks had already begun. Through links in email, computers were infected with software that allowed eavesdropping. McAfee saw some attacks on April 6 of this year and blogged about it April 7. April 9, a program was for sale underground for hackers to exploit the flaw. On Tuesday, April 11, the flaw was finally patched in an update.
They don't know how many computers were hacked or how much money was stolen before this exploit was patched. If you don't automatically patch your PC, please do so now!
The Victor crew came across an urgent matter. If your browser is Chrome or Firefox, be aware of a new phishing attack. An attacker can send you an email with a link to a malicious website. You could visit a site that will either infect your computer or make you think you are signing in with your credentials as they trick you into thinking you are accessing the correct site.
The people from Wordfence, a security plugin for WordPress found this last Friday, April 14, 2017. They set up a demo site to show what is happening. It is well worth it to check their article and see if you are affected and what to do. They have set up a demo using a medical site, epic.com, so you can test your browser and browser settings. You can visit their demo site here in Chrome or Firefox. To compare the demo site with the real site they faked for comparison, you can click here to visit the real site here.
Chrome currently does not have a fix for it.
Last week, there was a major outage of Amazon's cloud servers on the east coast in VA. It lasted a few hours and caused havoc with many websites. It's not often that this happens, but when it does, it causes problems in many places.
If you use any of their services, you can check the status of their servers here. Even if you don't keep your website on their servers, you can find some of your apps having problems. Think Alexa, Nest, etc. Some major websites depend on these services as well and you may find them down as well.
If you are having trouble reaching a site, you can go to isitdownrightnow.com. The home page of this site has a list of major services listed with (hopefully) a green box to let you know it is running. It includes sites such as Netflix, Facebook, Youtube, Google, Yahoo, and the like. There is also a list on the right site of sites last checked and some sites that are currently down.
Oh, and human error was blamed for the massive Amazon server outage.
Yahoo has recently been in the news again lately due to yet another problem with data breaches. Having a Yahoo account, this Victor crew member has received an email from Yahoo about it.
In this message, they tell me that they are investigating the creation of forged cookies. They say they are taking steps to secure accounts. They say this forged cookie may have been created in 2015 or 2016 and they believe it to be connected to the September 22, 2016 data theft. They also give some actions you can take.
They suggest using a Yahoo Account Key which is something we will investigate ourselves at a later time. This user is on the verge of dismissing this account altogether although it was my first email created back in the 90s. I have added 2-step verification as well as changed the password.
Another email as a reminder from Yahoo states a reminder to secure to secure the account. They suggest updating to the Yahoo Mail app on android or iOS. They suggest to turn off insecure apps.
As I logged into the account after the above emails, there was a link to update security settings to block apps with less secure login. I am not sure what this entails yet, but will let you know when I find out.
We've written a few times about password security. But what if your phone number gets hijacked? This is not having your phone stolen but rather having your phone number taken from you. You no longer can use the two-step verification because someone else has the number they have on file for it. So how does a phone number get hijacked in the first place? The Victor crew wanted to learn more.
It can start with a text that looks like it came from your carrier. It may have a number or a login page for you to enter some information. All they need is your call-in pin and they can start the process of porting your number over to their phone. You actually think you are talking to a representative of your carrier. Once they have your number, they can use the "forgot password" function of all your apps and get a code sent to them to reset the passwords. Think of all the apps you have – your bank, your email, your wallet. So what can you do?
Put a passcode on your account with your carrier. Make sure whoever you are talking to uses that passcode with you. If a hacker tries to use it, hopefully the representative is on the ball and asks for the passcode.
Use the mobile carrier specific email address to access the account. Forbes suggests you have an address as your current primary one, one just for a mobile carrier, and one for all your sensitive accounts like banking. This way your primary account can't be used to steal your phone number.
Disable online access to your wireless account. You will have to go the store to make changes but it won't get hacked.
Ask your carrier to make changes with photo ID required.
Use a password manager and let it generate passwords.
Don't have the same security questions on all sites and don't answer them truthfully.
Do not connect your mobile number to sensitive accounts. Create a new Gmail email address and don't connect a phone number to it. Use Google Authenticator with one-time passcode generator to use it. They suggest using a Google Voice number.
Use a security key. Yubikey is a physical security key device. There are also devices you use a USB port for.
Use biometric authentication – fingerprint for example.
Don't say yes! If someone calls from an unknown number and asks, "Can you hear me?," don't say 'yes.' It will be recorded and they will have your voice saying yes in agreement and may use it to authorize changes on a phone bill, utility bill, or credit card bill.
The Victor crew thinks this sounds a lot like the old 'slamming' fraud where a phone company would ask you a few questions and if you said 'yes' to anything they would change your phone billing method, mostly to a much higher rate with another company.
Right now this is mostly happening in Virginia, although similar complaints came from the Pittsburgh Better Business Bureau in October.
Police are urging people that if they receive this type of call, to hang up immediately and don't answer.
If you use Gmail, like many others, the Victor crew wants you to be aware of a new phishing attack going around. This one is even fooling tech-savvy and security conscious people. They are trying to steal usernames and passwords for Gmail.
It starts as an email that appears to come from someone you know and may even have an image of an attachment you might think is from the sender. If you click on it, it will give a preview, like Gmail normally does but instead, a new tab will open and want you sign in to your Gmail account again. Make sure you look at the address bar and see only https://accounts.google.com… If you see "data:text/html," before it, (data:text/html,https://accounts.google.com/ServiceLogin?service=mail), DO NOT ENTER YOUR LOGIN!
If you think you may have already fallen for this attack, change your Google password.


DOES IT MATTER WHAT TYPE OF MOTORCYCLE HELMET I WEAR?
Wearing the right helmet can definitely keep you safer while driving your motorcycle on Tennessee roads. In fact, all helmets manufactured after May 2013 are required to meet Department of Transportation (DOT) labeling standards. A sticker on the rear of the motorcycle helmet will designate these helmets as "FMVSS No. 218 Certified," meaning that they passed certain tests, including vigorous impact testing.
According to the National Highway Traffic Safety Administration, one study found that 23 percent of motorcyclists admitted to the hospital who were wearing DOT-certified helmets at the time of their accident suffered a head injury. In stark contrast, the study reported that half of all motorcyclists wearing novelty helmets received a head injury.
Substandard helmets will not protect you well from head impacts if you crash your motorcycle. These helmets offer you no face protection and they lack the impact lining that DOT-certified helmets have. They are often just a shell that gives you a false sense of security, rather than providing any crashworthy protection.
When you are shopping for a new motorcycle helmet, there are a few things you should keep in mind to make sure you are getting the safest helmet you can. The first is to look on the rear of the helmet for the DOT sticker. A safe helmet will always fit the size and shape of your head properly, and should feel secure when you have it on. Always remember that your car has many safety features that are required by the law. Your safety while riding on your motorcycle, however, is in your own hands. You may also want to purchase a second DOT-certified helmet as a backup for yourself or in the event you have a passenger.


The Larkware Coding Contest came to an end this week, and boy, were they giving out some grand prizes. As a judge I couldn't participate in it, but I did get to check out all the cool stuff.
The first place goes to Snapper (By Leon Bambrick & Atli Björgvin Oddsson) , which simply sits in the tray and captures your daily computer activities into images ever X seconds. Then you can looks back at your day to remember what you've done for the hourly report.
I like the concept, especially since I was listening the other day to an ITConversations recorded show regarding cool stuff coming from the Microsoft Research Labs. One of the things mentioned there is a "life recorder" which you wear around your neck and it takes pictures and records sound based on various events. Very cool.


Microsoft has updated its Dynamics 365 software as a service (SaaS), which is now available from a UK datacentre and boosts integration with LinkedIn.
Dynamics 365 joins Office 365 and Azure in the Microsoft's UK datacentre, giving commercial and public sector organisations UK data residency.
Hosting the three services in the UK enables companies and organisations to work seamlessly to become more productive, gain new insights into their operations and create greater personalised experiences for customers, Chris Rothwell, product manager of Dynamics 365, wrote on the Microsoft blog.
By having its infrastructure as a service (IaaS) cloud, office productivity through Office 365 and its flagship enterprise suite in one cloud, hosted in the UK, Microsoft is laying the foundations for integrating higher level SaaS with its Azure cloud offering.
This is one of the benefits Microsoft CEO Satya Nadella spoke about in a recent conference call. At the time, he told financial analysts that companies may start with Azure, but they then start using more advanced services such as Microsoft Dynamics or HoloLens and machine learning.
The CRM technology value matrix 2h2016 from Nucleus Research reported that its customer relationship management (CRM) benefits from the broader Microsoft portfolio.
Brighton and Sussex University Hospitals NHS Trust is among the organisations now using Dynamics 365, which is being used to share information between medical professionals and patients. The ability to see a complete picture of an individual's needs means more people can be treated in their own homes rather than in a hospital, Rothwell said in the blog post.
Among the enhancements Microsoft has introduced into Dynamics 365 is a connection into LinkedIn Sales Navigator. Rothwell told Computer Weekly that prior to the integration, the sales process in Dynamics and LinkedIn Navigator were separate.
"There will be greater insight for customers. Sales uses CRM, email and LinkedIn, so we can give users a much richer view," he said.
Google cloud chief, Diane Greene, claims multi-year datacentre migrations are no longer the norm, as some firms are making the move off-premise in weeks or months.
451 Research's latest Voice of the enterprise report suggests enterprise IT buyers are feeling very optimistic about how much money they will get to spend on cloud and hosting technologies in 2017.
Veeam survey shows levels of penetration for as-a-service cloud options and reveals that most IT managers think cloud providers meet service levels better than in-house IT.
The integration enables salespeople to look up customers, with greater levels of insight being surfaced inside Dynamics 365, enhanced by the professional network available through LinkedIn Navigator.
Rothwell said all this information is now available in one place. "Application swapping is real productivity killer," he said, adding that the integration between LinkedIn Navigator and Dynamics 365 is cleaner.
Beyond the LinkedIn integration, Microsoft has started addressing skills retention and human resources (HR) management with Dynamics 365 for talent. Rothwell said this can be used to attract people to the organisation and supports recruitment and development.
Small businesses and retail are two other focus areas for Microsoft. UK users will be able to preview Dynamics for Financials, a version of the enterprise resource planning (ERP) suite aimed at small and medium-sized enterprises, supporting purchasing, stock control, sales and accounting.
Microsoft has also announced a vertical applications for retail, supporting omnichannel, merchandising and managing stock. It includes machine learning capabilities.


text:
Maryland Stores
Ross Dress for Less store locations in Maryland
Below is a list of Ross Dress for Less mall/outlet store locations in Maryland, with address, store hours and phone numbers.
Ross Dress for Less has 103 mall stores across the United States, with 3 locations in Maryland. View Ross Dress for Less stores in top U.S. cities.
Maryland is ranked 7 out of all 50 states for the number of Ross Dress for Less stores.
Looking to shop online? Visit the Ross Dress for Less website!
Ross Dress for Less Store Info
Ross Dress for Less Maryland
#5 of 24 in Department
Ross Dress for Less U.S.
#9 of 162 in Department
Baltimore, MD Mondawmin Mall (410) 225-9780
Charles County, MD Festival at Waldorf (301) 705-9728
Hyattsville, MD The Mall at Prince Georges (301) 559-5834
Ross Dress for Less has stores
Pennsylvania (5),
Virginia (2).
View Ross Dress for Less stores in All States (103).
Note: Our list may not include all of the Ross Dress for Less locations in Maryland, since our database only covers stores in shopping malls.
Stores Like Ross Dress for Less in Maryland
Ross Dress for Less is a Department store that offers , . The following 12 stores sell similar products within the state of Maryland.
Boscov's (3)
Burlington Coat Factory (6)
Belk (1)
T J Maxx (1)
Lord & Taylor (3)
Saks Fifth Avenue OFF 5TH (1)
Neiman Marcus (1)
View All 93 Stores Like Ross Dress for Less
Maryland Locations

redpajama_set_name: RedPajamaCommonCrawl


text:
<?php

namespace Bowerphp\Repository;

use Github\Client;

/**
 * Repository interface
 */
interface RepositoryInterface
{
    const VERSION_NOT_FOUND = 3;

    const INVALID_CRITERIA = 4;

    const INVALID_CANDIDATE = 5;

    /**
     * @param string $url
     * @param bool   $raw
     */
    public function setUrl($url, $raw = true);

    /**
     * @return string
     */
    public function getUrl();

    /**
     * @param Client $githubClient
     */
    public function setHttpClient(Client $githubClient);

    /**
     * Get repo bower.json
     *
     * @param  string $version
     * @param  bool   $includeHomepage
     * @param  string $url
     * @return string
     */
    public function getBower($version = 'master', $includeHomepage = false, $url = '');

    /**
     * Searches for the first match of a package version.
     *
     * @param  string $rawCriteria A criteria to explain the required version
     * @return string
     */
    public function findPackage($rawCriteria = '*');

    /**
     * Get a release
     *
     * @param  string $type "zip" or "tar"
     * @return string file content
     */
    public function getRelease($type = 'zip');

    /**
     * @return array
     */
    public function getTags();
}


You may have heard that once a child turns 13, he or she can choose which parent to live with. While an older child's preference will certainly be given weight, it is not up to the child's discretion.
In New York child custody cases, the judge is the one who ultimately makes the decision based on the child's best interests, which may or may not align with the child's wishes. In fact, this is a common thread in family courts across the country; usually the judge is the one with authority, not children.
Complex child custody matters can be simple and painless when parents agree to get along and be the best co-parents they can be. But, families are complicated and in many cases parents don't meet eye-to-eye. When parents cannot agree on child custody, a judge will have to render a decision based on the child's best interests.
The child's ties to their school, friends, extended family, and community, and the possible effects of making a change.
In every case, the child's well-being and safety is of the utmost importance. If there is a history of neglect, substance abuse, or child abuse, these factors will be weighed carefully. The courts make every effort to keep siblings together whenever possible, but occasionally a judge will decide to split up siblings because he or she determines that it's in the children's best interests.
Will the court consider a child's preference?
Whether a child is 3, 7, or 17, their preference is always important, however, once a child reaches the age of 13, the child's wishes will be given more weight. Still though, a younger child's preferences will not fall on deaf ears; judges are interested to learn what these preferences are.
Essentially, the more mature a child is, the more importance a judge will put on their preference. It's basically because younger children are more easily manipulated by parents. Usually, a child's preference will be a good indicator of the child's best interests, but not all the time. Sometimes children fall victim to parental pressure and judges have become good at detecting it.
If you have further questions about child custody, we urge you to contact Jason M. Barbara & Associates, P.C. to schedule a free consultation with our Nassau County child custody attorney!


text:
President Donald Trump boards Air Force One for a trip to H&K Equipment Company in Pennsylvania to promote his tax cut and economic plan, January 18, 2018.
Evan Vucci/Associated Press
argument / power
Starting the process will rein in a president undermining American ideals—and bring the debate into Congress, where it belongs.
by Yoni Appelbaum via The Atlantic on January 17, 2019
The electorate passes judgment on its presidents and their shortcomings every four years. But the Framers were concerned that a president could abuse his authority in ways that would undermine the democratic process and that could not wait to be addressed. So they created a mechanism for considering whether a president is subverting the rule of law or pursuing his own self-interest at the expense of the general welfare—in short, whether his continued tenure in office poses a threat to the republic. This mechanism is impeachment.
Trump's actions during his first two years in office clearly meet, and exceed, the criteria to trigger this fail-safe. But the United States has grown wary of impeachment. The history of its application is widely misunderstood, leading Americans to mistake it for a dangerous threat to the constitutional order.
That is precisely backwards. It is absurd to suggest that the Constitution would delineate a mechanism too potent to ever actually be employed. Impeachment, in fact, is a vital protection against the dangers a president like Trump poses. And, crucially, many of its benefits—to the political health of the country, to the stability of the constitutional system—accrue irrespective of its ultimate result. Impeachment is a process, not an outcome, a rule-bound procedure for investigating a president, considering evidence, formulating charges, and deciding whether to continue on to trial.
The fight over whether Trump should be removed from office is already raging, and distorting everything it touches. Activists are radicalizing in opposition to a president they regard as dangerous. Within the government, unelected bureaucrats who believe the president is acting unlawfully are disregarding his orders, or working to subvert his agenda. By denying the debate its proper outlet, Congress has succeeded only in intensifying its pressures. And by declining to tackle the question head-on, it has deprived itself of its primary means of reining in the chief executive.
With a newly seated Democratic majority, the House of Representatives can no longer dodge its constitutional duty. It must immediately open a formal impeachment inquiry into President Trump, and bring the debate out of the court of public opinion and into Congress, where it belongs.
How Impeachment Ended Up in the Constitution
James Madison thought of a lot of good reasons to impeach a President. Members of Congress might want to consult his list.
by Jill Lepore via The New Yorker on May 18, 2017
Impeachment, American Style
It's our democracy's ultimate weapon for self-defense. But does intense political opposition justify its use?
by Cass R Sunstein via The New Yorker on September 20, 2017
Inside the Founding Fathers' Debate Over What Constituted an Impeachable Offense
If not for three sparring Virginia delegates, Congress's power to remove a president would be even more limited.
by Erick Trickey via Smithsonian on October 2, 2017
When Is an Offense Impeachable? Look to the Framers for the Answer
Delegates to the constitutional convention were especially concerned about corrupt conduct used to gain the presidency.
by Adam Liptak via New York Times on August 23, 2018
Donald Trump's Not-so-Silent Majority
Unlike Nixon's famous "silent majority," Trump's backers are loud - and growing in volume
by Jonathan Zimmerman via Salon on May 29, 2016
Why This Is Not Trump's Watergate
Mueller and his team are facing a president who seems willing to take down the entire democratic apparatus to save his own skin.
by Andrew Cohen via New York Review of Books on October 31, 2017
When Richard Nixon Declared War on the Media
Like Nixon, Trump has managed to marginalize the media, creating an effective foil.
by Matt Giles via Longreads on November 8, 2018
Trump's Defense of Taking Foreign Money Is Historically Illiterate
The Justice Department lawyers are getting the Founding Fathers all wrong.
by Joshua Zeitz via Politico Magazine on June 11, 2017
5 Reasons This Still Isn't Watergate
Read this before you start printing tickets for an impeachment trial.
by John A. Farrell via Politico Magazine on May 30, 2017
Five Reasons Why the Comey Affair Is Worse than Watergate
A journalist who covered Nixon's fall explains why the current scandal may be more of a national emergency.
by James Fallows via The Atlantic on May 12, 2017
A Brief History of the Theory Trump and Barr Use to Resist Congressional Oversight
Is Trump's power as president becoming just what the Founders feared?
by Donald J. Fraser via History News Network on June 2, 2019
The Author of a New Book About Andrew Johnson on the Right Reasons to Impeach a President
Brenda Wineapple recounts the reasons behind impeachment of President Andrew Johnson and discusses similarity between him and Trump.
by Isaac Chotiner via The New Yorker on May 8, 2019
A National Debate Over Politics, Principles and Impeachment — in 1868
Was the impeachment of Andrew Johnson a matter of national principles? Or an affair of pragmatic politics?
by John Fabian Witt via Washington Post on May 24, 2019
The Fight Over Andrew Johnson's Impeachment Was a Fight for the Future of the United States
The biggest show in Washington 150 years ago was the trial against the President of the United States.
by Annette Gordon-Reed via Smithsonian on January 1, 2018
What Does Trump's Golfing Reveal about His Personality?
Donald Trump has been playing a lot of golf since becoming president. Can his habit be explained by his "sky-high extroversion?"
by Jessica Brown via JSTOR Daily on August 2, 2017
When It Comes to Harassing the Media, Trump is No Nixon
Trump challenges the press. Nixon changed it.
by Oscar Winberg via Made by History on October 16, 2017
Trump's Loyalty Fixation Recalls One of the US's Most Disastrous Presidencies
What we can learn about the current moment from Congress' efforts to impeach Andrew Johnson.
by Erik Mathisen via The Conversation on June 28, 2017
In Firing Comey, Did Trump Unleash the Next Deep Throat?
The backstory to the Watergate scandal reveals why presidents mess with the Deep State at their own peril.
by Beverly Gage via New York Times on May 10, 2017
The 'Madman Theory' of Nuclear War Has Existed for Decades. Now, Trump Is Playing the Madman.
Is he crazy, or crazy like a fox?
by Nicole Hemmer via Vox on January 4, 2017
Trumpism Is the New McCarthyism
Just as as McCarthyism did decades ago, Trumpism conceals the Republican Party's long-term program to dismantle the public sector.
by Ellen Schrecker via The Nation on May 21, 2018


Our service is all about planning for recovery. We offer one to one specialist advice to help Children and Young People create their own personalised support plans. Our aim is to support everyone on their journey to recovery, wherever they may be at the moment.
A worker is allocated to each service user to manage their care throughout their treatment journey from assessment through to exit and recovery support.
This group is designed specifically for service users in the 18-24 age bracket. This is a non drug specific session which incorporates 4 main elements: Relapse Prevention, Self-Care, Managing Change and Harm Reduction. This provides a balanced session and the opportunity for the attendees to participate as much or little as they wish, reflect and gain peer support. There is also practical support to reduce and plan for the future, gain an understanding of their current substance use and how it might be having a negative effect on their life/aspirations, signposting to other support services and linking to other agencies.


text:
#ifndef COMMON_HELPERS_H
#define COMMON_HELPERS_H

#include <ctype.h>

/**
 * Converts a C-style string to lowercase
 */
inline void strtolower(char *str) {
	while (*str) {
		*str = tolower(*str);
		str++;
	}
}

/**
 * Converts a C-style string to uppercase
 */
inline void strtoupper(char *str) {
	while (*str) {
		*str = tolower(*str);
		str++;
	}
}

/**
 * Performance/time functions. Since timers must
 * be queried differently in Win32 and UNIX, this
 * is different for each platform
 */

#if COMMON_PLATFORM == PLATFORM_WIN32
#include <windows.h>

class TimerValue {
public:
	TimerValue() {
		QueryPerformanceFrequency(&frequency);
		QueryPerformanceCounter(&value);
		elapsed.QuadPart = 0;
	}

	// copy constructor:
	TimerValue(const TimerValue& orig) {
		value = orig.value;
		frequency = orig.frequency;
	}

	void set() {
		QueryPerformanceCounter(&value);
	}

	double diff(TimerValue &other) {
		return (double)(other.value.QuadPart - value.QuadPart) / (double)frequency.QuadPart;
	}

	void addDiff(TimerValue &other) {
		elapsed.QuadPart += other.value.QuadPart - value.QuadPart;
	}

	void addDiffFromNow() {
		LARGE_INTEGER temp;
		QueryPerformanceCounter(&temp);
		elapsed.QuadPart += temp.QuadPart - value.QuadPart;
	}

	double getElapsed() {
		return (double)(elapsed.QuadPart) / (double)frequency.QuadPart;
	}

	friend float operator-(const TimerValue &, const TimerValue &);

protected:
	LARGE_INTEGER value;
	LARGE_INTEGER frequency;
	LARGE_INTEGER elapsed;
};

/**
 * Counts CPU cycles instead of time, so suitable for extremely high accuracy
 * (and also very fast)
 */
class CycleCounter {
public:
	CycleCounter() {
		elapsed = 0;
		set();
	}

	// copy constructor:
	CycleCounter(const CycleCounter& orig) {
		elapsed = orig.elapsed;
		startTime = orig.startTime;
	}

	void set() {
		startTime = getCycles();
	}

	void addDiffFromNow() {
		elapsed += getCycles() - startTime;
	}

	unsigned __int64 getElapsed() {
		return elapsed;
	}

protected:

	ULONGLONG getCycles() {
		UINT32 timehi = 0, timelo = 0;

		/*
		__asm
		{
			rdtsc				// query CPU counter
			mov timehi, edx;    // high DWORD
			mov timelo, eax;    // low DWORD
		}
		*/

		return ((ULONGLONG)timehi << 32) + (ULONGLONG)timelo;
	}

	ULONGLONG elapsed;
	ULONGLONG startTime;
};

inline float operator-(const TimerValue &v1, const TimerValue &v2) {
	return (float)(v1.value.QuadPart - v2.value.QuadPart) / (float)v1.frequency.QuadPart;
}
#endif

#ifdef _USE_OOC_DIRECTMM

void* allocateFullMemoryMap(const char * pFileName);
bool deallocateFullMemoryMap(void *address);

#endif // _USE_OOC_DIRECTMM

#endif