text:
WFH reveals an 'I' in team
The year 2020 has forced the hands of organizations around the world to rely on collaboration tools as their primary means of working and connecting with coworkers and consumers. Now collaboration tool providers are looking towards integrations and new features to draw more users into a unified platform.
The shift to remote working happened at such a massive scale and in such a short time that collaboration tools have been dubbed the "new work nucleus."
The business technology review site TrustRadius wrote that it saw a 400% increase in traffic to the collaboration software category from the beginning of the pandemic to now. Also, last month's collaboration traffic was four times as much as traffic from exactly a year ago, correlating directly to buyer intent.
Meanwhile, research firm IDC found that a whopping 96% of North American businesses will be spending more and investing more on team collaboration solutions into 2021.
Major software companies are seeing tremendous opportunities in expanding into the collaboration tool space.
In early December, Salesforce issued a bid for $27.7 billion to acquire Slack, which if it comes to fruition, would make it the second-largest software deal in history.
"Being able to kind of federate out the work of best tooling and having that all integrated I think that's a brilliant strategy by Salesforce and also really empowering the remote workers too, because just between the nature of the cloud and everything that they're doing with enabling people to work from anywhere access, and then combining that with Slack," said Dave Messinger, the CTO and vice president of product at Topcoder.
The collaboration market is mature and cloud office suites have gained widespread adoption as primary tools for organizations for file sharing and work collaboration. There is currently a lack of differentiation among the core features that these platforms offer, forcing vendors to look towards specialization, according to Gartner in its Market Guide for Content Collaboration Tools released in May 2020.
Aspects of collaboration in these platforms — such as file sharing, device synchronization and the provisioning of collaborative workspaces — have been fleshed out by collaboration platforms.
Within various industries, the most sought-after collaboration feature was video conferencing with 65% of companies adding it to accommodate changing work requirements during COVID 19, according to Avaya in its "Work from Anywhere" study released in October 2020. Avaya is a business collaboration and communication solutions provider.
This was backed up by TrustRadius, which showed that the most searched comparison between collaboration vendors was Microsoft Teams and Zoom for their video conferencing capabilities, and by a giant margin.
Integrations the biggest topic
But aside from features such as video conferencing and chat, collaboration platforms also offer project and task management, workflow automation, abilities to track location and changes to a file, and much more. Tool providers are primarily looking to pull these functionalities together with integrations.
Integrations have become especially important as organizations are using many different collaboration tools within their organizations for different tasks.
For cloud-based productivity, teams rely mostly on G Suite and Office 365. Then, they implement video conferencing tools such as Zoom or WebEx and workflow automation tools such as Jira and ServiceNow.
"Jira is also a popular tool for developers these days. I'd say there's a 50/50 split between issue management on Jira vs GitHub among the wider developer community. Most developers prefer GitHub because it's friendlier, but probably too slow for project management, so as companies grow they are switching to Jira," Aaron Haynes, the CEO of Loganix, wrote in an email. Loganix offers link building services for SMBs and SEO agencies.
Finally, organizations are using instant messaging tools such as Slack and Teams as primary forms of contact. And there are usually many more circulating at once. Now, companies are looking more at unified solutions.
"You traditionally see organizations using many tools — typically one for planning, another for creating code, another for building and deploying it, and 1-3 tools for monitoring and observability. However, what we've seen happening is a need for a single DevOps platform. Some enterprises have tried stitching these disparate tools together into their own "DIYOps" platform, but this undifferentiated work distracts their teams from the business goals and their customers. Thus, teams and DevOps tools companies alike are moving towards a single DevOps platform," Brendan O'Leary, a senior developer evangelist at DevOps solution provider GitLab, wrote in an email.
The different types of tooling are implemented because there are primarily three layers to collaboration. The first is a communications layer and the second is essentially a content layer, where organizations can do their file sharing. And the third layer is that productivity layer. That's the integrations of the IP stack and this varies by department, according to Wayne Kurtzman, a research director of Social and Collaboration at IDC.
"This change really puts the abilities of developers who know what these tools really can do into a new level. We're going to see additional integrations and this is where collaborative apps get their superpowers," Kurtzman said. "Once you add workflow, the core IP stack, and the MarTech stack and integrate them, they develop new metrics that are just starting to be recognized and the developers pretty much understand this. So 2021 is going to rock for developers."
Providing workspaces
With integrations, collaboration tool providers are now focusing on providing the right team workspaces.
"An effective collaboration tool enables developers to sync up the different tooling," Topcoder's Messinger said. "Like right now Jira and GitLab integrate out of the box and there's a lot of integrations you can set up. So developers are in GitLab tagging the issues they want, and that syncs to a SaaS with Jira."
The necessity of proper integrations with collaboration tools is also driven by more complicated pipelines that have emerged at development companies due to CI/CD growth, Messinger added.
In the past, traditional pipelines went from QA to a production release. Now, the process includes much more shifting between different parts of the organization.
"We have several clients now in the enterprise space that are doing this now with much more complicated multi-step, multi environments and multi-company type development pipelines. So I think, you know, being able to find the right resource and the right talent has always been a problem for these guys from a deployment and development standpoint," Messinger said. "So being able to integrate those collaboration tools or those pieces is just critical.
While the collaboration tools can handle some scenarios effectively they can still be difficult to use in others.
"Tasking, status reports, and the standard software development life cycle is pretty nailed down and easy to follow. I think tools like Slack have made things easier and even now like being able to add a kind of bridge corporate Slack so we can add customers and have our Slacks talk to each other and still be compliant. Teams is doing a good job of that as well," Messinger said. "I think probably where some of that stuff may fall down is I think it's tough to make some of that stuff be like a system of record. So it's almost too easy to collaborate in some cases as like, 'Hey, did you change that requirement or that piece of information?' And it's like, 'Oh, it was in a Slack conversation?' It's like good luck going back and finding that piece of information where it was agreed to in a Slack conversation."
Messinger added that he has seen a dramatic increase in interest for whiteboard-type tools. These include tools like Trello and Miro. He added that tools like Miro are doing a better job of creating that collaborative environment than before, though it's still not the same as just being able to sit down and collaborate with everyone in one location on the whiteboard.
Customer collaboration, features are focus
Another phenomenon that has been picking up steam regarding collaboration tooling is that tool providers are working to provide ways for their customers to suggest additional features and integrations.
"I think one of the more interesting aspects in collaboration the last few years is how enterprises increasingly are adding both partners and even user customers to collaborate, not necessarily in the same private group, but they're extending their collaboration network so they can get better, and more loyalty and trust is built by the companies who now are communicating and feel that they have more input," IDC's Kurtzman said.
One such place for collaboration between consumers is Microsoft Teams's Uservoice site, where people can suggest changes and people can vote on those changes.
"Microsoft is actually implementing those changes," said Mark Rackley, a partner and chief strategy officer at PAIT Group, a Microsoft technology consultancy. "So if there's something you don't like about Teams today, there's a good chance that it's going to change in two, three, or six months so just keep an eye on all the changes."
Vendors are also working on producing customized views and reports and developing AI, advanced analytics, virtual assistants and machine learning within their platforms.
"People are in there doing conversations every day so why not do conversations with a bot to do other tasks within their organization whether that's general help questions, or things like filling out simple forms for vacation requests and things like that to start other workflows," Rackley said.
IDC's Kurtzman agreed that interest in machine learning and AI in collaboration tools has seen great interest as a way to free up developers' time. "We're also seeing an increase in people learning basic coding skills to take the next step. At the same time, we're seeing enterprises look to no-code where possible, but still there's complexity, higher value complexities that developers will need to fulfill," Kurtzman said.
A large determining factor as to what tools a company chooses is how easy it is to set up and for teams to start using it. This became especially important as many organizations were forced to shift from their physical workspaces to the digital realm in a matter of days. This forced newcomers on the bandwagon quickly, and also those organizations that already had pockets of collaboration tools had to assess how they would move their work entirely online.
"One of the most important things that happened to collaboration applications in 2020 is that the adoption, not the revenue, but the adoption of collaboration applications jumped by a five-year span in a period of only six months between January through June 2020," said Kurtzman.
PAIT Group's Rackley said the pandemic has quickly pushed implementation of collaboration tools up on organizations' priority lists.
"It's interesting because a lot of time was spent before saying let's spend a lot of time planning, but now it's just like let's forget planning and we need Teams now. We'll worry about the planning and the cleaning up after the fact," Rackley said.
The difficulty of adopting these tools largely depends on what kind of functionalities companies expect to use. File sharing and chatting and calls are pretty straightforward, but when users want to start customizing and integrating into other things, while it still might be pretty simple, people might need someone to show them first so that they can do it, Rackley explained.
Topcoder's Messinger added that while collaboration tooling might not be as easy as a one-click deploy to get it done, it can usually be measured in weeks or less. The more important factor in the way tooling is adopted in an enterprise largely depends on the collaboration culture surrounding it.
"The tooling may not be as out-of-the box as being able to do a one-click deploy to get the tooling done, but it's also not like a three-month drive. If you think of some of the tooling, it's probably maybe measured in a week or less to set up, but the acceptance, the openness is really a cultural shift. I actually think that's been a forcing factor from COVID that people have really moved the culture that way," Messinger said. "If companies had already done their homework and were following a DevOps culture, then it's tremendously easier to add collaboration, add remote workers, work at home, and use alternative staffing models."
Many web and mobile applications have already been working in this sort of DevOps manner over the last 10 years or so and the difficulty in creating a collaborative environment might come down to the large packaged applications.
"This is where managers have to become facilitators and it changes the way they manage. And that's one of the big challenges for them is they have to create online exactly what they would if they were to create a community in real life, they need to have a safe place where people are willing to share their best ideas, where they feel safe," IDC's Kurtzman said. "It really comes down to the culture and the willingness to employ the creativity in your workforce and your management team."
More developers are turning to open source to collaborate
Before the pandemic, developers were collaborating on open-source projects in GitHub from all places in the world, but this phenomenon has seen a massive boost during the pandemic.
The GitHub State of the Octoverse 2020 report found that developers are sharing and reviewing code faster compared to last year. In May, over 40% more repositories were created compared to last year, and since then, roughly 25% more open-source repositories have been created compared to the same time period last year.
GitHub measured the level of collaboration on its platform based on the speed of pull requests. Early in the year, the time to merge pull requests took a few hours longer compared to last year. In March, time to merge began to be faster, ranging from 45 minutes to almost seven and a half hours faster in comparison to last year, according to GitHub.
Across all GitHub repositories, newcomers pushed code and created repositories much more than veterans, while also interacting a bit more than veterans with creating and commenting on issues and creating pull requests.
Earlier this year to further collaboration on the platform, GitHub announced Discussions, in which teams can post updates and or have a conversation that spans projects or repositories in a forum.
"This provides an opportunity for us to think about different ways for people to engage with open-source communities. Participating in and watching Discussions can be a good way for newcomers to learn community norms and patterns in a safe way that doesn't overwhelm maintainers," GitHub wrote in the Octoverse report. "These patterns have applications in enterprise settings too."
22 Possible Reasons Why Your Site Traffic Dropped Ray Desktop Debugging for PHP


