Activities (Contact Reports) - Activities in Salesforce are events, tasks, calls, and emails sent. Track meetings and tasks together in lists and reports to keep up to date on leads, contacts, opportunities, accounts, and campaigns. Events and tasks also serve historical reporting purposes in Salesforce.
Constituent (Contact, Entity) Management - Constituents are the individuals that can be associated with one or more Organizations. Managing Constituents can include maintaining bio/demo data, connecting constituents with other people through relationships, connecting constituents with one or more Organizations, logging interactions (activities) such as visits, phone calls and emails, and managing opportunities associated with constituents.
CRM - (Customer Relationship Management or Constituent Relationship Management) is a strategy, often supported by technology, for more effectively managing relationships with key constituency groups, such as parents, faculty, staff, organizations, and/or alumni over the lifetime of the relationship.
Dashboard - A dashboard shows data from source reports as visual components, which can be charts, gauges, tables, metrics, or Visualforce pages. The components provide a snapshot of key metrics and performance indicators for your organization. Each dashboard can have up to 20 components.
Data Integration - An automated or manual program that moves data between disparate systems, often combining data from multiple sources, and reconciling data across multiple systems. This allows data from multiple systems of record to be shared with other systems for analysis and consumption.
Leads Management - A lead is a prospect who has expressed interest or been identified as a potential donor. Track prospects apart from your contacts and opportunities with Salesforce lead records. Associate relevant events and tasks with those leads and convert your qualified leads to contacts that have opportunities associated to them. For any lead records that you mark 'Unqualified', plan to revisit them later to see whether those prospects' needs have changed.
Marketing Automation - Automates marketing and sales engagement to generate more leads, qualify and prioritize leads, nurture those leads to a ready state, manage email marketing campaigns and report on the success of email marketing campaigns.
Add products and attach files, such as contracts or data sheets.
Log the calls you make.
Use Notes to jot down things during meetings.
Create tasks for key activities and calendar events for client meetings.
Send email to the opportunity contact or other key decision-makers.
During negotiation, share strategies with colleagues or to ask your manager for targeted guidance. As the opportunity moves from one stage to the next, update the opportunity record with the current stage.
Organization (Account) Management - An organization, company, or consumer that you want to track—for example, a customer, partner, or competitor. Managing organizations can include maintaining bio/demo data, connecting constituents, logging interactions (activities) such as visits, phone calls and emails, and managing opportunities associated with organizations.
Pipeline Management - Calculated amount of open opportunities that have a close date within a defined period of time. Displays on forecast detail and edit pages. For managers, this amount includes open opportunities for them and their entire team.
Reports - A report returns a set of records that meets certain criteria, and displays it in organized rows and columns. Report data can be filtered, grouped, and displayed graphically as a chart. Reports are stored in folders that control who has access.
Salesforce - Salesforce (SF) has been identified as the CRM platform to support our technical CRM needs.
Salesforce Marketing Cloud -Salesforce Marketing Cloud is a customer relationship management (CRM) platform for marketers that allows them to create and manage marketing relationships and campaigns with constituents. The Salesforce Marketing Cloud is included in crmND.
Salesforce Sales Cloud - Salesforce Sales Cloud is a constituent relationship management (CRM) platform that is fully customizable and brings constituent information together in an integrated platform that incorporates marketing, lead generation, opportunities, customer service and business analytics. The Salesforce Sales Cloud is included in crmND.
Story (User Story) - User Stories are short expressions of functionality that covers the WHO, WHAT, and WHY of user requirements. User Stories must clearly state the goal of the functionality in business language versus system language. The purpose of a story is to provide enough information for implementers to understand the requirement and for stakeholders to understand, approve and prioritize. Example: "As a Student, I need the ability to update my address in the Student Portal in order to ensure my GU contact information is accurate."
System of Record - The authoritative source of a particular data type.
Task - An activity not scheduled for an exact day and time, but may optionally have a specified due date for completion (e.g., list or required outbound phone calls, emails that need to be sent/responded to, a procedure within a workflow).


text:
'We had a pretty brutal review': Wallabies have digested loss
8:15pm, 28 August 2021
By Ben Smith
Also by Ben Smith
Schmidt starting after Ireland series
Please don't do it Foster
ABs to sweep Ireland 3-0?
(Photo by Anthony Au-Yeung/Getty Images)
Trending on RugbyPass
1 Damian de Allende's two options
2 Watch: McKenzie breaks Suntory duck
3 Rassie Erasmus is back
4 Players Eddie Jones can't ignore
5 SA Boks to face England
8:15pm, 28 August 2021 Go to comments
The Wallabies went back to Australia with two losses from two attempts at Eden Park but with last week's delay in travel by the All Blacks, Dave Rennie's side have had time to review what went wrong while getting more days to prepare for the third test.
After conceding 57 points in the second test, most of the 'brutal' review has come around tightening up their defence as Rennie aims to keep the All Blacks to what he says is the golden mark of 20 points or less.
"We had a pretty brutal review, as you should do," Rennie told media on Saturday afternoon.
Ardie Savea overwhelmed by All Blacks captaincy
"We did a lot of good things in that test, but not for long enough, and we made too many errors and gave their key playmakers time and space.
"We knew that, heading in, that would be fatal, so we've got to be better. To leak that many points, that's all the focus, not on maybe some of the good things we did, so we've got to be better, and we've done a bit of work around that."
While Rennie was first disappointed and angry at NZR's decision to prevent the All Blacks from travelling to Perth, the sour relations between the two governing bodies isn't being used as motivation for the third Bledisloe.
"I'm not sure about extra edge. We're not necessarily using it as extra motivation," Rennie said.
"The disappointment for us is what we knew is that the Rugby Championship was going to be played somewhere in the world on the 12th of September.
"The All Blacks committed to play us originally on the 21st [of September] and then on the 28th.
"Had they come over here, what we knew is that on the 29th, we're all jumping on a plane and heading somewhere in the world, whether that was Brisbane or whether that was South Africa or that was the UK.
"From that perspective, we felt they should have got on a plane and come over and fulfilled their commitments, but anyway, they're here now."
The All Blacks will visit Perth to play the Wallabies at Optus Stadium for just the second time, with the first test played there in 2019 ending in a record 47-26 win to the Wallabies after a Scott Barrett red card reduced the visitors to 14-men.
The Wallabies stormed home in the second half playing a confident brand of rugby to run all over the All Blacks. With 60,000 capacity at Perth's new stadium, the All Blacks could be walking into big stage test in front of a strong Australian crowd.
The All Blacks have lost their last two clashes on Australian soil, backing up the Perth loss in 2019 with a loss in Brisbane in 2020. When asked why it's so difficult for the All Blacks to beat the Walalbies at home over the past decade, Rennie didn't have a conclusive answer but said having Wallabies fans sure helps.
"Who knows. Obviously home crowds help, don't they? We're hoping there's still going to be 60,000 in the crowd," he said
"The [matches scheduled for the] 21st and the 28th [of August], they were both sell-outs, and with the game being a Sunday afternoon, I'm not certain how that will play out, but I think we've done a pretty good job while we've been here connecting with the people.
"I hope they come out in big numbers and there's plenty of support for us. It should be a hell of an occasion. Optus Stadium's an amazing venue."
Join RugbyPass+ now and be apart of the conversation with all-new commenting!
1 Damian de Allende's two options as he heads for Munster exit - report
2 Watch: Suntory star Damian McKenzie scores first League One try
3 'Thank you World Rugby': Rassie Erasmus is back after serving 2-month ban
4 Four uncapped England players Eddie Jones can't ignore
NEXT TRENDING SIMILAR POPULAR
NEXT TRENDING SIMILAR POPULAR Burns' first game back at Leicester curtailed by injury in Jersey Read now NEXT TRENDING SIMILAR POPULAR RugbyPass Top 100: Picking the 20th to 11th best players in the world Read now NEXT TRENDING SIMILAR POPULAR Damian de Allende's two options as he heads for Munster exit - report Read now NEXT TRENDING SIMILAR POPULAR First player to score 9pt try highlights White fears for South African rugby Read now

redpajama_set_name: RedPajamaCommonCrawl


Neil joined the company in May 2004, following eight years in technical and advisory roles with regional and national advisory firms. He led the management buyout of the firm in 2008, at which time he became Managing Director.
Neil's main focus is developing and delivering the strategy of the business. He also looks after a number of private clients delivering a personal service to them. As an ambitious individual, he is looking to create one of the most respected advisory firms in the country.
Neil currently lives in West Yorkshire with his partner and daughter. In his rare moments of spare time, he enjoys playing golf and watching most forms of sport with his family.


LEARN HOW TO FOSTER A VOICE FOR YOURSELF AND THOSE AROUND YOU!
Communication is difficult. Words are often misunderstood or misconstrued. People are formulating their responses before you are done talking. Or, the response you receive is completely off topic and it is obvious they weren't listening to you.
Communication doesn't have to be hard. Liysa can help you maneuver how to listen more effectively. She will teach you to use improv principles to help you be heard and lead those wanting to be heard.
For businesses, the art of listening results in employees and co-workers being heard, which leads to happy employees, which leads to more productivity, which leads to more money. Her presentations are funny, easy and fast - getting you and your team communicating better.
For the individual, the art of listening can improve your stress level, help you overcome obstacles and seek out solutions to move forward for personal or professional success.
Liysa provides customized, humorous presentations for keynotes, workshops or breakouts. She can also provide hilarious entertainment in the lessons she's learned as an emcee, lunch or dinner performance.
Inspiration with a whole lotta laughs!


text: Q: Игра некорректно работает после компиляции Недавно написал игру на unity. Решил скомпилировать под ПК. После компиляции всё работало прекрасно, но пропала фоновая музыка, хотя в редакторе во время игры трек проигрывался. Подскажите пожалуйста как это исправить.

redpajama_set_name: RedPajamaStackExchange


"It's like real life, only with more juggling"
Overall, I highly recommend Mr. Boardwalk to all audiences. I had a hard time putting it down. It's quality literature. It's fun and sad and touching. And it's got lots of juggling!


