text:
The Capitol coup shows online harms are now real-world harms – are your ads funding them?
by Jake Dubbins | Jan 7, 2021 | Uncategorized | 0 comments
Jake Dubbins, managing director of media buying group Media Bounty and co-chair of the Conscious Ad Network (CAN), takes a look at an uncomfortable truth – that advertisers have helped fund the misinformation that stoked fires in the US capital this week.
Last night we witnessed a violent group of rioters storm the federal buildings of the US government and occupy the senate and congress. This was during the constitutional event to ratify the election of Joe Biden to the office of the president of the United States.
Lots of people have said 'this is beyond belief'. It is not. It was entirely predictable. For years, conspiracy theories, disinformation and mendacious lies have been optimised by algorithms and served to people over and over again. Nazi propagandist Joseph Goebbels said "Repeat a lie often enough and it becomes the truth." Back in the 1930s and 40s it was much harder to repeat a lie at scale. Now it is not.
The industrial levels of lies served by algorithms and then given even more oxygen by some broadcast and print media outlets has created an alternate universe for some people. In addition, theories including satanist paedophiles running the US Democratic party, the election being stolen, white populations being deliberately replaced, coronavirus being a hoax, hospitals being empty, and the coronavirus vaccines containining microchips so that Bill Gates can control us flood media at an alarming rate. They serve as the truth for those feeling disenfranchised, and are believed as truth. As Steve Bannon once said, "The real opposition is the media, and the way to deal with them is to flood the zone with shit."
This content would be dangerous enough on its own but lots of it is monetised by advertising. Yes, there is an economic model to this. Want to make some money? Well then flood the zone with shit, switch on ads and watch the money roll in.
Right now, the day after what I am calling an attempted coup, militia websites, conspiracy theory sites and far-right activists are earning money from inciting violence. When even Ted Cruz, a staunch Trump supporter, says from the Senate floor overnight "social media helps 'them', it is hard to ignore the impact and why these multinational corporations continue to allow hate speech, untrue conspiracies and outright lies to live on their platforms. Twitter and Facebook's removal of Trump's accounts is a small start, but is it enough?
In June 2020, Lord David Puttnam said in the report following the Lords Select Committee on Democracy and Digital Technologies that we face a "pandemic of misinformation" that poses an existential threat to our democracy and way of life'. We saw this play out last night.
We are asleep at the wheel. The Conscious Advertising Network has been warning about this for years. In December 2018 we warned the UN General Assembly that the far right was organised and actively undermining a multilateral agreement on migration – the Global Compact for Migration. The far-right succeeded in flooding the zone with shit. Countries including the US, Australia, Poland and Brazil pulled out. The Belgian government collapsed. The most sinister result – the Christchurch terrorist who killed 51 people three months later had etched into the barrel of his gun – 'Here's your migration compact.'
If not now, then when will online platforms get a handle on disinformation and conspiracy theories? 24-hour bans on an account simply aren't going to fix things. It will take a concerted, connected effort on a global scale.
This is not just a few posts. Not just a few crackpots. It is industrial levels of misinformation, a lot of it monetised.
If you are an advertiser, the first question I would ask is: can I see all the environments and domains where my ads are appearing today please? Am I advertising on and therefore funding militia websites, conspiracy theory content or white supremacy?
What I would not do is instruct my agency to blocklist words like 'insurrection', 'coup' or 'riot' because you will then defund the news. We will then repeat the same mistakes when the industry blocked the words 'coronavirus', 'George Floyd' or 'Black Lives Matter'. The news, by and large, is a good place to be advertising in. White supremacist militia websites are not. Ask the questions. Do the due diligence. It's not hard, but it will take effort.
Know where your advertising is appearing.
Online harms have become real-world harms and now a direct threat to democracy itself. It is time for everyone to step up. The platforms. Advertisers. Media. Governments. Now.


The Screening was a HIT!
Check out the Photos of the World Premiere of Becca on Call!
Today Jenness and the BoC Pilot Gang attend Dances with FILMS!
Check Out the Carpet Chat Interview Jenness did for "Behind the Lens"!
Tomorrow on LA Talk Radio!
Tomorrow, Jenness will be on LA Talk Radio!
The 20th Annual Dances with Films Festival Begins TODAY!
Last call for Discounted BoC Premiere Tickets!
LA Talk Radio: TAKE 2!


text:
Griffin: 'I have unfinished business'
ONE of the most popular international drivers to visit the Liqui-Moly Bathurst 12 Hour has set his sights on a return in 2017.
Irishman Matt Griffin missed the 2016 race, but after finishing third outright in 2012 and second in 2013 with Asian outfit Clearwater Racing, says he is determined to return to the Mountain for another crack at a Bathurst win.
"After doing the Bathurst 12 Hour for the 4 consecutive years it was strange not to be on the mountain this year for the race," Griffin told Bathurst12hour.com.au.
"I think you can ask any driver and he will tell you either Mount Panorama is the best track hey have driven – or is on their bucket list if they haven't driven there. I definitely want to back there in 2017."
The Irishman, who a former champion in the Blancpain Endurance Series and the European LeMans Series, is perhaps best known in Australia for his heroic drive in the 2013 Bathurst 12 Hour for the Clearwater team.
Griffin and teammate Craig Baird hauled their Ferrari back into race contention after losing a full lap after suffering earlier damage, ultimately finishing second behind the winning Erebus Mercedes.
Griffin's mid-race stint, where he pulled back nearly two minutes of track position on the leader – despite battling a badly damaged front splitter – was perhaps the drive of the race.
Noted for his prowess behind the wheel of Ferrari's finest, the Irishman says he is keen to explore any option to ensure a competitive return to Bathurst next year.
"Every year I have done has been behind the wheel of a Ferrari and I have very close links with Michelotto and obviously drive for AF Corse, but definitely if there was an opportunity with a different manufacturer it would be something I would be interested in too," he explained.
"I have finished 2nd and 3rd at the race in the past so am missing the win – so if I can get back to the race in 2017 the goal would be to come away to the biggest trophy."
togged in: Top Story

redpajama_set_name: RedPajamaCommonCrawl


Kerry co-op is to offer an opportunity for members to cash in their shares. A board meetingon Wednesday approved the proposal to offer an cash out opportunity later this year, with subsequent opportunities to follow in future years.
Kerry co-op owns 13.7% of the shareholding in Kerry Group, worth over €2.2bn. The average shareholding among Kerry co-op's 13,267 shareholders is thus valued at approximately €167,000. The money paid out to shareholders will be regarded as income and subject to income tax.
The board are also intent on exploring the option of purchasing the agribusiness from Kerry Group plc. Negotiations between the two sides will now be required, as no indicative price or valuation model is contained in the optional clause set out in the contract between the two entities.
Current relations between the co-op and the plc are at a low ebb, following the prolonged row over bonus payments. The arbitration process to resolve that issue has been completed, with both sides awaiting a ruling.
The Irish Farmers Journal understands that the Kerry co-op share register is still administered by Kerry Group, so their involvement in the upcoming process will be required.


text:
Great body of work
Mike Lammi
Its motto is "Making friends by accident since 1969."
But it's no accident that family-owned Campbell Collision is still thriving as it celebrates its 45th anniversary.
"Honesty" is the word the current and former owners used when asked why Campbell Collision, 9987 E. Grand River Ave. in Brighton Township, been successful for nearly half a century.
"This is probably the oldest body shop in Livingston County, and we've had a good reputation," said Bob Campbell Sr., who retired in 2005 when his son, Bob Campbell Jr., took over the shop.
That reputation is important to Bob Jr. and his wife, Donna, who have continued to stress customer service.
"We have a lot of customers who come in and say their neighbor or their friend told them to use us," Donna said.
Donna has a background in accounting and serves as the office manager at Campbell Collision. The more-than-6,000-square-foot shop employs about 15 people.
Bob Jr. is the third generation of Campbells in the auto body trade, following in his father and grandfather's footsteps.
"My dad taught all of the Campbells how to do body work," said Bob Sr., 71, who went to work for his uncle at the shop in the early 1970s and eventually took ownership in 1982.
Bob Jr., 46, got his start as a teenager at the shop in the early 1980s.
"I learned on the job and learned by taking classes. I learned from some very talented people that worked here over the years," he said.
Changes over the years
From body repair to frame straightening to painting, Campbell Collision is a full-service collision shop for all makes and models.
But the industry has seen many changes over the years, Bob Jr. said, citing advances in metal alloys used in the production of vehicles, the use of waterborne paint, improvements in welding techniques, and the introduction of computers and tablets for faster and on-site estimates.
"You have cars now that the bodies are made of hardened alloy steel for crash protection," he said. "You could actually take a 1960s muscle car and a modern small car and wreck them, and the small car will fare better and the person will be better protected in the little car."
Campbell Collision began using waterborne paint a few years ago, ahead of federal requirements.
"The paint has changed drastically," Bob Jr. said. "Years ago, the materials we had to spray were lacquer. Lacquer looks beautiful when you spray it, but if you were to take that car to Florida or it took a lot of sun, it couldn't take it. Now, the actual finishes have sun protection built into them, UV protection, and they are just as durable as what comes out of the factory."
Campbell Collision even survived a fire that destroyed the shop in 1978. The business was moved to a temporary location nearby for about a year while the shop was completely rebuilt.
Crashes, fender-benders and car-deer collisions are among the incidents that keep Campbell Collision busy year-round.
Bob Sr. said under his watch the shop went from doing less than $100,000 in business per year to more than $1 million when he retired. Today, Campbell Collision does up to 120 jobs a month and tops $2 million annually, Donna said.
'A true art'
Vehicles that have been repaired and repainted are proudly displayed in front of the shop facing busy Grand River Avenue near its intersection with South Old U.S. 23, a practice passed down from Bob Sr. to Bob Jr.
Nothing is more satisfying, Bob Jr. said, than to make a damaged car look like new again.
"I like seeing a car that came in damaged and see it sitting up front, all nice and shiny and cleaned," he said. "When you can take a crashed car and fix it and make it look like it's never been touched … I believe that's a true art."
Campbell Collision has contracts with companies for fleet work and does work on police vehicles for some local agencies. The Campbells are active in the community with the Brighton Optimist Club and are proud sponsors of the club's free fishing derby for kids held each spring at the Brighton Mill Pond.
"One of the things I pride myself on is that we're active in the community, we live here," Bob Jr. said. "When I go to lunch, I always run into someone who knows me and I can sit down and talk to a customer."
"We can pretty much drive up and down Grand River and say we fixed that company's car, that company's car, that company's car." Donna added.
Bob Jr. and Donna have two children who help at the shop — Danielle, 18, and Wyatt, 15. So will there be a fourth generation of Campbells running the shop someday?
"I would like to see it," Bob Jr. said. "Our daughter is going to college this fall, and our son will be going away to college in two years. If they want to run it when they come back, then we'll talk after they go to school."
For more information about Campbell Collision, call 810-227-6151 or visit http://www.campbell- collision.net.
Contact Daily Press & Argus business editor Mike Lammi at 517-552-2854 or at mlammi@gannett.com.
Campbell Collision
Address: 9987 E. Grand River Ave., just west of South Old U.S. 23 in Brighton Township
Website:http://www.campbellcollision.net