British PM Theresa May wins support from exasperated executives for her deal, as 42 lawmakers reportedly submit no confidence letters, short of 48 needed.
Embattled British Prime Minister Theresa May's Brexit sales pitch won plaudits from the British business community on Monday, but executives said the political drama surrounding her survival was proving a damaging distraction.
Speaking at the Confederation of British Industry's (CBI) annual conference in London, May vowed to stick to her draft European Union divorce deal as dissenting lawmakers in her own party tried to trigger a leadership challenge, ahead of "intense negotiations" with Brussels in the coming week.
May told the CBI, the UK's main business lobby group, that she was "determined to deliver" her Brexit deal as she prepares for Sunday's European Council summit to sign Britain's divorce papers.
"We now have an intense week of negotiations ahead of us," she told some 1,000 business leaders at the CBI annual conference in central London.
"During that time I expect us to hammer out the full and final details of the framework that will underpin our future relationship.
"There's a huge amount of personal recognition for what she's managed to achieve, what's she's been through and the fact she's still upbeat – that always gets respect from business people," said Adam Green, Chief Risk Officer at Equiniti, a financial services firm.
Opponents of May are six letters short of the threshold to trigger a no confidence vote.
British media are reporting that 42 lawmakers in May's Conservative Party had given firm assurances that they had submitted no-confidence letters, short of the 48 needed.
Reports say 25 MPs had publicly declared they have submitted letters while a further 17 have privately said they have written to Sir Graham Brady, the chairman of the Conservative Party's 1922 Committee, who's in charge of overseeing leadership challenges.
May said on Sunday toppling her would risk delaying Brexit and she would not let talk of a leadership challenge distract her from a critical week of negotiations with Brussels.
In the days since she unveiled a draft EU divorce deal, May's premiership has been thrust into crisis.
Several ministers, including her Brexit minister, have resigned and many of her lawmakers seeking to oust her.
May has vowed to fight on, but with both pro-EU and pro-Brexit lawmakers unhappy with the draft agreement, it is not clear if she will be able to win the backing of parliament for it, raising the risk of Britain leaving the EU without a deal.


The Taurus XL rocket carrying the Orbiting Carbon Observatory blasted off in a pre-dawn take off from California's Vandenberg Air Force Base. But minutes into its mission, Nasa controllers said that the mission was in jeopardy.
The rocket was later reported to have crashed into the ocean near Antarctica.
George Diller, a Nasa spokesman, said that the payload failed to separate properly from the spacecraft after the launch.
The malfunction appeared to be with the "fairing", which shelters the payload as the launch vehicle flies through the atmosphere.
"It appears that there were problems separating," said Mr Diller, adding that the satellite "did not achieve orbit".
"We are still evaluating the status of the location and the exact state," of the spacecraft, he said.
He added that Nasa's launch managers had now shifted to a contingency plan but did not elaborate on the details. However, the contingency plan appeared to have failed too after reports of the crash landing.
The observatory, part of a $280 million (£192m) mission, is Nasa's first satellite dedicated to monitoring carbon dioxide emissions on a global scale.


Conservative leader David Cameron has been rebuked by Commons speaker Michael Martin after he called Prime Minister Gordon Brown a "complete phoney".
Mr Cameron was forced to withdraw the remark during a stormy prime minister's questions in the Commons.
He was criticising Mr Brown over an interview in which the PM said the focus in politics "on who said what, when, how and why" was "divisive".
MPs are banned from personal abuse or accusing each other of lying.
Mr Cameron accused the prime minister of being "in denial" over the scale of the recession as Mr Brown said the rising jobless total was a "matter of personal regret for me and for the whole government".
With the unemployment figure surging past two million, Mr Brown pledged not to "walk by on the other side" and the government would do "everything we can" to help people get back into work.
But Mr Cameron attacked the prime minister for presiding over the biggest dole queue rise "since records began" and again urged him to apologise.
The pair then clashed over economic stimulus policy, with Mr Brown quoting shadow business secretary Ken Clarke saying the taxpayer would have to take "some of the hit" for Conservative proposals.
Mr Cameron hit back by quoting an interview with Mr Brown in The Guardian, in which he said the emphasis on "who said what, when, how and why" was "far too divisive to meet the problems of the country".
"What a complete phoney," added Mr Cameron.
Before he could continue, Mr Martin stepped in to say: "That remark should be withdrawn and properly withdrawn".
Mr Cameron said he was "happy" to withdraw the comment, before carrying on with his attack.


 Slip and Fall Personal Injury Law | Waukesha | Milwaukee | Wisconsin | Duffey & Associates, S.C.
Owners of commercial and residential property are required by Wisconsin's Safe Place Statute to keep their premises in reasonably safe condition, or to warn customers of risks which the owner or operator caused, knows about, or should know about. The statute requires businesses and owners of public buildings to construct, repair and maintain their property to a condition as safe as the nature of the place reasonably permits.
In slip and fall cases, a property owner may argue that the injured party is to blame for the accident. If a person is found responsible for failing to exercise ordinary care for their safety, the amount they may be awarded for damages can be reduced or no award of damages may be given.
If you or a loved one has been seriously injured as a result of dangerous premises, then you may have the right to file a legal action. Contact Us today for a free evaluation of your slip and fall case.