Have you seen the latest apps for ride-sharing? Some of them have strict policies on the types and years of cars allowed to work with the app. While it's not the case in every city, Uber has some pretty specific rules about what cars can be used by drivers. For the most part, they like when cars are over 2015 and have lots of modern features, such as infotainment systems and safety features.
When you visit Brenner Car Credit, you should learn everything that there is to know about our selection of vehicles. It is not uncommon for cars and trucks to use all four wheels to gain traction in poor road conditions. For instance, if you encounter slippery conditions, the vehicle may automatically go into four or all-wheel drive (AWD) mode.
Although it may be tempting to drive on your winter tires throughout the year, it is not a recommended practice. There are distinct reasons why it is a good idea to switch out your tires with the weather conditions for optimal road performance and safety. The tire experts at Brenner Car Credit want you to understand how to best put your tires to work for you.
Because winter tires are engineered for colder temperatures, they wear faster when used on warmer pavement. Specially designed all-season and summer tires are designed to take the heat and last longer.
If you're seeking out a used car, and want a process that gives you plenty of selection and is hassle-free. We can help at Brenner Car Credit, serving those in Selinsgrove. Our goal is to give you many choices at our buy here, pay here location and that includes helping those with bad credit find a reliable vehicle and a chance at car ownership.
Here at Brenner Car Credit, we believe that having some less than ideal credit shouldn't stop you from car ownership in Williamsport, PA. A car is a must in our area and with us we work with drivers from all credit backgrounds at our buy here, pay here location to help you find an affordable used car.
When you start to feel your car grinding its gears with a screeching sound every time you brake, you know that you're in for a trip to the service department. There are some common noises that your car makes when it's ready for a brake repair. This includes rubbing, squealing, and screeching whenever you brake. This indicates that the brake pads and shoes need inspection and possible repairs.
If your car vibrates or the steering wheel pulses when you brake, then your brakes and rotors may be warped.
We want to help every driver get into a vehicle that will meet the needs of their life, and a big part of that is making sure we can work with any credit score. Even though there are many of you out there who are struggling with their credit scores, we are here to help. We get you approved and then find you the car that meets your needs. We have many used cars in Mifflintown that will help you build your credit with a reliable vehicle.
How Can Our "Buy Here Pay Here" Program Help You Buy a Car in Williamsport?
Your credit score isn't just some number. It's one of the biggest factors behind whether or not you gain access to the resources to buy things like cars. A bad credit score can lead to frustrating rejections that can keep you from finding an affordable vehicle.
If you're struggling with the effects of a bad credit score, the finance team at Brenner Pre-Owned Cars can help.
Is Your Bad Credit Making it Hard to Find a Car? Come and Talk to Brenner Pre-Owned.
When you're looking for your next car, there are some big factors that can have a major effect on what's available to you. One of the biggest? Your credit score.


text:
LEARN MORE ABOUT OUR INCREASED SAFETY MEASURES.
Express Care® Online
MyConsult
Cleveland Clinic Canada Menu
Cleveland Clinic Canada
Express Care® OnlineMyChart
Call for Additional Assistance 1.888.507.6885
Home / Why Choose Cleveland Clinic Canada / Website Information / Privacy Statement
Downtown & Midtown 416.507.6600
CHAT WITH THE SERVICE TEAM
The purpose of this Privacy Statement is to inform you about the types of Personal Information Cleveland Clinic (as follows, "Cleveland Clinic" "we" or "us") collects, uses and discloses. It explains how we use and disclose that information, the choices you have regarding such use and disclosure, and how you may correct that information. This Privacy Statement is supplemented by our Notice of Information Practices, which explains how we collect, use and disclose personal health information.
We are proud to demonstrate our commitment to your privacy, by complying with the laws and regulations under applicable privacy laws in Canada, including the Personal Information Protection and Electronic Documents Act.
From time to time, we may make changes to this Privacy Statement. The Privacy Statement is current as of the "last revised" date which appears at the top of this page. We will treat Personal Information in a manner consistent with the Privacy Statement under which it was collected and our Privacy Policy, unless we have your consent to treat it differently. This Privacy Statement applies to any information we collect or receive about you, from any source.
The following topics will be covered in this Privacy Statement:
1. To which companies does this Privacy Statement apply?
This Privacy Statement applies to the collections, uses and disclosures of Personal Information by Cleveland Clinic. This Privacy Statement does not apply to other websites that we have linked to our website. On the Cleveland Clinic links page, we offer links to other websites operated by entities other than Cleveland Clinic. We try to link only with websites that share our values, however, you should check the privacy policy of any linked website to understand their personal information collection practices. We are not responsible for the content or information collection policies of such websites.
"Personal Information" is any information that is identifiable with you. This information may include but is not limited to your name, mailing address, phone number and email address. Personal Information, however, does not include your name, business title or business address and business telephone number in your capacity as an employee of an organization. For the purposes of this Privacy Statement, Personal Information does not include personal health information, which is addressed in our Notice of Information Practices.
We will always collect your Personal Information by fair and lawful means. We often collect Personal Information from you and from third party service providers, where we have obtained your consent to do so or as otherwise permitted by law.
4. Where do we store your Personal Information?
We will keep the Personal Information that we collect at our offices at
181 Bay Street, Box 818
Our service providers may, from time to time, also hold your Personal Information in connection with purposes for which you provided your consent.
We identify the purposes for which we use your Personal Information at the time we collect such information from you and obtain your consent, in any case, prior to such use. We generally use your Personal Information for the following purposes (the "Purposes"): (i) responding to your inquiries; (ii) including you on our mailing list; (iii) including you in our fundraising activities; (iv) providing health care; (v) planning, delivering and monitoring patient care programs or services; (vi) risk management or activities to improve quality of care or quality of any related program or service; (vii) processing, monitoring, verifying or reimbursing claims for payment under any Act; (viii) research, as approved by a Research Ethics Board; or (ix) as otherwise permitted or required by law.
6. To whom do we provide your Personal Information?
We identify to whom, and for what purposes, we disclose your Personal Information, at the time we collect such information from you and obtain your consent to such disclosure.
For example, we may disclose your Personal Information to third party service providers with whom we have a contractual agreement that includes appropriate privacy standards, where such third parties are assisting us with the Purposes – for example, service providers may be used to administer the website.
We will only make disclosures of Personal Information to such persons for which you provide your consent. Notwithstanding the foregoing, we may also make disclosures of Personal Information to a potential acquiror in connection with a transaction involving the sale of the business of Cleveland Clinic or as otherwise permitted or required by law.
In addition, we may send Personal Information outside of the country for the purposes set out above, including for process and storage by service providers in connection with such purposes, and you should note that while such information is out of the country, it is subject to the laws of the country in which it is held, and may be subject to disclosure to the governments, courts or law enforcement or regulatory agencies of such other country, pursuant to the laws of such country.
7. When and how do we obtain your consent?
We obtain your consent prior to collecting, and in any case, prior to using or disclosing your Personal Information for any purpose. You may provide your consent to us either orally, electronically or in writing.
8. How do we ensure the privacy of your Personal Information when dealing with our affiliates and other third parties?
We ensure that all affiliates and other third parties that are retained to perform services on our behalf and are provided with Personal Information are contractually required to observe the intent of this Privacy Statement and our Privacy Policy and practices.
9. How long will we utilize, disclose or retain your Personal Information?
We may keep a record of your Personal Information, correspondence or comments in a file specific to you. We will utilize, disclose or retain your Personal Information for as long as necessary to fulfill the purposes for which that Personal Information was collected and as permitted or required by law.
10. How can you review your Personal Information that we have collected, utilized or disclosed?
If you make a written request to review any Personal Information about you that we have collected, utilized or disclosed, we will provide you with any such Personal Information to the extent required by law. We will make such Personal Information available to you in a form that is generally understandable, and will explain any abbreviations or codes.
11. How do you know that the Personal Information we have on you is accurate?
We will ensure that your Personal Information is kept as accurate, complete and up-to-date as possible. We will not routinely update your Personal Information, unless such a process is necessary. We expect you, from time to time, to supply us with written updates to your Personal Information, when required.
12. What if the Personal Information we have on you is inaccurate?
At any time, you can challenge the accuracy or completeness of your Personal Information in our records. If you successfully demonstrate that your Personal Information in our records is inaccurate or incomplete, we will amend the Personal Information as required. Where appropriate, we will transmit the amended information to third parties having access to your Personal Information.
13. How fast will we respond to your written requests?
We will attempt to respond to each of your written requests not later than thirty (30) days after receipt of such requests. We will advise you in writing if we cannot meet your requests within this time limit. You have the right to make a complaint to the federal Privacy Commissioner in respect of this time limit.
14. Are there any costs to you for requesting information about your Personal Information or our Privacy Policy or practices?
We will not charge any costs for you to access your Personal Information in our records or to access our Privacy Policy or practices without first providing you with an estimate of the approximate costs, if any. You may withdraw your requests for access to information by notifying us within the thirty (30) day notice period disclosed on the estimate. If you do not notify us within such thirty (30) day period, we will send you a further notice indicating that you will be deemed to have withdrawn your request for access unless you advise us otherwise within thirty (30) days. If, after the expiry of this second thirty (30) day period, you have not so advised us, we will deem your request to have been withdrawn and provide you with written notice to that effect.
15. How do we know that it is really you requesting your Personal Information?
We may request that you provide sufficient identification to permit access to the existence, use or disclosure of your Personal Information. Any such identifying information shall be used only for this purpose.
16. What safeguards have we implemented to protect your Personal Information?
We have implemented physical, organizational, contractual and technological security measures to protect your Personal Information from loss or theft, unauthorized access, disclosure, copying, use or modification. The only employees who are granted access to your Personal Information are those with a business 'need-to-know' or whose duties reasonably require such information.
17. How do you contact us regarding access to your Personal Information or our Privacy Policy and practices?
All comments, questions, concerns or complaints regarding your Personal Information or our Privacy Policy and practices, should be forwarded to our Privacy Officer as follows in writing:
Please call 416.507.6600 and ask for our privacy officer for more information
Copyright © 2000-2009 Cleveland Clinic. All Rights Reserved.
Why Choose Cleveland Clinic Canada
Copyright & Reprints Policy
Contact UsOnline Resources eNewsletter Sign UpEvents Calendar
About Cleveland Clinic Canada
About UsLocationsCommunity PartnersCareersGlobal Patient ServicesAbout Cleveland Clinic Health System
Brookfield Place, 181 Bay Street, Suite 3000, Toronto, Ontario M5J 2T3 | 1.888.507.6885 | © 2021 Cleveland Clinic. All Rights Reserved.