It has been a hell of ride since the FIFA World Cup 2018 started almost 4 weeks ago. We have seen some amazing matches, glorious goals, but here at the casinoservice office most of the times we were surprised about the outcome of so many matches. We've seen great nations not making it as far as expected; Argentina, Brazil, Senegal and Germany didn't make it as far as expected. On the other hand the biggest favorite to win the football world cup for us has been France since day one and now they made it to the final.
Now the big question; how did everybody perform betting on the football World Cup 2018? To be honest here we have lost the majority of our bets; especially betting on Spain, Germany and Argentina cost us a lot of money:) But hey what can you do that is sports betting. Let's have a look at the last upcoming matches this world cup; Saturday we have Belgium Vs. England playing for the 3rd and 4th place. This is not an easy match to bet on; Belgium is the slight favorite with 2.18 odds to win while England is the obvious underdog after there loss against Croatia with 3.35 odds for England to win.
But the world cup final looks way more juicy to place some bets on. When you look at the skill level of the France team as well of the skills of each individual like; Mbappe, Pogba, Griezmann, Matuidi, Giroud, Kante and the list of legends keeps going on. When we have a look at the odds we clearly see that France is the major favorite with 1.95 to win Vs. 4.80 odds for Croatia to win the match in regular time. Croatia did win their last match against England but to be honest the quality of their play does not match the skills of the French team at all. If you're looking for a good bookmaker to place your football bets on the final of the World Cup 2018 please click on the banner below and sign up today at Unibet; simply the best sports betting website available. We wish you a great World Cup Final!!!


We make software to improve business performance.
Village Software was established in 1986, and has been a permanent feature of the Liverpool IT scene ever since. Across development, management, and operations, we're a tight-knit team who enjoy working together, and our sense of ownership and pride in our work rubs off on clients, too.
"Be the first one to review Village Software Engineering Limited"
Resman* Limited is an Information Technology and Services Company. We deliver proactive maintenance services through our fixed price IT Support Service. We partner with you as your Virtual CIO and IT Department, allowing you to focus on running your business, not your technology.
"Be the first one to review Resman"
"We help businesses to build big ideas"
We develop systems and applications that solve business challenges, and that transform businesses and organisations in three key areas: capability, profitability and efficiency. We first help businesses to understand their requirements in detail, and then specialise in developing rich web and mobile applications or services to fulfil those requirements.
"Be the first one to review Yozu"


text:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.facebook.redex.examples.synth.MainActivity">

    <TextView
        android:id="@+id/message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Redex Synth Example" />
</RelativeLayout>

redpajama_set_name: RedPajamaGithub


text:
Q: Code running successfully using vector but showing error using array I was practicing an array manipulation question. While solving I declared an array (array A in code).
For some test cases, I got a segmentation fault. I replaced the array with vector and got AC. I don't know the reason for this. Plz, explain.
#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n,m,a,b,k;
    cin>>n>>m;
    vector<long int> A(n+2);
    //long int A[n+2]={0};

    for(int i=0;i<m;i++)
    {
        cin>>a>>b>>k;
        A[a]+=k;
        A[b+1]-=k;
    }
    long res=0;
    for(int i=1;i<n+2;i++)
    {
        A[i]+=A[i-1];
        if(res<A[i])
        res=A[i];
    }
    cout<<res;
    return 0;
}

A: Since it looks like you haven't being programming in C++ for very long I will try to break it down for you to make it simpler to understand:
First of all c++ does not intialize any values for you this is not Java, so please do not do:
int n,m,a,b,k;

And then use:
A[a]+=k;
A[b+1]-=k;

At this point we have no idea what a and b are it might be -300 for all we know, you never intialized it. Hence, occasically you get lucky and the number that is initalized by the compiler does not cause a segmentation fault, and other times you are not so lucky and the value intialized by the compiler does cause a segmentation fault.

A: long int A[n+2]={0}; is not legal in Standard C++. There are a bunch of reasons for this and I think you stumbled over one of them.
Compilers that allow Variable Length Arrays follow the example of C99 and the array is allocated on the stack. Stack is a limited resource, usually between 1 and 10 MB for a desktop computer. If the user inputs an n of sufficient size, the array will take up too much of the stack or breach the bounds of the stack resulting in Undefined Behaviour. of then this behaviour manifests in a segmentation fault from accessing memory that is so far off the end of the stack that it's not controlled by the program. There are typically no warnings when you overflow the stack. Often a program crash or corrupted data is the the way you find out, and it's too late to salvage the program by then.
On the other hand, a vector allocates it's internal buffer from the freestore, and on a modern PC with virtual memory and 64 bit addressing the freestore is fantastically huge and throws an exception if you attempt to exceed what it can allocate.
Another important difference is
long int A[n+2]={0};

likely did not zero initialize the array. This is the case with g++. The first byte will be set to zero and the remainder are uninitialized. Such is the curse of using non-Standard extensions. You cannot count on the behaviour guaranteed by the Standard.
std::vector will zero initialize the whole array or set the array to whatever value you tell it to use.

redpajama_set_name: RedPajamaStackExchange


text:
CESG defends CCP as UK cyber security skills foundation
CESG has defended the validity of its CCP scheme as a foundation for cyber skills development in the UK
Warwick Ashford
Security Editor
GCHQ's information assurance arm has defended the validity of its cyber security professional certification scheme as a foundation for cyber skills development in the UK.
Government plans to establish an "approved standard" for UK cyber security professionals are set to recommend compliance with CESG's Certified Professional (CCP).
The draft plan is outlined in the recently published Cyber security skills business perspectives and government next steps report by the Department for Business, Innovation & Skills (BIS).
The draft plan also recommends compliance with the CCP scheme as a foundation to accredit private sector training, as well as the development of university curricula, funding incentives and guidance to business.
Security professional association and certification body (ISC)2 has called for a review of the plan to allow for a broader, more inclusive approach that allows market-influenced development.
The organisation has expressed concerns that anyone following the CCP scheme will be locked into a focused career path and will struggle to move laterally to develop all-round knowledge and experience.
But CESG has defended CCP, saying it is still in the early stages of development and that it will continue to evolve, guided by industry, academia, professional bodies and government departments.
Competency testing
"What sets CCP apart from the great number of existing industry schemes is that it is a certification of an individual's competence in applying a particular set of skills in a real-life environment," said Chris Ensor, deputy director for the national technical authority for information assurance (CESG).
More on cyber security skills
School initiative launched to fill cyber security skills gap
e-skills UK unveils cyber security apprenticeships
Cyber Security Challenge UK announces first University Challenge
UK to launch public cyber security awareness campaign
"Candidates are required to provide detailed evidence to support their application," he told Computer Weekly.
Candidates are assessed by three certifying bodies and require re-assessment every three years, with continuing professional development (CPD) evidence provided after 18 months.
The certifying bodies are the Institute for Information Security Professionals (IISP), the CREST & Royal Holloway University London consortium, the APM Group and BCS, the Chartered Institute for IT.
"The scheme has been developed to recognise the growing need for specialists within the broader security profession. Specialists that are needed to help organisations meet today's risks," said Ensor.
The competency-based approach adopted by the CCP scheme is supported by the findings from the recent BIS report, he said.
The report showed that companies usually look to recruit experienced cyber security professionals and tend to value experience over qualifications.
"Clearly there is a balance to be struck between gaining the right level of skills through qualifications and having evidence of competence in applying these skills in the workplace; and this is what the CCP scheme sets out to do," said Ensor.
While the original six CCP roles have a very public sector flavour, he said the recent addition of the penetration tester role signals the government's intent to make CCP more applicable to industry.
"And at the same time, establish a more unified standard across both government and industry to help employers choose the right people with the right level of competence for the job," said Ensor.
Security training courses
In support of CCP, CESG will be launching the CESG Certified Training (CCT) scheme in the summer of 2014 to certify training courses that meet a "good standard" for both course content and delivery.
More on CESG
CESG certification for Information Assurance and cyber security unveiled
First phase of new CESG IA certification scheme underway
CESG certification scheme aims to boost public-sector consultants
CESG approves encrypted USB flash drive
CESG approves first encrypted USB flash drive for 'top secret' data classification
Bristol Council gets open source go-ahead after CESG discussions
Training courses will be assessed against the relevant areas of the IISP Skills Framework, which Ensor said will help individuals identify which training courses are most relevant for their current role as part of an overall learning pathway into a part of the profession.
According to CESG, a number of established UK and international training providers have expressed a wish to submit their courses for certification.
"The success of both schemes will rely very much on their ability to make themselves an essential requirement for a fledgling UK cyber security profession," said Ensor.
"CESG, as the national technical authority for information assurance, is committed to providing standards and guidance that cyber security professionals and businesses can rely on.
"Our goal with our partners across both public and private sectors is to raise the standard and increase the number of cyber security professionals that can help the UK manage its information and cyber risks.
"To achieve this, we need both individuals with a broad understanding as well as those with in-depth expertise in specialist areas of cyber security.
"The ability of the CCP and CCT schemes to remain flexible, dynamic and relevant to a rapidly changing environment will be key to their success," he said.
CESG is currently seeking involvement from industry, academia and professional bodies in developing additional roles for the CCP scheme and is inviting interested parties to make contact.
Read more on Privacy and data protection
Billion-dollar privacy penalties put CEOs on notice
Security Think Tank: Don't dismiss the business benefits of GDPR
New FinSpy versions extend surveillance capabilities
Security Think Tank: Align compliance objectives with business goals
Max Schrems not calling for SCCs to be invalidated
Demand for ICO help escalates in GDPR's first year
Data protection: How privacy can be a benefit, not a burden
Facebook's privacy game – how Zuckerberg backtracked on promises to protect personal data
How privacy could breathe new life into personalisation
How facial recognition technology threatens basic privacy rights
How long will your New Year stay Happy?
Six months on, GDPR is a qualified success
European Parliament heads for showdown with US over Privacy Shield
European Court hearing into EU-US data transfer system will not happen for at least 18 months
Security Think Tank: Changing the GDPR focus to business benefit
Security Think Tank: Benefits of GDPR compliance
CW500 Video: Identity and access management - GDS
CW500: Jitender Arora, GE Capital Europe
CW500: Stephen Gailey, Splunk
Computer Weekly & FT video debates - managing the cost of IT
UK plans to professionalise infosec are too rigid, ... – ComputerWeekly.com
Barclays passes government's 'internet-born threat' ... – ComputerWeekly.com
Cyber security budgets not rising in line with ... – ComputerWeekly.com