text:
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <parent>
      <groupId>org.radargun</groupId>
      <artifactId>radargun-parent</artifactId>
      <version>2.1.0-SNAPSHOT</version>
      <relativePath>parent/pom.xml</relativePath>
   </parent>

   <artifactId>radargun-aggregator</artifactId>
   <name>RadarGun - Aggregator</name>
   <description>The aggregator for RadarGun</description>
   <packaging>pom</packaging>

   <modules>
      <module>core</module>
      <module>parent</module>
   </modules>

   <scm>
      <connection>scm:git:git@github.com:radargun/radargun.git</connection>
      <url>scm:git:git@github.com:radargun/radargun.git</url>
      <developerConnection>scm:git:git@github.com:radargun/radargun.git</developerConnection>
     <tag>HEAD</tag>
  </scm>

   <properties>
      <distribution.name>RadarGun-${project.version}</distribution.name>
      <distribution.artifact>target/distribution/${distribution.name}</distribution.artifact>
      <plugins.chm/>
      <plugins.ehcache/>
      <plugins.hazelcast/>
      <plugins.jbosscache/>
      <plugins.jgroups/>
      <plugins.infinispan/>
      <plugins.jdg/>
      <plugins.coherence/>
      <plugins.process />
      <plugins.spymemcached />
      <reporter.default />
      <extension.example/>
      <extension.hdrhistogram />
   </properties>

   <profiles>
      <!-- Extensions -->
      <profile>
         <id>extension-example</id>
         <activation>
            <property>
               <name>extension-example</name>
            </property>
         </activation>
         <modules>
            <module>extensions/extension-example</module>
         </modules>
         <properties>
            <extension.example>extension-example</extension.example>
         </properties>
      </profile>
      <profile>
         <id>hdrhistogram</id>
         <activation>
            <activeByDefault>true</activeByDefault>
            <property>
               <name>!no-hdrhistogram</name>
            </property>
         </activation>
         <modules>
            <module>extensions/hdrhistogram</module>
         </modules>
         <properties>
            <extension.hdrhistogram>hdrhistogram</extension.hdrhistogram>
         </properties>
      </profile>
      <!-- Plugin-specific -->
      <profile>
         <id>jpa</id>
         <activation>
            <property>
               <name>jpa</name>
            </property>
         </activation>
         <modules>
            <module>specific/jpa</module>
         </modules>
      </profile>
      <!-- Reporters -->
      <profile>
         <id>reporter-default</id>
         <activation>
            <property>
               <name>!no-reporter-default</name>
            </property>
         </activation>
         <modules>
            <module>reporters/reporter-default</module>
         </modules>
         <properties>
            <reporter.default>reporter-default</reporter.default>
         </properties>
      </profile>
      <!-- Plugins -->
      <profile>
         <id>chm</id>
         <activation>
            <property>
               <name>!no-chm</name>
            </property>
         </activation>
         <modules>
            <module>plugins/chm</module>
         </modules>
         <properties>
            <plugins.chm>chm</plugins.chm>
         </properties>
      </profile>
      <profile>
         <id>ehcache</id>
         <activation>
            <property>
               <name>!no-ehcache</name>
            </property>
         </activation>
         <modules>
            <module>plugins/ehcache25</module>
            <module>plugins/ehcache26</module>
         </modules>
         <properties>
            <plugins.ehcache>ehcache25,ehcache26</plugins.ehcache>
         </properties>
      </profile>
      <profile>
         <id>hazelcast</id>
         <activation>
            <property>
               <name>!no-hazelcast</name>
            </property>
         </activation>
         <modules>
            <module>plugins/hazelcast2</module>
            <module>plugins/hazelcast3</module>
         </modules>
         <properties>
            <plugins.hazelcast>hazelcast2,hazelcast3</plugins.hazelcast>
         </properties>
      </profile>
      <profile>
         <id>jbosscache</id>
         <activation>
            <property>
               <name>!no-jbosscache</name>
            </property>
         </activation>
         <modules>
            <module>plugins/jbosscache2</module>
            <module>plugins/jbosscache3</module>
         </modules>
         <properties>
            <plugins.jbosscache>jbosscache2,jbosscache3</plugins.jbosscache>
         </properties>
      </profile>
      <profile>
         <id>jgroups</id>
         <activation>
            <property>
               <name>!no-jgroups</name>
            </property>
         </activation>
         <modules>
            <module>plugins/jgroups30</module>
            <module>plugins/jgroups32</module>
            <module>plugins/jgroups33</module>
            <module>plugins/jgroups34</module>
         </modules>
         <properties>
            <plugins.jgroups>jgroups30,jgroups32,jgroups33,jgroups34</plugins.jgroups>
         </properties>
      </profile>
      <profile>
         <id>jgroups35</id>
         <activation>
            <property>
               <name>jgroups35</name>
            </property>
         </activation>
         <modules>
            <module>plugins/jgroups35</module>
         </modules>
         <properties>
            <plugins.jgroups>jgroups30,jgroups32,jgroups33,jgroups34,jgroups35</plugins.jgroups>
         </properties>
      </profile>
      <profile>
         <id>infinispan</id>
         <activation>
            <property>
               <name>!no-infinispan</name>
            </property>
         </activation>
         <modules>
            <module>plugins/infinispan4</module>
            <module>plugins/infinispan50</module>
            <module>plugins/infinispan51</module>
            <module>plugins/infinispan52</module>
            <module>plugins/infinispan53</module>
            <module>plugins/infinispan60</module>
            <module>plugins/infinispan70</module>
	    <module>plugins/infinispan71</module>
         </modules>
         <properties>
            <plugins.infinispan>infinispan4,infinispan50,infinispan51,infinispan52,infinispan53,infinispan60,infinispan70,infinispan71</plugins.infinispan>
         </properties>
      </profile>
      <profile>
         <id>coherence</id>
         <activation>
            <property>
               <name>coherence</name>
            </property>
         </activation>
         <modules>
            <module>plugins/coherence3</module>
            <module>plugins/coherence12</module>
         </modules>
         <properties>
            <plugins.coherence>coherence3,coherence12</plugins.coherence>
         </properties>
      </profile>
      <profile>
         <id>jdg</id>
         <activation>
            <property>
               <name>jdg</name>
            </property>
         </activation>
         <modules>
            <module>plugins/jdg60</module>
            <module>plugins/jdg61</module>
            <module>plugins/jdg62</module>
            <module>plugins/jdg63</module>
            <module>plugins/jdg64</module>
         </modules>
         <properties>
            <plugins.jdg>jdg60,jdg61,jdg62,jdg63,jdg64</plugins.jdg>
         </properties>
      </profile>
      <profile>
         <id>jdg65</id>
         <activation>
            <property>
               <name>jdg65.infinispan.version</name>
            </property>
         </activation>
         <modules>
            <module>plugins/jdg65</module>
         </modules>
         <properties>
            <plugins.jdg>jdg60,jdg61,jdg62,jdg63,jdg64,jdg65</plugins.jdg>
         </properties>
      </profile>
      <profile>
         <id>process</id>
         <activation>
            <property>
               <name>!no-process</name>
            </property>
         </activation>
         <modules>
            <module>plugins/process</module>
         </modules>
         <properties>
            <plugins.process>process</plugins.process>
         </properties>
      </profile>
      <profile>
         <id>spymemcached</id>
         <activation>
            <property>
               <name>!no-spymemcached</name>
            </property>
         </activation>
         <modules>
            <module>plugins/spymemcached</module>
         </modules>
         <properties>
            <plugins.spymemcached>spymemcached</plugins.spymemcached>
         </properties>
      </profile>
   </profiles>

   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
               <execution>
                  <id>prepare_distribution</id>
                  <phase>prepare-package</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <target>
                        <delete dir="target/distribution" />
                        <mkdir dir="target/distribution" />
                        <mkdir dir="${distribution.artifact}" />
                     </target>
                  </configuration>
               </execution>

               <execution>
                  <id>prepare_core</id>
                  <phase>prepare-package</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <target>
                        <echo message="Packaging the Core and common scripts" />
                        <copy todir="${distribution.artifact}">
                           <fileset dir="core/target/distribution/radargun-core-bin/radargun-core">
                              <include name="**/*" />
                           </fileset>
                        </copy>
                        <mkdir dir="${distribution.artifact}/specific" />
                        <copy todir="${distribution.artifact}/specific">
                           <fileset dir="specific/jpa/target" erroronmissingdir="false">
                              <include name="radargun-jpa-*.jar" />
                           </fileset>
                        </copy>
                        <copy todir="${distribution.artifact}/bin">
                           <fileset dir="bin">
                              <include name="**/*" />
                           </fileset>
                        </copy>
                        <chmod perm="ugo+rwx" type="file">
                           <fileset dir="${distribution.artifact}/bin">
                              <include name="**/*.sh" />
                              <include name="**/*.py" />
                           </fileset>
                        </chmod>
                        <mkdir dir="${distribution.artifact}/schema" />
                        <mkdir dir="${distribution.artifact}/reporters" />
                        <mkdir dir="${distribution.artifact}/plugins" />
                     </target>
                  </configuration>
               </execution>

               <execution>
                  <id>prepare_extensions</id>
                  <phase>prepare-package</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <target>
                        <echo message="Packaging extensions: " />

                        <fileset id="core_jars" dir="core/target/distribution/radargun-core-bin/radargun-core/lib">
                           <include name="*.jar" />
                        </fileset>
                        <pathconvert pathsep="," property="core_jar_list" refid="core_jars">
                           <mapper type="flatten" />
                        </pathconvert>

                        <ac:for list="${extension.example},${extension.hdrhistogram}" param="extension" xmlns:ac="antlib:net.sf.antcontrib">
                           <sequential>
                              <echo message="Packaging extension @{extension}..." />
                              <copy todir="${distribution.artifact}/lib">
                                 <fileset dir="extensions/@{extension}/target/distribution/@{extension}-bin/@{extension}/lib" excludes="${core_jar_list}"/>
                              </copy>
                           </sequential>
                        </ac:for>
                     </target>
                  </configuration>
               </execution>

               <execution>
                  <id>prepare_plugins</id>
                  <phase>prepare-package</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <target>
                        <macrodef name="chmod-if-exists">
                           <attribute name="dir"/>
                           <attribute name="perm"/>
                           <sequential>
                              <ac:if xmlns:ac="antlib:net.sf.antcontrib">
                                 <available file="@{dir}" type="dir" />
                                 <ac:then>
                                    <chmod dir="@{dir}" perm="@{perm}" includes="**/*"/>
                                 </ac:then>
                              </ac:if>
                           </sequential>
                        </macrodef>

                        <macrodef name="copy-plugin">
                           <attribute name="plugin"/>
                           <sequential>
                              <copy todir="${distribution.artifact}/plugins/@{plugin}">
                                 <fileset dir="plugins/@{plugin}/target/distribution/plugin-@{plugin}-bin/plugin-@{plugin}">
                                    <include name="**/*" />
                                 </fileset>
                              </copy>
                              <copy todir="${distribution.artifact}/schema">
                                 <fileset dir="plugins/@{plugin}">
                                    <include name="*.xsd"/>
                                 </fileset>
                              </copy>
                              <chmod-if-exists dir="${distribution.artifact}/plugins/@{plugin}/bin" perm="ugo+x" />
                           </sequential>
                        </macrodef>

                        <macrodef name="copy-plugin-links">
                           <attribute name="plugin"/>
                           <sequential>
                              <copy todir="${distribution.artifact}/plugins/@{plugin}">
                                 <fileset dir="plugins/@{plugin}/target/distribution/plugin-@{plugin}-bin/plugin-@{plugin}">
                                    <include name="**/*" />
                                    <exclude name="**/*.jar" />
                                 </fileset>
                              </copy>
                              <copy todir="${distribution.artifact}/schema">
                                 <fileset dir="plugins/@{plugin}">
                                    <include name="*.xsd"/>
                                 </fileset>
                              </copy>
                              <chmod-if-exists dir="${distribution.artifact}/plugins/@{plugin}/bin" perm="ugo+x" />
                              <copy todir="${distribution.artifact}/plugin-dependencies">
                                 <fileset dir="plugins/@{plugin}/target/distribution/plugin-@{plugin}-bin/plugin-@{plugin}/lib">
                                    <include name="*.jar" />
                                 </fileset>
                              </copy>
                              <exec executable="bash" failonerror="true">
                                 <arg value="-c"/>
                                 <arg value="for FILE in `ls plugins/@{plugin}/target/distribution/plugin-@{plugin}-bin/plugin-@{plugin}/lib/`; do ln -s ../../../plugin-dependencies/$FILE ${distribution.artifact}/plugins/@{plugin}/lib/; done;"/>
                              </exec>
                           </sequential>
                        </macrodef>

                        <path id="core_and_extensions">
                           <fileset dir="${distribution.artifact}/lib" includes="*.jar" />
                        </path>

                        <echo message="Packaging plugins: " />
                        <ac:for list="${plugins.chm},${plugins.ehcache},${plugins.hazelcast},${plugins.jbosscache},${plugins.jgroups},${plugins.infinispan},${plugins.jdg},${plugins.coherence},${plugins.process},${plugins.spymemcached}" param="plugin" xmlns:ac="antlib:net.sf.antcontrib">
                           <sequential>
                              <echo message="Packaging plugin @{plugin}..." />
                              <ac:if>
                                 <isset property="zip-links"/>
                              <ac:then>
                                 <copy-plugin-links plugin="@{plugin}"/>
                              </ac:then>
                              <ac:else>
                                 <copy-plugin plugin="@{plugin}"/>
                              </ac:else>
                              </ac:if>
                              <java classname="org.radargun.config.PluginSchemaGenerator" failonerror="true" classpathref="core_and_extensions">
                                 <sysproperty key="log4j.configuration" value="file:///${basedir}/core/target/distribution/radargun-core-bin/radargun-core/conf/log4j.xml" />
                                 <arg value="${distribution.artifact}/schema" />
                                 <arg value="@{plugin}" />
                              </java>
                           </sequential>
                        </ac:for>
                     </target>
                  </configuration>
               </execution>

               <execution>
                  <id>prepare_reporters</id>
                  <phase>prepare-package</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <target>
                        <echo message="Packaging reporters: " />

                        <fileset id="core_jars" dir="core/target/distribution/radargun-core-bin/radargun-core/lib">
                           <include name="*.jar" />
                        </fileset>
                        <pathconvert pathsep="," property="core_jar_list" refid="core_jars">
                           <mapper type="flatten" />
                        </pathconvert>
                        <path id="core_and_extensions">
                           <fileset dir="${distribution.artifact}/lib" includes="*.jar" />
                        </path>

                        <ac:for list="${reporter.default}" param="reporter" xmlns:ac="antlib:net.sf.antcontrib">
                           <sequential>
                              <echo message="Packaging reporter @{reporter}..." />
                              <copy todir="${distribution.artifact}/reporters/@{reporter}">
                                 <fileset dir="reporters/@{reporter}/target/distribution/@{reporter}-bin/@{reporter}/lib" excludes="${core_jar_list}"/>
                              </copy>
                              <java classname="org.radargun.config.ReporterSchemaGenerator" failonerror="true" classpathref="core_and_extensions">
                                 <sysproperty key="log4j.configuration" value="file:///${basedir}/core/target/distribution/radargun-core-bin/radargun-core/conf/log4j.xml" />
                                 <arg value="${distribution.artifact}/schema" />
                                 <arg value="${distribution.artifact}/reporters/@{reporter}" />
                                 <arg value="@{reporter}" />
                              </java>
                           </sequential>
                        </ac:for>
                     </target>
                  </configuration>
               </execution>

               <execution>
                  <id>generate_xsd</id>
                  <phase>prepare-package</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <target>
                        <echo message="Generating XSD schema" />
                        <path id="core_and_extensions">
                           <fileset dir="${distribution.artifact}/lib" includes="*.jar" />
                        </path>
                        <java classname="org.radargun.config.ConfigSchemaGenerator" failonerror="true" classpathref="core_and_extensions">
                           <sysproperty key="log4j.configuration" value="file:///${basedir}/core/target/distribution/radargun-core-bin/radargun-core/conf/log4j.xml" />
                           <arg value="${distribution.artifact}/schema" />
                        </java>
                        <copy todir="${distribution.artifact}/schema">
                           <fileset dir="." includes="*.xsd"/>
                        </copy>
                     </target>
                  </configuration>
               </execution>

               <execution>
                  <id>build_distro</id>
                  <phase>package</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <tasks>
                        <echo message="Building distribution archive" />
                        <ac:if xmlns:ac="antlib:net.sf.antcontrib">
                           <isset property="zip-links"/>
                           <ac:then>
                              <!-- This cannot be executed on all platforms and the produced zip may be non-portable either -->
                              <echo message="Building zip file ${distribution.name}.zip"/>
                              <exec executable="zip" failonerror="true" dir="target/distribution" logError="true" output="/dev/null">
                                 <arg value="-ry"/>
                                 <arg value="${distribution.name}.zip"/>
                                 <arg value="${distribution.name}/"/>
                              </exec>
                           </ac:then>
                           <ac:else>
                              <zip destfile="target/distribution/${distribution.name}.zip" basedir="target/distribution" excludes="**/bin/**,radargun-aggregator-bin/**">
                                 <zipfileset dir="${distribution.artifact}/bin" filemode="755" prefix="${distribution.name}/bin" />
                                 <zipfileset dir="${distribution.artifact}/plugins/process/bin" filemode="755" prefix="${distribution.name}/plugins/process/bin"/>
                              </zip>
                           </ac:else>
                        </ac:if>
                     </tasks>
                  </configuration>
               </execution>
            </executions>
            <dependencies>
               <dependency>
                  <groupId>ant-contrib</groupId>
                  <artifactId>ant-contrib</artifactId>
                  <version>1.0b3</version>
                  <exclusions>
                     <exclusion>
                        <groupId>ant</groupId>
                        <artifactId>ant</artifactId>
                     </exclusion>
                  </exclusions>
               </dependency>
            </dependencies>
         </plugin>
      </plugins>
   </build>