Share Casa Kash - 3 Bedroom with friends or on social media.
Casa Kash is a brand new villa on the shores of Cabo San Lucas. The ocean-view, beachfront villa features stunning views and luxurious interior living spaces. The Pacific Ocean and its sandy shores are just steps away from the private villa. While entirely private, Casa Kash is ideally located for exploring more of Mexico. The villa is just miles away from San Jose. Experience the beauty and splendor of Mexico in this one-of-a-kind vacation villa.
The two-story, 3,200-square-foot villa has three bedrooms and two bathrooms. There is an additional fourth bedroom located within a nearby casita available to reserve for additional accommodations. The exterior of Casa Kash features graceful archways and stately pillars. The villa has a classic and chic ambience that invites its guests to experience the vacation of a lifetime.
Behind the villa, your eyes will be immediately drawn to the private infinity pool. The curved pool is so close to the ocean you can hardly tell the two apart. From the poolside, you can enjoy the view of the beach and the Pacific Ocean's turquoise waters. Casa Kash also has its own hot tub, perfect. After you're done swimming in the pool and soaking in the hot tub, you can sun yourself on the nearby lounge chairs. The pool area also has outdoor speakers so you can listen to music while you sunbathe.
Guests can also relax inside in the posh living room. This room features an over-sized sectional couch, dark wood furniture, and a flat screen TV. Sliding glass doors lead directly out to the patio.
The fully equipped kitchen at Casa Kash features modern appliances, granite countertops, and dark wood cabinets. Guests can pull up a seat at the central island for a casual meal, or they can sit at one of the more formal dining tables. The villa has a full dining table on the patio for al fresco meals and an indoor dining area.
The master bedroom at the villa has a luxurious California king-sized bed and an en-suite bathroom. The bathroom offers the ultimate in relaxation with a separate shower and a bathtub with jets. The second bedroom has a king-size bed, while the third bedroom has a twin-size bed. These two bedrooms share a bathroom with a shower.
Casa Kash has everything you need for a worry-free and comfortable vacation. The entire home is powered by solar power and a generator. Each room in the house has a satellite TV and access to Wi-Fi. The villa also has a large music collection, a CD player, and a DVD player. The entire villa is cooled by air-conditioning and ceiling fans. Guests also have access to concierge and maid services during their stay.
If you want to explore more of what Mexico has to offer, the villa is nearby plenty of options. Adventurous travelers can try deep sea fishing, mountain biking, scuba diving, snorkeling, and wind surfing. Guests looking for something more relaxing can go on a whale watching tour or walk along the beach.
Book your dream vacation in Mexico at one of the most beautiful destinations you could imagine. Casa Kash awaits.


text:
RedShift Radio plans Nantwich events to celebrate FM broadcast
in Business / Community Events / Human Interest / Latest — November 27, 2012
RedShift Radio will turn off its broadcast on 87.7FM across South Cheshire at midnight on Sunday December 2.
The not-for-profit Community Radio station brings its latest 28-day broadcast to a close.
And staff and volunteers are marking the end with two events planned to celebrate a successful on air period.
On Thursday November 29, the RedShift Hub Networking Day takes place at Nantwich Town FC.
Local businesses, schools, community groups and charities are invited to the event to share best practice, forge relationships and celebrate successes.
The event is free if booked in advance and £10 on the door. Bring this article along you will get a fee entry on the door.
Then on Saturday December 1, the team will be enjoying the Christmas Lights switch on hosted by Blitz Fireworks.
Presenters, sponsors and listeners are invited for an End of FM night out visiting The Boot and Shoe, Residence and The Cheshire Cat.
Liz Southall, co-founder of RedShift Radio, said: "The feedback during this FM broadcast has been immense.
"We can't thank our sponsors and strategic partners enough for chipping in and supporting our dreams to bring Crewe and Nantwich its very own Community Radio station.
"We hope to be awarded a full-time licence in 2013 so please keep supporting us and we will do our very best to support you in return."
To find out more about RedShift Radio call 01270 262262.
Tags: Blitz Fireworks, FM, hub, Lights switch on, Liz Southall, Nantwich Town, Redshift Radio
Captcha * Time limit is exhausted. Please reload CAPTCHA. eight + three =
Add a job vacancy


Oh, this will be interesting. Historian of science Michael Keas will be talking with Dennis Prager about Keas's new book book, Unbelievable: 7 Myths About the History and Future of Science and Religion. Listen in at 11 AM Pacific time, aka 1 PM Central.
Isn't it interesting that some thoughtful laymen are able to interact with the relevant scientific ideas here, challenging media myths — as Prager does — while others, who should know better, simply plug their ears and refuse to think about it.
Editor's note: An earlier version of this post reflected the editor's misunderstanding of the Prager Show's programming schedule for the day.


text:
\section{Introduction}

Complex networks have gained attention the past decade~\cite{boccaletti_complex_2006}.
Especially with the rise of social media, social networks of unprecedented size became available, which contributed to the establishment of the computational social sciences~\cite{watts_twenty-first_2007,lazer_computational_2009}.
But networks are also common in disciplines such as biology~\cite{guimera_origin_2010} and neurology~\cite{betzel_multi-scale_2013}.
Many of these networks share various common characteristics.
They often have skewed degree distributions~\cite{barabasi_scale-free_2009}, show a high clustering and a low average path length~\cite{watts_collective_1998}.
Nodes often cluster together in dense groups, usually called communities.
Nodes in a community often share other characteristics: metabolites show related functions~\cite{ravasz_hierarchical_2002} and people have a similar background~\cite{traud_social_2012}.
Revealing the community structure can thus help to understand the network~\cite{fortunato_community_2010}.

Modularity~\cite{newman_finding_2004} remains one of the most popular measures in community detection, even though it is flawed.
There have been many algorithms suggested for optimizing modularity.
The original algorithm~\cite{newman_finding_2004} created a full dendrogram and used modularity to decide on a cutting point.
It was quite slow, running in $\O(n^2 m )$, where $n$ is the number of nodes and $m$ the number of links.
Many algorithms were quickly introduced to optimize modularity, such as extremal optimization~\cite{duch_community_2005}, simulated annealing~\cite{reichardt_statistical_2006,guimera_functional_2005}, spectral methods~\cite{newman_finding_2006}, greedy methods~\cite{clauset_finding_2004}, and many other methods~\cite{fortunato_community_2010}.
One of the fastest and most effective algorithms is the Louvain algorithm~\cite{blondel_fast_2008}, believed to be running in $\O(m)$.
It has been shown to perform very well in comparative benchmark tests~\cite{lancichinetti_community_2009}.
The algorithm is largely independent of the objective function to optimize, and as such has been used for different methods~\cite{traag_narrow_2011,rosvall_mapping_2010,rosvall_multilevel_2011,ronhovde_local_2010,evans_line_2009,lancichinetti_finding_2011}

We first briefly describe the algorithm, and introduce the terminology.
We then describe our simple improvement, which we call the random neighbor Louvain, and argue why we expect it to function well.
We derive estimates of the runtime complexity, and obtain $\O(m)$ for the original Louvain algorithm, in line with earlier results, and $\O(n \log \langle k \rangle)$ for our improvement, where $\langle k \rangle$ is the average degree.
This makes it one of the fastest algorithms for community detection to optimize an objective function.
Whereas the original algorithm runs in linear time with respect to the number of edges, the random neighbor algorithm is nearly linear with respect to the number of nodes.
Finally, we show on benchmark tests and some real networks that this minor adjustment indeed leads to reductions in running time, without losing much quality.
These gains are especially visible for modularity, but less clear for other measures such as significance and surprise.

\section{Louvain algorithm}

Community detection tries to find a ``good'' partition for a certain graph.
In other words, the input is some graph $G=(V,E)$ with $n=|V|$ nodes and $m=|E|$ edges.
Each node has $k_i$ neighbors, which is called the degree, which on average is $\langle k \rangle = \frac{2m}{n}$.
The output is some partition $\mathcal{V} = \{V_1, V_2, \ldots, V_r\}$, where each $V_c \subseteq V$ is a set of nodes we call a community.
We work with non-overlapping nodes, such that $V_c \cap V_d = \emptyset$ for all $c \neq d$ and all nodes will have to be in a community, so that $\bigcup V_c= V$.
Alternatively, we denote by $\sigma_i$ the community of node $i$, such that $\sigma_i = c$ if (and only if) $i \in V_c$.
Both $\sigma$ and $\mathcal{V}$ may be used interchangeably to refer to the partition. If the distinction is essential, we will explicitly state this.

The Louvain algorithm is suited for optimizing a single objective function that specifies some quality of a partition.
We denote such an objective function with $\mathcal{H}$, which should be maximized.
We use $\mathcal{H}(\sigma)$ and $\mathcal{H}(\mathcal{V})$ to mean the same thing.
There are various choices for such an objective function, such as modularity~\cite{newman_finding_2004}, Potts models~\cite{reichardt_statistical_2006,ronhovde_local_2010,traag_narrow_2011}, significance~\cite{traag_significant_2013}, surprise~\cite{traag_detecting_2015}, infomap~\cite{rosvall_multilevel_2011} and many more.
We will not specify any of the objective functions here, nor shall we discuss their (dis)advantages, as we focus on the Louvain algorithm as a general optimization scheme.