text:
Rogan's first time on a UFC broadcast
Kirik April 23, 2020, 11:26am #1
UFC 12: Judgement Day was held on February 7, 1997, at the Dothan Civic Center in Dothan, Alabama. It featured a number of firsts:
•First UFC event to feature weight - heavyweights (200 lbs+) and lightweights (-199 lbs);
•First ever UFC Heavyweight Champion - superfight champion Dan Severn vs. tournament champion Mark Coleman;
•First UFC appearance of Vitor Belfort, who won the heavyweight tournament at just 19; and,
•First appearance of Joe Rogan.
UFC events scrambling to find a location today in the face of the COVID-19 global pandemic had a parallel with UFC 12. The event was originally scheduled for Buffalo, New York, which was denied due to Sen. John McCain's "human cockfighting" effort to ban the sport, then was scheduled for Oregon and ended up in Dothan, Alabama. Dothan is not as cool a concept as Fight Island.
Jewborgia April 23, 2020, 2:30pm #2
@2:53 of the video you can here some guy in the background of the production or something, say "I swear to god I hate brazilian motherfuggers"...huh?
JohnWick April 23, 2020, 4:04pm #3
Victor* Belfort.
BubblesNS April 23, 2020, 9:07pm #4
Jewborgia -
Yeah someone was throwing some shade there.
Kevinbarbers1 April 23, 2020, 9:09pm #5
Gotta start somewhere right....
Look how far he has come though, I love the growth. Gives me hope.
Sultry_Crockett April 23, 2020, 9:17pm #7
Brian Callen tried to agree that him and Joe used to look alike...No Brian, you dipshit, you didn't look like Joe. Joe got pussy.
knockoutfighter April 24, 2020, 4:45am #8
Boston stud muffin


text:
import os

def _try_relative_path(path):
    # Try to return 'path' relative to the current working directory, or
    # return input 'path' if we can't make a relative path.
    # E.g. on Windows, os.path.relpath fails when path and "." are on
    # different mount points, C: or D: etc.
    try:
        return os.path.relpath(path)
    except ValueError:
        return path

class FontmakeError(Exception):
    """Base class for all fontmake exceptions.

    This exception is intended to be chained to the original exception. The
    main purpose is to provide a source file trail that points to where the
    explosion came from.
    """

    def __init__(self, msg, source_file):
        self.msg = msg
        self.source_trail = [source_file]

    def __str__(self):
        trail = " -> ".join(
            f"'{str(_try_relative_path(s))}'"
            for s in reversed(self.source_trail)
            if s is not None
        )
        cause = str(self.__cause__) if self.__cause__ is not None else None

        message = ""
        if trail:
            message = f"In {trail}: "
        message += f"{self.msg}"
        if cause:
            message += f": {cause}"

        return message

class TTFAError(FontmakeError):
    def __init__(self, exitcode, source_file):
        self.exitcode = exitcode
        self.msg = f"ttfautohint failed with error code {str(self.exitcode)}"
        self.source_trail = [source_file]


I just did my first csv import after upgrading and it failed. The log report returned this error: "ERROR 2018/05/07 - 11:13:44: Not a JPEG file: starts with 0x3c 0x21 `/.../.../.../.../store/img/p/8/0/3/7/8037.jpg' @ error/jpeg.c/JPEGErrorHandler/322 at line 94 in file override/classes/ImageManager.php" When I removed the image url from the csv file the upload went through fine and then I manually added the photos in the back office with no problems. Any ideas?


If you would like to participate in the program as a mentee, please complete this form and submit it by clicking the Submit button at the bottom of the page.
Briefly describe your background and interests, and provide information which would be of use in matching you with a mentor.
What else can you tell us regarding your desire to be in the mentoring program?


text:
staff(110)
California Bans Police Use of Carotid Restraint Techniques, Chokeholds
California Gov. Gavin Newsom on Wednesday signed a number of police reform bills that ban chokeholds and carotid restraint techniques and allow the state's Justice Department (DOJ) to probe police shootings.
Wife of LAPD Officer Sues City After Contracting Typhus
The wife of a Los Angeles police officer is suing the city after both she and her husband contracted typhus, which she alleges resulted from his working at an unsafe building located in an area with a large homeless population.
Former Los Angeles County Sheriff Lee Baca Begins Jail Term in Texas
Former Los Angeles County Sheriff Lee Baca has reported to a Texas prison to begin a three-year prison term.
CA Police Union Calls on Feds to Prosecute Man Charged with Attacking Officers After DA Drops Charges
The union representing officers with the San Francisco Police Department called on the federal government to prosecute a man who is accused of attacking officers with a bottle last month, but who now no longer faces criminal charges for that alleged assault.
CA Governor Signs Law Allowing Citizens to Refuse to Help Police
Governor Gavin Newsom on Tuesday signed into law a bill that would no longer require any "able-bodied person 18 years of age or older" in the state to help an officer who requests assistance during an arrest.
New CA Law Will Require Deadly Force to be "Necessary"
Under the new standard, prosecutors can also consider the actions both of officers and of the victim leading up to a deadly encounter, to determine whether the officer acted within the scope of law, policy and training.
California Legislature Passes Bill on De-Escalation, Use of Force Policies
If the bill becomes law, police agencies would have to adhere to statewide requirements that officers be instructed in ways to de-escalate confrontations. Officers would also be required to receive training in dealing with individuals who are homeless, mentally ill, in distress, or under the influence of drugs or alcohol.
2 LAPD Officers Win $8.6 Million in Suit Over Retaliation
A jury has awarded two Los Angeles Police Department bloodhound handlers more than $4 million each for the reprisals they faced after reporting that a supervisor was sexually harassing their female colleague.
Tough CA Use-of-Force Legislation Getting Closer to Being Law
Assembly Bill 392, backed by anti-police activists, has been called the toughest standard in the nation for when police can use deadly force. It was written months after Sacramento police shot Stephon Clark, a vehicle burglary suspect, after a foot pursuit when they mistook his cell phone for a gun.
CA Legislation to Change Lethal Force Justification Passes Committee Hearing
The bill's main author, Assemblywoman Shirley Weber, D-San Diego, said AB 392 prevents "unnecessary deaths" by "clarifying law enforcement's obligations." Weber's team said the legislation would push officers to rely on de-escalation techniques like verbal persuasion and crisis intervention methods instead of lethal force.
Wife of Slain CA Officer Slams Presidential Candidate Kamala Harris for Death Penalty Decision
Asked whether she regrets not speaking to the family before announcing the death penalty would not be sought, Harris said, "I did not ask for permission to make my decision."
Inmate Sues San Francisco Sheriff's Department Over Lack of Seat Belts
The San Francisco Sheriff's Office is in the spotlight after an inmate filed a claim against the city for its lack of seat belts in some prisoner transport vehicles.
Former California Police Chief Awarded $7 Million in Gender Discrimination Suit
The suit alleges Lili Hadsell, chief of police from 2008 to 2013, was subjected to prejudicial treatment that ultimately led to her firing. It also accuses the department of promoting Hadsell to the position as a form of "tokenism" as the city "paraded her around as a prop to celebrate themselves for having a female police chief."
Governor to Block California Death Row Executions
Gov. Gavin Newsom will sign an executive order on Wednesday to impose a moratorium on the death penalty in California, vowing that no prisoner in the state will be executed while he is in office.
Ex-L.A. Sheriff Baca Loses Appeal, Faces Prison
An appeals court upheld the conviction of former Los Angeles County Sheriff Lee Baca on Monday, clearing the way for the now ailing law enforcement figure to spend years in prison for obstructing justice and lying to federal authorities.


text:
Q: Laravel и Tarantool? Кто нибудь пользуется новой БД Tarantool ? говорят очень производительная, но официальный сайт ведет на библиотеку в гитхаб, где только можно использовать с php 5.x , но уже без php7 Никуда.
У нас стоит laravel, который работает минимум с 7.1.3
Может кто нибудь знает какие нибудь другие хорошие in memory bd в связке с laravel
Суть БД не в надежности, а в быстродействии и хранении данных типо кеша но с удобствами бд.
Данные в этой бд не страшно потерять, все действия применяются в Mysql.
Суть проекта такая, что все время в онлайне есть 300-500 заказов и устройств около 700, которые каждые 30 секунд шлют запросы на сервер типо "Есть ли для меня новые заказы", всю нагрузку на сервер создает в основном Mysql
это не интернет магазин, а это трекинговая система, тут все запросы по API с мобильных устройств

A: Официальный коннектор поддерживает php 7.0-7.2 (7.3 пока не поддерживается), ставить нужно из ветки php7-v2 (есть соответствующий тикет о переименовании этой ветки в master).
Так же есть неофицильный клиент для 7.1+: https://github.com/tarantool-php/client.