</project>

redpajama_set_name: RedPajamaGithub


Selling Your Home in Beaumont, CA?
We buy houses in Beaumont, CA fast for cash no matter it's condition. Here's How our Process Works. Contact us to learn more about how you can sell your Beaumont, CA house fast for cash.
No matter the situation you may be facing or reason for selling your Riverside home...So Cal Home Buyers (SCHB) can help you make your sale and be on your way quickly and efficiently.
With over 10 years of successful transactions, we have earned the trust of home sellers all across Southern California. We've been purchasing homes in the Southern California area for over a decade, and have helped over 350 happy homeowners sell their unwanted properties.
We want the sale of your Beaumont home to be a stress-free & painless experience for you. We know that selling a home can be overwhelming, we hope that our knowledge, skills and experience will help you enjoy an easy and positive transaction. Within a week, you can have your property sold with money in your hands so you can move on with life.
Beaumont's real estate market is unique – it's one of few places in Riverside County where a newly constructed five bedroom home will list for less than $400,000.
This is unheard of in many other parts of California, where these kinds of homes tend to sell for twice as much. Even modernized homes with 4 or more bedrooms list for under $300,000.
A lot of people in Beaumont have taken to selling their homes by owner, foregoing the use of a real estate agents. One of the predominant reasons they may be making that choice is the current state of the real estate market in the region.
A lot of seller in Beaumont are frustrated – and they've felt frustrated for a long time now.
The market has run cold in Beaumont. Cold markets will always favor buyers. There are far more people selling than there are people buying, and this means that sellers are pushed to go to drastic lengths to compete.
This is why homes sell for less than what their value would be in an area with greater market health. Price cut after price cut turns every property into a steal.
According to NewHomeSource, there are nearly 500 newly constructed homes on the market in Beaumont, and this creates a large problem.
Since these homes are spacious, brand new, and affordable, buyers who have the money would prefer to purchase a cheaper recently constructed home than spend a similar amount (if not more) on a house that's a few decades old. This puts sellers at a distinct disadvantage – buyers are less inclined to buy used when they can buy new for the same price.
If you're curious to see, what we do with houses after we buy them, watch the quick video below to get an idea. Just know that no matter what your current situation is, when we buy the home off of you it will be in good hands & well taken care of.
The odds may be working against you, but at Southern California Home Buyers aren't. If you're tired of competing and continually slashing the price on your home, take it off the traditional market and let us buy it from you.
All we need from you are a few quick details about your property, and we'll be able to prepare you a full cash offer on your unwanted Beaumont home that you'll be able to get rid of in days.