Briefly, the Louvain algorithm works as follows.
The algorithm initially starts out with a partition where each node is in its own community (i.e. $\sigma_i = i$), which is the initial partition.
So, initially, there are as many communities as there are nodes.
The algorithm moves around nodes from one community to another, to try to improve $\mathcal{H}(\sigma)$.
We denote by $\Delta \mathcal{H}(\sigma_i \mapsto c)$ the difference in moving node $i$ to another community $c$.
In particular, $\Delta \mathcal{H}(\sigma_i \mapsto c) = \mathcal{H}(\sigma') - \mathcal{H}(\sigma)$ where $\sigma'_j = \sigma_j$ for all $j \neq i$ and $\sigma'_i = c$, implying that if $\Delta \mathcal{H}(\sigma_i \mapsto c) > 0$, the objective function $\mathcal{H}$ is improved.
At some point, the algorithm can no longer improve $\mathcal{H}$ by moving around individual nodes, at which point it aggregates the graph, and reiterates on the aggregated graph.
We repeat this procedure as long as we can improve $\mathcal{H}(\sigma)$.
The outline of the algorithm is displayed in Algorithm~\ref{algo:louvain}.

\begin{algorithm}[t]
  \begin{algorithmic}
    \Function{Louvain}{Graph $G$}
      \State $\sigma_i \gets i$. \Comment{Initial partition}
      \State $\sigma' \gets$ \Call{MoveNodes}{$G$} \Comment{Initial move nodes}
      \While{$\mathcal{H}(\sigma') > \mathcal{H}(\sigma)$}
        \State $\sigma \gets \sigma'$
        \State $G \gets$ \Call{Aggregate}{$G, \sigma$}
        \State $\Sigma \gets $ \Call{MoveNodes}{$G$} \Comment{Move nodes}
        \State $\sigma'_i \gets \Sigma_{\sigma'_i}$ for all $i$ \Comment{Correct $\sigma'$ according to $\Sigma$}
      \EndWhile
      \State \Return $\sigma'$
    \EndFunction
    \item[]
    \Function{MoveNodes}{Graph $G$}
      \State $\sigma_i \gets i$ for $i=1,\ldots,|V(G)|$. \Comment{Initial partition}
      \State $q \gets -\infty$
      \While{$\mathcal{H}(\sigma) > q$}
        \State $q = \mathcal{H}(\sigma)$
        \For{random $v \in V(G)$}
          \State $c \gets $ \Call{SelectCommunity}{$v$}
          \If{$\Delta \mathcal{H}(\sigma_v \mapsto c) > 0$}
            \State $\sigma_v \gets c$.
          \EndIf
        \EndFor
      \EndWhile
    \EndFunction
    \item[]
    \Function{Aggregate}{Graph $G$, Partition $\sigma$}
      \State $A \gets$ \Call{Adjacency}{$G$}
      \State $A'_{cd} \gets \sum_{ij} A_{ij} \delta(\sigma_i,c)\delta(\sigma_j,d)$
      \State \Return $A'$
    \EndFunction
  \end{algorithmic}
  \caption{Louvain method.
  The algorithm loops over all nodes and moves nodes to alternative communities.
  When no more improvement can be made, it aggregates the graph and reiterates the procedure.
  }
  \label{algo:louvain}
\end{algorithm}

\begin{algorithm}[t]
  \begin{algorithmic}
    \item[]Select best neighbor community
    \Function{SelectCommunity}{Node $v$}
      \State $\delta \gets -\infty$.
      \State $c \gets \sigma_v$.
      \State $C \gets \{\sigma_u \mid (uv) \in E(G)\}$ \Comment{Neighbor communities.}
      \For{Community $c' \in C$}
        \If{$\Delta\mathcal{H}(\sigma_v \mapsto c') > \delta$}
          \State $\delta \gets \Delta\mathcal{H}(\sigma_v \mapsto c')$
          \State $c \gets c'$
        \EndIf
      \EndFor
      \State \Return $c$
    \EndFunction
    \item[]
    \item[]Select random neighbor community
    \Function{SelectCommunity}{Node $v$}
      \State \Return random $\sigma \in \{\sigma_u \mid (uv) \in E(G)\}$.
    \EndFunction
  \end{algorithmic}
  \caption{Select the best or a random neighbor community.}
  \label{algo:selectcommunity}
\end{algorithm}

There are two key procedures: \textsc{MoveNodes} and \textsc{Aggregate}.
The \textsc{MoveNodes} procedure displayed in Algorithm~\ref{algo:louvain} loops over all nodes (in random order), and considers moving them to an alternative community.
This procedure relies on \textsc{SelectCommunity} to select a (possibly) better community $c$.
Only if the improvement $\Delta \mathcal{H}(\sigma_v \mapsto c) > 0$, we will actually move the node to community $c$.
The \textsc{Aggregate} procedure may depend on the exact quality function $\mathcal{H}$ used.
In particular, the aggregate graph $G'$ should be constructed according to $\sigma$, such that $\mathcal{H}(G', \sigma') = \mathcal{H}(G, \sigma)$, where $\sigma'_i = i$ is the initial partition.
That is, the quality of the initial partition $\sigma'$ of the aggregated graph $G'$ should be equal to the quality of the partition $\sigma$ of the original graph $G$.
In Algorithm~\ref{algo:louvain} a version is displayed which is suited for modularity.
Other methods may require additional variables to be used when aggregating the graph (e.g.~\cite{traag_narrow_2011}).

The only procedure that remains to be specified is \textsc{SelectCommunity}.
In the original Louvain algorithm, this procedure commonly considers all possible neighboring communities, and then greedily selects the best community.
It is summarized in Algorithm~\ref{algo:selectcommunity}.

We created a new flexible and fast implementation of the Louvain algorithm in \texttt{C++} for use in \texttt{python} using \texttt{igraph}.
The implementation of the algorithm itself is quite detached from the objective function to optimize.
In particular, all that is required to implement a new objective function is the difference when moving a node $\Delta \mathcal{H}$ and the quality function $\mathcal{H}$ itself (although the latter is not strictly necessary).
This implementation is available open source from~\texttt{GitHub}\footnote{\url{https://github.com/vtraag/louvain-igraph}} and~\texttt{PyPi}\footnote{\url{https://pypi.python.org/pypi/louvain}}.

\section{Improvement}

\begin{figure*}[t]
  \begin{center}
    \includegraphics{clique}
  \end{center}
  \caption{\textbf{Clique.}
    The original Louvain algorithm considers all communities, which leads to $E(t) = \O(n_c^2)$ operations for putting all $n_c$ nodes of a clique in a single community.
    The improvement considers only random neighbors, which takes only $E(t) = \O(n_c \log n_c)$ operations to identify the whole clique as a community.
    In (a) we show the number of operations in a simulation, with the markers indicating the simulated number of operations, and the solid lines the analytically derived estimates.
    In (b)--(e) we show the actual time used when optimizing the indicated quality functions for a clique for the different objective functions.
    The solid lines in (b)--(e) denote best fits to $n_c^2$ and $n_c \log n_c$ in log-space.
  }
  \label{fig:clique}
\end{figure*}

Not surprisingly, the Louvain algorithm generally spends most of its time contemplating alternative communities.
While profiling our implementation, we found that it spends roughly $95\%$ of the time calculating the difference $\Delta \mathcal{H}(\sigma_v \mapsto c)$ in Algorithm~\ref{algo:selectcommunity}.
Much of this time is spent moving around nodes for the first time.
With an initial partition where each node is in its own community, almost any neighboring community would be an improvement.
Moreover, when the algorithm has progressed a bit, many neighbors likely belong to the same community.
We therefore suggest that instead of considering all neighboring communities, we simply select a random neighbor, and consider that community (as stated in Algorithm~\ref{algo:selectcommunity}), which we call the random neighbor Louvain.
Notice that the selection of a random neighbor makes the greedy Louvain algorithm less greedy and thus more explorative.
Indeed, when also accepting moves with some probability depending on the improvement (possibly also accepting degrading moves), the algorithm comes close to resemble simulated annealing~\cite{reichardt_statistical_2006,guimera_functional_2005}.
However, simulated annealing is rather slow for community detection~\cite{lancichinetti_community_2009}, so we don't explore that direction further, since we are interested in speeding up the algorithm.

There are several advantages to the selection of a random neighbor.
First of all, it is likely to choose a relatively ``good'' community.
In general, a node should be in a community to which relatively many of its neighbors belong as well (although this of course depends on the exact quality function).
By selecting a community from among its neighbors, there is a good chance that a relatively good community is picked.
In particular, if node $i$ has $k_i(c)$ neighbors in community $c$, the probability that community $c$ will be considered for moving is $k_i(c)/k_i$.
The probability for selecting a community is thus proportional to the number of neighbors in that community.
Bad communities (with relatively few neighbors) are less frequently sampled, so that the algorithm focuses more on the promising communities (those with relatively many neighbors).

Moreover, when considering the initial partition of each node in its own community, almost any move would improve the quality function $\mathcal{H}$.
The difference between alternative communities in this early stage is likely to be marginal.
Any move that puts two nodes in the same community is probably better than a node in its own community.
Such moves quickly reduce the number of communities from roughly $n$ to $n/2$.
But instead of considering every neighboring community as in the original Louvain algorithm, which takes roughly $\O(\langle k \rangle)$, our random neighbor Louvain algorithm only considers a single random neighbor, which takes constant time $\O(1)$.
So, for the first few iterations, Louvain runs in $\O(n \langle k \rangle) = \O(m)$, whereas selecting a random neighbor runs in $\O(n)$.

\begin{figure}[t]
  \begin{center}
    \includegraphics{performance_ratio}
  \end{center}
  \caption{\textbf{Network size.}
    We here show the ratio of the time and of the quality (i.e. $\mathcal{H}$) of the uncovered partitions by the original Louvain algorithm and the random neighbor Louvain.
    The random neighbor Louvain algorithm is $2$--$3$ times faster than the original Louvain algorithm and at some points event faster for clear communities in (a) when using $\mu = 0.1$.
    However, for less clear communities at $\mu = 0.8$ as displayed in (b), the optimization of significance and surprise is not faster by using the random neighbor Louvain.
    The random neighbor Louvain uncovers almost the same quality as the original version for a large part, as shown in (c) and (d).
    However, especially for surprise, the quality is adversely affected by the random neighbor Louvain for $\mu=0.1$, shown in (c).
    The results are based on benchmark graph with communities of size $n_c = 1\,000$ and an average degree of $\langle k \rangle = 15$.
  }
  \label{fig:performance}
\end{figure}

\begin{figure}[t]
  \begin{center}
    \includegraphics{performance_comm_size}
  \end{center}
  \caption{\textbf{Effect of community size.}
    Results in (a) show that the speedup ratio increases with the community size for $\mu = 0.1$.
    Surprise and significance find smaller substructures within large communities as seen in (c).
    This is also when the improvement starts to deteriorate.
    The results for large communities in (a) and (c) are very similar to the situation when $\mu = 0.8$ in (b) and (d), which resembles a random graph more closely.
    The speedup ratio in (b) corresponds to this: the speedup is rather large for modularity, while it is much lower for surprise and significance.
    In (e) and (f) we show that heterogeneity in the community sizes nearly do not impact the speedup ratio.
    In that case we generate LFR benchmark graphs with smallest community size $n_c = 10$ and the maximum community size varies from $2$ to $10$ times as large.
    We use $n = 10^5$ and $\langle k \rangle = 10$ for both benchmarks.
  }
  \label{fig:performance_comm_size}
\end{figure}

Notice there is a big difference between (1) selecting a random neighbor and then its community and (2) selecting a random community from among the neighboring communities.
The first method selects a community proportional to the number of neighbors that are in that community, while the second method selects a community uniformly from the set of neighboring communities.
Consider for example a node that is connected to two communities, and has $k_i - 1$ neighbors in the first community and only $1$ in the other community.
When selecting a community of a random neighbor, the probability the good community is considered is $1 - \frac{1}{k_i}$, while the probability is only $\frac{1}{2}$ when selecting a random community.

Secondly, random selection of a neighbor increases the likelihood of quick convergence.
The probability that node $i$ is selected as a random neighbor is roughly $k_i/2m$, resembling preferential attachment~\cite{barabasi_emergence_1999} in a certain sense.
Hubs are thus more likely to be chosen as a candidate community.
Since, hubs connect many vertices, there is a considerable probability that two nodes consider the same hub.
If these two (or more) nodes (and the hub) should in fact belong to the same community, chances are high both nodes and the hub quickly end up in the same community.

As an illustration of this advantage, consider a hubs-and-spokes structure, with one central hub and only neighboring spokes that are connected to each other (and always to the hub).
So, any spoke node $i$ is connected to nodes $i - 1$ and $i + 1$ and to the central hub, node $n$.
Consider for simplicity that the nodes are considered in order and that every move will be advantageous.
The probability that the first node will move to community $n$ is $p_1 = \frac{1}{3}$.
For the second node, he will move to community $n$ if he chooses node $n$ immediately (which happens with probability $\frac{1}{3}$), or if he chooses node $1$, and node $1$ moved to community $n$, so that $p_2 = \frac{1}{3} + p_1\frac{1}{3}$.
Similarly, for the other nodes $p_i = \frac{1}{3} + p_{i-1} \frac{1}{3} = \sum_{j=1}^i \left(\frac{1}{3}\right)^j$ which goes to $\frac{1}{2}$ for $n \to \infty$.
This is higher than when just considering a random neighbor community.
In that case, the probability the first node will move to community $n$ is still $\frac{1}{3}$.
But for the second node, if node $1$ moved to community $n$, only two communities are left: $n$ and $3$.
In that case, community $n$ is chosen with probability $\frac{1}{2}$.
If node $1$ didn't move to community $n$, then node $2$ will move to community $n$ with probability $\frac{1}{3}$.
In general, node $i$ moves to community $n$ with probability $p_i = p_{i-1} \frac{1}{2} + (1 - p_{i-1}) \frac{1}{3} = p_{i-1}\frac{1}{6} + \frac{1}{3}$.
Working out the recurrence, we obtain that $p_i = \frac{1}{3} \sum_{j=0}^{i-1} \left(\frac{1}{6}\right)^j$, which tends to $\frac{2}{5}$.
Selecting a community of a random neighbor thus works better than selecting a random community from among the neighbors.
Selecting a community of a random node is even worse.
In that case, the probability is $p_i = \frac{1}{n}(1 + \frac{1}{n})^{i-1}$ which tends to $0$ for $n \to \infty$.
In short, selecting the community of a random neighbor is likely to choose a new community that will also be chosen by other nodes.

In summary, selecting a random neighbor should work well because of two reasons.
First, it tends to focus on communities that are ``good''.
Secondly, it should help in convergence because of higher likelihood of selecting hubs.
In particular, the evaluation of $\textsc{SelectCommunity}$ in the random neighbor Louvain takes a constant time $\O(1)$ whereas evaluating all communities takes about $O(\langle k \rangle)$.
However, one essential question is whether $\textsc{SelectCommunity}$ will not be too frequently evaluated in the random neighbor Louvain to counter this benefit.

\begin{figure*}[t]
  \begin{center}
    \includegraphics{real_networks}
  \end{center}
  \caption{\textbf{Empirical network results.}
    The random neighbor Louvain usually speeds up the optimization of the objective function for most empirical networks.
    For the hyperlink network from Google it does not work for any method, while the adolescent health dataset poses problems for optimizing CM modularity.
    The quality remains relatively similar compared to the original, especially for modularity as shown in (b).
    For significance and surprise the difference are more pronounced.
  }
  \label{fig:real_networks}
\end{figure*}

\begin{table}
  \sisetup{
    table-number-alignment=center,
    group-minimum-digits=3}
  \begin{tabular}{
      l
      S[table-format=7.1]
      S[table-format=8.1]
      S[table-format=4.2]}
    \toprule
    Network               & {$n$}    & {$m$}     & {$\langle k \rangle$} \\
    \midrule
    Health                & 2539   & 12969   & 10.22 \\
    Brightkite            & 58228  & 214078  & 7.35 \\
    Facebook              & 63731  & 817035  & 25.64 \\
    Author Collaboration  & 22908  & 2673133 & 233.38 \\
    Web (Google)          & 875713 & 5105039 & 11.66 \\
    Web (Berk./Stan.)     & 685230 & 7600595 & 22.18 \\
    \bottomrule
  \end{tabular}
  \caption{\textbf{Empirical network overview.}}
  \label{tab:real_networks}
\end{table}

To study this question, let us consider a ring of $r$ cliques of $n_c$ nodes each.
The cliques (which are complete subgraphs containing $\binom{n_c}{2}$ links) are connected to another clique only by a single link in a circular fashion (i.e. clique $i$ is connected only to clique $i-1$ and $i+1$).
Most methods tend to find the cliques (or sets of multiple cliques due to the resolution limit~\cite{fortunato_resolution_2007,traag_narrow_2011}).
Indeed, it is one of the best possible community structures: we cannot add any more internal edges, nor can we delete any external edges without disconnecting the graph.
However, for the runtime complexity, the external edges will play only a marginal role.
We may therefore simply assume we will work with $r$ disconnected cliques of size $n_c$.
Although the actual runtime will deviate from this, it should provide a reasonable runtime for relatively ``clear'' communities, and as such provide a lower bound for more difficult communities.

The core question is thus how quickly both the original and the random neighbor Louvain run on cliques.
We will assume the clique should become a single community, which is likely to be the case for most methods.
Additionally, we assume $\Delta \mathcal{H} > 0$ only if a node is moved to a larger community, which is likely to be the case for most methods as nodes in a clique have more links to larger communities.
The complexity of the original Louvain implementation is simple to evaluate in this case.
The first node will be moved to one of its neighbors, an operation that costs $n_c$ evaluations.
The second node has only $n_c-1$ evaluations to make, since the community of the first node disappeared.
If we continue in this fashion, the total number of evaluations $t$ is then
$\sum_{i = 1}^{n_c} n_c - i + 1 = \frac{n_c(n_c + 1)}{2} = \O(n_c^2)$.
The analysis of the expected runtime of the random neighbor Louvain is more difficult (see Appendix~\ref{sec:clique} for more details).
However, we can provide a lower bound that serves as a rough estimate.
Let us again denote by $t$ the total number of operations before the whole clique is identified as a single community.
We divide this in different phases of the algorithm, where each phase $i$ runs from the time where there are $n_c - i + 1$ communities, until there are $n_c - i$ communities.
In phase $1$ we thus start out with $n_c$ communities, and in the next phase there are only $n_c - 1$ communities.
If we denote by $t_i$ the number of operation in phase $i$, then by linearity $E(t) = E(\sum_t t_i) = \sum_t E(t_i)$.
Notice that we will only leave phase $i$ whenever a community of size $1$ disappears.
The probability that a community of $1$ disappears is $\frac{n_c - 1}{n_c}$, since it will join any other community (except itself).
There are at most $i$ communities of size $1$ in phase $i$, so that the probability a community of size $1$ is selected is bounded above by $\frac{n_c - i + 1}{n_c}$.
In fact, such a state is also relatively likely, as the community size distribution tends to become more skewed than a more uniform distribution due to the preferential attachment on the basis of the community sizes.
The number of expected operations in phase $i$ is then bounded below by $\frac{n_c}{n_c - i + 1}$, and the expected operations in total is bounded below by
\begin{align}
  E(t) &\geq n_c \sum_{i = 1}^{n_c} \frac{1}{n_c - i + 1} \\
       &= n_c \sum_{i = 1}^{n_c} \frac{1}{i} = \O(n_c \log n_c)
\end{align}
However, this lower bound gives in fact a very accurate estimate of the expected running time, as seen in Fig.~\ref{fig:clique}.
Whereas the original Louvain algorithm runs in $\O(n_c^2)$, the random neighbor version only uses $\O(n_c \log n_c)$ to put all nodes of a clique in a single community.
We used an explicit simulation of this process to validate our theoretical analysis.
Running the actual algorithms on cliques yields similar results (Fig.~\ref{fig:clique}).

To get a rough idea of the overall running time, let us translate these results back to the ring of cliques.
In that case, we have $r$ cliques of $n_c$ nodes.
The runtime for the original Louvain method is $\O(n_c^2)$ for each clique, so that the total runtime is about $\O(rn_c^2)$.
One factor of $n_c^2$ comes from running over $n_c$ nodes, while the other factor comes from running over $\langle k \rangle \approx n_c$ neighbors.
Since $rn_c = n$, and $n \langle k \rangle = m$, we thus obtain an overall running time of Louvain of about $\O(rn_c^2) = \O(n \langle k \rangle) = \O(m)$, similar to earlier estimates~\cite{blondel_fast_2008,fortunato_community_2010}.
Following the same idea, we obtain an estimate of roughly $\O(n \log \langle k \rangle)$ for the runtime of the random neighbor Louvain algorithm.
So, whereas the original algorithm runs in roughly linear time with respect to the number of edges, the random neighbor algorithm runs in nearly linear time with respect to the number of nodes.
Empirical networks are usually rather sparse, so that the difference between $\langle k \rangle$ and $\log \langle k \rangle$ is usually not that large.
Still, it is quite surprising to find such an improvement for such a minor adjustment.

\section{Experimental Results}

We use benchmark networks and real networks to show that the random neighbor improvement also reduces the runtime in practice.
These benchmark networks contain a planted partition, which we then try to uncover using both the original and the random neighbor Louvain algorithm.
An essential role is played by the probability that a link falls outside of the planted community $\mu$.
For low $\mu$ it is thus quite easy to identify communities, while for high $\mu$ it becomes increasingly more difficult.
We report results using the speedup ratio calculated as $R_\text{speed} = \frac{T_\text{orig}}{T_\text{rn}}$, where $T_\text{rn}$ is the runtime of the random neighbor variant and $T_\text{orig}$ the runtime of the original Louvain method.
The runtime is calculated in used CPU time, not elapsed real time.
We also report the quality ratio, which is calculated as $R_\text{qual} = \frac{\mathcal{H}_\text{rn}}{\mathcal{H}_\text{orig}}$ where $\mathcal{H}_\text{rn}$ refers to the quality of the partition uncovered using the random neighbor improvement and $\mathcal{H}_\text{rn}$ to the quality using the original algorithm.
In this way, if $R_\text{speed} > 1$ the random neighbor improves upon the original and similarly $R_\text{qual} > 1$ if the random neighbor is an improvement.
Throughout all plots, error bars indicate standard errors of the mean.
The Louvain algorithm can be applied to many different methods, and we here show results for (1) modularity using a configuration null model~\cite{newman_finding_2004} (CM modularity); (2) modularity using an Erdös-Rényi null model~\cite{reichardt_statistical_2006} (ER modularity); (3) significance~\cite{traag_significant_2013}; and (4) surprise~\cite{aldecoa_surprise_2013}.

We first test the impact of the network size as a whole.
We construct benchmark networks ranging from $n=10^4$ to $n=10^7$ nodes, with equally sized communities of $1\,000$ nodes, with a Poissonian degree distribution.
The speed and quality of the original Louvain algorithm and the random neighbor Louvain algorithm for all four methods is reported in Fig.~\ref{fig:performance}.
For all these methods, the random neighbor Louvain speeds up the algorithm roughly $2$--$3$ times.
At the same time, the quality of the partitions found remains nearly the same.

However, surprise and significance seem to perform worse than modularity.
The speedup is rather limited for higher $\mu$ (or becomes even slower than the original), in which case communities are more difficult to detect.
Surprise and significance tend to find relatively smaller communities than modularity~\cite{traag_detecting_2015}, suggesting that the performance gain of using the random neighbor Louvain is especially pertinent when making a relatively coarse partition.
Revisiting the argument of the ring of cliques makes clear that the runtime does not necessarily scale with the degree, but rather, with the clique size, which we may approximate as the community size.
Indeed, the runtime for merging all the $n_c$ nodes in a single community together, should take $\O(n_c^2)$ originally and $\O(n_c \log n_c)$ in the random neighbor Louvain, as previously argued.
However, if there are no clear communities present in the network, the running time will not depend on the degree as much, but rather on the sizes of the communities found.
Hence, the running time should then roughly scale as $\O(n n_c)$ for the original implementation and as $\O(n \log n_c)$ for the random neighbor Louvain.
Since surprise and significance find smaller communities than modularity (unless the communities are clearly defined), the speedup will be rather limited, whereas it will be larger generally for modularity.

We test this by generating benchmark networks with $n=10^5$ nodes, $\langle k \rangle = 10$ and varying community sizes from $10$ to $20\,000$.
Results are displayed in Fig.~\ref{fig:performance_comm_size}.
Indeed, for larger communities, surprise and significance have difficulties discerning such large communities, and it tends to find substructure within these large communities.
Notice that modularity also merges smaller communities (thereby uncovering artificially larger communities), part of the problem of the resolution limit~\cite{fortunato_resolution_2007}.
This is exactly also the point at which the speedup for surprise and significance goes down.
Moreover, when the community structure is not clear, there is no effect of community size at all.
Indeed, in that case, surprise tends to find small communities, and modularity tends to find large communities.
The speedup follows this pattern: surprise and significance show very small speedups, while modularity shows larger speedups.

However, modularity also prefers rather balanced communities~\cite{Lancichinetti2011}, so that perhaps modularity performs rather well because of the similarity in community sizes.
We therefore also consider the impact of more heterogeneity by constructing LFR benchmark networks~\cite{lancichinetti_benchmark_2008}.
In these benchmark graphs the community sizes and the degree both follow powerlaw distributions with exponents $1$ and $2$ respectively.
The maximum degree was set at $2.5 \langle k \rangle$, while the minimum community size was set at $\langle k \rangle$ for $\langle k \rangle = 10$.
We varied the maximum community size from $2 \langle k \rangle$ to $10 \langle k \rangle$.
These results are displayed in Fig.~\ref{fig:performance_comm_size}, from which we can see that the heterogeneity in community sizes does not affect the results.

We also tested the random neighbor Louvain on six empirical networks of varying sizes.
These networks were retrieved from the Koblenz Network Collection\footnote{\url{http://konect.uni-koblenz.de/}}.
We include
(1) the \href{http://konect.uni-koblenz.de/networks/moreno_health}{adolescent health dataset}, a school network collected for health research~\cite{Moody2001};
(2) \href{http://konect.uni-koblenz.de/networks/loc-brightkite_edges}{Brightkite}, a social network site~\cite{Cho2011};
(3) a \href{http://konect.uni-koblenz.de/networks/facebook-wosn-links}{Facebook} friendship network~\cite{Viswanath2009};
(4) an \href{http://konect.uni-koblenz.de/networks/ca-cit-HepPh}{author collaboration network} from the High Energy topic on arXiv~\cite{JureLeskovecJonKleinberg2006};
(5) a \href{http://konect.uni-koblenz.de/networks/web-Google}{web hyperlink network} released by Google~\cite{Leskovec2008}; and
(6) the \href{http://konect.uni-koblenz.de/networks/web-BerkStan}{complete web hyperlink network} from the universities of Berkeley and Stanford~\cite{Leskovec2008}.
An overview of the size of the networks is provided in Table~\ref{tab:real_networks}, and the results are displayed in Fig.~\ref{fig:real_networks}.
The random neighbor Louvain is clearly faster for most networks and methods, reaching even speedup ratios of over 10 for the hyperlink web network from Berkeley and Stanford.
For the web network released by Google the improvement is not faster however.
The quality remains relatively similar for most networks, especially for modularity, whereas the quality differs more for surprise and significance.

\begin{figure}[t]
  \begin{center}
    \includegraphics{performance_weighted}
  \end{center}
  \caption{\textbf{Performance weighted neighbor sampling.}
    Instead of sampling a neighbor randomly, it is also possible to sample neighbors proportional to the weight.
    We here test the performance of the unweighted neighbor sampling in (a)--(b) and the weighted neighbor sampling in (c)--(d).
    We generate weighted LFR benchmark networks, where the strength of the nodes follows the degree $s_i = k_i^\beta$ with $\beta = 1.5$ with $\langle k \rangle = 10$ and $n=10^5$.
    The results for the unweighted neighbor sampling in (a) and (b) are very similar to the results for the weighted neighbor sampling in (c) and (d).
    Taking into account the weight hence does not improve the random neighbor sampling much.
  }
  \label{fig:performance_weighted}
\end{figure}

Notice that significance is not defined for weighted networks, such that significance is not run on those networks (health and author collaboration).
But weighted networks raise an interesting point: is it possible to make use of the weight to improve the speed even more?
A natural possibility is to sample neighbors proportional to the weight.
Neighbors in the same community are often connected with a higher weight, part of the famous strength of weak ties~\cite{Granovetter1973,Onnela2007a}.
Sampling proportional to the weight should thus increase the chances of drawing a ``good'' community.
However, this depends on the extent to which this correlation between weight and community holds.
The aggregated graph is weighted also, allowing the possibility of weighted sampling as well.
On the other hand, only little time is spent in the aggregated iterations, making the benefit relatively small.
Weighted sampling in constant time requires preprocessing, which takes an additional $\O(m)$ memory and $\O(m)$ time.
The question is thus whether these costs do not offset the possible benefits.

We use weighted benchmark networks~\cite{Lancichinetti2009} to test whether weighted sampling speeds up the algorithm even further.
These benchmark networks introduce an additional mixing parameter for the weight $\mu_w$.
Whereas the topological mixing parameter $\mu$ controls the probability of an edge outside of the community, the weight is distributed such that on average a proportion of about $\mu_w$ lies outside of the community.
The strength of the nodes follows the degree $s_i = k_i^\beta$ with $\beta = 1.5$ with $\langle k \rangle = 10$ and $n=10^5$.
The external weight $\mu_w s_i$ is spread over $\mu k_i$ external links, thereby leading to an average external weight of $\frac{\mu_w s_i}{\mu k_i} = \frac{\mu_w}{\mu} k_i^{\beta - 1}$.
If $\mu_w > \mu$ the external weight is higher than the internal weight, making it difficult to detect communities correctly.
Intuitively, we would thus expect to see an improvement in the random neighbor selection whenever $\mu_w < \mu$, as in that case, the weight correlates with the planted partition.
The results for both the unweighted and the weighted random neighbor sampling is displayed in Fig.~\ref{fig:performance_weighted}.
Although the weighted random neighbor sampling sometimes improves on the unweighted variant, overall the performance is comparable.
The results on the unweighted benchmark networks and the empirical networks are also very comparable (not shown).

\section{Conclusion}

Many networks seem to contain some community structure.
Finding such communities is important across many different disciplines.
One of the most used algorithms to optimize some quality function is the Louvain algorithm.
We here showed how a remarkably simple adjustment leads to a clear improvement in the runtime complexity.
We argue that the approximate runtime of the original Louvain algorithm should be roughly $\O(m)$, while the improvement reduces the runtime to $\O(n \log \langle k \rangle)$ in a clear community structure.
So, whereas the original algorithm is linear in the number of edges, the random neighbor algorithm is nearly linear in the number of nodes.

We have tested the random neighbor algorithm extensively.
The improvement is quite consistent across various settings and sizes.
The runtime complexity was reduced, speeding up the algorithm roughly $2$--$3$ times, especially when concentrating on the coarser partitions found by modularity.
Nonetheless, some methods, such as surprise and significance, are more sensitive to sampling a random neighbor.
This seems to be mostly due to the community size in the uncovered partition.
Whereas modularity prefers rather coarse partitions, both significance and surprise prefer more refined partitions, leading to much smaller communities.
More refined partitions offer fewer opportunities for improving the runtime, so that sampling a random neighbor provides little improvement.

The idea could also be applied in different settings.
For example, the label propagation method is also a very fast algorithm~\cite{raghavan_near_2007}, but it doesn't consider any objective function.
It simply puts a node in the most frequent neighboring community.
But instead of considering every neighbor, it can simply choose a random neighbor, similar to the improvement here.
We may thus expect a similar improvement in label propagation as for the Louvain algorithm.
Similar improvements may be considered in other algorithms.
The core of the idea is that a random neighbor is likely to be in a ``good'' community, which presumably also holds for other algorithms.

\begin{acknowledgments}
This research is funded by the Royal Netherlands Academy of Arts and Sciences (KNAW) through its eHumanities project~\footnote{\url{http://www.ehumanities.nl/computational-humanities/elite-network-shifts/}}.
\end{acknowledgments}

redpajama_set_name: RedPajamaArXiv


text:
package io.gatling.jms.action

import java.lang.{ Boolean => JBoolean }
import java.util.{ Collections => JCollections, LinkedHashMap => JLinkedHashMap, Map => JMap }
import javax.jms.Message

import scala.collection.mutable

import io.gatling.commons.stats.{ KO, OK, Status }
import io.gatling.commons.util.TimeHelper.nowMillis
import io.gatling.commons.validation.Failure
import io.gatling.core.action.Action
import io.gatling.core.akka.BaseActor
import io.gatling.core.check.Check
import io.gatling.core.config.GatlingConfiguration
import io.gatling.core.session.Session
import io.gatling.core.stats.StatsEngine
import io.gatling.core.stats.message.ResponseTimings
import io.gatling.jms._

import akka.actor.Props

/**
 * Advise actor a message was sent to JMS provider
 */
case class MessageSent(
  replyDestinationName: String,
  matchId:              String,
  sent:                 Long,
  checks:               List[JmsCheck],
  session:              Session,
  next:                 Action,
  title:                String
)

/**
 * Advise actor a response message was received from JMS provider
 */
case class MessageReceived(
  replyDestinationName: String,
  matchId:              String,
  received:             Long,
  message:              Message
)

/**
 * Advise actor that the blocking receive failed
 */
case object BlockingReceiveReturnedNull

object JmsRequestTrackerActor {
  def props(statsEngine: StatsEngine, configuration: GatlingConfiguration) = Props(new JmsRequestTrackerActor(statsEngine, configuration))
}

case class MessageKey(replyDestinationName: String, matchId: String)

/**
 * Bookkeeping actor to correlate request and response JMS messages
 * Once a message is correlated, it publishes to the Gatling core DataWriter
 */
class JmsRequestTrackerActor(statsEngine: StatsEngine, configuration: GatlingConfiguration) extends BaseActor {

  private val sentMessages = mutable.HashMap.empty[MessageKey, MessageSent]
  private val receivedMessages = mutable.HashMap.empty[MessageKey, MessageReceived]
  private val duplicateMessageProtectionEnabled = configuration.jms.acknowledgedMessagesBufferSize > 0
  private val acknowledgedMessagesHistory: JMap[MessageKey, JBoolean] =
    if (duplicateMessageProtectionEnabled)
      new JLinkedHashMap[MessageKey, JBoolean](configuration.jms.acknowledgedMessagesBufferSize, 0.75f, false)
    else
      JCollections.emptyMap()

  // Actor receive loop
  def receive = {

    // message was sent; add the timestamps to the map
    case messageSent @ MessageSent(queueName, correlationId, sent, checks, session, next, title) =>
      val messageKey = MessageKey(queueName, correlationId)
      receivedMessages.get(messageKey) match {
        case None =>
          // normal path
          sentMessages += messageKey -> messageSent

        case Some(MessageReceived(_, _, received, message)) =>
          // message was received out of order, lets just deal with it
          processMessage(session, sent, received, checks, message, next, title)
          receivedMessages -= messageKey
      }

    // message was received; publish to the datawriter and remove from the hashmap
    case messageReceived @ MessageReceived(queueName, correlationId, received, message) =>
      val messageKey = MessageKey(queueName, correlationId)
      sentMessages.get(messageKey) match {
        case Some(MessageSent(_, _, sent, checks, session, next, title)) =>
          processMessage(session, sent, received, checks, message, next, title)
          sentMessages -= messageKey
          if (duplicateMessageProtectionEnabled) {
            acknowledgedMessagesHistory.put(messageKey, JBoolean.TRUE)
          }

        case None =>
          if (!acknowledgedMessagesHistory.containsValue(messageKey)) {
            // failed to find message; early receive? or bad return correlation id?
            // let's add it to the received messages buffer just in case
            receivedMessages += messageKey -> messageReceived
          }
        // else, message was already acked and is a dup
      }

    case BlockingReceiveReturnedNull =>
      //Fail all the sent messages because we do not even have a correlation id
      sentMessages.foreach {
        case (messageKey, MessageSent(_, _, sent, checks, session, next, title)) =>
          executeNext(session, sent, nowMillis, KO, next, title, Some("Blocking received returned null"))
          sentMessages -= messageKey
      }
  }

  private def executeNext(
    session:  Session,
    sent:     Long,
    received: Long,
    status:   Status,
    next:     Action,
    title:    String,
    message:  Option[String] = None
  ) = {
    val timings = ResponseTimings(sent, received)
    statsEngine.logResponse(session, title, timings, status, None, message)
    next ! session.logGroupRequest(timings.responseTime, status).increaseDrift(nowMillis - received)
  }

  /**
   * Processes a matched message
   */
  private def processMessage(
    session:  Session,
    sent:     Long,
    received: Long,
    checks:   List[JmsCheck],
    message:  Message,
    next:     Action,
    title:    String
  ): Unit = {
    // run all the checks, advise the Gatling API that it is complete and move to next
    val (checkSaveUpdate, error) = Check.check(message, session, checks)
    val newSession = checkSaveUpdate(session)
    error match {
      case None                        => executeNext(newSession, sent, received, OK, next, title)
      case Some(Failure(errorMessage)) => executeNext(newSession.markAsFailed, sent, received, KO, next, title, Some(errorMessage))
    }
  }
}

redpajama_set_name: RedPajamaGithub


Should you be making funeralplans or funeral plans? There's a difference, and it's not just a matter of correct versus incorrect spelling. Funeral plans are made ahead of time. The planning may take weeks, months, or even years.
Funeral plans on the other hand, are made in a rush, during that period of grief and deep sorrow we experience between the time of death and the funeral. Times of grief and sorrow are stressful, and are not the easiest or best of times to make decisions. Sometimes decisions made in haste during those few days can lead to confusion or unnecessary expenses. If you are faced with a need to make funeral plans, it's usually best to turn things over to a professional funeral director, who is in a position to make decisions quickly and effectively.
Having made the distinction, let's turn our attention to funeral planning; doing the planning ahead of time. Funeral planning can focus on the wishes of the person who the funeral services will be held for, and the plans are in fact often made by that person. At other times the focus may be more on family and friends. While it may seem a little strange on the surface, there are many who would rather not see a funeral as simply being a time for sadness. An Irish wake is a good example of this. The purpose of a funeral services should be to honor and show respect for the departed, and one of remembering the good times as well as the bad.
Whatever your own wishes may be, it's never too early to do some advance planning and preparation. A good place to start is to consider taking out a funeral insurance policy. In doing so, you can have peace of mind, knowing that family members will not suddenly be faced with funeral expenses that may be beyond their financial means. Considerations include selecting a funeral home or a funeral director, determining whether or not a religious service is desired, and if so, what type of service. Also, whether burial or cremation is desired should be decided upon at some point, and cemetery arrangements may need to be made in advance as well. All of this can often be accomplished in a single package when applying for a funeral insurance policy. Funeral insurance need not be limited to monetary considerations only, and usually isn't. The plan can include all of the necessary wishes and provisions, which can easily be carried out once a funeral director is made aware of them.
Why not get started in your planning by clicking on our "Get a Quote? Then you will have the peace of mind that goes with knowing your family will not someday be faced with the burden of hastily making "funeral plans" and the stress that goes with it.
Isreal is passionate about finance, online marketing and travel and helping others increase their knowledge. My Insurance Guide was started over five years ago is one of the fist free insurance resources available online.


text:
<!DOCTYPE html>

    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

    <title>Which external storage device should you be using in 2016? - Yann Bertrand</title>

    <meta name="HandheldFriendly" content="True">
    <meta name="MobileOptimized" content="320">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

    <meta name="description" content="">

    <meta name="twitter:card" content="summary">
    <meta name="twitter:title" content="Which external storage device should you be using in 2016?">
    <meta name="twitter:description" content="">

    <meta property="og:type" content="article">
    <meta property="og:title" content="Which external storage device should you be using in 2016?">
    <meta property="og:description" content="">

    <link href="/favicon.ico" rel="shortcut icon" type="image/x-icon">
    <link href="/apple-touch-icon-precomposed.png" rel="apple-touch-icon">

    <link rel="stylesheet" type="text/css" href="//yannbertrand.github.io/themes/uno/assets/css/uno.css?v=1.0.0" />

    <link rel="canonical" href="https://yannbertrand.github.io/2016/01/20/Which-external-storage-device-should-you-be-using-in-2016.html" />

    <meta property="og:site_name" content="Yann Bertrand" />
    <meta property="og:type" content="article" />
    <meta property="og:title" content="Which external storage device should you be using in 2016?" />
    <meta property="og:description" content="Capacity You need less than 64GB Choose a USB key. You need more than 64GB Take a look at external SSDs. An external hard driver will do otherwise. Speed You do not care Choose USB 2.0. You need to..." />
    <meta property="og:url" content="https://yannbertrand.github.io/2016/01/20/Which-external-storage-device-should-you-be-using-in-2016.html" />
    <meta property="article:published_time" content="2016-01-19T23:00:00.000Z" />
    <meta property="article:modified_time" content="2016-01-20T21:59:22.226Z" />

    <meta name="twitter:card" content="summary" />
    <meta name="twitter:title" content="Which external storage device should you be using in 2016?" />
    <meta name="twitter:description" content="Capacity You need less than 64GB Choose a USB key. You need more than 64GB Take a look at external SSDs. An external hard driver will do otherwise. Speed You do not care Choose USB 2.0. You need to..." />
    <meta name="twitter:url" content="https://yannbertrand.github.io/2016/01/20/Which-external-storage-device-should-you-be-using-in-2016.html" />

    <meta name="generator" content="Ghost ?" />
    <link rel="alternate" type="application/rss+xml" title="Yann Bertrand" href="https://yannbertrand.github.io/rss" />
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/styles/default.min.css">

Yann Bertrand

Pokémon Master & Web Passionate

Blog

                      Twitter

                      Github

                      LinkedIn

                      Email

        <time datetime="20 Jan 2016" class="post-meta__date date">20 Jan 2016</time> •
         by Yann Bertrand

Which external storage device should you be using in 2016?

Capacity

You need less than 64GB

Choose a USB key.

You need more than 64GB

Take a look at external SSDs. An external hard driver will do otherwise.

Speed

You do not care

Choose USB 2.0.

You need to be quick

Choose USB 3.0.

You need to be reaaally quick

Choose USB 3.1.

Connectivity

You do not know

It should be fine with basic products. (USB type A connector)

You want to be up to date or need something special

Take a look at USB type C plugs. You may need to buy an adapter if you want to use it on other computers.

You got unlimited money

Go for a Thunderbolt 3 external SSD.

                © 2016. All rights reserved.
                Uno theme by Dale-Anthony
                Proudly published with Hubpress


Having grown up in Utah, Christmas means white, cold, and snow to me. And where I live now (still in Utah) the winters are extremely windy as well. So as much as I want to deck out my Christmas porch with amazing decor, I have to really take into consideration things that will stay put. I love checking out other Christmas porches from my blogger friends…it's so fun to see the little twists they put on the old classics of garland and sleds and whatnot. I have to admit, sometimes when I see Christmas decor in warmer places, it's hard for me to imagine. But I'm also a little jealous of the warm weather when it's freezing cold here! Check out these 25 beautiful farmhouse Christmas porches!
I just love all these farmhouse Christmas porches! I love the old rustic style, the simple style, and the more traditional style. It's making me inspired to go throw out those old hay bales and get my porch decked out!


text:
NHS anniversary
This month, we celebrate the 70th anniversary of the National Health Service.
It is a remarkable achievement, all the more so when you consider that Great Britain had come through a devastating world war, and the Labour Government had few resources to spare.
And yet, those Labour ministers decided that the people's health was the greatest priority,
and they created a radical socialist institution, unique in the world.
It would provide quality healthcare, free at the point of need, and available to all regardless of status or income.
It would be available to all of us, and paid for by all of us, through our taxes.
Its architect was the Labour Secretary of State Aneurin Bevan, and he called the new NHS 'the most civilised thing in the world.'
Over the next 70 years, the NHS has become the nation's favourite institution.
Its doctors and nurses are our national heroes.
And not just doctors and nurses, but cleaners, drivers, porters, cooks, radiographers, pharmacists, mental health workers, managers and everyone who works in our NHS.
They come from all over the world, and work to make Britain healthy and well.
Every single one of us has a story to tell about the NHS.
Many of us have had our lives saved by the wonderful staff of the NHS.
My story is that when I stood up to local drugs gangs, they tried to stop my campaign by shooting me.
I was shot and rushed to hospital, andsaved thanks to the skill and dedication of NHS staff.
So this July, let's all give a vote of thanks to the NHS.
But the NHS is under threat. It has been starved of cash over the past 8 years. Too
much of our money is going to private contractors.
As a society, we are getting older. There are more demands for social care.
We are facing a crisis in mental health services.
Our A&Es are stretched to breaking point.
The NHS winter crisis is becoming a year-round crisis.
That's why the next Labour Government will properly fund the NHS and put people before profits.
We will recruit the doctors, nurses and other staff we need.
Labour will ensure that everyone is treated within 18 weeks,
and get 1 million people off waiting lists.
We will enforce a 4-hour maximum wait in A&E.
We will introduce a new social care service,
and invest in new mental health services.
And we will introduce free car parking in the NHS for everyone – patients, families and staff.
Labour is the party of the NHS. We created it and we will always protect it.
I am always happy to hear your views about local services. Please do get in touch.


text:
CB&I, Chiyoda awarded $6 billion contract; Sempra to hold 50% ownership
03 19, 2014 by By Renita D. Young, NOLA.com | The Times Picayune
The $6 billion contract will include procurement, engineering and construction of natural gas liquefaction and export facilities that will be added to the existing LNC regasification facility. It's expected to create about 3,000 on-site jobs including several hundred jobs at CB&I's fabrication facilities in Louisiana. Additionally, officials expect several hundred engineering and project management jobs at its Baton Rouge office that will support design, fabrication and construction of the new facilities.
Netherlands-based energy infrastructure company Chicago Bridge & Iron Co. (CB&I) and Chiyoda International Corp., a Japan-based contractor that designs and constructs LNC plants, announced that they were contracted by Cameron LNC, LLC to construct the Cameron Liquefaction Project in Hackberry, La.
"The selection of CB&I and Chiyoda as contractors represents another significant milestone in the development of Cameron LNG liquefaction-export project," said Octavio M. Simoes, Sempra LNG's President. "The engineering, procurement and construction companies we've selected have the qualifications to build large liquefaction and energy infrastructure projects as well as a firm commitment to support our project's neighbors in southwest Louisiana." The $6 billion contract will include procurement, engineering and construction of natural gas liquefaction and export facilities that will be added to the existing LNC regasification facility. It's expected to create about 3,000 on-site jobs including several hundred jobs at CB&I's fabrication facilities in Louisiana. Additionally, officials expect several hundred engineering and project management jobs at its Baton Rouge office that will support design, fabrication and construction of the new facilities.
According to the company, the Cameron Liquefaction Project will be comprised of three liquefaction trains with a capacity of about 13.5 million tons per year of LNG. In February 2014, Cameron received conditional authorization from the U.S. Department of Energy (DOE) to export domestically produced LNG to countries that do not have a free trade agreement with the U.S., including those in Europe and Asia. San Diego-based Sempra Energy will have an indirect 50.2 percent ownership interest in Cameron and the related liquefaction project, however it will be subject to a final investment decision, the finalization of permits and securing financing. The remaining portion of the liquefaction project and Cameron will be owned by affiliates of Paris-based GDF SUEZ S.A. and the Japan-based Mitsubishi Corporation—through a related company that was jointly established with Nippon Yusen Kabushiki Kaisha and Mitsui & Co., Ltd., both based in Japan. Each company will hold 16.6 percent stakes.
CB&I President and Chief Executive Officer Philip K. Asherman said, "This new award builds on our strong presence along the U.S. Gulf Coast, including Louisiana. This project will utilize a large number of engineering and construction craft workers, and we feel fortunate to be able to contribute to both the growth in jobs and the infrastructure in the state." Shogo Shibuya, Chiyoda's president and CEO who says the company accounts for more than 40 percent of the world's total LNG production capacity, said, "Chiyoda has been accelerating its involvement in the development of LNG projects in North America, based on its innovative plant design and world-class project execution capabilities, with a relentless drive for safety and contributing to the local community."
In 2013, CB&I, which houses its U.S. headquarters in Woodlands, Tx., acquired the Shaw Group, Baton Rouge's only Fortune 500 company for $3 billion. The company opted to centralize its government solutions division in Baton Rouge and relocate 400 professional jobs to the city. Both companies combined have more than 50,000 employees worldwide, with about 1,000 employees in Baton Rouge.


Our team is currently working on the modeling of a city-integrated renewable energy for sustainability projects. As urban environments continue to experience sharp rises in population density, they are becoming increasingly responsible for global climate change by the emission of greenhouse gases. By exploring alternative energy sources and visualizing the possibilities for the reduction of energy consumption in daily life, we hope that our approach will expose the general public to the real implications of their energy usage.
Hybrid cars and carpooling are represented as potential solutions to high emissions, as well as encouraging individuals to walk or bike to locations. Improved infrastructure will allow support for creating renewable energy technologies, increased energy efficiency, and more widespread energy generation systems. More large-scale projects could include harnessing wind energy, which has the potential to resolve concerns related to the combustion of fossil fuels.
Alternatively, plans to utilize biomass energies are a possibility, although many proponents agree that the current processes produce low power densities and are often reliant on the regional climate and temperature cycles. We propose a variety of behavioral decisions that can significantly impact the overall emission rates from cities: each mundane choice seems to only minimally affect our own personal lives, but the overall outcome reflects a much more momentous shift towards a sustainability. Our suggestions include the more well-known tips for energy conservation, including turning off lights and taps when not in use and cutting down on shower times and unplugging devices.
By implementing an experience that utilizes augmented reality and audiovisual components, we hope to express how our daily lives are intertwined with our relationship to the environment around us. For example, in order to better represent how our water usage can be shrunk, we added audio of water rushing in order to trigger auditory stimuli and enhance the reality of the situation. Featured in the box are multiple pedestrians who are walking to work and their respective locations; this is the method of reducing energy consumption that we would like to present to visitors at the museum. Besides the people commuting to work, bikers, passengers on public transport, and carpooling in hybrid cars are also potential alternatives that are exaggerated in our virtual world. As the city fades to night, lights flicker on around multiple high-rises, although tips quickly pop out near the periphery of the user's vision that remind them to be conscious of their water usage late at night and to cut down electricity.
Even though programs and flyers in the past have promoted these practices, we strongly believe that younger children and visitors at the museum will be more inclined to actually implement our suggestions and tips if they are able to experience and learn about them firsthand and in more personalized augmented reality interactions.
In the past year, I have been exposed to data structures and other programming concepts. I initially didn't believe that data structures would be so interesting, but I found myself truly enjoying the learning process. I was able to complete a variety of projects (including a pseudo-machine learning text analyzer, chess, solitaire, tetris, breakout, etc). After enrolling in data structures, I took UCSD's data structures course on Coursera to challenge myself to complete harder projects. On the side, I have explored some practical applications of tech in designing scientific visualizations (for demonstrating the effects of seasonal influenza viruses on cystic fibrosis patients). A few of my friends and I also participated in a small hackathon and created an app designed to improve the standard of public safety and promote community unity for our city. As a TechHive intern at the Lawrence Hall of Science, I'm working along side other interns to create an interactive museum exhibit implementing an augmented reality experience. Our goal is to educate museum visitors about the effects of our carbon footprint in an urban landscape in a fun and immersive way.
Older PostTechHive Fall 2017: Day 7 // "How to Make a Good Impression."


Prime Minister Dr.Ralph Gonsalves, Chairman of LIAT's shareholder Governments, said on Wednesday, February 2, following the partnership, which did not work out, LIAT had offered to purchase Caribbean Star, but when due diligence was done, it was discovered that the airline was not worth anything.
"He didn't own any planes, you know. He had leased them and we had to go to the leasers. He had a hangar, he had a couple of other little things. In fact, the truth of the matter as the records would show, in the reconcialiation of the accounts, when (the) Stanford empire fell, he still owed us a million dollars," said Gonsalves.
A U.S. federal judge earlier this year ruled that Stanford is currently unfit to stand trial over a $7 billion investment fraud case, due to his addiction to an anti-anxiety medication. He was ordered to remain under custody, pending recovery from the addiction.
The judge also ordered Stanford to undergo treatment for the addiction at a U.S. prison hospital and to receive additional psychiatric testing. He said he would set a new trial date on receipt of Stanford's addiction treatment and psychiatric tests.
In early 2009, Stanford became the subject of several fraud investigations, and on February 17, 2009, was charged by the U.S. Securities and Exchange Commission with fraud and multiple violations of U.S. securities laws.


A New Jersey father's phone won't stop ringing after his sons pulled off the ultimate birthday prank: an Atlantic City billboard with his face and phone number on it, urging passersby to wish him a happy birthday.
ATLANTIC CITY, N.J. (FOX 29) - A New Jersey father had to get a new phone number after a billboard advertising his birthday and number went up on Black Horse Pike.
The billboard, which features a silhouetted image of Chris Ferry's face alongside his now defunct phone number, was a prank engineered by his two loving sons.
"WISH MY DAD HAPPY BIRTHDAY," the sign reads.
Since the billboard went up on Thursday, Ferry has received more than 15,000 texts and phone calls from people who have seen the Atlantic City billboard or heard about it via social media.
FOX 29 spoke with Ferry's son, Chris, who lives in Florida with his brother, Michael. The masterminds behind the now-viral birthday prank explained that they have a history of birthday jokes with their father. This one, though, is their most far-reaching yet.
"It was a neat idea. I wish I would've thought of it," Ferry said.
Ferry turns 62 on Saturday.