text:
This Portfolio (may_flower)
Lightning in the Primordial Soup
A modern-day David and Goliath story
Perfect Anxiety
When you're used to negatives, the positive can feel just as wrong, if not more so.
BIG BLESSINGS ARE FOR ME
My grateful heart sings
Navigating the Writing Jungle, avoiding the Dust Bunnies, and finding inspiration for 2023
Example Quiz: Writing.Com History Trivia
An example quiz about Writing.Com that uses Correct Scoring.
MATT DUGGAN - Detective Series
Episode II: Part III - The Case of the Menacing Notes
KEEP QUIET OR SPEAK OUT?
Words can be useless or precious. Discretion lies with us.
Printed from https://www.writing.com/main/view_item/item_id/1438448-Secrets-of-the-Unseen
Secrets of the Unseen
by Lady of the Lake
Rated: 13+ · Chapter · Fantasy · #1438448
Prologue-Strange things begin to occur when wanted rebels try to live a normal life...
Created: June 13th, 2008 at 11:40am
Genres: Fantasy, Political, Action/Adventure
"She is beautiful," the woman murmured as she held her newborn baby close to her,
pulling the patched quilt up around her.
The humble patchwork quilt, sewn from scraps of homespun cloth, blanketed a straw-stuffed mattress that was the largest piece of furniture in the one-room hut. In the center of the circular room was a crudely carved square table that stood shakily on the worn-wood floor. The roof and walls were also crafted of wood, as well as the shutters on the gaping hole, that would have otherwise been in the wall, were pulled tight against the pounding rain. Pails and buckets littered the floor, in a desperate attempt to catch the dripping rainwater seeping in through the many unseen holes in the roof, even the washbasin had been utilized for the purpose. Lighting the entire scene was a single stub of a candle, gingerly set in its holder on the warped table.
"She is our miracle," her husband agreed as he came to sit next to her on the bed, wearily stepping around pots and bowls.
"She deserves better," the mother said quietly, pushing her light brown hair from her face and behind her ear.
Her husband already knew what she was thinking. He looked at her delicate features while she was still smiling at her newborn child; her deep brown eyes, her creamy coloured skin and her determinedly set jaw, and thinking her more beautiful than ever, he reached under the bed to pull out her grey cloak.
The woman pushed herself from the bed, still wearing the same brown homespun cotton as the day before, and reached for the cloak her husband held out for her.
" Be careful and trust your instincts," he said moving the cloak just to the side before she could grasp it, leaving her grasping at thin air and standing on the tips of her toes, almost ready to topple forward.
"I love you too," she said, gently caressing his strong cheekbones, as much out of affection as to steady herself.
He clasped her hand and held it there a moment, against the side of his face, before kissing her, possibly for the last time. Even simply leaving the house had become a matter of life and death, and she knew it. She was also counting on the fact that their exact location had not yet been pinpointed.
He held her at arms length, and she stared into his dark misty coloured eyes that were a greyish-blue, and gently ran her hand through his sandy coloured hair that was neither brown nor blond. He draped the cloak around her, and his child, and stepped back before she disappeared.
Suddenly, the door burst open, pushed open with such ferocity that it hit the wall with the sound of wood slamming against wood, which coincided with the deafening crack of thunder that illuminated the sky behind the dark-robed figure in the doorway.
"Where is she?!" the black-cloaked witch demanded as she stormed into the room.
Her shoes left miniscule wet-prints on the wood floor as she passed and the hem of her cloak was soaked and stained from dragging in the mud, it was so long that it covered her feet so that you could not tell what she wore on them, this only adding to her dark and mysterious persona.
"Who?" the man asked innocently, glaring into the hateful black dots that were the woman's eyes. They reflected perfectly the dark abyss that was her soul, filled with dark hate.
"You know perfectly well who!" the hateful woman snapped at him as massive, bulky guards filed into the room after their queen, clinging to the walls and awaiting her signal to disable the pathetic little man. Each one had eyes whose colour became unrecognisable because all that you would see if you dared look into them was pure hate, and icy heartlessness.
"WHERE IS SHE?!!!" the queen shouted, advancing on him to appear even more intimidating, and starring him in the eyes with a hateful glare; often the sight of her eyes alone were enough to send any peasant cowering in fear. The young man said nothing, simply glared back.
"Your Highness," one of the guards called, as to draw her attention to something of possible importance. He was holding a scrap of raggedy cloth.
The spiteful woman snatched the scrap of swaddling cloth from her guard and silently considered it for a moment.
"So you have a child," she said with bone-chilling calm that lost none of her hatred.
She slowly looked up from the cloth, at him, her gaze filled with contempt and pride. "Find them!" she ordered her guards, not lifting her gaze from the man who stood before her.
As suddenly as the storm had conjured itself, he launched himself at her in a desperate attempt to save his wife and child by ridding the world of this heartless creature. Being unable to contain his anger towards her any longer, he didn't think of how useless this attempt would be, he only thought of how much better life for the entire realm would be if she were eliminated.
The guards caught him and dragged him to a chair before he even reached the target of his anguish.
"I could kill you now," she said as she stood over him, "but I have a different punishment in mind," she stated sinisterly, allowing him time to imagine all the things worse than death, and likely thinking that he could easily handle any kind of torture that she had prepared. "You shall witness the murder of your own wife and child. You shall pay the dearest price imaginable for your rebelry!!!"
© Copyright 2008 Lady of the Lake (may_flower at Writing.Com). All rights reserved.


text:
'Bulbul Can Sing' to open film fest in Australia
Melbourne, July 10 (IANS) Assamese filmmaker Rima Das' "Bulbul Can Sing" has been selected as the opening film of the Indian Film Festival of Melbourne, which will commence on August 8.
For the opening night of the festival, now in its 10th year, Das' film will be screened. It showcases the stories of three teenagers who are trying to come to terms with their sexual identities while dealing with the ideals and morales of the villagers.
"I love the enthusiasm and exuberance of an opening night. So excited that 'Bulbul Can Sing' is the opening night film at Indian Film Festival of Melbourne," Das said in a statement.
"The film has truly been special for me as a filmmaker. The response and appreciation we have received from across the places we had travelled to with the film, is also very special. I'm looking forward to the Australian premiere of the film and interacting with the audience there and having a conversation with them on cinema," she added.
The filmmaker is best known for making "Village Rockstars", an Assamese language film which won the National Award for Best Feature Film last year. It was even chosen as India's official entry to the Oscars.


CELT is primarily a TEFL training centre, dedicated to teacher development and to the pursuit of excellence in foreign language education in the private and public sectors.
We are firmly committed to an equal opportunities policy and you can find our more about the people of this organisation by clicking here and testimonials by trainees who have attended our courses can be accessed through this page!
Our courses include the Cambridge CELTA Certificate course as well as a range of other courses, from English for English Language Teachers & Grammar for English Language Teachers preparatory programmes for TEFL teachers to the post-graduate Cambridge DELTA Diploma.
To date, we have trained more than 2,500 Foreign Language teachers, directors of studies and administrators and have worked with the private as well as the state school sector.
CELT trainees come from many countries (the United States, the United Kingdom, Australia, S.Africa and more) as well as from Greece. They come to CELT to start or develop their teaching careers ; many currently hold posts of responsibility in Greece and overseas.
CELT offers general and Business Greek courses organised mainly in Athens or online; every summer, a two-week immersion course is organised on a Greek island. Click here for more information, levels, dates and tuition.
CELT Athens is a specialist centre in teaching English as a Foreign Language to Adults. We offer a wide variety of tailor made programmes for companies and individuals. Click here for information on our one-to-one courses and on our Corporate courses.
We also offer group courses for general English which are usually free of charge and are organized so that our trainee teachers of Adults can complete their Teaching Practicums during their Cambridge CELTA and DELTA courses.
Recently relocated to new, more spacious premises, you can find us in the heart of Athens, a city with so much to see and do!
Our centre is within easy reach of multiple means of transport.


text:
When search suggestions are available use up and down arrows to review and enter to select.
CBC News Investigates
Go Public
About CBC News
Being Black in Canada
Family of woman who had bone-deep bedsores wants police case reopened | CBC News Loaded
Family of woman who had bone-deep bedsores wants police case reopened
The family of a woman who died from an infection from a massive bone-deep pressure ulcer wants Halifax Regional Police to reopen their case into her death after a report found problems with how she was cared for at a Halifax nursing home.
Chrissy Dunnington died at the age of 40 after being hospitalized due to an infected pressure ulcer
Anjuli Patil · CBC News · Posted: Dec 16, 2019 7:50 PM EST | Last Updated: December 17, 2019
Chrissy Dunnington died from an infection related to an untreated pressure ulcer. (Submitted)
The family of a woman who died from an infection from a massive bone-deep pressure ulcer wants Halifax Regional Police to reopen their case into her death.
It comes after Nova Scotia's Health and Wellness Department released a report dated Dec. 11 that stated incidents of failure to provide adequate nutrition, care, medical attention or necessities of life at Shannex's Parkstone Enhanced Care in Halifax were founded.
Although the report doesn't mention her name, Chrissy Dunnington's family confirmed it was about her and the care she received at Parkstone. The 40-year-old woman died in March 2018.
"Things have clearly evolved since [police] closed the case and there's more evidence available now and there's questions around the evidence they were using, that they relied on to make that decision," Dorothy Dunnington, Chrissy's sister, told CBC News in an interview on Monday.
"So we think there is justification in reopening the case."
Dorothy Dunnington says she's pleased Parkstone is making improvements to their care, but she doubts this would have happened if her family hadn't gone public about her sister's death. (CBC)
Chrissy Dunnington was born with spina bifida and hydrocephalus, a condition that caused a buildup of fluids in her brain. She had cognitive and physical disabilities and used a wheelchair.
At her family's urging, she was rushed to hospital eight weeks before she died for treatment of a bone infection, septic shock, pneumonia, a urinary tract infection and severe dehydration.
What the report said
Halifax Regional Police dropped its investigation into Chrissy Dunnington's death in September, concluding there was no criminal wrongdoing.
Dorothy Dunnington said the family was in contact with Halifax Regional Police after they received and read the report's findings on Friday. She said the family is still waiting for a response.
Investigators are reviewing the new information and have yet to decide if they will reopen the case, Halifax Regional Police Const. John MacLeod said in an email Tuesday.
The report highlighted problems with how Parkstone cared for Chrissy Dunnington.
"There were gaps in the overall coordination and oversight of care of the resident, gaps in documentation, gaps in assessments, and limited consultations with internal/external health professionals," it said.
"Although the facility has comprehensive policies and best practice guidelines available to staff, there was evidence that staff were not following these policies and procedures on a consistent basis."
Parkstone responds
Parkstone Enhanced Care responded to the department's findings in a letter to its residents, families and staff last week.
It said it completed a review of its practices and has "implemented a number of enhancements" over the last two years, including a plan for improving wound care.
The facility plans to hold meetings with families, residents and staff to "listen to feedback and their perspective on how we can continue to improve."
The facility said it remains focused "on advocating for improved living environments and levels of care for younger people with complex health-care needs."
Dorothy Dunnington says she's pleased Parkstone is making improvements to their care, but she doubts this would have happened if her family hadn't gone public about her sister's death.
"They need to follow the standards, they need to actually be doing what they say they're going to do," Dunnington said.
Ottawa won't do impact assessment on Northern Pulp effluent treatment plan
Halifax police looking to hire more sergeants to help with complaints, lock-up supervision
RCMP investigating suspicious death in East Preston
After rough start, 'donations just started pouring in' for group that helps those in need
Sidney Crosby donates gear to hockey access programs in Nova Scotia
Anjuli Patil
Anjuli Patil is a reporter and occasional video journalist with CBC Nova Scotia's digital team.
With files from Elizabeth McMillan
CBC's Journalistic Standards and Practices|About CBC News
Corrections and clarifications|Submit a news tip|
To encourage thoughtful and respectful conversations, first and last names will appear with each submission to CBC/Radio-Canada's online communities (except in children and youth-oriented communities). Pseudonyms will no longer be permitted.
By submitting a comment, you accept that CBC has the right to reproduce and publish that comment in whole or in part, in any manner CBC chooses. Please note that CBC does not endorse the opinions expressed in comments. Comments on this story are moderated according to our Submission Guidelines. Comments are welcome while open. We reserve the right to close comments at any time.
Become a CBC Member
Join the conversation Create account