text:
/*
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.comcast.cdn.traffic_control.traffic_router.core.monitor;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URI;
import java.net.UnknownHostException;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;

import com.comcast.cdn.traffic_control.traffic_router.core.util.JsonUtilsException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.log4j.Logger;

import com.comcast.cdn.traffic_control.traffic_router.core.config.ConfigHandler;
import com.comcast.cdn.traffic_control.traffic_router.core.router.TrafficRouterManager;
import com.comcast.cdn.traffic_control.traffic_router.core.util.AbstractUpdatable;
import com.comcast.cdn.traffic_control.traffic_router.core.util.PeriodicResourceUpdater;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ApplicationContextEvent;
import org.springframework.context.event.ContextClosedEvent;

@SuppressWarnings("PMD.TooManyFields")
public class TrafficMonitorWatcher implements ApplicationListener<ApplicationContextEvent> {
	private static final Logger LOGGER = Logger.getLogger(TrafficMonitorWatcher.class);

	private String stateUrl;
	private String configUrl;
	private String monitorHosts;
	private int pollingInterval = 5000;
	private long lastHostAttempt = 0;
	private long reloadPeriod = 60*1000;

	private ConfigHandler configHandler;
	private TrafficRouterManager trafficRouterManager;

	private String statusFile;
	private int statusRefreshPeriod;
	private String configFile;
	private int configRefreshPeriod;

	private String monitorProperties;
	private static boolean bootstrapped = false;
	private static boolean localConfig = false;
	private static List<String> onlineMonitors = new ArrayList<String>();
	private static String[] hosts;
	private static Object hostSync = new Object();
	private static Object monitorSync = new Object();

	private PeriodicResourceUpdater crUpdater;
	private PeriodicResourceUpdater stateUpdater;
	private Path propertiesDirectory;
	private Path databasesDirectory;

	public AbstractUpdatable stateHandler = new AbstractUpdatable() {
		public String toString() {return "status listener";}
		@Override
		public synchronized boolean update(final String jsonStr) {
			try {
				final ObjectMapper mapper = new ObjectMapper();
				return trafficRouterManager.setState(mapper.readTree(jsonStr));
			} catch (JsonProcessingException e) {
				LOGGER.warn("problem with json: ",e);
			} catch (IOException e) {
				LOGGER.warn(e,e);
			}
			return false;
		}
		@Override
		public boolean noChange() {
			try {
				trafficRouterManager.setState(null);
			} catch (UnknownHostException e) {
				LOGGER.warn("UnknownHostException: ",e);
			}
			return false;
		}
	};

	public void destroy() {
		if (crUpdater != null) {
			crUpdater.destroy();
		}

		if (stateUpdater != null) {
			stateUpdater.destroy();
		}
	}

	@SuppressWarnings("PMD.CyclomaticComplexity")
	public void init() {
		final AbstractUpdatable crHandler = new AbstractUpdatable() {
			@Override
			public boolean update(final String configStr) {
				try {
					try {
						return configHandler.processConfig(configStr);
					} catch (JsonUtilsException e) {
						LOGGER.warn(e, e);
					}
				} catch (IOException e) {
					LOGGER.warn("error on config update", e);
				}

				return false;
			}
			public String toString() {return "config listener";}
			@Override
			public boolean noChange() {
				try {
					configHandler.processConfig(null);
				} catch (Exception e) {
					LOGGER.warn(e, e);
				}
				return false;
			}

			@Override
			public void complete() {
				if (!isLocalConfig() && !isBootstrapped()) {
					setBootstrapped(true);
				}
			}

			@Override
			public void cancelUpdate() {
				configHandler.cancelProcessConfig();
			}
		};

		processConfig();

		crUpdater = new PeriodicResourceUpdater(crHandler, new TrafficMonitorResourceUrl(this, configUrl), databasesDirectory.resolve(configFile).toString(), configRefreshPeriod, true);
		crUpdater.init();

		stateUpdater = new PeriodicResourceUpdater(stateHandler, new TrafficMonitorResourceUrl(this, stateUrl), databasesDirectory.resolve(statusFile).toString(), statusRefreshPeriod, true);
		stateUpdater.init();
	}

	@Override
	public void onApplicationEvent(final ApplicationContextEvent event) {
		if (event instanceof ContextClosedEvent) {
			crUpdater.destroy();
			stateUpdater.destroy();
		}
	}

	public String getStateUrl() {
		return stateUrl;
	}
	public void setStateUrl(final String stateUrl) {
		this.stateUrl = stateUrl;
	}
	public String getConfigUrl() {
		return configUrl;
	}
	public void setConfigUrl(final String configUrl) {
		this.configUrl = configUrl;
	}
	public void setPollingInterval(final int pollingInterval) {
		this.pollingInterval = pollingInterval;
	}
	public int getPollingInterval() {
		return pollingInterval;
	}

	public ConfigHandler getConfigHandler() {
		return configHandler;
	}
	public void setConfigHandler(final ConfigHandler configHandler) {
		this.configHandler = configHandler;
	}

	public String getStatusFile() {
		return statusFile;
	}
	public void setStatusFile(final String statusFile) {
		this.statusFile = statusFile;
	}
	public int getStatusRefreshPeriod() {
		return statusRefreshPeriod;
	}
	public void setStatusRefreshPeriod(final int statusRefreshPeriod) {
		this.statusRefreshPeriod = statusRefreshPeriod;
	}
	public String getConfigFile() {
		return configFile;
	}
	public void setConfigFile(final String configFile) {
		this.configFile = configFile;
	}
	public int getConfigRefreshPeriod() {
		return configRefreshPeriod;
	}
	public void setConfigRefreshPeriod(final int configRefreshPeriod) {
		this.configRefreshPeriod = configRefreshPeriod;
	}
	public TrafficRouterManager getTrafficRouterManager() {
		return trafficRouterManager;
	}
	public void setTrafficRouterManager(final TrafficRouterManager router) {
		this.trafficRouterManager = router;
	}
	public void setMonitorProperties(final String monitorProperties) {
		this.monitorProperties = monitorProperties;
	}
	public void setMonitorHosts(final String monitorHosts) {
		this.monitorHosts = monitorHosts;
	}

	public static void setHosts(final String[] newHosts) {
		synchronized(hostSync) {
			if (hosts == null || hosts.length == 0) {
				hosts = newHosts;
				LOGGER.info("traffic_monitor.bootstrap.hosts: " + Arrays.toString(hosts));
			} else if (!Arrays.asList(hosts).containsAll(Arrays.asList(newHosts))
					|| !Arrays.asList(newHosts).containsAll(Arrays.asList(hosts))) {
				hosts = newHosts;
				LOGGER.info("traffic_monitor.bootstrap.hosts changed to: " + Arrays.toString(hosts));
			}
		}
	}

	public String[] getHosts() {
		processConfig();

		return hosts;
	}

	@SuppressWarnings({"PMD.CyclomaticComplexity", "PMD.NPathComplexity"})
	private void processConfig() {
		final long now = System.currentTimeMillis();

		if (now < (lastHostAttempt+reloadPeriod)) {
			return;
		}

		lastHostAttempt = now;

		try {
			File trafficMonitorConfigFile;

			if (monitorProperties.matches("^\\w+:.*")) {
				trafficMonitorConfigFile = new File(new URI(monitorProperties));
			} else {
				trafficMonitorConfigFile = new File(monitorProperties);
			}

			final Properties props = new Properties();

			if (trafficMonitorConfigFile.exists()) {
				LOGGER.info("Loading properties from " + trafficMonitorConfigFile.getAbsolutePath());
				try (FileInputStream configStream = new FileInputStream(trafficMonitorConfigFile)) {
					props.load(configStream);
				}
			} else {
				LOGGER.warn("Cannot load traffic monitor properties file " + trafficMonitorConfigFile.getAbsolutePath() + " file not found!");
			}

			boolean localConfig = Boolean.parseBoolean(props.getProperty("traffic_monitor.bootstrap.local", "false"));

			String localEnvString = System.getenv("TRAFFIC_MONITOR_BOOTSTRAP_LOCAL");

			if (localEnvString != null) {
				localEnvString = localEnvString.toLowerCase();
			}

			if ("true".equals(localEnvString) || "false".equals(localEnvString)) {
				localConfig = Boolean.parseBoolean(localEnvString);
			}

			if (localConfig != isLocalConfig()) {
				LOGGER.info("traffic_monitor.bootstrap.local changed to: " + localConfig);
				setLocalConfig(localConfig);
			}

			if (localConfig || !isBootstrapped()) {
				String hostList = System.getenv("TRAFFIC_MONITOR_HOSTS");

				if (hostList != null && !hostList.isEmpty()) {
					LOGGER.warn("hostlist initialized to '" + hostList + "' from env var 'TRAFFIC_MONITOR_HOSTS");
				}

				if (hostList == null || hostList.isEmpty()) {
					hostList = props.getProperty("traffic_monitor.bootstrap.hosts");
				}

				if (hostList == null || hostList.isEmpty()) {
					if (!trafficMonitorConfigFile.exists()) {
						LOGGER.fatal(trafficMonitorConfigFile.getAbsolutePath() + " does not exist and the environment variable 'TRAFFIC_MONITOR_HOSTS' was not found");
					} else {
						LOGGER.error("Cannot determine Traffic Monitor hosts from property 'traffic_monitor.bootstrap.hosts' in config file " + trafficMonitorConfigFile.getAbsolutePath());
					}
				} else {
					setHosts(hostList.contains(";") ? hostList.split(";") : new String[]{hostList});
				}

			} else if (!isLocalConfig() && isBootstrapped()) {
				synchronized(monitorSync) {
					if (!onlineMonitors.isEmpty()) {
						setHosts(onlineMonitors.toArray(new String[onlineMonitors.size()]));
					}
				}
			}

			final String reloadPeriodStr = props.getProperty("traffic_monitor.properties.reload.period");

			if (reloadPeriodStr != null) {
				final long newReloadPeriod = Integer.parseInt(reloadPeriodStr);

				if (newReloadPeriod != reloadPeriod) {
					reloadPeriod = newReloadPeriod;
					LOGGER.info("traffic_monitor.properties.reload.period changed to: " + reloadPeriod);
				}
			}
		} catch (Exception e) {
			LOGGER.warn(e,e);
		}

		if (hosts==null) {
			hosts = monitorHosts.split(";");
		}
	}

	public static boolean isBootstrapped() {
		return bootstrapped;
	}

	private static void setBootstrapped(final boolean bootstrapped) {
		TrafficMonitorWatcher.bootstrapped = bootstrapped;
	}

	public static boolean isLocalConfig() {
		return localConfig;
	}

	private static void setLocalConfig(final boolean localConfig) {
		TrafficMonitorWatcher.localConfig = localConfig;
	}

	public static List<String> getOnlineMonitors() {
		return onlineMonitors;
	}

	public static void setOnlineMonitors(final List<String> onlineMonitors) {
		synchronized(monitorSync) {
			if (isLocalConfig()) {
				return;
			}

			TrafficMonitorWatcher.onlineMonitors = onlineMonitors;
			setBootstrapped(true);
			setHosts(onlineMonitors.toArray(new String[onlineMonitors.size()]));
		}
	}

	public Path getPropertiesDirectory() {
		return propertiesDirectory;
	}

	public void setPropertiesDirectory(final Path propertiesDirectory) {
		this.propertiesDirectory = propertiesDirectory;
	}

	public Path getDatabasesDirectory() {
		return databasesDirectory;
	}

	public void setDatabasesDirectory(final Path databasesDirectory) {
		this.databasesDirectory = databasesDirectory;
	}
}


Professionally-administered 401K savings plan is available just 30 days after you begin your assignment.
After learning more about your needs, the NursesPro staff will assist in finding you comfortable housing near your work assignment. Your family and pet can travel with you, too!
Licensing doesnt have to be difficult! Well help in assisting you to obtain the necessary licenses to work at your new assignment.
You're not alone. Should you have a problem at any time during your assignment, just call. We'll deal with the hospital on salary, working conditions and other issues.A NursesPro representative will be available after hours and on weekends to assist you with emergencies!
Our professional nurses are covered in the event of any accident or injury on the job.
Each month,our career managers share insights on healthcare trends and they how are likely to affect professional nurses. Our e-newsletter profiles a different destination and hospital every month, so you can decide where you want to go next!


The padding enables the user to apply a full power technique against a solid object (woodendummy Body) whilst minimising the risk of knuckle damage.
Can be applied to any wooden dummy body without damage to the body.
Each pad is made with Black Leather incorporating 1 inch padding.
Brass studs to the sides of the pad (fixed at the rear of the woodendummy using leather cord) enable it to be fixed to any woodendummy without damage to the Dummy Body.


text:
package test.com.bitdubai.fermat_cry_plugin.layer.crypto_router.incoming_crypto.developer.bitdubai.version_1.structure.IncomingCryptoEventRecorderService;

import com.bitdubai.fermat_api.layer.all_definition.enums.ServiceStatus;
import com.bitdubai.fermat_pip_api.layer.pip_platform_service.event_manager.enums.EventType;
import com.bitdubai.fermat_cry_plugin.layer.crypto_router.incoming_crypto.developer.bitdubai.version_1.structure.IncomingCryptoEventRecorderService;
import com.bitdubai.fermat_cry_plugin.layer.crypto_router.incoming_crypto.developer.bitdubai.version_1.structure.IncomingCryptoRegistry;
import com.bitdubai.fermat_api.layer.all_definition.events.interfaces.FermatEventListener;
import com.bitdubai.fermat_pip_api.layer.pip_platform_service.event_manager.interfaces.EventManager;

import static org.fest.assertions.api.Assertions.*;
import static org.mockito.Mockito.*;
import static com.googlecode.catchexception.CatchException.*;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

/**
 * Created by Franklin Marcano 04/08/15.
 */