I'm one of those people who has a weird fact for every occasion. I can't seem to help collecting them and I love learning new ones. Most of my friends put up with it, some are even interested, and those special few make sure to include me on their team for trivia nights.
1. Since 1971, Lake Superior State University has issued Unicorn Hunting licenses.
The idea for the Unicorn Hunters was created by the late Bill Rabe, who had signed on as the school's new Director of Public Relations, and it resulted in many events that still live on today.
One of the most popular events is the annual snowman burning on the first day of spring.
The snowman is usually 10-12 feet tall and made from wood and paper destined for recycling. Sometimes it's filled with firecrackers that are set off by the flames.
Do you wanna burn a snowman?
2. There is a museum dedicated entirely to miniature books.
Located in Baku, Azerbaijan, the museum is the only one of its kind in the world. The oldest book in the collection is a miniature Quran from the 17th Century, and the smallest book is The Most Miraculous Thing, a Russian book measuring only 6mm x 9mm.
Is this a random thing to know? Yeah, but sometimes the most random facts are the most interesting.
3. Elephant foot bones look remarkably like human feet.
Elephants have six toes and an arch much like a human foot. A thick cushion helps balance the weight of the animal and makes it look like they're walking on fatty wedge heels.
4. There was once a duel where the opponents shot from hot air balloons with blunderbusses.
After learning that they had both been enjoying the company of a dancer from the Paris Opéra, Monsieur Le Pique and Monsieur de Grandpré decided that a regular duel wasn't good enough for them.
Since they felt that pistols wouldn't work well for this kind of duel, they agreed on switching to blunderbusses.
The shotgun-like weapons weren't very accurate at a distance, though. Le Pique missed entirely, but de Grandpré's shot hit his opponent's balloon and Le Pique died in the crash.
5. Picasso's full name was Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Cipriano de la Santísima Trinidad Ruiz y Picasso.
6. Cruciform keys are common on safes, but not really more secure.
You might also recognize their distinctive cross look from steering wheel locks. They are more difficult to pick, since they have four times the number of pins compared to a basic lock, but it'll barely slow down a professional.
7. Fatal Insomnia is a disease that actually exists, though it's thankfully rare.
The most common form of the disease is inherited, with about 25 known family lines carrying the gene that could cause its development. As of 2005, only 9 cases of the disease were reported that were unrelated to the inherited gene.
One of the most well known cases is that of Michael Corke, an American music teacher who died in 1993 after not sleeping for more than six months.
Shortly after his 40th birthday, Corke began to have trouble sleeping and the problem continued until he eventually couldn't sleep at all. He was first misdiagnosed with multiple sclerosis, but doctors were baffled.
They eventually tried to induce a coma, but even that wouldn't work, and Corke unfortunately passed away.
8. Figs are actually inverted flowers.
Unlike most fruit trees, which have flowers bloom before the formation of the fruit, the flowers of the fig tree bloom within a pod. Each pod contains many small flowers that become single seed fruits within the pod as it ripens.
Because the flowers are inverted, bees and other pollinators can't reach them.
9. Fig wasps have a symbiotic relationship with the fruit they are named for.
Female fig wasps enter male figs, where they lay their eggs. When the young wasps dig their way out, they bring the pollen out with them.
Don't worry. We only eat female figs, so there isn't a risk of eating fig wasps by accident.
10. Many greenhouses now use purple light to grow crops, which can do funny things to the sky.
It takes a lot of electricity to light a greenhouse, but most of that light is wasted. Crops really only use the red and blue parts of the spectrum. So, by switching to low-power LEDs in only those colors, tons of energy can be saved and the crops grow better.
Unfortunately, on a cloudy night, this can turn the sky a funky shade of purple.
11. Sea otters hold hands while sleeping so that they don't drift apart.
This is particularly true for mothers and pups. They've also been known to use kelp to tie themselves together for extra security.
12. Many tropical white sand beaches are mostly fish poop.
Specifically, the poop of the bumphead parrotfish. They eat algae scraped and chewed off of coral reefs. The coral skeletons are ground up in their digestive track and are pooped out as the beautiful white sand so prized by vacationers.
13. The first version of Kermit the Frog was made from an old spring jacket and two ping pong ball halves.
The coat had belonged to Jim Henson's mother. Kermit appeared first on the showSam and Friends in 1955, where he was just a lizard-like creature. Once his character was more established, his neck frill was added to make him look more frog-like and to hide the seams.


text:
The United States Air Force's  3rd Combat Communications Group (3 CCG) was a United States Air Force combat communications unit located at Tinker AFB, Oklahoma.

The 3 CCG inactivated 30 September 2013, affecting more than 700 military billets.

Media reports state that the 3 CCG was inactivated by order of the 2013 National Defense Authorization Act. However, no part of the act addresses the inactivation of the unit and no Air Force communications or tactical comm-electronics budget requests were denied by Congress.

Squadrons
 31st Combat Communications Squadron
 32nd Combat Communications Squadron
 33rd Combat Communications Squadron
 34th Combat Communications Squadron

History
With Allied victory in Europe and the end of World War II came the demobilization and withdrawal of all US Air Force units from the United Kingdom. Their absence, however, was short lived. In 1948, in response to the Berlin blockade, the US deployed long-range B-29 strategic bombers to four East Anglian bases. In early 1951 growing size and complexity of the American military presence required a larger command and organizational structure that could meet the needs of the increased operations (both strategic and tactical.) Third Air Force was activated on 1 May 1951 to oversee tactical air operations from the United Kingdom and provide logistics and support to the Seventh Air Division. The 3rd Combat Communications Group lineage stems from the 3rd Communications Group, which was active in South Ruislip, England, as part of the Third Air Force.  The 3rd Communications Group was established on 16 May 1957 and was activated on 8 July 1957. At the times of its activation in 1957 the 3rd Communications Group consisted of the 603rd Communications and the 605th Communications Squadrons.

The 1960s saw continuous fluctuations in the US Air Force presence in the United Kingdom. In 1961, some bases were returned and numbered air force activities merged. Support squadrons were eliminated at South Ruislip. On 1 July 1962 the 3rd Communications Group was inactivated.
The 3rd was then reactivated and redesignated as the 3rd Mobile Communications Group on 20 May 1964.

On 1 July 1964, the 3rd Mobile Communications Group organized at Tinker Air Force Base, Oklahoma, and assigned to the Air Force Communications Service (later, Air Force Communications Command (AFCC)) (AFCS G-28, 26 May 1964.) Under provisions of AFP 210-1-4, the 3rd Mobile Communications Group inherited the history, awards and emblem of the 3rd Communications Group. The 3rd Mobile Communications Group took the void of the 3rd Airways and Air Communications Service Mobile Squadron that was established at Tinker AFB, OK on 1 December 1952. Upon establishment of AFCS, the 3rd AACS was redesignated 3rd Mobile Communications Squadron (AFCS G-2, 1 July 61), but unfortunately would not be incorporated into the 3rd Mobile Communications Group history and awards. Although no former recognized lineage with the 3rd AACS and 3rd Mobile Communications Squadron exist, it shares a common history of people, equipment and Tinker AFB.
Upon its early reactivation in the continental United States it incorporated the 1869th Facility Checking Squadron, 1 October 1966 – 1 September 1971; 7518th Communications Squadron and the 7519th Communications Squadron, 1 September 1959 – 1 July 1962. Over the years it was redesignated many times: on 24 March 1976 it was designated the 3rd Combat Communications Group; on 15 August 1984 it was designated the 3rd Information Systems Group; and returned to the designation 3rd Combat Communications Group on 1 October 1986. Since 1964 it has been assigned to various organizations of the Air Force Communications Service/Command, on 1 October 1990 it became part of the Tactical Air Command, and then Air Combat Command.

On 5 October 2009, the 3rd CCG was realigned underneath the newly activated 689th Combat Communications Wing, headquartered at Robins Air Force Base, Georgia. With this realignment, the group now fell under the Twenty-Fourth Air Force and Air Force Space Command.

The 3rd Combat Communications Group inactivated on 30 September 2013.

Assignments
 8 July 1957 – Activated under the Third Air Force as the 3rd Communications Group
 1 July 1962 – 3rd Communications Group inactivated
 20 May 1964 – Reactivated as 3rd Mobile Communications Group
 Assigned to Air Force Communications Command
 24 March 1976 – Designated 3rd Combat Communications Group
 15 August 1984 – Designated 3rd Informations Systems Group
 1 October 1986 – Redesignated 3rd Combat Communications Group
 1 October 1990 – Assigned to Tactical Air Command (to be later acquired by Air Combat Command)
 5 October 2009 – Realigned underneath the 689th Combat Communications Wing, Twenty-Fourth Air Force, Air Force Space Command
 30 September 2013 - Inactivated

Major command
 Air Force Communications Command (1964–1990)
 Tactical Air Command (1990–1992)
 Air Combat Command (1992–2009)
 Air Force Space Command (2009 – 2013)

Commanders
 Maj James M Dunn (May 1957 – Jun 1961)
 Lt Col Gilbert H Bertie (Jun 1961 – Jun 1962)
 Lt Col Stanley J Washuk (Jun 1962 – May 1964)
 Lt Col John R Coonan (May 1964 – Jul 1964)
 Col William T Judkins (Jul 1964 – Dec 1965)
 Col John T Ford (Dec 1965 – Aug 1968)
 Col Ralph E McDaniel (Aug 1968 – Sep 1969)
 Col Francis W Fender (Sep 1969 – Mar 1971)
 Col Robert W Pool (Mar 1971 – Apr 1973)
 Col John D Nolan (Apr 1973 – Dec 1973)
 Col Lowell F Bohn (Dec 1973 – Jun 1976)
 Col Paul W Edwards (Jun 1976 – Jul 1978)
 Col Ronald H McKinney (Jul 1978 – Sep 1980)
 Col James Selph (Sep 1980 – Dec 1982)
 Col Gerald L Boynton (Dec 1982 – May 1984)
 Col Phillip J Lurie (May 1984 – Jan 1986)
 Col Buford R Witt (Jan 1986 – Jul 1988)
 Col Carl E Stoops (Jul 1988 – Aug 1990)
 Col Robert A Allen Jr (Aug 1990 – Jul 1992)
 Col Dale W Meyerrose (Jul 1992 – Jun 1994)
 Col J D Wells (Jun 1994 – May 1995)
 Col Stephen R Quick (May 1995 – Jul 1997)
 Col David J Kovach (Jul 1997 – May 1999)
 Col Daniel R Dinkins (May 1999 – Jul 2001)
 Col Gregory L Brundidge (Jul 2001 – May 2003)
 Col Carl Williamson (May 2003 – Apr 2005)
 Col Tracy A Amos (Apr 2005 – Feb 2006)
 Col James H Appleyard Jr (Mar 2006 – Apr 2008)
 Col Thomas A Byrge Jr (Apr 2008 – Jun 2010)
 Col David S Babyak (Jun 2010 – June 2012)
 Col Matthew C Harris (Jun 2012 – Sep 2013)

Decorations
 Air Force Outstanding Unit Award
 1 July 1960 – 1 February 1962 (DAFSO G-92/62)
 1 January 1965 – 31 December 1966 (DAFSO GB-239/67)
 1 May 1970 – 31 December 1971 (DAFSO GB-407/74)
 1 January 1972 – 31 December 1972 (DAFSO GB-602/73)
 1 January 1974 – 31 December 1974 (DAFSO GB-682/75)
 1 January 1975 – 31 December 1975 (DAFSO GB-955/76)
 1 January 1978 – 31 December 1978 (DAFSO GB-635/79)
 12 November 1984 – 3 June 1985 (DAFSO GB-61/85)
 1 January 1986 – 31 December 1987 (DAFSO GB-433/88)
 1 May 1990 – 30 April 1992 (TAC SO GA-50/92)
 1 April 1992 – 31 March 1994 (ACC SO GA-325/94)
 1 April 1994 – 31 December 1994 (ACC SO GA-307/95)
 1 January 1995 – 31 May 1996 (ACC SO GA-83/96)
 1 June 1996 – 31 May 1997 (ACC SO GA-61/97)
 1 June 1997 – 31 May 1999 (ACC SO GA-56/99)
 1 June 1999 – 31 May 2001 (ACC SO GA-88/01)
 1 June 2001 – 31 May 2002 (ACC SO GA-091)
 1 June 2007 – 31 May 2008
 Armed Forces Expeditionary Streamer for GRENADA 1983 (AFP 900-2, AFMPC/DPMASA ltr, dtd 3 June 1990)
 Air Force Meritorious Unit Award
 1 June 2003 – 31 May 2005 (USCENTAF G-0372)
 2008
 Maj. Gen. Harold M. McClelland Award (2005 AF level)

History Site
Please visit www.3rdherd.org for articles, pictures, and stories about the Herd for historical purposes.
There will be pictures, videos, and an archive of material for viewing, editing and contributing.

References

Military units and formations in Oklahoma
Combat Communications 0003

redpajama_set_name: RedPajamaWikipedia


Not only was there significant structural damage to the area (see the last post) but also cosmetic damage. The beaches look very different with huge amounts of wood from the felled trees and all over the area you can still see the effects of the storm. The small river that runs behind the BI offices had also flooded and deposited litter all over the road.Thankfully help was at hand with 50 willing pairs of hands and a few big rubbish bags.
The Jujurhu preschool children went out for an hour and transformed the look of the place. It also taught them a good lesson about how much better somewhere looks without litter!
If only all the after effects of the storm were as straightforward. We have spent much of last week compiling lists of the damaged property and sending them to the relevant government departments. We'll keep you posted with the progress.


text:
Home » All Things Gypsum: Calculated Fire Ratings in the Building Codes
All Things Gypsum: Calculated Fire Ratings in the Building Codes
Michael Gardner
Our December 2006 column titled, "Using a Gypsum Board Membrane System for Fire Resistance" generated a couple of phone inquiries. The gist of both calls indicates that the column may have been a bit too brief in its explanation of membrane fire ratings.
The column focused on the use of a membrane system for providing fire-resistance and explained the situations where the use of such a system might be appropriate. It also described three membrane protection systems that are published in GA-610, Fire Resistance Provided by Gypsum Board Membrane Protection, a two-page document that is available from the Gypsum Association.
A topic the December column did not address, an issue that was brought to light by the phone inquiries, is the use of a calculated method for determining the fire resistance of a gypsum-clad system. Both callers indicated that they had heard rumors about the existence of a calculated method for determining fire-resistance ratings, but neither knew where to find any information about it. Both were faced with a rating situation that was not answered by a standard fire test report or the information in GA-610.
Calculating fire-resistance
Specifically, a method for calculating a fire-resistance rating for a gypsum board clad system has existed in model building codes for many years–most notably in the Uniform Building Code–and was integrated into the International Building Code (IBC) when it was first published in 2000. Unlike a fire rating established by a fire test, a fire rating derived through the use of a calculated method uses "specific materials or combinations of materials" to establish the fire-resistance of a system. No ASTM E119 or equivalent test is involved in the process; rather, individual materials or systems are assigned standardized fire ratings based on established precedent. The individual ratings typically are summed to create a system rating.
Section 721 of the IBC summarizes a calculated process and describes a series of methods for calculating the fire-resistance of systems incorporating materials such as concrete, masonry, steel, and clay masonry. Specific methods for calculating the fire-resistance of a wood assembly that is clad with gypsum board are written into Section 721.6 of the IBC along with language that provides direction on calculating the fire-resistance of exposed wood members–specifically timber beams and columns with a 6-inch minimum nominal dimension.
The method described in Section 721.6 of the IBC provides another approach for calculating a fire-resistance rating for a gypsum-clad assembly beyond that described in GA-610 or a published E 119 (or equivalent) fire test. Caution is suggested, however, when using the process, for it can be somewhat confusing in application. Both of the individuals who inquired about the calculated method and its relationship to the December 2006 article quickly focused on two specific issues, both of which immediately pinpointed some of the common confusion with the calculated method.
A common misconception
First, the calculated method is applicable for use only when calculating a rating for the fire-exposed side of a system. Section 721.6.2.1. is clear in this regard when it states "(t)he fire-resistance rating of a wood frame assembly is equal to the sum of the membrane on the fire-exposed side, the time assigned to the framing members and the time assigned for additional contribution for other protective measures such as insulation. The membrane on the unexposed side shall not be included in determining the fire resistance of the assembly."
This is no different than the intent of GA-610; nonetheless, there seems to be a common misconception that the individual material ratings in the IBC can be added together to create a full system (i.e., a wall clad on both sides) rating. Section 721.6.2.1. clearly prohibits that and while a fire rating certainly could be calculated for a wall that is clad on both faces, the calculated rating could not use the membrane on the non-fire exposed face of the partition as a part of the calculation.
Second, unlike GA-610, the information in the IBC is applicable for use only with wood frame systems that are installed with studs spaced not more than 16 inches on center. Again, Section 721.6 is very clear in this regard in both its charging and specific language. The three systems described in GA-610 do not contain the same restriction and may be applied to standard wood or steel framing members spaced as required by the document.
Section 721.6 also allows for the addition of time to the calculation when mineral fiber insulation is installed in the stud cavity. GA-610 does not. Both methods require system joints to be finished with compound.
Mention of the calculated method typically generates a significant amount of discussion (and angst) among gypsum industry technical gurus, for the results obtained through the use of the calculated method don't seem to dovetail all that well with those obtained from a standard fire test. As an example, the calculated method assigns a 10-minute fire rating to an individual layer of 3/8-inch-thick regular gypsum wallboard and a 20-minute rating to the wood studs to which the wallboard would be attached. Using the calculated method, and summing the parts, one could "calculate up" a 60-minute rating by applying four layers of 3/8-inch wallboard (40 minutes) on one side of a wood stud wall (20 minutes). While that would result in a healthy 1 and 1/2 inches of gypsum on one side of a row of studs, you would be hard pressed to find the fire test documentation that would support the calculation. In addition, while Section 721.6 does contain some information on fastener type and spacing via reference to other sections of the code, it provides no guidance on joint spacing or stagger between the individual layers of installed board. A system installed with a "through joint" clearly would have suspect performance abilities.
Our experience is that caution should be exercised when using the calculated method since it can be misapplied and misinterpreted, and it may not be fully supported by conventional fire testing research. However, it is a part of accepted code language, and it does have some limited applications as an approach of last resort. When all other options have failed, the calculated method can be used to resolve a specific problem.
As always, the Gypsum Association recommends the use of a system tested in accordance with the ASTM E 119 method or its equivalent. A variety of resources–including GA-600, Fire Resistance Design Manual–exist where design information for fully tested systems may be obtained.
Recent Articles by Michael Gardner
Integrating BIM for Long-term Benefits
Issues with Walls and Fire-Rated Floor Ceiling Systems
Product Category Rules for Gypsum Board
Two Big Changes to Levels of Gypsum Board Finish
Curved Walls and Control Joints
Michael Gardner is the president of M Gardner Services LLC, a consulting firm that assists organizations with issues involving industry standards and building codes, meeting management, and external collaboration and outreach. Prior to establishing MGS, he was the executive vice president of Compliance Programs for the International Code Council. He is also the former CEO of the Gypsum Association, currently serves as a special technical advisor to the Wall & Ceiling Alliance and can be reached at michael@mgardnerservices.com.
All Things Gypsum: Finishing Joints in Fire-Rated Construction, Part II
All Things Gypsum: Redux: The Meaning of Fire Resistance Ratings
All Things Gypsum: Penetrating Fire-Rated Gypsum Board Ceiling Systems
What Do Fire Resistance Ratings Mean?
Building Codes Illustrated: A Guide to Understanding the 2018 International Building Code, 6th Edition
Applying the Building Code: Step-by-Step Guidance for Design and Building Professionals
The Williams Brothers Corp.
Fire Trak Corp.
PABCO Gypsum
Foundation Building Materials, South Bend, IN