@RunWith(MockitoJUnitRunner.class)
public class StartTest {
    @Mock
    private EventManager mockEventManager;
    @Mock
    private FermatEventListener mockFermatEventListener;

    @Mock
    private IncomingCryptoRegistry mockRegistry;

    private IncomingCryptoEventRecorderService testIncomingCryptoEventRecorderService;

    @Test
    public void Start_EventManagerSetWithValidEventListener_ServiceStarted() throws Exception{
        when(mockEventManager.getNewListener(any(EventType.class))).thenReturn(mockFermatEventListener);
        mockRegistry = new IncomingCryptoRegistry();

        testIncomingCryptoEventRecorderService = new IncomingCryptoEventRecorderService();
        testIncomingCryptoEventRecorderService.setRegistry(mockRegistry);
        testIncomingCryptoEventRecorderService.setEventManager(mockEventManager);
        catchException(testIncomingCryptoEventRecorderService).start();
        assertThat(testIncomingCryptoEventRecorderService.getStatus()).isEqualTo(ServiceStatus.STARTED);
    }
}


Vacuum storage case with side grips and zip closure. Contains a bag with a vacuum valve.
Just place the clothes in the case and remove the air to save about 75% of the storage space. In this way bed sheets, blankets and clothes remain protected and at the same time you gain storage.


text:
Battens Charitable Trust Continues Support for Dorchester Arts
Battens Charitable Trust – which was established by Battens Solicitors – is to continue as exclusive theatre sponsor for Dorchester Arts, a specialist organisation that not only brings a variety of stage performances to the area, but engages community groups of all ages in Arts activities.
Dorchester Arts is thrilled The Trust continues to recognise its good work by continuing as exclusive theatre sponsor for Dorchester Arts. Mark Tattersall Artistic Director at Dorchester Arts said:
"We are incredibly grateful to Battens Solicitors and its Charitable Trust. Its generosity as a longstanding supporter has enabled Dorchester Arts to present an exciting, varied and popular theatre strand for several years, which is much appreciated both by us and the theatre-loving community in Dorset!"
Battens Charitable Trust, which was established and is administered free of charge by Battens Solicitors, has donated more than £250,000 to charities and causes in and around Somerset and Dorset since it was first founded in 1985. Groups to have benefitted from its funding include schools, hospitals, children and youth sports groups, disability groups and hospices; yet it is not widely known that The Trust relies on the generous donations of local people to enable it to support these key community causes.
"Some people want to help others by making life time gifts or by leaving money to charity when they pass away," explained Ray Edwards, Director of Battens Solicitors and a Trustee of Battens Charitable Trust, "but many don't know which charity to choose, so instead they leave a legacy to the Battens Charitable Trust in their will, knowing that it will be distributed to charitable organisations that make a very real impact to the communities they knew and the places they loved."
If you would like to leave a legacy in your will, in some cases a free will scheme may be available or to make a donation to the Trust please email Louisa Dustan at bct@battens.co.uk.
For further information on Battens Charitable Trust click here and for information on Dorchester Arts, click here.
For more related articles regarding the Battens Charitable Trust click here.

redpajama_set_name: RedPajamaCommonCrawl


text:
At FileFactory.com we are committed to providing you with the best quality of service. To do this, we have to monitor our servers for the average amount of storage and bandwidth used per subscriber.
Excess bandwidth
If your download bandwidth usage is consistently in the top 1% of users over the course of a month, we may slow your download speed or restrict your downloads. We will contact you by email if you are affected by any restrictions. There is no limit on the outgoing bandwidth limit of files stored in your account. In other words, your hosted files can always be downloaded an unlimited number of times.
Excess storage space
If the amount of storage used exceeds 5TB, we will automatically remove any files uploaded more than 90 days ago, until the storage limit falls below 5TB. In cases where the above rule does not effectively reduce storage space beneath 5TB, a data storage fee of $100 per TB (or part thereof) over 5TB per 30 days may apply.
Terms of Service - Acceptable Use Policy - Privacy Policy - Fair Use Policy - Copyright Policy - Child Exploitation Policy - Support - Resellers - Premium - Affiliates - Contact Us
© FileFactory 2023 — FileFactory Cloud Storage LLC
English Danish Dutch French German Japanese Norwegian Portuguese Swedish Spanish


text:
Choose leaders who have fear of God, respect for religious, ethnic diversity – Bauchi CAN Chairman
From Paul Orude, Bauchi
Ahead of the 2023 general election, the Chairman, Christian Association of Nigeria (CAN), Bauchi State chapter, Reverend (Dr) Abraham Dimieus has urged Christians to choose leaders who have the fear of God and respect for the rule of law, justice and fairness.
Dimieus also urged Christian faithful to consider voting for leaders that have respect for religious and ethnic diversity in the country.
He made the call at the 6th State CAN Carol Service of Nine Lessons with the theme: "O Come Let Us Worship The King (Matthew 2:2) held at ECWA Goodnews Church, Bauchi.
"The year 2023 is a year of elections, and it is characterised with so many uncertainties. One thing l request from the church in Bauchi is to apply wisdom in order to come out of this coming general election, strong and victorious," he said.
"CAN has no any political party that is her own both from federal, state and local government, but we are urged to choose leaders that fear God, honest and trustworthy, have respect for the rule of law, justice and fairness for all, respect for religious and ethnic diversity.
"Leaders that must love Nigeria above self and such a leader must be healthy and mentally sound, and indeed must be a patriotic Nigerian to the core".
The CAN Chairman commended Bauchi State Governor, Senator Bala Mohammed for what he called "his exemplary leadership" saying it has promoted peaceful coexistence in the state.
He added that "the relationship between the Christian community in Bauchi State and government of Governor Bala Abdulkadir Mohammed is awesome".
He said that the Christian community in the state had never had it so good as it is under the present administration, stressing that the church is at peace with the administration.
Dimieus also urged all Christian political appointees serving in the administration to represent the Christian community well by not indulging in any act that will bring the name of Jesus Christ to disrepute.
While assuring the government and all Christian political appointees that the church will continue to pray for them to succeed in their various assignments, he reminding the Christian political appointees that they should not forget that they are stewards who will soon be called upon to give account of their stewardship.
In his remarks, Governor Mohammed reiterated the commitment of his administration to continue to promote peaceful coexistence in the state, stressing that peace and unity is what is needed to move the state forward.
The Governor who was represented by Senior Special Assistant(SSA) on Religious Affairs (Christian), Pastor Zakka Luka Magaji reassured that his administration would continue to run an open relationship with all irrespective of the differences stressing that his administration was for all residents of Bauchi State.
He enjoined the Christian community to continue to pray for peace and progress of the state, pointing out meaningful growth and development can only take place in an atmosphere of peace and tranquility.
Ajiri Daniels
NYSC: Entrench culture of working together for better Nigeria - DG
Soludo woos Italy on strategic partnership
Alleged certificate racketeering: Assembly orders Abia Poly to produce student's exam results


text:
2009 N.Y. Auto Show
Lamborghini coupe and convertible are shown at the New York International Auto Show Wednesday, April 8, 2009 in New York. The show opens to the public Friday.
Credit: AP Photo/Mark Lennihan
Chrysler President and Vice Chairman Jim Press discusses the new Jeep Grand Cherokee at the New York International Auto Show Wednesday, April 8, 2009 in New York.
Stefan Jacoby, left, president and CEO of Volkswagen of America, and Klaus Bischoff, a VW designer, react as they accept the World Car of the Year Award for the 2010 Volkswagen Golf, right, at the New York International Auto Show Thursday, April 9, 2009 in New York.
Scion cars are exhibited at the 2009 New York International Auto Show Wednesday, April 8, 2009, in New York.
Phil Popham, managing director of Land Rover, discusses the 2010 Range Rover Sport Supercharged at the 2009 New York International Auto Show Wednesday, April 8, 2009, in New York.
Members of the media surround the Acura ZDX sports coupe as it is unveiled at the 2009 New York International Auto Show Wednesday, April 8, 2009, in New York.
Workers prepare a 2009 Passion Cabriolet in the Smart car display at the New York International Auto Show Wednesday, April 8, 2009, in New York.
Sammy, a two-year-old mixed breed shelter rescue dog, and his owner Heather Cammisa, sit in the back of the dog friendly Honda Element concept car displayed at the 2009 New York International Auto Show Thursday, April 9, 2009.
Credit: AP Photo/Richard Drew
Journalists surround the 2010 Subaru Outback at the 2009 New York International Auto Show Thursday, April 9, 2009.
Spoked wheels adorn cars at the 2009 New York International Auto Show Wednesday, April 8, 2009. Top row, left to right: Chrysler 200 C Concept, Chrysler PT Cruiser, Audi S4. Middle row, left to right: Mini John Cooper Works Convertible, Fisker Sunset, Bentley Flying Spur Speed. Botton row, left to right: Hyundai, Honda Accord, Corvette.
Susan Docherty, North America vice president Buick-Pontiac-GMC introduces the 2010 GMC Terrain at the 2009 New York International Auto Show Wednesday, April 8, 2009.
The Scion IQ concept car is lowered from the ceiling during its introduction at the 2009 New York International Auto Show Wednesday, April 8, 2009.
Automobile brand logos come in all shapes and sizes at the 2009 New York International Auto Show Thursday, April 9, 2009. They are, top row, left to right: Buick, Cadillac, and Infinity. Middle row, left to right are: Saturn, Smart, and Mazda. Bottom row, left to right, are: Toyota, Honda and Lexus.