text:
Whitebark Pine Ecosystem Foundation of Canada (WPEF-C)
The WPEF-C is devoted to the conservation and stewardship of whitebark and limber pine ecosystems through partnerships, science-based active management, restoration, research, and education.
info@whitebarkpine.ca
Whitebark Pine Ecosystem Foundation of Canada
Kimberley, BC V1A 2M6
Call us at 250-421-7910 | Email info@whitebarkpine.ca
Why Does Whitebark Pine Matter?
Recovery & Restoration
Ski Area Certification
Need Seed?
Seedling Planning & Registry Application
Ecology & Management
Nutcracker Notes
Randy Moody
Ecologist | Kimberley, BC
Randy is a leading provincial expert in whitebark and limber pine and has worked on related conservation and restoration projects throughout British Columbia. He has developed whitebark pine recovery plans, implemented planting programs, established permanent monitoring plots, designed prescribed burns and treatments for whitebark pine restoration, and conducted numerous research studies. Randy also has considerable experience with industrial and small-scale native plant restoration and reclamation, including hydroelectric reservoirs. In addition, he has managed and implemented varied ecosystem mapping projects over his career as an ecologist. Randy holds a Masters degree in Forest Science as well as a Bachelors degree in Natural Resources Conservation from UBC and is a registered Professional Biologist.
Jodie Krakowski
Forest Genetics Specialist | Edmonton, AB
Jodie works with the Forest Health and Adaptation Section of the Forest Stewardship and Trade Branch, Agriculture and Forestry, based in Edmonton. As co-chair of the provincial whitebark and limber pine recovery team, she collaborates to implement the provincial recovery plans. She also works on gene conservation of native forest species, and applied forest genetics projects and policy. She spent most of her career gallivanting around the forests of beautiful BC as a consultant, terrestrial ecologist, forester, and research scientist with UBC and with the B.C. Forest Service. She might be exploring in the mountains if you're looking for her.
Joanne Vinnedge
Biologist | Fort St. James, BC
Joanne is newly-retired! She holds a BSc and MSc from the University of Victoria, and is a Registered Professional biologist. Her extensive work career involved the management and protection of fish, wildlife and habitat values with a focus in recent years on whitebark pine, caribou, mountain goat and grizzly bear. Joanne grew up in the Fort St. James area, and for years has been a keen advocate for the management of both whitebark pine and Douglas-fir at the northern limit of their distribution in North America. She volunteers as an Important Bird Area caretaker, Christmas Bird Count compiler, and sled dog race organiser. Being retired, she will now have more time to devote to whitebark pine recovery, birding, canoeing and poking around in the bush.
Alana Clason
Research Associate | Smithers, BC
Currently with the Bulkley Valley Research Centre, Alana completed her PhD at the University of Northern BC in 2017, focusing on understanding the northern range limit of whitebark pine, and what that means for range shifts under climate change. She completed her MSc in summer 2010 at the University of Alberta, working on whitebark pine ecology and resilience at the NW edge of its range. Originally from Ottawa, Alana fell in love with the west and put her roots down in Smithers, a beautiful and vibrant community in the NW. When not behind a computer, she loves exploring the outdoors in and around her hometown.
Forest Pathologist | Nelson, BC
Michael Murray is a forest pathologist for the BC Ministry of Forests, Lands, Natural Resources and Rural Development in Nelson, BC. Michael is a Board Director of both the USA and Canadian Boards of Directors for the WPEF. He received his Ph.D in whitebark pine fire ecology-forest health from the University of Idaho, an M.S degree in natural resources from Humboldt State University in Arcata, California and is a Professional Agrologist. Michael's interest include whitebark pine dynamics and long term monitoring, climate driven tree declines, and ameliorating forest root diseases. Michael broadcasts cosmic country, kung fusion, freak folk and more on his weekly radio show and continues his quest to muster pleasing sounds on pedal steel guitar.
Don Pigott
Founder | Ladysmith, BC
Don Pigott has worked in silviculture within BC, and internationally, for over 50 years. He worked in the Forest Research department of MacMillan Bloedel for 13 years before founding Yellow Point Propagation in 1982. His company is involved in silviculture and tree improvement consulting, gene conservation, and cone and seed collection and processing. For the past 20 years Don has been involved in gene conservation of whitebark pine, and several other BC tree species considered to be priorities for both in situ and ex situ gene conservation. If it were not for his young grandchildren, he would probably be living in the Valdivian rainforest in Chile.
Adrian Leslie
Project Manager | Nelson, BC
Adrian is the West Kootenay project manager for the Nature Conservancy of Canada. He has been working on whitebark pine research and restoration since 2003, initially with Parks Canada in the Rocky Mountain National Parks and then as an independent consultant. Adrian is particularly interested in assisting ecosystems adapt to changing climates and integrating active forest management with ecosystem restoration. His role at NCC includes managing Darkwoods, a 55,000 hectare property that contains a great deal of beetle killed and rust infected whitebark pine, where he intends to restore a glorious and thriving whitebark haven full of happy nutcrackers and fat grizzlies. He holds a Masters of Science degree and is a Registered Professional Biologist.
Natalie Stafl
Fire and Vegetation Ecologist | Revelstoke, BC
Natalie is the Ecology Team Leader in Mount Revelstoke and Glacier National Parks. She works on forest health, ecosystem monitoring and restoration and supports the Parks Canada fire management program. Natalie received a master's degree in Zoology at UBC studying the impacts of hikers and a warming climate on American pika as well as a bachelor's degree in Natural Resources Conservation from the UBC Faculty of Forestry. She is also a Registered Professional Biologist. Along with her colleagues in the mountain national parks, Natalie coordinates whitebark pine recovery efforts and monitors long term health transects. She is interested in the conservation of ecosystems and their natural processes and can be found recreating in in the mountains in her spare time. On the occasional Wednesday, Natalie can be found making Stafl's Waffles.
Robin Gutsell
Wildlife Status Biologist | Edmonton Alberta
Robin Gutsell has been a Biologist with the Government of Alberta since 1999, working in the province's Species at Risk program. Robin co-leads recovery of whitebark and limber pine for Alberta, working with many fantastic partners to implement recovery actions for both species.
The rest of the time, she specializes in the status assessment of wild species and engages in other odd jobs for the program. Robin holds a Master of Science degree in biology (behavioural ecology, great blue herons) from Simon Fraser University, and a Bachelor of Science (zoology) from University of Guelph. In her spare time, she hikes, camps, canoes, cross-country skis and
gardens whenever she can with her husband, daughter and Norwegian moose dog (elkhound).
Mindy Skinner
Resource Management Officer | Revelstoke, BC
…Wait for it!
Want to Be on the Board?
Visit our U.S. ally, the WPEF
© Copyright Whitebark Pine Ecosystem Foundation of Canada | 2020


text:
We watch Fox so you don't have to!
Steve Doocy & Homophobic, Court-Martialed Ex Navy Chaplain Advance Fox War On Atheists
Posted by Priscilla -25.80pc on April 26, 2012 · Flag
While Fox News has made a cottage industry of the so called, "war on Christmas," they are engaging in their very own war against atheists. Given that the Christian right hates atheism, it's not surprising that Jesus' very own "news" network's utilizes Jesus' very own BFF's on Jesus' very own morning show,Fox & Friends, to reinforce the message that evil atheists are out to destroy Jesus' very own nation. The patented fear of atheist card is trump in the Fox & Friends deck. We've been told that atheists could take over Christian groups at Vanderbilt U. We've been warned that atheist highway and bus signs are "a war on God." And when atheist groups go after Christian crosses on public lands, the morning Christian soldiers unsheathe their vorpal swords. This morning, Steve Doocy spoke with the homophobic, disgraced former military chaplain Gordon Klingenschmitt about how atheists have forced the Air Force to remove bibles from the checklist of hospitality requirements for Air Force Inn lodging suites. I was hoping that Klingenschmitt would talk about his exorcism of a gay woman soldier who was raped. He didn't. Bummer.
The title of the video says it all: "Air Force Caves To Atheists." Good Christian warrior Steve Doocy reported that "the bibles that you see in hotels and motel rooms" could be "going away at least at US Air Force bases because the service is bowing to pressure from an atheist group." The agitprop chyron framed anti-atheist message of the day: "Losing Its Religion, Air Force Bowing To Atheist Pressure." He introduced Gordon Klingenschmitt, a former Navy chaplain who was court-martialed and dismissed from the Navy because of his refusal to stop invoking Jesus' name at military events attended by non-Christians. He also violated Navy rules when he protested these orders, while wearing his uniform, outside the White House. He claims that Al Franken' support of anti-bullying legislation will result in teens being recruited into self hating homosexuality which will result in more suicides. Suffice to say that he freaked out about the repeal of DADT which, he thinks, will lead to "sodomites" demanding "extra homosexual bonus pay." (Seriously!) He also says that praying for God to hurt people is just ducky.
Doocy introduced Klingenschmitt, head of (LOL) the "Pray in Jesus Name Project," who blessed Doocy "in Jesus name." Doocy said that an atheist group objected to bibles being on base housing." (Wrong - not housing but lodging rooms in Air Force Inns). Klingenschmitt reported that those who service the rooms will no longer be required to replace the bible. He ranted about how "atheist complainers" are "against God and the Bible, Christianity" and are "infringing on the rights of 85%" of troops who are Christians. The chyron: "Caving To Atheists? Air Force Rids Checklists for Bibles." When he said that if troops have a right to a chaplain, they have a right to a bible, Doocy affirmed that "it's such a good point."
Klingenschmitt warned that atheists, who use the room, could trash the bible and (OMG) it won't be replaced and encouraged the audience to donate to the Gideons who will try to get on base to distribute more bibles. Steve said "sure" when Klingenschmitt opined that if a military person can get a bible in a hotel then they should be able to get them in these rooms. Agitprop chyrons: "Atheists One Step Closer, Bible to be Struck From AF Lodging Checklists." (WTF? closer to what?) and "Bible Takes A 'Thumping' Atheists Push AF to Nix It From Checklists." Klingenschmitt claimed that this is a "trend" of caving to atheists and cited several examples including stopping cadets from participating in "Operation Christmas Child." (a proselytizing "charity" run by Islamophobe Franklin Graham). Steve whined that "it's a long list and that's why you're concerned that that's why we're glad you joined us."
That ratings do not necessarily indicate quality of programming is demonstrated by the fact that while "Morning Joe" does not receive the ratings of "Fox & Friends" it's content is so much more - uh - rational. This morning, among other things, the Morning Joe crew talked with Richard Haas of the CFR about foreign affairs and with a former editor of Rolling Stone about Bob Dylan. Meanwhile, Steve Doocy has a one sided discussion (nothing new) attacking atheists. You didn't hear anything about the question of tax money being spent on bibles or the fact that non-Christians use the rooms. You also didn't hear anything about Klingenschmitt's dubious background. But in the interests of propaganda, who cares about silly details!
Follow @NewsHounds
truman commented 2012-04-26 15:08:56 -0400 · Flag
Klingenschmitt = little turdballs that the toilet paper misses.
NewsHounds posted about Steve Doocy & Homophobic, Court-Martialed Ex Navy Chaplain Advance Fox War On Atheists on NewsHounds' Facebook page 2012-04-26 14:54:31 -0400
Lakeview Greg commented 2012-04-26 14:35:07 -0400 · Flag
To paraphrase Maude Finley, "God will get them for that."
Lemmy Caution commented 2012-04-26 14:28:18 -0400 · Flag
If it's important for an individual to have a bible in their room….THEN BRING ONE. I fail to see where this is a big deal to anyone other than superstitous knuckle-draggers.
Warp Resident commented 2012-04-26 13:23:01 -0400 · Flag
Gordon Klingenschmitt… hmm, true to his name, he prayed for the death of a Jew (who happens to be an atheist): Michael Weinstein. http://godsownparty.com/blog/2009/10/imprecatory-prayer-is-a-weapon-and-mikey-doesnt-like-it/
mlp ! commented 2012-04-26 11:47:42 -0400 · Flag
Klingenschmitt???? And he's not FURIOUS with the gawd that allowed him to be named KLINGENSCHMITT?
He's obviously a loon…….but I suspect the name doesn't help!
Follow @NewsHounds on Twitter


text:
import ship
import copy
import random

class OrientationError(Exception):

    def __init__(self):
        pass

class Board(object):

    def __init__(self, row, coloumn):
        self.box = {}
        self.row = row
        name_len = len(str((row * coloumn) / 2)) + 1
        self.name = "|" + name_len * "_" + "|"
        self.coloumn = coloumn
        for i in range(row):
            for j in range(coloumn):
                self.box[(i, j)] = self.name

    def opponent_view(self):
        '''('self') --> str
        Return the board in a str form without showing ships'''
        test = ''
        shot_box = "|" + (len(self.name) - 2) * "#" + "|"
        shot_ship = "|" + (len(self.name) - 2) * "$" + "|"
        n = 0
        for items in range(self.coloumn):
            if len(str(items)) < len(self.name):
                test += "(" + str(items) + (len(self.name) - \
                                            len(str(items)) - 2) * " " + ")"
        for i in range(self.row):
            test += "\n"
            for j in range(self.coloumn):
                if (self.box[(i, j)]).strip() == self.name or\
                   (self.box[(i, j)]).strip() == shot_box or\
                   (self.box[(i, j)]).strip() == shot_ship:
                    test += ((self.box[(i, j)]).strip())
                else:
                    test += self.name
            test += '( %d)' % (n)

            n += 1
        return test

    def __str__(self):
        '''('self') --> str
        Return the board in a str form'''
        test = ''
        for items in range(self.coloumn):
            if len(str(items)) < len(self.name):
                test += "(" + str(items) + (len(self.name) - \
                                            len(str(items)) - 2) * " " + ")"

        for i in range(self.row):
            test += '\n'
            for j in range(self.coloumn):
                test += ((self.box[(i, j)]).strip())
            test += "(" + str(i) + ")"
        return test

    def fit_ship(self, len_ship, row, coloumn, orientation):
        '''(self, int, int, int, str) --> bool
        Return True if the ship fits into the board, Return False if not'''
        try:
            if orientation == "v":
                for x in range(row, len_ship + row):
                    if self.box[x, coloumn] != self.name:
                        return False

            elif orientation == "h":
                for y in range(coloumn, len_ship + coloumn):
                    if self.box[row, y] != self.name:
                        return False

            else:
                return False
        except KeyError:
            return False

        return True

    def placing_ship(self, len_ship, row, coloumn, orientation, name):
        '''(self, int, int, str, str) ---> None
        Replace key of self.box to name'''
        if orientation == "v":
            for x in range(row, len_ship + row):
                self.box[x, coloumn] = "|%s|" % (name)

        elif orientation == "h":
            for y in range(coloumn, len_ship + coloumn):
                self.box[row, y] = "|%s|" % (name)

        else:
            raise OrientationError

    def shot(self, position, ship):
        ''' (self, tuple, ship(class)) --> list or str or bool
        Replace the value of self.box[position] to |##| if the box is empty
        else return false and if the board does not contain particular ship,
        then return that ship in list form'''
        try:
            before = self.box.values()

            specific_ship = self.box[position]
            if self.box[position] == "|" + (len(self.name) - 2) * "#" + "|" \
               or self.box[position] == "|" + (len(self.name) - 2) * "$" + "|":
                return False

            if self.box[position] != self.name:
                self.box[position] = "|" + (len(self.name) - 2) * "$" + "|"
            else:
                self.box[position] = "|" + (len(self.name) - 2) * "#" + "|"

            after = self.box.values()

            for items in before:
                if items not in after and items != self.name:
                    ship.kill_ship(items)
                    return [items]

            if specific_ship != self.name:
                return specific_ship

        except KeyError:
            return False

    def max_ship(self, len_ship):
        '''(self, int) --> int
        Return the maximum ship that can be placed on the board'''
        box_copy = self.box.copy()
        number_ship1 = self.help2_max(len_ship, "h", "v")
        self.box = box_copy.copy()
        number_ship2 = self.help2_max(len_ship, "v", "h")
        self.box = box_copy.copy()
        number_ship3 = self.help_max(len_ship, "h", "v")
        self.box = box_copy.copy()
        number_ship4 = self.help_max(len_ship, "v", "h")
        self.box = box_copy.copy()
        number_ship5 = self.help3_max(len_ship, "v")
        self.box = box_copy.copy()
        number_ship6 = self.help3_max(len_ship, "h")
        self.box = box_copy.copy()
        number_ship7 = self.help4_max(len_ship, "h")
        self.box = box_copy.copy()
        number_ship8 = self.help4_max(len_ship, "v")
        self.box = box_copy.copy()

        return max(number_ship1, number_ship2, number_ship3, number_ship4,\
                   number_ship5, number_ship6, number_ship7, number_ship8)

    def random_placing(self, name, len_ship, k=0):
        '''(self, str, int, int) --> None
        Replace the self.box's value to name, the key is selected randomly'''
        while len(name) < len(self.name) - 2:
            name = name + '-'
        while k < 4:
            row = random.randint(0, self.row - 1)
            coloumn = random.randint(0, self.row - 1)

            if self.fit_ship(len_ship, row, coloumn, 'h'):
                self.placing_ship(len_ship, row, coloumn, 'h', name)
                return "Done"
            else:
                if self.fit_ship(len_ship, row, coloumn, 'v'):
                    self.placing_ship(len_ship, row, coloumn, 'v', name)
                    return "Done"
                else:
                    k += 1

        if k >= 4:
            for i in range(0, self.row):
                for j in range(0, self.coloumn):
                    orientation = "h"
                    if self.fit_ship(len_ship, i, j, orientation):
                        self.placing_ship(len_ship, i, j, orientation, name)
                        return "Done"

                    else:
                        orientation = "v"
                        if self.fit_ship(len_ship, i, j, orientation):
                            self.placing_ship(len_ship, i, j, \
                                              orientation, name)
                            return "Done"

                        else:
                            orientation = "h"

    def help_max(self, len_ship, first_orientation, second_orientation):
        row = self.row
        coloumn = self.coloumn
        x = 0
        y = 0
        number_ship = 0

        for i in range(0, row):
            for j in range(0, coloumn):

                orientation = first_orientation
                if self.fit_ship(len_ship, i, j, orientation):
                    self.placing_ship(len_ship, i, j, orientation, "po")
                    number_ship += 1

                else:
                    orientation = second_orientation
                    if self.fit_ship(len_ship, i, j, orientation):
                        self.placing_ship(len_ship, i, j, orientation, "po")
                        number_ship += 1

                    else:
                        orientation = first_orientation

        return number_ship

    def help2_max(self, len_ship, first_orientation, second_orientation):
        row = self.row
        coloumn = self.coloumn
        x = 0
        y = 0
        number_ship = 0

        for i in range(0, coloumn):
            for j in range(0, row):

                orientation = first_orientation

                if self.fit_ship(len_ship, j, i, orientation):
                    self.placing_ship(len_ship, j, i, orientation, "po")
                    number_ship += 1

                else:
                    orientation = second_orientation
                    if self.fit_ship(len_ship, j, i, orientation):
                        self.placing_ship(len_ship, j, i, orientation, "po")
                        number_ship += 1

                    else:
                        orientation = first_orientation
        return number_ship

    def help3_max(self, len_ship, first_orientation):
        row = self.row
        coloumn = self.coloumn
        x = 0
        y = 0
        number_ship = 0

        for i in range(0, coloumn):
            for j in range(0, row):
                orientation = first_orientation
                if self.fit_ship(len_ship, j, i, orientation):
                    self.placing_ship(len_ship, j, i, orientation, "po")
                    number_ship += 1
                else:
                    orientation = first_orientation
        return number_ship

    def help4_max(self, len_ship, first_orientation):
        row = self.row
        coloumn = self.coloumn
        x = 0
        y = 0
        number_ship = 0

        for i in range(0, row):
            for j in range(0, coloumn):
                orientation = first_orientation
                if self.fit_ship(len_ship, i, j, orientation):
                    self.placing_ship(len_ship, i, j, orientation, "po")
                    number_ship += 1
                else:
                    orientation = first_orientation

    def create_ship(self):
        '''(self)---> dict
        Return dictionary whih is inverted dictionary of self.box'''
        boats = {}
        for point in self.box:

            if self.box[point] not in boats and self.box[point] != self.name:
                boats[self.box[point]] = [point]
            elif self.box[point] in boats and self.box[point] != self.name:
                boats[self.box[point]].append(point)

            shot_box = "|" + (len(self.name) - 2) * "#" + "|"
            if shot_box in boats:
                del(boats[shot_box])

        return boats