On 20 March 2019, affected communities by a coal mine at Kliprand farm in Newcastle marched to Ikhwezi Mining Company. The mine started to operate on this place in June 2018 and the affected communities do not benefit from this mine. This mine extract coal near people's places and dig graveyards for these communities. Khwezi Mine had a meeting with Kliprand farm and DMR last year in November 2018 and the mine made an agreement that by January 2019 they will start to relocate these affected communities. So these communities waited until end of February 2019. Then in March 2019 they to marched but got arrested. We so worried about what happened, the law and the government agreed with mining company. We want to see the government taking action on this matter because some of these people are getting sick because of air pollution and some of them do not have shelter because of this mining company.


text:
7 Continents Ranked by Size and Population
by Matt Rosenberg
Martin Barraud / Getty Images
What is the largest continent on Earth? That's easy: Asia. It's the biggest in terms of size and population. But what about the other continents: Africa, Antarctica, Australia, Europe, North America, and South America? Below the continents are ranked by area, largest to smallest, and their 2016 population estimate is listed as well for each, from World Atlas.com.
Asia: 17,139,445 Square Miles (44,391,162 Square Km)
Linka A Odom / Getty Images
Being the largest in square miles by a big margin also puts it at an advantage population-wise, having 4,436,224,000 of the world's population of 7.6 billion (2017 UN estimate).
And these aren't the only superlatives of this continent. Asia also boasts the highest and lowest points on Earth. Mt. Everest is the highest point, at 29,035 feet above sea level. The lowest point is the Dead Sea, which is more than 1,400 feet below sea level.
Africa: 11,677,239 Square Miles (30,244,049 Square Km)
Tom Cockrem / Getty Images
Africa is number two on both lists, population, and size. Its population is estimated at 1,216,130,000; it and Asia are forecast to be the highest areas of world population growth in the coming decades as well.
Africa is home to the longest river in the world, the Nile. It stretches 4,258 miles from Sudan to the Mediterranean Sea.
North America: 9,361,791 Square Miles (24,247,039 Square Km)
Rudy Malmquist / Getty Images
North America is where the two lists diverge in their rankings because this continent's population is not growing as fast as Asia's. In area, North America is third, but population-wise, it's fourth on the list, with 579,024,000 people.
North America boasts the largest freshwater lake in the world, Lake Superior. One of the Great Lakes, Superior covers more than 31,700 square miles between the United States and Canada.
South America: 6,880,706 Square Miles (17,821,029 Square Km)
Gene Wahrlich / Getty Images
The fourth largest continent, South America, is fifth on the world population list, with 422,535,000 people living there. Of the United Nations' most populous cities list of the world, São Paulo, Brazil, ranks number five.
South America has the longest mountain range in the world. The Andes Mountains stretch 4,300 miles from Venezuela south to Chile.
Antarctica: About 5,500,000 Square Miles (14,245,000 Square Km)
David Merron / Getty Images
No one has to guess very hard what is the least populous continent, as there are no permanent residents in Antarctica. Up to 4,000 researchers and personnel live there in the summer and 1,000 in the winter.
The amount of ice cover in Antarctica affects the exchange of heat, moisture, and gases between the ocean and the atmosphere. Changes in the ice, in turn, affect global weather patterns—and by extension over time, climate.
Europe: 3,997,929 Square Miles (10,354,636 Square Km)
Boaz Rottem / Getty Images
Europe comes in at number three on population rankings, with a 2016 estimate of 738,849,00 people. The United Nations Population Division expects its population to decline over the coming decades due to a low fertility rate.
Europe lays claim to the largest and smallest nations in the world. Russia is the biggest at 6.6 million square miles, while Vatican City is the smallest at 109 acres.
Australia: 2,967,909 Square Miles (7,686,884 Square Km)
John Crux Photography / Getty Images
It might be the smallest continent, but Australia is the sixth largest nation in the world. Only about 10 percent of it is habitable, with the majority of the population, at 24,127,160 (WorldBank.org, 2016), clustering in the urban areas on the coasts.
Australia is about the size of the contiguous 48 states of America.
Source: ThoughtCo


Portland Oregon Magician Kevin Allen - Company Events, Private Parties, Grad Nights.
Whether it's close-up magic for small, intimate groups, or a stage show for 400 people, Kevin has a way of bringing excitement to any event!
In charge of planning the upcoming corporate banquet or summer family picnic? Looking for something fun for employees and their families at your next holiday party? Kevin Allen's comedy magic shows provide fun, audience participation, laughter, and amazing magic. His years of experience make him an easy choice for event entertainment that lets you relax and guarantees a memorable, unique experience your employees won't soon forget!
Whether you're planning a milestone birthday party, a family reunion, an anniversary, a wedding, or just looking for a fresh, fun addition to your event, Kevin Allen's comedy magic show will create a memorable, shared experience everyone will enjoy!
Kevin performs regularly at golf tournaments, dinner parties, fundraisers, after parties, and family nights. Kevin can entertain as the main act, mingle with guests performing close-up magic, or a combination of the two. A sure-fire way to add fun to any event!
A popular choice with families and guaranteed universal appeal, Kevin offers one and two act comedy magic shows with laugh-out-loud comedy, wonder, suspense, and amazement! Kevin can even utilize projection screens and live camera feeds to share close-up magic with larger audiences.
Add something unique and exciting to your company party this year! Kevin offers close-up/mingling magic for cocktail hour, as well as comedy magic shows perfect for after dinner entertainment. Kevin's comedy magic shows are hilarious, fun, amazing, and create a shared event employees will talk about all year long!
Kevin performs at grad nights throughout the Pacific Northwest. His shows feature clean comedy and mentalism using students from the audience. His stage shows and mingling/close-up magic are always a big hit with high school grads! For more info on grad nights, CLICK HERE.
Stage shows bring your whole group together to create an entertaining, shared experience for everyone.
Often called roaming or mingling magic, Kevin performs "in-your-hands" miracles in a more intimate setting.
Bring all the fun to your next event! Call 800.388.5567 to check availability and reserve your date today.


text:
Q: How to call a UIViewController from a UIView SubClass? I have main UIViewController in which I have an UITableView.
In the cell of UItableView I had already add an UICollectionView.
in -
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

I am calling an method of main UIViewController.
UIViewController *view = [[UIViewController alloc] init];
[view my_method];

in main view.
-(void)my_method {
    AnotherName *view_my=[[AnotherName alloc]initWithNibName:@"AnotherName" bundle:nil];
        [self.navigationController pushViewController:view_my animated:NO];
}

Viewdidload method is calling but view is not showing.

A: It is because you initialise by calling [[UIViewController alloc] init]. This always returns empty view.
You should instead call this

*

*If you use storyboard give the view controller a storyboard id and call this

MainViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"storyboard id"];

*

*If you use interface builder, call this

MainViewController *controller = [[MainViewController alloc] initWithNibName:@"Nib File Name" bundle:nil];

A: i got solution..
AnotherName *view_my = [[AnotherName alloc]initWithNibName:@"AnotherName" bundle:nil];
self.window.rootViewController = view_my;
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

Spacial thanks to @The Mech System .. To help me out find the solution ..
now it is working fine.

redpajama_set_name: RedPajamaStackExchange


This article describes the realignment of priorities in health care as they affect the experience of one university in the education of nurse practitioner (NP) students for the innovative new roles. Specifically, the curriculum and process of clinical placement will be described, along with several examples of NP roles that students have acquired after graduation. This information is useful for professional nurses considering advanced practice roles and pursuing graduate education. Since the turn of the century, the landscape of health care has changed dramatically. A number of evolving trends influence role opportunities for advanced practice nurses. Traditional role responsibilities, settings, and geographical boundaries are blurred or no longer exist.


text:
Head-Piece of honour bought in Glasgow by an American
AN American traveller in Scotland, some time after the battle of Waterloo, wrote as follows :— "Before leaving Glasgow I purchased a Highland cap, or
bonnet, as it is called, for the convenience of wearing in travelling. It is frequently seen in the Lowlands, and is more comfortable in a carriage than a round hat. It excited, however, more attention than I could have wished. It so happened that the 42nd and 92nd Highland Regiments were ordered to Ireland by way of Port-Patrick. The former were on the point of leaving Glasgow at the time that we did, and the latter had actually marched from Edinburgh several days before.
"My bonnet accordingly, which at another time would have passed unobserved, has led many to suppose me to belong to the army. While on my route from Glasgow, I heard several times the expression, as I was passing,—There goes a Waterloo cap." The landlord at Port-Patrick at first took me for a Highland officer; and on the morning I embarked, I was several times asked if I was attached to the body of military which was expected to cross over that day.
"A similar mistake prevailed on my reaching the opposite shore, and many questions were put concerning the movements of the two regiments. It was not in every instance that I cared about undeceiving the inquirer; for, in the first place, it did no good; and, in the second, a positive benefit was otherwise gained; for such is the high character which these troops have obtained by their brave and gallant conduct, that they are everywhere welcomed with demonstrations of respect."


I have said this before, but despite the fact that my hair color is blonde, I have confidence that I am an intelligent woman, especially where business and finance are concerned. However, I did not always feel "smart blonde" when it came to investing my own money. In fact, one of the reasons why I became a financial advisor was that I felt ill equipped to handle my personal investments. Despite the fact that I worked in finance, and helped companies invest their money, I felt like a "dumb blonde" where personal investing was concerned. I had no idea what an ETF was and why asset allocation mattered. So, I was thrilled when I started working in wealth management, and I received investment training and knowledge that was truly world class. After months of training and testing, I was excited to finally "get it" and move forward with helping others invest their money wisely.
One of the basic lessons in asset allocation is that depending on your age and goals, each person should own a percentage of stocks, bonds and cash (aka the assets). If you are younger or more "aggressive" you should have more stock, and if you are older or more "conservative" you should have more bonds and cash. No matter what your age or goals, though, every asset allocation model assigns a portion to stocks and the cash component is always the smallest wedge of the pie (no more than 30%). So you can imagine my surprise when literally every new client that I met typically had more than 50% of his or her assets in cash. WTF?!?! Despite the fact that these investors were earning close to 0% in their checking and savings accounts, my clients opted to use these bank products as "investment" options. I call this investment strategy the "mattress trade," because you are essentially giving your money the same return you would receive if you just put it under your bed and called it a day.
So why did all of these clients have all of this money in cash? I can give you the answer in one word….Fear. Fear is defined in the dictionary as a "distressing emotion aroused by impending danger, evil, pain, etc., whether the threat is real or imagined". As a financial advisor, I witnessed firsthand an interesting dichotomy between "Wall Street" and "Main Street" as far as memory is concerned. Wall Street has a very short memory. Despite the fact that the financial markets imploded in 2008 and 2009, within less than 2 years, many of the same behaviors that led us to the crash (i.e. irresponsible trading and overextension of credit) had returned they just had different names. On the other side, you have "Main Street" who lived through the crash, saw their 401ks or other investments nearly wiped out and five years later, despite the fact that those accounts are higher than before, they still have not forgotten it. In fact, it is very difficult to "convince" them that situations have changed. Many have climbed up into trees, and have refused to come down. Even though the "threat" may now just be imagined, it doesn't keep people from staying up in the trees with their cash.
After getting these responses enough, I realized that many of my clients and other residents of "Main Street" fear investing almost as much as they would fear death or public speaking. And there are many reasons for these fears. If you are someone who falls into this category as well, please know you are not alone. Tomorrow, I am going to address the specific fear factors and how to overcome them to help you move forward with confidence in investing your own money. Until then, let me share with you some reasons why I think you need to overcome your fears of investing.
It Grows Your Money – Last week, the Wall Street Journal shared a great video comparing the returns investors would have received on $10,000 if they invested it for five years starting on March 9, 2009 which was the low hit by the Dow Jones Industrial Average during the financial crisis. It is an extreme example; however, if you invested your money in a broad stock index fund at this time and kept it invested, you would have grown your money to $30,871 while if you left your money in cash, you would have grown your money to $10,026.
It Protects Your Money – Inflation, or the rising price of goods and services, is a factor that many people don't consider when thinking about investments because it is not always something we "feel," especially with its low levels in the U.S. in recent years. Right now, the average inflation rate is 2% (it is really around 1.5%, but I am keeping my math simple), which means that something that cost you $1,000 today, could cost you $1,020 in a year. If your money is in cash, this $1,000 will become $1,005 in a year. Which means you would have "lost" $15 to inflation. However, if you invest your money in a conservative asset allocation model and earn 4% on that investment, your $1,000 will become $1,040. Which means you will beat inflation and "make" an additional $20.
It "Saves" Your Money – Even though my clients have access to their investment portfolios every day, they typically think of their investment portfolios as "difficult" to liquidate because it requires a multi-step process. Just like they do with their 401k or other retirement accounts, they auto-draft money to their investment accounts, and this money is "out of sight and out of mind" for them. Whereas, money that they keep in their bank accounts they feel they are more likely to spend because it is easier to access.
Are you afraid of investing? If so, why? Have you overcome a fear of investing? If so, how? Were you never afraid? If not, why not?


In turn, Venezuelan government claimed that the country does not experience a humanitarian crisis, with President Nicolas Maduro, who blames Washington for staging a state coup in Venezuela, having called U.S. assistance as a "political show".
Juan Guaido, Venezuelan opposition leader and parliament speaker, whose appointment to that position had been cancelled by the country's Supreme Court, declared himself interim president at a rally in the country's capital of Caracas on January 23. Maduro has denounced Guaido as a USA puppet seeking to foment a coup.
Since then, PDVSA has been pressing its foreign partners at joint ventures in its Orinoco Belt producing area to formally decide whether they will continue in the projects, according to two sources with knowledge of the talks.
Norway's Equinor and France's Total are among the companies who run joint ventures with PDVSA. They also used correspondent banks in the United States and Europe to shift money to PDVSA's accounts in China.
On February 4, most European Union member-states recognized Guaido as Venezuela's interim president.


Secured loans are traditionally cheaper for a borrower than unsecured loans. Because the borrower is placing an asset as collateral, the lender is taking on very little risk by funding the loan. Lenders reward this low risk with low interest rates. Nearly any asset can be used as collateral, including homes, cars, businesses and even stocks or savings accounts. Savings-secured loans are funded by the same institution where the account is held. Most lenders offer both online and offline application options for this fairly simple loan.
The main advantage to sourcing a loan online is time-efficiency. A borrower can research several lenders in a short period of time. These lenders will often have quick, instant quote forms in order for a borrower to receive a basic understanding of their savings-secured loan rates. If you use online banking for your current savings account, you can usually log right in to your information and have a quote within minutes. This ease of searching lenders makes looking for secured loans online ideal for the very busy borrower.
When you aim for greater time efficiency, you will lose some of the personal service aspects of sourcing a loan. Some borrowers like to ask a lot of questions; in fact, asking questions is one of the best ways to protect yourself against predatory lenders. Further, entering personal and financial information to an online database can make you a target for identity thieves. You always should be careful to use only a personal computer when you are looking for loans. You should also be wary of providing personal information very early on in the process. Ultimately, if you are concerned with your privacy, you may not be a good candidate for an online secured loan.
Meeting a lender face-to-face is the traditional way of sourcing a loan. These meetings give you the chance to ask all of your questions. This is also the best opportunity to negotiate your loan terms and rates. Meeting in person gives you a chance to negotiate both the loan and any interest you earn on the savings account with the lender. If you have bad credit, you may need to meet with a lender face-to-face just to get approval. Bad credit borrowers are not always eligible for instant-approval online loans. If you are using your existing bank, you may also take advantage of existing relationships you have with your tellers.
Banks and lending offices are notoriously slow in dealing with customers. You also may only be able to get an appointment during business hours, meaning you will have to take time off work every time you want to meet with a new lender. This time consuming process limits the number of total lending institutions you can evaluate. Borrowers who are looking for a simple answer will have an easier time searching online than talking through every detail with a banker in person.


text:
Study finds four emotional drivers for determining product sustainability
Audrey LaForest
Gary Wnek, left, a professor of macromolecular science and engineering at Case Western Reserve University, dicusses product sustainability with Mike Maczuzak, founder and CEO of SmartShape Design, and Kiersten Muenchinger, head of the product design department at the University of Oregon.
Detroit — What are the emotional drivers of sustainability? According to research by Kiersten Muenchinger, head of the product design department at the University of Oregon in Eugene, there are four.
Muenchinger, who was a panelist during a Nov. 8 session on sustainable design considerations at the 2017 Design in Plastics event, referenced a study she did to gauge how people emotionally relate to sustainability in products.
At the start of the discussion, she passed around a set of 11 cups. The cups were the same size — all injection molded — but each was made from a different polymer. Materials ranged from polypropylene and polylactic acid to high density polyethylene made from sugar feedstock and conventional HDPE.
The results of her study showed that participants found only four material design strategies to be indicative of the cups' sustainability: durability, naturalness, degradability and rawness.
You will notice that recyclability did not make the cut.
"Recyclability is one of the things we talk about a lot," she said. "If we make something out of more recycled materials or more recyclable materials, is that something people are going to see and understand in a product on the market? The research I've done says no."
Muenchinger said the outcome probably goes back to a consumer's experience with recycling products, where there's a fine line between whether an item makes it into the recycling bin or ultimately ends up in a landfill. The study's participants seem to be defining sustainability based on experiences they know they can rely on, she said.
"I think that's one of the reasons that durability is something that's driving sustainability," she added. "People have a very good experience with durability and know that something that's durable is something they'll keep for a long time."
Panelist Kiersten Muenchinger passed around 11 cups, which were used for a previous study she conducted to determine the emotional drivers of sustainability. The cups are injection molded and made from different polymers, including polypropylene and high-density polyethylene from sugar stock.
Muenchinger was joined on stage by Gary Wnek, a professor of macromolecular science and engineering at Case Western Reserve University, and Mike Maczuzak, founder and CEO of SmartShape Design, an industrial design firm with headquarters in Cleveland.
"[Durability is] an area that affects more of the work that we do at SmartShape in product design," Maczuzak said. "For example, we design all kinds of permanent products that you would use for years and decades, like this table or chair."
Maczuzak's plastic cup on the table, however — most likely made from PET — is more durable than it needs to be, he said.
"This cup that I used at lunchtime … is intended to be used for a minute, minutes or even a few seconds," said Maczuzak, holding up the clear cup. "You fill it up, drink it and throw it away. That's the whole entire lifespan use of this product."
The durability of the table and chairs that the three speakers were gathered at should be optimized so that the pieces of furniture last for decades and don't end up in a landfill, he explained.
"But this cup, there's a certain optimal level of durability, and this is … more durable than it needs to be for that lifespan," he said.
Maczuzak, who frequently travels to Shenzhen, China, where SmartShape has an office, compared the sturdy, single-use plastics cup to the thinner, flimsier cups he uses during meetings in the China.
"It feels almost like a plastic bag, but it doesn't leak. It doesn't fall out of my hand," he said. "It works."
The three panelists agreed that oftentimes in the United States product designers are faced with competing interests of user experience and sustainable design. That desire for a "feel-good" user experience can sometimes prevent optimal sustainability, they said.
"They're not going to make a plastic cup that's perceived as flimsy if Americans prefer a user experience that isn't," Maczuzak said.
Another hurdle for product designers? Sustainability and high value are mutually exclusive, Muenchinger said.
"If it's considered luxurious, precious or expensive, it is mutually exclusive of being sustainable," she explained. "Those two things don't cross and, as a matter of fact, if you see one as one thing, then you do not see it as the other. It can't have high value or high worth and be sustainable."