Making a small investment now in the right water solutions for your property will also ensure you're better prepared for the inevitable dry spells that we'll see again in the near future.
2015 was another warm year in Brisbane—especially over the last three months as we all felt the impact of a strong El Niño.
In fact, it was Australia's fifth-warmest year on record, with mean temperatures almost a degree above average. And while we usually get a reprieve from the heat and dryness with a few summer downpours, our rainfall was also below average all year.
Queensland has had poor rainfall over our wet seasons for three years in a row now, so if you've been having trouble keeping your gardens and crops well-watered over the summer, it won't surprise you to know that we've also had below-average soil moisture throughout January.
Our water storage levels dropped all throughout last year with our poor rainfall, but thankfully, there's good news on the way: El Niño is showing a gradual decline, and we could be back close to our averages by the middle of the year.
While that's certainly good news for Brisbane's dry earth and struggling plants, there are a few things you can do to take advantage of the good rainfall we're expecting in the middle of the year.
While Brisbane normally sees less rain in Autumn than in the warm seasons, long-range forecasts are predicting our rainfall to move above average from April onwards. There's going to be a rough patch before that though, with March expected to deliver rainfall well below average—which isn't great news for our Autumn planting.
If you haven't been doing it already, adding fertiliser and mulching your garden will help to maintain moisture and nutrients in the soil, especially if you use ones with good volumes of trace elements. But if you're going to manage to keep your gardens greener beyond a very dry March, you should definitely consider water storage, and spend some time thinking about how to replenish and improve the moisture penetration and retention in your soil before your Autumn planting.
The availability of water is a long-term concern for Brisbane residents, whether you're sowing new crops, or just doing your routine Autumn garden maintenance. For a long-term water solution for protecting your property, plants, and animals against the unpredictable Brisbane weather, water tanks are a great option.
Gleam O'Dawn recommend and stock the highest quality water tanks and accessories available in Australia.
Water tanks can help you make the best of the rainfall we're expecting from April onwards. Autumn yard work in Brisbane—especially on acreage and rural properties—should be beginning very soon,and stored water is a great option to help you maintain your gardens and lawns throughout the dry patch until the rains set in.
If you don't already have a water tank on your property, now is a good time to get one. It could be just the thing to get you through the dryness of early Autumn this year, and it'll be filled and ready for use within a couple of months to safeguard you against the periods of drought that will inevitably follow the heavy rain we're expecting after April.
A stable water supply will keep your property perennially lush and fruitful—no matter what weather conditions and water restrictions will be falling on Brisbane in 2016.
With the right water tank for your property, you'll be ready for the long, hot months at the end of the year, with an ample supply of water for irrigating your gardens and lawns.
A good water tank won't just help your yard: it'll help you in many other ways. You'll save money on your utility costs. You'll have access to a reliable supply of water for household uses including drinking, hygiene, laundry and filling up swimming pools.
And you'll be able to ensure your stock animals, poultry and pets are hydrated throughout the dry spells. Over time, a good water tank could save you a lot of money, a lot of stock, and a lot of work hours—so it's an investment worthy of good consideration.
You need to choose the right type and size of pump to maintain the delivery and pressure of water you need for your home or property. There are options for both traditional and electronic pressure units.
You also need the right pipe varieties, pressures, and fittings to best move the water from where it's collected in your tank, into your home or other parts of your property.
Most tank accessories including inlet strainers, overflows and outlets are standard inclusions with the product. But there's a range of useful extra accessories available, including protective covers to prevent contaminants, and filters for pathogens and additives that purify the water supply to households.
If you're concerned about how a water tank will look on your property, you might be surprised to know they're available in a range of colours and styles, so you'll be certain to find one that will blend in with or complement your home.
Some of the reputable manufacturers who supply to us include Rapid Plas, Clark, Bushmans, Team Poly, whose products are made from virgin grade materials that are food and potable water safe, comply with stringent Australian quality standards and are guaranteed pro rata for 10 years.
And if you're concerned about getting your new tank to your property, don't worry—we've got you covered: delivery to your site is usually completely covered in the purchase price. Contact us or drop into our store,and our friendly staff will be happy to help you with informed advice on the installation, accessories and maintenance you need to get the right water tank for your property.
Get some professional advice from the team at Gleam O Dawn about the right type and size of tank for your property, to ensure that you're getting the best value for money, and the best use out of your unit.


text:
//
//  MMAutoRelatedEntity.m
//  MarshmallowOrmament
//
//  Created by Kelly Huberty on 8/14/14.
//  Copyright (c) 2014 Kelly Huberty. All rights reserved.
//

#import "MMAutoRelatedEntity.h"
#import "MMRelationship.h"
#import "MMAttribute.h"
@implementation MMAutoRelatedEntity

-(instancetype)initWithAutoRelationships:(NSArray *)relationships{

    MMRelationship * rel = relationships[0];

    if(self = [super init]){

        self.name = [rel.autoRelateName copy];

        [self.attributes addIndexForKey:@"name" unique:YES];

        [self deriveAttributes:relationships];

    }

    return self;

}

+(instancetype)autoRelatedEntityWithAutoRelationships:(NSArray *)relationships{

    MMAutoRelatedEntity * en = [[[self class] alloc]initWithAutoRelationships:relationships];

    return en;

}

-(void)deriveAttributes:(NSArray *)relationships{

//    MMAttribute * attribute = [MMAttribute attributeWithDictionary:@{@"name":[self attributeNameForRelation:]
//                                                                     @"classname":@"NSNumber",
//                                                                     @"primative":@"int",
//                                                                    }];

    for (MMRelationship * rel in relationships) {

        [rel log];

        NSString * localAttrName = [self localAttributeNameForRelation:rel];
        NSString * foreignAttrName = [self foreignAttributeNameForRelation:rel];

        MMAttribute * localAttribute = [self.attributes objectWithValue:localAttrName forKey:@"name"];
        MMAttribute * foreignAttribute = [self.attributes objectWithValue:foreignAttrName forKey:@"name"];

        if(!localAttribute){

            localAttribute = [MMAttribute attributeWithDictionary:@{@"name":[self localAttributeNameForRelation:rel],
                                                                         @"classname":@"NSNumber",
                                                                         @"primative":@"int"
                                                                         }];
            [self.attributes addObject:localAttribute];

        }

        if(!foreignAttribute){
            foreignAttribute = [MMAttribute attributeWithDictionary:@{@"name":[self foreignAttributeNameForRelation:rel],
                                                                             @"classname":@"NSNumber",
                                                                             @"primative":@"int"
                                                                             }];
            [self.attributes addObject:foreignAttribute];

        }

        /*
        if (rel.shareable) {
            localAttribute.unique = NO;
        }
        else{
            localAttribute.unique = YES;
        }

        if (rel.hasMany) {
            foreignAttribute.unique = NO;
        }
        else{
            foreignAttribute.unique = YES;
        }
        */

    }

}

-(NSString *)localAttributeNameForRelation:(MMRelationship *)relationship{

    NSString * name = [NSString stringWithFormat:@"%@__id", relationship.localEntityName];

//    if ([relationship onSelf]) {
//        name = [NSString stringWithFormat:@"%@__%@", relationship.name, name];
//    }

    return name;

}

-(NSString *)foreignAttributeNameForRelation:(MMRelationship *)relationship{

    NSString * name = [NSString stringWithFormat:@"%@__id", relationship.relatedEntityName];

    //[self.attributes objectWithValue:name forKey:@"name"];

//    if ([relationship onSelf]) {
//        name = [NSString stringWithFormat:@"%@__%@", relationship.name, name];
//    }

    return name;

}

@end

redpajama_set_name: RedPajamaGithub


text:
Editor::Editor()
{
    events.RegisterEvent("save");
    events.RegisterEvent("load");
    events.RegisterEvent("abort");
    events.RegisterEvent("atexit");

    _cursor = -1;
    _dirty=false;
    _arg = nullptr;
}

bool Editor::Load()
{
    EditorLoadedArgs arg(this);
    events.CallEvent("load", &arg, _mobile);
    return true;
}
void Editor::Save()
{
    _dirty=false;
    _mobile->Message(MSG_INFO, "saved.");
    EditorSavedArgs arg(this);
    events.CallEvent("save", &arg, this);
    return;
}
void Editor::Abort()
{
    _mobile->Message(MSG_INFO,"Aborting.");
    EditorAbortedArgs arg(this);
    events.CallEvent("abort", &arg, _mobile);
    LeaveEditor();
}
void Editor::Quit()
{
    if (!_dirty)
        {
            _mobile->Message(MSG_INFO,"Exiting editor.");
            LeaveEditor();
        }
    else
        {
            _mobile->Message(MSG_ERROR,"You have not saved your text. Please use \'s\', to save changes, or \'a\', to abort without saving.");
        }
}

void Editor::List(bool num)
{
    int i = 1;
    std::stringstream st;

    if (!_lines.size())
        {
            _mobile->Message(MSG_INFO, "Buffer is empty.");
            return;
        }

    for (auto it: _lines)
        {
            if (_cursor == i-1)
                {
                    st << "||";
                }
            if (num)
                {
                    st << i << ": ";
                }
            st << it << "\n";
            i++;
        }
    _mobile->Message(MSG_LIST,st.str());

    if (_cursor==-1)
        {
            _mobile->Message(MSG_LIST,"||");
        }
}

void Editor::Add(const std::string &line, bool quiet)
{
    std::stringstream st;
    std::vector <std::string>::iterator it;

    if (_cursor==-1)
        {
            _lines.push_back(line);
            if (!quiet)
                {
                    st << "Line " << _lines.size() << " added.";
                    _mobile->Message(MSG_INFO,st.str());
                }
            return;
        }
    else
        {
//the cursor is pointing to the insertion point; jump the iterator there and insert.
            it = _lines.begin();
            advance(it, _cursor-1);
            _lines.insert(it, line);
            if (!quiet)
                {
                    _mobile->Message(MSG_INFO,"Line inserted.");
                }
            _cursor++;
        }
}

void Editor::Insert(int index)
{
    std::stringstream st;

    if (index == 0)
        {
            _mobile->Message(MSG_ERROR, "Line out of range.");
            return;
        }
    if ((index==-1)||(index>=(int)_lines.size()))
        {
            _cursor=-1;
            _mobile->Message(MSG_INFO,"Cursor append to end of text.");
            return;
        }

    _cursor=index;
    st << "Insertion point set at line " << index << ".";
    _mobile->Message(MSG_INFO,st.str());
}

void Editor::Delete()
{
    std::vector <std::string>::iterator it;

    if (!_lines.size())
        {
            _mobile->Message(MSG_INFO,"Buffer is empty.");
            return;
        }
    if (_cursor==-1)
        {
            _lines.erase(_lines.end());
            _mobile->Message(MSG_INFO, "Deleted line.");
            return;
        }

    it = _lines.begin();
    advance(it, _cursor-1);
    _lines.erase(it);
    _cursor--;
    if (_cursor > ((int)_lines.size()-1))
        {
            _cursor = -1;
        }

    _mobile->Message(MSG_INFO,"Line erased.");
}
void Editor::Delete(int index)
{
    std::vector<std::string>::iterator it;
    int i=0;

    if ((index<=0)||(index>(int)_lines.size()))
        {
            _mobile->Message(MSG_ERROR,"Line out of range.");
            return;
        }

    it = _lines.begin();
    advance(it, index-1);
    _lines.erase(it);
    _mobile->Message(MSG_INFO,"Line erased.");

    if ((_cursor != -1) && (i < _cursor))
        {
            _cursor--;
        }
}
void Editor::Delete(int first, int second)
{
    int i=0;
    std::vector <std::string>::iterator top,bottom;

    if (((first>second)&&(second!=-1))||(first==second)||(first<=0)||(second>(int)_lines.size()))
        {
            _mobile->Message(MSG_ERROR,"Invalid range.");
            return;
        }
    if (second==(int)_lines.size())
        {
            second=-1;
        }

    for (top=_lines.begin(),i=0; i<first; top++,i++);
    if (second==-1)
        {
            bottom=_lines.end();
        }
    else
        {
            for (bottom=_lines.begin(),i=0; i<second; bottom++,i++);
        }

    _lines.erase(top,bottom);
    _cursor = -1; //we jump the cursor to the end.
    _mobile->Message(MSG_INFO,"Lines deleted.");
}

bool Editor::EnterEditor(Player* mobile)
{
    _mobile=mobile;
    _mobile->Message(MSG_INFO,"Entering editor. use \'h\' for help.");
    Load();
    LineHandler::CreateHandler(_mobile->GetSocket(), std::bind(&Editor::Input, this, std::placeholders::_1, std::placeholders::_2));
    return true;
}
void Editor::LeaveEditor()
{
    _mobile->GetSocket()->ClearInput();
    EditorExitedArgs arg(this);
    events.CallEvent("atexit", &arg, _mobile);
    delete this;
}

void Editor::SetArg(void* arg)
{
    _arg = arg;
}
void* Editor::GetArg() const
{
    return _arg;
}

std::vector<std::string>* Editor::GetLines()
{
    return &_lines;
}

void Editor::Input(void* arg, const std::string &input)
{
    int index=0;
    std::vector <std::string> tokens;

    if (input.empty())
        {
            return;
        }

    Tokenize(input,tokens);
//a list of lines
    if ((tokens[0]=="l")||(tokens[0]=="list"))
        {
            if ((tokens.size()>1)&&(tokens[1]=="#"))
                {
                    List(true);
                }
            else
                {
                    List(false);
                }
            return;
        }

//insertion
    if ((tokens[0]=="i")||(tokens[0]=="insert"))
        {
            if (tokens.size()==1)
                {
                    _mobile->Message(MSG_ERROR,"You must provide the line number where you want to place the cursor.");
                    return;
                }
            if (tokens[1]=="$")
                {
                    Insert(-1);
                }
            else
                {
                    index = atoi(tokens[1].c_str());
                    Insert(index);
                }
            return;
        }

//delete
    if ((tokens[0]=="delete")||(tokens[0]=="d"))
        {
            if (tokens.size()==1)
                {
                    Delete();
                }
            if (tokens.size()==2)
                {
                    Delete(atoi(tokens[1].c_str()));
                }
            if (tokens.size()==3)
                {
                    if (tokens[2]=="$")
                        {
                            Delete(atoi(tokens[1].c_str()),-1);
                        }
                    else
                        {
                            Delete(atoi(tokens[1].c_str()),atoi(tokens[2].c_str()));
                        }
                }
            return;
        }

//abort
    if (tokens[0]=="abort")
        {
            Abort();
            return;
        }

//help
    if ((tokens[0]=="h")||(tokens[0]=="help"))
        {
            _mobile->Message(MSG_INFO,"\t\tEditor help.");
            _mobile->Message(MSG_INFO, "\"[text]: insert a line. using \" by its self will append a blank line.");
            _mobile->Message(MSG_INFO,"i <index>: will place your cursor. Note: the insertion mark will appear on the line below your insertion point when you get a listing. i<$> will set the insertion mark at the end.");
            _mobile->Message(MSG_INFO,"D|d<line>|d<start> <end>: delete lines. d by its self will delete the line where the insertion point is located. Providing one argument will delete a specified line. You may also delete multiple lines, providing the start and end lines. You can substitute the '$' in any of these to signify the end.");
            _mobile->Message(MSG_INFO,"L <#>: will list the lines in the editor. Providing the optional '#' will show line numbers.");
            _mobile->Message(MSG_INFO, "t: enters text mode. This mode allows you to type all of your input without prefixing it with a \" character.");
            _mobile->Message(MSG_INFO, "H: shows this help.");
            _mobile->Message(MSG_INFO, "Q: Quit and prompt to save.");
            _mobile->Message(MSG_INFO,"A: abort without saving.");
            _mobile->Message(MSG_INFO, "s: Save changes.");
            return;
        }

//quit
    if ((tokens[0]=="quit")||(tokens[0]=="q"))
        {
            Quit();
            return;
        }

//save
    if ((tokens[0]=="save")||(tokens[0]=="s"))
        {
            Save();
            return;
        }

//enter text mode
    if (tokens[0] == "t" || tokens[0] == "text")
        {
            _mobile->Message(MSG_INFO, "Entering text mode. Use a '.' on a blank line to finish, or '@abort' on a blank line to abort.");
            std::vector<std::string>* text = new std::vector<std::string>();
            if (!TextBlockHandler::CreateHandler(_mobile->GetSocket(), std::bind(&Editor::TextInput, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3), text))
                {
                    _mobile->Message(MSG_ERROR, "Could not create textblock input handler.");
                    return;
                }
        }

//append line
    if (input[0]=='\"')
        {
            if (input.length()==1)
                {
                    Add("\n");
                    return;
                }
            if ((input[1]==' ')&&(input.length()>2))
                {
                    index=2;
                }
            else
                {
                    index=1;
                }
//we strip off the quote and add the rest.
            Add(input.substr(index,input.length()));
            return;
        }

    _mobile->Message(MSG_ERROR, "Unknown editor command. Use \'h\' for help.");
}
void Editor::TextInput(Socket* sock, std::vector<std::string>* lines, void* args)
{
    std::vector<std::string>::iterator ins;

    if (_cursor == -1)
        {
            for (auto it: _lines)
                {
                    _lines.push_back(it);
                }
        }
    else
        {
            ins=_lines.begin();
            advance(ins, _cursor-1);
            for (auto it: _lines)
                {
                    _lines.insert(ins, it);
                }
        }

    _mobile->GetSocket()->ClearInput();
    _mobile->Message(MSG_INFO, "Returning to editor.");
    delete lines;
}


text:
10 Years Later: Thunder Valley Celebrates Its First Decade by Looking Forward
The Oglala-led community development corporation looks for solutions that grow out of local experience. Food sovereignty, youth leadership, and social enterprise drive the organization, which has an ambitious plan to build a model sustainable community on the Pine Ridge Reservation.
Tribal AffairsFoodHealth
By Bryce Oates On Aug 18, 2017 Last updated Aug 17, 2017
As the organization celebrates its 10th anniversary, a Native American community development corporation started by young people is building an ambitious, authentically Lakota rural community from the ground up on the Pine Ridge Reservation.
"Whether it's food poverty, or the lack of jobs, or the huge housing shortage here at Pine Ridge, we start by asking why we haven't figured it out. Where are the gardens? Where are the homes? It's like no one had ever questioned these things," said Jennifer Irving, Director of Regional Equity for the Thunder Valley Community Development Corporation.
Thunder Valley describes itself as a "grassroots community development corporation guided by the needs and ideas of our community." The group was established by Lakota "young people that had young families," according to the group's website.
Today, those young people who helped start the organization, including Irving, are 10 years older. Irving served first as a board member and is now part of the staff. Irving said the organization is guided by asking systemic questions about making life better for the Oglala Lakota people of the Pine Ridge Reservation in southwest South Dakota.
To start, Thunder Valley turned inward, looking for homegrown solutions to the challenges faced by one of the most impoverished rural regions on the map. Oglala Lakota County has a 44.2% poverty rate and only a $9,150 per capita income, according to current data from the U.S. Census Bureau.
"From 2010 through 2012, we organized a series of community conversations that got input from everyone here, from the kids, from the elders, from our people who wanted to return home to Pine Ridge. The result is our vision for where we are going to go as a people, and a plan for how we'll actually build that vision into reality," Irving said.
One of the most important outgrowths of the regional planning effort is an ambitious project to construct a new village from the ground up, the Regenerative Community Development. During the next decade's buildout, the plans call for Thunder Valley's 34-acre site to establish 30 single family homes, 48 apartment units, a grocery store, artist studios, gardens and numerous public spaces. The community is designed to be sustainable, using renewable energy and efficient designs, as well as integrating traditional Lakota cultural wisdom.
Irving said the project, which held its groundbreaking ceremony in 2015, is moving ahead quickly. "This is not just some conventional housing development. We're basing everything on Lakota traditions and values with the needs identified by local people. That means life-giving spaces to live and work and play. That means solar and wind power. Places to grow gardens, and a grocery store, where you won't have to drive 45 or 50 miles to find one."
Thunder Valley's community is also built for economic development potential, looking to food production and artistic expressions of entrepreneurship for future growth.
"Why is that some of our most skilled Lakota artists can't afford to reap the benefits of the value of their work? It's because they can't access materials, maybe don't have the means to connect with the places that will pay them fairly, or they can't find studio space to work," said Irving. Thunder Valley is building 10 art studio spaces in the development to help address these needs, as well as providing workforce and entrepreneurship training to help with local skills development.
And though the project is a lot to take on for a 10-year-old nonprofit community development corporation, Irving says that Thunder Valley understands that Pine Ridge Reservation is not the finish line but a first step. "You have to start small, then show people what can be done. We know this is just a demonstration project, but we're trying to inspire the change our people have identified and build something real you can touch."
Thunder Valley held its 10-year anniversary celebration on Saturday, August 12, at their home in Porcupine, South Dakota. The event featured speakers, artists, musicians, food and other public events. More information is available on their website and on the Thunder Valley Facebook page.
By Bryce Oates
Bryce Oates150 posts 0 comments
Small-Town Consumers Had Little Choice in the Arrival – or Departure – of J.C. Penney
Rural Job Growth Continues Its Anemic Pace Compared to Metro
'Stereotypes Get in the Way' of Rural Nutrition Program, Says Head of National…
Roundup: We've Got the Connection Between Coal and Addiction Backwards, Researchers…
After Adding Telehealth in VFW Posts, Veterans Health Administration Now Puts Sites…
Are Insurers Making Rural Health Care Access Worse?

redpajama_set_name: RedPajamaCommonCrawl


WASHINGTON, D.C. – AdvaMed 2015: The MedTech Conference, the leading gathering of medical technology professionals in North America, and the MedTech Innovator competition have announced Briteseed, MedAware, MobileODT and uBiome as the four finalist companies in the year-long competition which will conclude with more than $300,000 in awards and prizes.
MedTech Innovator is a venture competition and accelerator, designed to foster transformative innovation that benefits patients and delivers improved value to the health care system. A strategic partnership between RCT Ventures, the Advanced Medical Technology Association (AdvaMed), and industry leaders, MedTech Innovator identifies and accelerates early-stage MedTech companies, including medical device, diagnostic, and digital health.
The finalist companies have developed innovative medical technologies to help diagnose diseases, prevent errors and increase patient safety and overall health.
•	Briteseed's technology SafeSnips facilitates the real-time detection and imaging of hidden blood vessels before surgical cuts are made.
•	MedAware leverages big data and sophisticated algorithms to provide patient-safety centered clinical decision support tools.
•	MobileODT creates advanced optical technology components that turn the smartphone into a mobile, affordable, and easy-to-use point-of-care tool to help detect cancer and capture a range of biomedical images.
•	uBiome is using microbial genomics and big data to understand the human microbiome and empower participants to explore and manage their microbiomes to improve their health.
Admission to MedTech Innovator 2015 began with the selection of 10 transformative technology themes identified in a MedTech Innovator/AdvaMed survey of 26 leading MedTech companies. These industry-selected themes guided the selection of 20 semi-finalist companies in June from a pool of nearly 300 applicants. The semi-finalists are currently participating in the MedTech Innovator virtual accelerator, a program designed to deliver strategic content and mentorship. The 2015 accelerator program will conclude with presentations by all 20 semi-finalists at AdvaMed 2015 in the Innovation Showcase on October 6, including the 4 finalists competing in the MedTech Innovator Finals.
The final round of the MedTech Innovator competition will be held during a plenary session at AdvaMed 2015 on Wednesday, October 7 at 7:00 a.m. The finalists will compete for the audience's vote and more than $300,000 in awards and prizes, which is supported by BD, RCT Ventures and the Johnson & Johnson Family of Companies.
More information on the MedTech Innovator competition can be found on www.medtechinnovator.com/2015, and further details on AdvaMed 2015 can be found on www.advamed2015.com.
Over the past three years, RCT Ventures has produced 6 medtech innovation competitions and innovation scholarships, with submissions to-date from more than 1,000 innovative medtech companies from around the globe. Competing companies are mentored by key industry stakeholders and the winners are selected by a real-time vote of the industry audience using their smartphones. RCT Ventures is an early-stage biomedical investment program of Tucson, Ariz.-based Research Corporation Technologies Inc. To learn more about RCT Ventures, visit https://rctech.com and follow @MedTechAwards on Twitter.


New Gural JCC Executive Director Aaron Rosenfeld with administrative assistant Randi Gottlieb speaking about an organizational issue.
Aaron Rosenfeld, the new executive director of the Cedarhurst-based Marion & Aaron Gural JCC in the Five Towns, was working as a lawyer in 2001, a profession he aspired to since the seventh grade, when he said he became the designated advocate for his schoolmates in debates with teachers over homework or other classroom issues.
Always involved with Jewish activities through his youth growing up in Interlaken, New Jersey (near Asbury Park), Rosenfeld, 51, was a volunteer with the then JCC of Greater Monmouth County in New Jersey, a vice chairman responsible for overseeing the housing of upwards of 1,200 youthful participants in the 2001 summer Maccabi Games, along with roughly 500 local competitors. His parents, Jerry sand Ruth, still live in Interlaken have always been benefactors of the JCC.
A couple of months later 9/11 occurred and that helped propel the one-time Jewish Day School student, who played baseball, basketball and tennis and grew up in a "warm, welcoming Jewish community," to become a Jewish communal professional. In December of 2001 he was named the executive director of the Greater Monmouth County JCC (now JCC Jersey Shore). A job he held for 9 and a half years.
Showing a lust for adventure, Rosenfeld and his family, which includes wife Judy, son Daniel, 17, and daughter Linda, 12, left the East Coast and he became the executive director of the JCC of Omaha in Nebraska in July 2011. Judy is from a tight-knit Sephardic-Syrian family in Brooklyn. But luckily the existence of one store swayed the decision.
After two years, the family returned to the New York area and Rosenfeld took the job as associate executive director of the then Samuel Field YM & YWHA in June 2013. A year later, he was promoted to executive director and then oversaw the merger of the Samuel Y and the Central Queens Y becoming the executive vice president & chief operating officer until taking the Gural JCC job.
"We are looking forward to Aaron's leadership to take the Gural JCC to even greater heights of success," Chairman of the Board Craig Spatz and JCC President Steven Bernstein said jointly in a news release.
Rosenfeld said he is meeting with community leaders to understand that the community needs and noted that the Gural JCC has existing unique programs ranging from Holocaust survivor groups to the early childhood center at the Harrison-Kerr Family Campus in Lawrence.


Every revolutionary idea evokes three stages of reaction: 1. It's completely impossible 2. It's possible but not worth doing 3. I said it was a good idea all along.
But the fact that some geniuses were laughed at does not imply that all who are laughed at are geniuses. They laughed at Columbus; they laughed at Fulton; they laughed at the Wright Brothers. But they also laughed at Bozo the Clown.
I tend to wake up at 7am and do half an hour of writing before having a cigarette and making a coffee. I feel that's the most fertile hour for ideas, when you are close to dreaming. I always keep a notebook by my bed and bring it up here every day.


Rick has Elite boxing, Sensational Muay Thai, Remarkable wrestling and holds a blue belt in Brazilian Jiu Jitsu.
2019-02-10- Rick Thomas celebrated his birthday - 28 today!
2018-11-17- Rick Thomas celebrated his birthday - 27 today!
2018-08-24- Rick Thomas celebrated his birthday - 26 today!
2018-08-08- Missed his flight as he was in the wrong location at 05:00 time today, GMT.
2018-07-11- Missed his flight as he was in the wrong location at 05:00 time today, GMT.


text:
After the Liechtenstein-Scotland game last Saturday, two Scottish players were taken into a small room inside the Rheinpark Stadion to produce urine samples for a drug test. UEFA didn't think the Scottish performance was so good it must have been drug-fuelled; it's just standard procedure after every international game to test two players from each team.
I think they should start testing the managers as well – because Craig Levein's post-match comments showed he was on something. He said he was "thrilled for the boys", "thrilled for the supporters", and that "we are in a position now which I would have taken at the start of the campaign."
I understand that he's the leader of the team and therefore that he needs to be peppy and positive. He'd be even less inspiring than he is if he broke down on camera, told the nation it was Donald Ducked, and admitted that there was nothing he could do. But a leader also has to be credible, and Craig's comments last Saturday evening made him sound more deluded than Ally McLeod ever was.
Thrilled? After a scrappy 1-0 win against a village team? This was the worst Scotland performance I've seen since Moldova, and Berti Vogts was fired for that.
Leaving the stadium after the game I didn't see too many kilted warriors "thrilled" with what they had just seen: a dismal game of football played in the cold Alpine rain, in a stadium where they served overpriced alcohol-free beer without telling you it was alcohol-free. The general consensus seemed to be "at least we didn't arse it up", and because of the alcohol-free beer this was a more sober observation than you often get from the Tartan Army.
A position he would have taken at the start of the campaign? Surely the *last* thing any hallucinogen-free manager would want is to need a win against Spain to guarantee qualification. In their own country. In a stadium where they've never lost. (He did point out that "we go there with quite a lot of supporters inside the stadium.")
Maybe he's just trying to bring back some of the Ally McLeod bravado: yes, we're Scotland, we can beat the world champions on their own patch, why not? After all, the odds against us beating Spain were 16/1, and there were 16 teams in the World Cup in 1978, so maybe we had as much chance of winning in Alicante as we did of winning in Argentina. God knows we are a miserable nation that could use a bit of optimism, but would Ally ever have played with just one striker against a country the size of Airdrie?
More suspect statements followed after the inevitable gallant defeat to the Spaniards. Looking back on the campaign Levein said we didn't hit our stride until after the first round of matches. In the second half of qualifying we narrowly beat Lithuania and Liechtenstein (games we should expect to win by more than one goal), drew with the Czech Republic (a game we needed to win), and lost to Spain (a game we were never going to win). Those aren't pass marks, and if he's happy with that we're going to continue our gentle slide down the seedings.
And that gets to the heart of it. After two years of his management, can we really say that Levein is the man to reverse that descent and get the Scotland side to Brazil in 2014, or France in 2016?
I don't think he is. But I'm not sure there's anyone we could get right now that would make it worth the bother of changing. Strachan? That would just be putting lipstick on a pig – or chapstick on a sheep. And while that might arouse an Aberdonian, it does nothing for me.
There are longer-term problems in Scottish football and we're stuck with Craig in the short-term. I just hope he seeks help for whatever it is he's taking.
 Archived in Sport, Scottish Football with Billy Williamson and tagged Craig Levein, Liechtenstein, Scotland, Scottish, video. Bookmark the permalink.
Alliyo says:
Alcohol free beer ? Blasphemous!
dalmoreboy says:
I have tried to install in my ten year old son the passion I have carried all my life for watching Scotland, however how can you dress up the football played by Leviens men? not playing a striker? the man has to go! shove in souness or mcneill or someone with passion for the game. TA TA Craig Please!!!
This Month in SEAN By Helygen
Scotland on Tour with Vic Galloway - Veronica Falls in the US By Vic Galloway


text:
What is the ODATIS Ocean Cluster?
Background and structure
Hosting Structures
Data and Service Centres
In situ Data and Service Centres (CDS)
Satellite Data and Service Centers (CDS)
Satellite Data and Services Center CERSAT
Data and Services
Direct access to the data catalogue
Services for data producers
Technical workshop - December 2020
Technical workshop - September 2020
Technical workshop - June 2019
Technical workshop - March 2019
Technical workshop - November 2018
Technical workshop - October 2018
Technical workshop - July 2018
Scientific Expertise Consortium
CES "Dissolved oxygen"
Research Programs and Projects
Observation Infrastructures
Thematic resources
Research cruises
Observation networks
Tools and softwares
In France, research policy, whether for basic or applied research, is conducted by the ministry responsible for scientific research (the MESRI – Ministry for Higher Education, scientific Research and innovation) and largely structured by the Research Code and the Law dated July 23, 2013 relating to higher education and research.
Enacted in 2004, the Research Code consolidates all the legislative measures relating to the research tasks, objectives, general organization and activities, as well as the operation of all institutions, bodies and personnel involved in research. Its codification is mainly based on two laws, adopted in 1982 and 1985, governing the orientation and the programming of research in France. These laws include a set of general provisions and guidelines determining the status of researchers and the research institutions to which they are attached, as well as defining the resources which may be made available to the research stakeholders in France. These laws helped to structure the organization of research activities which, prior to 1982, were conducted empirically within diverse frameworks and poorly coordinated.
Law No. 82-610 dated July 15, 1982 for the orientation and programming of research and technological development in France
Law No. 85-1376 dated December 23, 1985 relating to research and technological development
Law No. 2013-660 dated July 22, 2013 relating to higher education and research
The purpose of this law, adopted in 2013, is to stimulate research by strengthening its international outreach and restoring its ambition and coherence. Among its many provisions, this law provides for the development of a national research strategy and the protection of basic research activities, while promoting the mobility of foreign researchers and teachers. The text also aims to foster student success through various measures (setting priority orientations for certain high school graduates, enhancing employability, etc.) and the drafting of a national research strategy for higher education.
National Research Strategy
Published in 2015, the National Research Strategy (SNR – Stratégie Nationale de Recherche) focuses on 10 challenges facing society. Its primary ambition is to improve our knowledge so as to properly tackle the numerous socio-economic issues of the XXIst century, such as global warming, the digital revolution or food safety. Directions for research are derived from these challenges and enable the identification of the main issues requiring coordinated actions given their impact on society.
National Research Strategy (SNR)
For further information on National Research Strategy (SNR)
National Strategy for Research Infrastructure
Combined with the National Research Strategy, the National Strategy for Research Infrastructures has been developed on the basis of a state of the art prepared by a group of scientists from all fields. Its purpose is to highlight the diversity of existing or proposed infrastructures and tools which meet the criteria of scientific and technological excellence and efficiency. This strategy, which generates numerous data, should also enhance the capacity of these research infrastructures to make such data accessible to the community. Published by the Ministry responsible for Higher Education and Research, it covers 95 infrastructures, including 5 international organizations, 20 very large research infrastructures, 61 research infrastructures and 9 projects.
National Strategy for Research Infrastructures
For further information on National Strategy for Research Infrastructures
For further information on the Research Infrastructures of the ODATIS Data Cluster
In addition to this regulation which provides a global framework for the organization and structuring of research in France, there are more specific rules which define the status and general functioning of Operational Research Structures (SOR – Structures Opérationnelles de Recherche) and Operational Service Structures (SOS – Structures Opérationnelles de Service).
Operational Research Structures
Operational Research Structures (SORs – Structures Opérationnelles de Recherche) are governed by Decision No. 920520SOSI dated July 24, 1992, as amended, determining the organization and functioning of the Operational Research Structures. While they each have a different status, all SORs share the same purpose: pooling the financial, material and human resources which are necessary to carry out a given scientific research program. In principle, each SOR is attached to a prominent research institution (CNRS - French National Center for Scientific Research, IRD - French National Research Institute for Development, INSERM – French National Institute for Health and Medical Research, INRA - French National Institute for Agricultural Research, etc.) and to one or more institutes, depending on the scientific topics covered. The various SORs are grouped into different categories: so called "Basic" Research Units, Distributed Research Structures (SFRs – Structures Fédératives de Recherche), Research Networks (GDRs – Groupements de Recherche), and Transitional Research Groups (FREs – Formations de Recherche en Evolution).
Decision No. 920520SOSI dated July 24, 1992, as amended, determining the organization and functioning of the Operational Research Structures (SORs)
Distributed Research Structures (SFRs)
Research Networks (GDRs)
Transitional Research Groups (FREs)
Research Units are mostly Joint Research Units (UMRs – Unités Mixtes de Recherche). The UMR label may be granted to laboratories after a joint assessment conducted by the Ministry responsible for Higher Education and Research and a large research body. UMRs are administrative bodies created for 4 years pursuant to the execution of an agreement and are subject to an assessment. They provide a structure where several research and higher education institutions may share technical and human resources in order to collaborate on a common scientific project. In 2002, the UMR label was supplemented by the International Joint Unit label (UMI – Unité Mixte Internationale). UMRs and UMIs are similarly structured and operated, except that in an UMI one of the partners signing the agreement is a foreign institution. There are other types of research units, such as Contract Units (USCs – Unités Sous Contrat), Associated Research Units (URAs – Unités de Recherche Associées), Service and Research Units (USRs – Unités de Service et de Recherche) or Internal Research Units (UPRs – Unités Propres de Recherche). Each has its own specific features, but they are all governed by the same Decision dated July 24, 1992.
Decision No. 020087DAJ dated September 23, 2002, amending Decision No. 920520SOSI dated July 24, 1992, as amended, determining the organization and functioning of the Operational Research Structures (SORs)
For further information on the UMRs of the ODATIS Pole
Distributed Research Structures (SFRs – Structures Fédératives de Recherche) allow for the coordination of scientific activities and the sharing of all or part of the resources of their various participating scientific bodies (Research Units, Research Groups, etc.) which remain independent. There are 3 types of Distributed Research Structures which are all subject to ministerial approval: "FEDs" which are research federations labelled by the Ministry responsible for Higher Education and Research; "FRs" which are research federations jointly labelled by the Ministry responsible for Higher Education and Research and the CNRS (French National Center for Scientific Research); and the "IFRs" or Distributed Research Institutes (Instituts Fédératifs de Recherche) which are jointly labelled by the Ministry responsible for Higher Education and Research and INSERM (French National Institute for Health and Medical Research).
Instruction No. 940964SJUR dated July 15, 1994, as amended, relating to Federative Research Structures (IFRC, FR)
Instructions relating to Federative Research Structures (IFRs)
For further information on the FRs of the ODATIS Data Cluster
Research Networks (GDRs – Groupements de Recherche) are specific to the CNRS (French National Center for Scientific Research) and bring together all or part of the Research Units, Transitional Research Groups and/or Research Teams, so as to pool resources for the purposes of a single research topic. GDRs may be attached exclusively to the CNRS or jointly created with one or more institutions or industrial partners.
The status of the Transitional Research Groups (FREs – Formations de Recherche en Evolution) is only transitory so as to facilitate the creation, transformation and closure of a Research Unit. This label is jointly granted by the Ministry responsible for Higher Education and Research and the CNRS (French National Center for Scientific Research) following an assessment.
Circular No. 00-0008 DCAJ dated January 10, 2000 relating to Transitional Research Groups (FREs)
Operational Service Structures
Operational Service Structures (SOSs – Structures Opérationnelles de Service) are regulated by Decision N° 159-87 dated December 2, 1987 determining the organization and functioning of the Operational Service Structures. The purpose of SOSs is to provide all Operational Research Structures (SORs – Structures Opérationnelles de Recherche) with the necessary resources and support for their scientific activities. Like SORs, SOSs are attached to a large research body or to one or more institutes, depending on their needs. They are divided into service units or service networks.
Decision No. 159-87 dated December 2, 1987 determining the organization and functioning of the Operational Service Structures (SOSs)
Service Networks (GDSs)
Service Units fall into 2 categories: Internal Service Units (UPSs – Unités Propres de Service) which are specific to the CNRS (French National Center for Scientific Research), and Joint Service Units (UMSs – Unités Mixtes de Service). Subject to ministerial approval, UMSs are placed under the joint supervision of the CNRS and one or more research institutions. Such units are designed to host the administrative and technical personnel required to support a scientific activity (e.g. the Earth Science and Astronomy Observatories or OSUs – Observatoires des Sciences de l'Univers).
Like Research Networks, Service Networks (GDSs – Groupements de Service) are specific to the CNRS (French National Center for Scientific Research) and bring together all or part of the Research Units and Service Units dedicated to a single research-oriented service goal.
These research bodies are associated with structures which conduct studies aiming at collecting the necessary data for the advancement of research. Many observatories and networks have been formed to gather information on specific topics through various processes (field studies, satellite observations, comparative photographs, on-site measurements, etc.).
Earth Science and Astronomy Observatories
Earth Science and Astronomy Observatories (OSUs – Observatoires des Sciences de l'Univers) consist of laboratories joining forces to carry out long-term observations in the field of Earth sciences. A decree of the Ministry responsible for Higher Education and Research has identified 27 OSUs, covering several topics (astronomy, Earth physics, oceanography and environment). Their organization is governed by the Education Code and their task is to provide the national and international community with services related to their research activities; to support the training of students and research personnel; to participate in the dissemination of knowledge; and to set up activities promoting international cooperation. As regards oceanography, these common tasks are complemented by an additional objective: the protection of the ocean environment through the advancement of knowledge and the development of dedicated research programs.
Decree No. 85-657 dated June 27, 1985 relating to Earth Science and Astronomy Observatories (OSUs)
Articles D713.9, D713-10 and D713-11 of the Education Code
For further information on the OSUs of the ODATIS Data Cluster
National Monitoring Services
National Monitoring Services (SNOs – Services Nationaux d'Observation) are labelled by the CNRS (French National Center for Scientific Research) and provide a set of resources dedicated to the monitoring of the Earth system and the astronomical systems, with a view to documenting in the long term the formation, evolution and variability of such systems, as well as enhancing the knowledge and understanding thereof. The 182 SNOs of INSU (French National Institute for Earth Sciences and Astronomy), a CNRS institute, are combined into 4 national monitoring initiatives (AA – Astronomy & Astrophysics; OA – Oceans & Atmosphere; SIC – Surfaces & Continental Interfaces; and TS – Solid Earth) and are intended to provide support to the scientific community for the production of and access to observation data.
Framework Memorandum dated January 13, 2016 relating to the organization of National Monitoring Services (SNOs)
For further information on the SNOs of CNRS for all topics
For further information on the SNOs of the ODATIS Data Cluster
Long Term Environmental Research Monitoring and Testing Systems
Environmental Research Monitoring and Testing Systems (SOEREs – Systèmes d'Observation et d'Expérimentation pour la Recherche en Environnement) are labelled by AllEnvi (French National Alliance for Environmental Research) and their purpose is to create a network among the various Environmental Observatories spread over different sites. Each SOERE constitutes a network of basic testing and/or monitoring services sharing common observation and measurement features, whose data are processed and stored in a lasting and continuing manner. Labelling these networks facilitates the national and European recognition by the scientific community and the access to certain sources of funding.
Call for candidates for the 2016 SOERE labelling campaign
For further information on the SOEREs of the ODATIS Data Cluster: Coriolis, MOOSE, SONEL
Research Alliances
Research Alliances aim at strengthening the coordination of large scientific programs so as to develop closer relationships among research stakeholders working on close topics. The creation of these alliances forms part of an effort to promote French research by enhancing the performance, visibility and outreach of the main research institutions and structures, at both national and international level, through the coordination of thematic programs that are consistent with the National Research Strategy (SNR – Stratégie Nationale de Recherche). Between 2009 and 2010, 5 alliances were created and defined according to the research priorities identified in the SNR.
AllENVI
AVIESAN
ALLISTENE
The purpose of AllEnvi, the French National Alliance for Environmental Research (Alliance Nationale de Recherche pour l'Environnement), is to coordinate French research in the environmental field in order to facilitate the ecological transition and respond to the major associated societal challenges (resource management, adaptation to global warming, development of renewable energies, etc.). To achieve these goals, AllEnvi is structured around 4 tasks: developing and orienting research programs (submission of research priorities to the financing agencies, preparing the future SNR, etc.); supporting the development of research infrastructures (involvement in the preparation of a roadmap for research infrastructures); coordinating the innovation and promotion policies (strengthening partnerships among public operators, businesses and industries, meetings involving the founding members, etc.); promoting international programs (organization of conferences, coordination of the French delegations, etc.).
Founding Members: Bureau de recherches géologiques et minières - BRGM, Commissariat à l'énergie atomique et aux énergies alternatives - CEA, Centre de recherche agronomique pour le développement - CIRAD, Centre national de la recherche scientifique - CNRS, Conférence des présidents d'université - CPU, Institut français de recherche pour l'exploitation de la mer - IFREMER, Institut français des sciences et technologies des transports, de l'aménagement et des réseaux - IFSTTAR, Institut national de recherche agronomique - INRA, Institut de recherche pour le développement - IRD, Institut national de recherche en sciences et technologies pour l'environnement et l'agriculture - IRSTEA, Météo-France, Muséum national d'histoire naturelle - MNHN.
ANCRE, the French National Alliance for the Coordination of Energy Research (Alliance Nationale de Coordination de la Recherche pour l'Energie) seeks to improve the efficiency of research in the energy sector by coordinating the activities of the French public institutions. ANCRE, in close cooperation with the industrial actors of the energy sector, is also involved in implementing the French research and development strategy in this field.
Founding Members: Commissariat à l'énergie atomique et aux énergies alternatives - CEA, Centre national de la recherche scientifique - CNRS, Conférence des présidents d'université - CPU, Institut français du pétrole et des énergies nouvelles - IFPEN.
AVISEAN
The purpose of AVIESAN, the French National Alliance for Life Sciences and Health (Alliance Nationale pour les Sciences de la Vie et de la Santé), is to improve the performance of French research in the field of life sciences and health by enhancing its excellence and consistency. AVIESAN's task is to improve the scientific and operational coordination of projects and resources (whether financial, human or material) by meeting several broad objectives (promoting transdisciplinarity, coordinating scientific programming, encouraging French and European partnerships, etc.).
Founding Members: Commissariat à l'énergie atomique et aux énergies alternatives - CEA, Centres hospitaliers régionaux et universitaires - CHRU, Centre national de la recherche scientifique - CNRS, Conférence des présidents d'université - CPU, Institut pasteur, Institut national de recherche agronomique - INRA, Institut de recherche pour le développement - IRD, Institut national de recherche dédié au numérique - INRIA, Institut national de la santé et de la recherche médicale - INSERM.
The purpose of ATHENA, the French National Thematic Alliance for Human and Social Sciences (Alliance Thématique Nationale pour les Sciences Humaines et Sociales), is to boost the research dynamics in the field of human and social sciences by creating consultation, mediation and cooperation forums among the various institutions, at French and European levels. The objective is to engage in a long-term reflection and to identify strengths and resources in order to generate the information crucial for making decisions.
Founding Members: Commissariat à l'énergie atomique et aux énergies alternatives - CEA , Conférence des grandes écoles - CGE, Centre national de la recherche scientifique - CNRS, Conférence des présidents d'université - CPU, Institut national d'études démographiques - INED, Institut national de la recherche agronomique - INRA, Institut de recherche pour le développement - IRD.
The purpose of ALLISTENE, the French National Alliance for Digital Sciences and Technologies (Alliance pour les Sciences et Technologies du Numérique) which was created in 2009, is to promote research and innovation in the digital sector while accompanying the economic and social changes associated with the dissemination of digital technologies. ALLISTENE reinforces the partnerships already existing among public operators and businesses in order to coordinate scientific and technological priorities.
Founding Members: Conférence des directeurs des écoles françaises d'ingénieurs - CDEFI, Commissariat à l'énergie atomique et aux énergies alternatives - CEA, Centre national de la recherche scientifique - CNRS, Conférence des présidents d'université - CPU, Institut Mines-Télécom, Institut national de recherche dédié au numérique - INRIA.


Social justice activist, equality advocate, writer and producer Danielle Moodie-Mills tackles the big issues on her show "Woke AF" every Sunday from 10am to 1pm EST on SiriusXM Progress. As we grapple with the latest news on the Russia investigation, the GOP response to Rep. Steve King's racism, and the ongoing shutdown, she joins me on the show today to dig into the news.
A new book traces the lines of division in contemporary America that have led to our present state of affairs. Starting with 1974 and Watergate, Princeton professors Kevin Kruse and Julian Zelizer explore how income inequality, racial division, and a revolution in gender roles and sexual norms would deepen and fuel a polarized political and media landscape. They join me on the show today to talk about their book Fault Lines: A History of the United States Since 1974.
This sure has been another crazy week in politics what with the rescheduled State of the Union Address, Trump's continued calls for a border wall and new energy in the 2020 presidential field. Joining me today to help us wrap up the week in politics is Eleanor Clift the Washington correspondent for The Daily Beast, where she covers the White House and writes about politics and culture.


text:
Q: Include text in echoed hyperlink I´d like to include an extra two words into an echoed hyperlink. I have no PHP knowledge so far. Could anyone put me in the right direction?

 Bekijk meer van <?php echo get_the_term_list ( $post->ID, 'store' , '' )   ?>

It gives Bekijk meer van storename. I want it to show something like Bekijk meer van extra1 storename extra 2.

A: Never just print the result of get_the_term_list() without additional checks. It might return an instance of WP_Error which is an object, not a string.
Save the result of get_the_term_list() in a variable and print the terms only if there are terms and not an error:
<?php
$stores = get_the_term_list( $post->ID, 'store', '', ', ' );

// We got something back, and it is not an error.
if ( ! empty( $stores ) and ! is_wp_error( $stores ) )
{
    echo "

        Bekijk meer van extra1 $stores extra2

";
}
?>

redpajama_set_name: RedPajamaStackExchange


Looking for Condensation Line Maintenance Services at Rocklin or around Rocklin, CA? You found the company that will help you! Call us 24/7/365: (916) 727-6382.
Condensation Line Maintenance Services at Rocklin - 10% Off For New Customers!
Condensation Line Maintenance Services at Rocklin - Why Us?


text:
Government should issue a clear and official statement regarding speculations to sell Mopani and KCM Mines
Columns Government should issue a clear and official statement regarding speculations...
By Nalucha Nganga Ziba – Country Director ActionAid Zambia
ActionAid Zambia has noted the recent and unfortunate speculations of the Zambian Government's intent to sell mining companies – Mopani and Konkola Copper Mines to foreign investors.
With the recent withdrawal of Glencore, who were the majority shareholder in Mopani Copper Mines, in March 2021, there was an indication that the privatization blunders of the past would finally be corrected, and Zambia would finally reap the benefits of its valuable mineral resources learning from earlier failed privatization processes.
As ActionAid Zambia, we request that the Ministry of Mines and Mineral Resources through the office of the Minister to give a clear and official statement clearing the ongoing speculations of sale towards the mentioned mine companies, as well as an official statement on the legal status of the liquidation process of Konkola Copper Mine.
As ActionAid Zambia, we have recently worked in enhancing transparency and accountability in the extractive sector in ensuring that community voices are heard towards their grievances and implementation of various tax justice campaigns in the extractives.
We have so far with the support of other CSO's supported the Government's efforts of domesticating the African Mining Vision 2030 and advocating for the Mineral Revenue Sharing Mechanism to be implemented in the various host mining communities in the country.
Unfortunately, due to the lack of proper implementation of the Mineral Revenue Sharing Mechanism efforts were difficult to implement a mechanism that will benefit mining host communities.
As Zambia's mining sector has historically been the backbone of the Zambian economy making up 78.9 percent of exports and contributing about 10 percent of GDP (EITI, 2019), it is important to note that once a sale of the mine is considered, the majority of shareholding must remain with a higher percentage being Zambian owned.
Unfortunately, with the controversial saga around the liquidation processes and legal matters arising, selling the mines to potential investors may not acquire an attractive or profitable price benefiting the country.
With the incoming of the New Administration and the New Minister of Mines and Mineral Resources, we call on the New Government to take into consideration a robust consultative engagement with various stakeholders in the mining sector including Civil Society Organizations in order to strengthen government engagement in promoting open and accountable management of its mineral resources.
As ActionAid Zambia, we hope for the proper coordination of the Industrial Development Corporation (IDC) through the ZCCM-IH, in the light that a decision to sell either or both mines is made.
However, our recommendation is that Government explore other models that increase the participation of Zambians in the ownership and running of mines through transparent processes. The Zambian Government must therefore explore avenues to recapitalize these mines while maintaining ownership and control of their operations to ensure that they are not exploited by multinationals in the collections of mining taxes.
Additionally, Government must therefore continue to work to reduce financial malpractices of company tax avoidance, transfer mispricing, and illicit financial flows and ensure revenue collection is maximized while looking at measures to ensure that Corporate Social Responsibility is made mandatory to benefit the most vulnerable in the Zambian mining communities.
Previous articleNORTEC to train over 1,000 people in Weighbridge operation, certification and accreditation
Next articleKitwe Catholic Priest Rev. Fr. Collins Chileshe Chansa found dead in his room
Deja Vu January 11, 2022 At 7:17 am
I don't think this will be possible… today a minister will say this, next a provincial chairman will say that followed by a market party official who say something else.
Computer Scientist January 11, 2022 At 8:33 am
Privatisation reloaded
the observer January 11, 2022 At 10:22 am
Thank you Madam Ziba for speaking for your country. You are the kind of NGO leaders Zambia needs that can speak truth to power over the need to put Zambia first before foreign mining companies.
Ayatollah January 11, 2022 At 10:31 am
The UPND hasn't been sustained and sponsored by its general membership but by foreign entities, especially the Oppenheimer family represented by Olusegun Obasanjo. They're not in love with Garry Nkombo or violent UPND cadres, they want mines. When Mazoka lost they abandoned KCM and thought they'd derail LPM. Similarly, when MCS began to receive Chinese money to fund the PF, the Chinese invaded the mines and 86% of government contracts were given to Chinese companies. So for as long you continue to look to foreign sponsors to bankroll your Party, expect them to have a big say on big business. Had ECL won, KCM could've gone to the Chinese. Now that it's Bally in charge you don't need to guess. Ask Milingo to release the list of bidders for KCM
Garlic January 11, 2022 At 10:49 am
UPND leaders are businessmen, they will always have their businesses and their party sponsors in their minds whenever they are making decisions. Zambians, resourses will soon be depleted, you cannot afford to sleep 8hrs in a day. Stay alert.
Timbwi January 11, 2022 At 11:05 am
Mines are just too expensive to run and I really doubt we have the capacity to do so considering our industry base. Most of the equipment used in the mines is imported and patented for that matter. Either way we are always on the losing side. What we need is a suitable investor to pump in the required investment with an eye on the win win situation in terms of shareholding. We only seem to get it wrong on the need for a robust mining policy.
umuntu January 11, 2022 At 11:21 am
Too many experts on the mines
Geoffrey Madaliso Nkhoma January 11, 2022 At 11:28 am
If it was me ZESCO,MOPANI,KCM,ZAFFICO,INDENI,TAZAMA AND NCZ WOULD HAVE GONE.
Nostradamus January 11, 2022 At 11:33 am
Softex…
I never heard her voice to tell where she comes from.
Daniel Chisebwe January 11, 2022 At 11:46 am
The practice of Inclusion we're not going to attract the best. First time I landed in the United States I was offered to go to the US army, and that blew my mind. But I never went.
In some countries the are rich people who dig huge holes just for fun.
Deja Vu January 11, 2022 At 12:15 pm
#4 Timbwi. Yes everything is expensive. So why don't we spend money on them ourselves? Where are those foreigners getting the cash from? If Vedanta could buy the mine on credit, why can't we do the mining ourselves? Lack of confidence.
Francis January 11, 2022 At 1:07 pm
List both Mopani and KCM on LUSE and sell 50% of the shares. This will raise the required capital to run them. Botswana only took 50% stake DEBotswana while Zambia literally nationalized the copper mines. We know who came out worse. State ownership can never succeed in Zambia due to political interference, tribalism and nepotism.
The deal PF govt entered into with Glencore over Mopani should be reviewed. That is day light robbery. It reeks of financial capture. No sane person would agree to selling at a fixed price; a commodity whose price is always fluctuating.
Mwatiyamva January 11, 2022 At 1:34 pm
Mines were sold at 25m in 1995 it will be given to imperiaslits and enslaved again. zambia shall be free. Wake up Africa
Just wait January 11, 2022 At 3:43 pm
Ha ha ha ha ha ha ha!! amakwebo. We must be very dull as a country for failing to ran our own mines. That is what happens to a fool, he will always think of selling property whenever he wants to have quick cash.
Kaizar Zulu January 11, 2022 At 10:08 pm
Hello chi seksy boom boom. Kale uyu I saw her
Feature PoliticsChief Editor - January 11, 2022 1
Kalaba's DP confident of successfully fielding a candidate in the rescheduled Kabwata Election
The opposition Democratic Party (DP) is confident of successfully fielding a candidate in the rescheduled Kabwata Constituency Parliamentary by-election...
UPND, PF cadres clash in Milenge District
HH meets RB as he prepares for trip to Malawi for Summit for SADC Heads of States
Anti-Corruption Commission arrest and charge IDC CEO Mateyo Kaluba
Electoral Commission of Zambia has been playing double standards on cancellation of elections
Columns Chief Editor - January 11, 2022 6
By I. Mwanza The Electoral Commission of Zambia has been playing double standards on the cancellation of elections whenever a candidate withdraws from the race....
It's scandalous for Zambia not to Employ the 700 doctors, but have Money to urgently Employ District Commissioners
Columns Chief Editor - January 10, 2022 27
By Fred M'membe We urgently need to employ more than the 700 doctors The Zambia Medical Association says "Zambia currently has close to 700...
Plans To Unbundle ZESCO Ltd Should Not Be A Rushed Process But A Product Of Consensus Building
Columns Chief Editor - January 9, 2022 17
By Hon Yotam Mtayachalo First and foremost it is a fact that state utilities have been the major players in the electricity sub-sector in...
Fertiliser Supply Audit: Why did the Agricultural Minister Pick Fertilizer Supplier to Audit his Competitors
By John Phiri A couple of months ago, we praised Agriculture Minister Mtolo Phiri for his accomplished and informative responses to members of parliament who...


text:
Higher aerobic fitness levels are associated with better word production skills in healthy older adults
by University of Birmingham
Healthy older people who exercise regularly are less inclined to struggle to find words to express themselves, research led by the University of Birmingham has discovered.
Researchers found that older adults' aerobic fitness levels are directly related to the incidence of age-related language failures such as 'tip-of-the-tongue' states.
The research, published today in Scientific Reports, is the first of its kind to investigate the relationship between aerobic fitness levels and temporary cognitive lapses, such as not having a word come to mind when speaking - known as a 'tip-of-the-tongue' state.
People in a tip-of-the-tongue state have a strong conviction that they know a word, but are unable to produce it, and this phenomena occurs more frequently as we grow older.
The University of Birmingham study - carried out in collaboration with the University of Agder in Norway, the University of Leuven in Belgium and King's College London - measured the occurrence of tip-of-the-tongue states in a psycholinguistic experiment.
The study saw a group of 28 healthy adults (20 women with the average age of 70 and 8 men with the average age of 67), being compared in a 'tip-of-the-tongue' language test to 27 young people (19 women with the average age of 23 and 8 men with the average age of 22).
The test involved a 'definition filling task', done on a computer. They were asked to name famous people in the UK, such as authors, politicians and actors, based on 20 questions about them. They were also given the definitions of 20 'low frequency' and 20 'easy' words and asked whether they knew the word relating to the definition.
The participants' underwent a static bike cycling test - a gold standard test which quantified their ability to use oxygen during exercise and their resulting individual aerobic fitness levels.
Lead author Dr Katrien Segaert, of the University of Birmingham's School of Psychology, said: "Older adults free from medical diseases still experience age-related cognitive decline.
"Significantly, what we found was that the degree of decline is related to one's aerobic fitness.
"In our study, the higher the older adults' aerobic fitness level, the lower the probability of experiencing a tip-of-the-tongue state.
"Importantly, our results also showed that the relationship between the frequency of tip-of-the-tongue occurrences and aerobic fitness levels exists over and above the influence of a person's age and vocabulary size."
Dr Segaert said that tip-of-the-tongue states are uniquely a problem with language functioning.
"Older adults sometimes worry that tip-of-the-tongue states indicate serious memory problems but this is a misconception: tip-of-the-tongue states are not associated with memory loss," she added. "In fact, older adults usually have a much larger vocabulary than young adults. Instead, tip-of-the-tongue states occur when the meaning of a word is available in our memory, but the sound form of the word can temporarily not be accessed."
"Accessing the sound forms of words is essential for successful and fluent language production, and its disruption has very noticeable negative consequences for older adults."
She said she hoped the study would add gravitas to the public health message that regular exercise is important to ensure healthy ageing.
She added: "There are a lot of findings already on the benefits of aerobic fitness and regular exercise, and our research demonstrates another side of the benefits, namely a relationship between fitness and language skills. We were able to show, for the first time, that the benefits of aerobic fitness extend to the domain of language."
"Maintaining good language skills is extremely important for older adults. Older adults frequently have word finding difficulties and they experience these as particularly irritating and embarrassing."
"Speaking is a skill we all rely on every day. Communication with others helps us maintain social relationships and independence into old age."
In future research, the University of Birmingham plans to undertake exercise intervention studies to determine whether regular exercise can successfully increase language abilities.
Aerobic exercise may mildly delay, slightly improve Alzheimer's symptoms
More information: K. Segaert et al, Higher physical fitness levels are associated with less language decline in healthy ageing, Scientific Reports (2018). DOI: 10.1038/s41598-018-24972-1
Journal information: Scientific Reports
Provided by University of Birmingham
Citation: Higher aerobic fitness levels are associated with better word production skills in healthy older adults (2018, April 30) retrieved 18 July 2019 from https://medicalxpress.com/news/2018-04-higher-aerobic-word-production-skills.html
Study highlights the importance of physical activity and aerobic exercise for healthy brain function
Study finds cardiorespiratory fitness improves memory among older adults
Study finds cardiorespiratory fitness contributes to successful brain aging
New research suggests high-intensity exercise boosts memory
Memory improves for older adults using computerized brain-fitness program


We are hosting a Homeschool Moms' Retreat for you!! Woohoo!! And I can couldn't be more excited to be organizing this event for 10 awesome reasons I will share with you today!!
I've been counting the days but had to keep it a secret because guess what? I will be moving on the same weekend of the retreat!! LOL Call me crazy, right? I wasn't sure if I could pull it all together and move at the same time but I did!! In fact, the preparations for this Homeschool Moms' Retreat has just blown me away.
They Call Me Blessed is made of an amazing community of homeschool moms and I am beyond blessed to have such an amazing team of friends who have been blog contributors since we launched on February 25, 2016. I am so honored to work with such inspiring homeschool moms!
And honestly, this will be like smashing a mom's retreat, a pajama party and a mom's night out all together!!!
So first and foremost, let me make this invitation official to you.
You are invited to They Call Me Blessed's First Homeschool Moms' Online Retreat!
Ok, now I must tell you when and where!
This coming up weekend, February 24-25 on our birthday celebration Facebook event page.
The celebration will start on Friday 02/24 at 6 pm and it will end on Saturday at 9 pm EST with some fun games and giveaways!
During the event, several amazing homeschool bloggers and former homeschool moms will be sharing their wisdom and expertise in many homeschool related topics with us through videos or live Facebook broadcasts.
How is that for a birthday celebration?
I am so beyond blessed to have had the privilege to get to know and learn from so many amazing homeschool moms from around the world in this past year!
1 – It's Our Birthday!
This blog only exist because of you!
No excuses not to attend! You can join us and have fun on your PJs.
Did you hear that??? It's FREE!! No cost at all.
Ok. These 3 first ones should get you pretty excited about attending our Online Homeschool Moms' Retreat.
4 – 15 amazing speakers!!
Did you see the list? You will learn from awesome veteran homeschool moms who will help you, encourage you and save you a lot of headaches.
5 – It will be fun!!
It has already beeing so much fun! Go check out the interaction happening on our Facebook event page.
We need each other and we are better together, girlfriend!
You are not alone in your struggles and we are here to help you.
I LOVE giveaways!! And I am a giver! So expect some pretty fun prizes this weekend.
10 – Watch the sessions on demand.
You will not miss anything! All sessions will be there for you when you are ready to watch it or rewatch it!
Are you ready to RSVP?


My foray back into panoramic photography gave me an excuse to buy a DSLR. Owning a DSLR has given me an excuse to search eBay for deals on interesting camera lenses. In December that led to the purchase of a Nikon 600mm f/4 AiS manual focus super-telephoto lens. My particular copy appears to have been owned by the Dallas Morning News at some point—as that's written on the side of its trunk case. I trust it is a good retirement activity for this lens to look at birds and airplanes; activities which I also enjoy. It's incredibly heavy and impractical to carry around, but along with my modified TC-20E III, it's pretty much like looking through a telescope. I also added a dandelion CPU to the lens to get some of the benefits of more modern kit, like focus priority shutter and EXIF lens info.
That excellent eBay deal unfortunately meant there were a few compromises, like the beat up case. The most significant was that the lens was missing the HE-5 Hood Extension. Having such a large front element meant that it's tricky to shade the front element from incident sun exposure, which can cause washed out images and lens flare. It took about 6 months to find a hood on eBay, so I bought the first one I ran across, even bidding it up while on vacation.
I was elated to finally complete my kit by adding this part—but it turned out upon receipt, the hood extension wouldn't mount to the end of my lens. After a bit more research online, I was able to determine there were 2 plastic mounting tabs missing from the hood. These were subtle and frankly I hadn't noticed them on any pictures of hoods while researching and purchasing the hood online. The seller was happy to help get things straightened out, but had no ability to magically conjure up these parts. I decided that instead this would be an opportunity to restore a rare old piece of equipment and keep it from the scrap heap. The missing knob was easy (albeit expensive) to come by from Nikon, as the part is still used on modern lenses. The screw on the new ones is a bit longer, so I just removed the black aluminum cap and screwed it into place. Next were those pesky tabs. I knew it'd be impossible to find original tabs I needed, so I studied all the photos I could find, approximated what size they'd need to be to mount the lens, and started modeling in Fusion 360. I asked for some help on the DPReview forums, and got some help from the community there. A quick trip to the Shapeways website, and I had my first revision in hand.
Of course the first revision didn't fit, so I sanded them down, made them work, and modeled up the second revision. This time shrinking the tabs and rounding them off for easier mounting. The trimmed down version worked like a charm, and Shapeways was very kind in replacing one of the two that came out a bit deformed from the printer. Their new Professional Plastic (HP PA12 Nylon Plastic) is extremely durable and seems like it'll be perfect for this kind of mechanical part.
The final trick was locating original screws to match the 25-year-old ones in the hood. This one was trickier than expected. While it was soon clear the screw diameter was M2 and length was 5 or 6mm, I couldn't quite make sense of the 0.6mm thread pitch and kept questioning my caliper measurements. I spent about a week searching through different screw standard specifications until I finally encountered the JCIS Type-B Thread Forming screw. It turns out this screw is specially designed to be self tapping, and the body of the screw is in fact more like a rounded-off triangle than a cylinder—a design I eventually learned was called "trilobular." Of course it had a standard JIS cross point (not philips) drive and was black in color. Knowing the screw specs was helpful but not sufficient because however hard I tried, I couldn't find a supplier in the US. Eventually Saima Corporation in Japan responded favorably to an inquiry for a quote, and I soon had 1000 of exactly the screw I needed. (Please let me know if you need any of the 996 remaining screws I now own…) They were an excellent help to completing this project.
I still have a bit of restoration to do on the 600mm f/4 AiS. I need to craft a workable lens cap and the rubber ring on the end of the lens is still missing (anybody know of reputable 3d-gasket printing outfit?), but these all seem doable now that I've got a working hood extension!
Recently I've been getting back into panoramic photography. It's been a lot of fun, after perhaps a decade long hiatus, to capture spherical panoramas again. I picked up a mint condition Kaidan QuickPan IV tripod head with Spherical Bracket to relive my early 00's QTVR days, while securely mounting my new Nikon D810 camera when capturing photos.
In order to capture a panorama I use the tripod head to take evenly spaced photographs in all directions. It uses small plastic disks to click into the right position, so the photos are easily aligned.
It works great, but I found that I needed a different set of detent discs than came with the tripod head. I think there was some standard set—but to achieve 25% overlap with my 17-35mm lens, I calculated 7 photos would be optimal, but that value wasn't included in the kit.
I figured it would be nearly impossible to find additional Kaidan detent discs since the company is now defunct, so I set about making my own through Ponoko. I used my vintage Browne & Sharpe Dial Caliper to measure the original discs, then drew up some new ones using Inkscape. Ponoko gave me a $20 coupon for signing up, so I got my set of 5 laser-cut discs for less than $10 shipping & handling. The quality is excellent, and the 1.5mm Delrin material is perfect for the discs.
The fit is a bit snug, but they work great! I've made the discs available for purchase through Ponoko here, and also am providing the design file for download here. While it's unlikely many folks are looking for detent discs for the long discontinued QuickPan IV tripod head, I figured it'd be nice to have some source to get them in case anybody needs replacements.
I haven't yet captured a panorama with my new discs, but last weekend I went to Treasure Island and recorded the image below. I'm still working on HDR, color, and stitching details, but still happy with the results.
Reddit put together what was ostensibly an April Fools' joke that allowed users to "place" one pixel at a time on a large canvas. It turned out to be a really awesome social art project; groups needed to collaborate to get anything done because there was a long delay between opportunities to place pixels.
Update: Incidentally, Reddit published a great article today about how they built r/Place. Highly recommended.
Update 2: I wrote a technical description of how I built Place Matrix.
Because I'm not a big Redditor, my friend Andrew showed this to me, I think after a post on Twitter. We had a great discussion about the emergent behaviors that occurred with such a simple system on Saturday night, and talked about how such constraints can make things a lot of fun. I had just finished building my p11-matrix project from Boldport Club, and had connected it to the web with an API that only allowed toggling a single pixel.
So the next day I woke up and realized I had to port Place over to meatspace and started hacking. Thanks Andrew for helping incubate the idea. I'm not a web programmer, but my Python skills aren't too bad so I found a tutorial on Medium and started setting up AWS Elastic Beanstalk. One full Sunday of programming (followed by 3 back-to-back late night debugging sessions…) and it works. Lots of thanks to my friend Charlie for help and support through these manic last couple of days, and to the Saar for making Boldport Club and inspring projects.
Check it out at Place Matrix.
A couple of years ago I was at an estate sale with my mom and picked up this interesting Weston 1293 Digital Volt Meter. Could not resist nixie tube test equipment for $15.
It had been sitting on my shelf without much use in the interim because it was hard to use with just bare wires soldered on a connector on the back, so finally I've gotten around to building an enclosure for it. I also found an original manual for the Weston 1294 on eBay, which provided more context, though there are numerous differences.
Construction was relatively straightforward, with internal wiring mostly implemented with crimped spade termination and plenty of heatshrink. The most interesting part of the construction was cutting out holes in the aluminum front and rear panels of the enclosure. First I marked the cutouts using blue masking tape. Then I roughed out the holes with a drill and a jigsaw, finally finishing it up using a file. I think this practice of roughing out a hole and filing it to the line must be a standard technique, but I didn't really know how to do this until I saw the amazing craftsmanship on the ClickSpring YouTube channel, where this technique is used a lot.
Recently I purchased a Melles Griot Omnichrome 643 laser on eBay (as noted in my laser inventory). I was happy to find it arrived in great condition after making the long trip from Canada. I had long wanted an Argon-Krypton laser capable of producing a wider slice of the spectrum—"whitelight"—but they seem to be quite a bit more rare than plain old Argon-ion lasers, and usually more expensive. Got lucky with this one.
It came with almost everything including the laser itself, power supply, cooling fan unit, and even a printed manual. It was almost ready to run out of the box, but I needed a cable that connects the laser head to the cooling unit, an air duct, and also a way to plug it in; it draws 20A @ 240V.
I couldn't find one on eBay, so parts for the other cable required a new crimper (Engineer PAD-01), a Digi-Key order, and tracking down some 18/6 SOOW at a good price. Fortunately it was easy to defeat the fan interlock with a jumper and use another blower I had for my other Argon laser in the mean time.
So after just a bit of wiring and basic external cleaning I was able to get it running in top shape. I made a new jumper remote plug to run it in constant-current mode and walked the mirrors to get the peak output up to about 83mW at max current. I figure the cross-continent shipping probably wasn't great for mirror alignment, but no worries now. The specific model number is 643-OLYM-AO3, which I suspect means it came from an Olympus confocal scanning microscope, but have no explicit specifications for the unit. I received the tube with about 570 hours on the run time meter, so it is far from new but still has great light output. Anyway, on to the pictures!
One day I think I might be interested in getting RGB optics instead of the RYB this unit comes with so that it'd be more appropriate for laser display purposes. Some folks suggest that it is best to appreciate the yellow-green line for what it is and avoid the trouble. Guess we'll see if I come across the right kind of output-coupler optic. Next project is to build a small digitally-controlled remote for the 171-B power supply.


text:
uBUCK Technologies Completes First Tranche of Private Placement
VANCOUVER, British Columbia, Sept. 30, 2019 (GLOBE NEWSWIRE) — LiteLink Technologies Inc. ("LiteLink") (CSE:LLT) (OTC:LLNKF) (FRA:C0B), a key player in logistics platforms and payment solutions, is pleased to announce that its subsidiary uBUCK Technologies SEZC ("uBUCK") has closed the first tranche of a non-brokered private placement previously announced on September 23, 2019.
In connection with the placement, uBUCK issued 800,000 preferred shares to a strategic investor at a price of $0.50 per share for gross proceeds of US$400,000. Under the terms of the investment, uBUCK expects a minimum investment of US$1,500,000 will be made in exchange for 3,000,000 preferred shares at a price of US$0.50 per share by June 30, 2020. The investor will also have the option to invest an additional US$2,500,000 for a total of 8,000,000 preferred shares at a price of US$0.50 per share by September 30, 2021
uBUCK intends to use the gross proceeds of the private placement to complete the development of the uBUCK and Streambucks digital wallets, accelerate growth, increase customer acquisitions, and conduct additional product testing.
The private placement is a non-dilutive transaction for LiteLink shareholders. Completion of additional investments is subject to all necessary regulatory approvals.
The initial investment of US$1,500,000 would give the investor a 6% ownership in uBUCK, and an additional US$2,500,000 investment would result in a 16% ownership in uBUCK, based on the total outstanding equity in uBUCK. The preferred shares come with first rights to dividends of 6% (of the amount invested) and first claims to assets up to the investment in case of liquidation.
About uBUCK Technologies SEZC
Based in Georgetown, Cayman Islands, uBUCK Tech is a fintech enterprise that specializes in digital payments and wallets. uBUCK Pay, its online payments platform and pin voucher solution, offers consumers, businesses and merchants a fast, commission-free and highly secure alternative to traditional payments. Customers can purchase pin vouchers within the uBUCK Pay app or at participating resellers. For details about uBUCK Pay, please visit uBUCKpay.com.
About LiteLink Technologies Inc.
LiteLink Technologies Inc. ("LiteLink") (CSE:LLT) (OTC:LLNKF) (FRA:C0B) is a major player in developing world-class enterprise platforms that utilize artificial intelligence, blockchain, and predictive analytics to solve fragmented and outdated technology problems in the logistics and digital payment industries. Our flagship 1SHIFT logistics platform offers real-time transparency and tracking which allows brokers, shippers, and carriers to track shipments and settle payments in real-time.
This news release may contain certain "Forward-Looking Statements" within the meaning of the United States Private Securities Litigation Reform Act of 1995 and applicable Canadian securities laws. When used in this news release, the words "anticipate", "believe", "estimate", "expect", "target", "plan", "forecast", "may", "schedule" and other similar words or expressions identify forward-looking statements or information. These forward-looking statements or information may relate to the nature of the business of LiteLink and uBUCK, and other factors or information. Such statements represent LiteLink's current views with respect to future events and are necessarily based upon a number of assumptions and estimate that, while considered reasonable by LiteLink, are inherently subject to significant business, economic, competitive, political and social risks, contingencies and uncertainties. Many factors, both known and unknown, could cause results, performance or achievements to be materially different from the results, performance or achievements that are or may be expressed or implied by such forward-looking statements. LiteLink does not intend and does not assume any obligation, to update these forward-looking statements or information to reflect changes in assumptions or changes in circumstances or any other events affections such statements and information other than as required by applicable laws, rules, and regulations.
MPWR Crypto Summit Confirms Millennials Will be Enhancing The Digital Space
Which Game Will Top Cryptokitties and Tron Dogs?
BNB: $ 17.11 0.25%


Click box to leave comments, key code etc.
Enter Key Code, other comments here.
This is a replacement cylinder for many commercial locks. Schlage, Arrow, Sargent ect. are all available. Each cylinder comes with 2 keys. In order to determine the correct cylinder take a photo of the front side and latch edge of the lock as well as the key that fits the lock now and email it to info@mylockstore.com along with your contact information. We are happy to assist with your selection.


text:
Q: Controlling master volume on Mac through a Cocoa application I am looking to incorporate a NSSlider in a Cocoa application that controls the master volume of a Mac. I do not want to do this through AppleScript though, even though I know it is probably easier.
I found this code that should be able to do the trick but does not because since 10.5 AudioDeviceGetProperty and its ilk have been deprecated. What needs to be changed to make this work?
- (float) getVolume
{
float            b_vol;
OSStatus        err;
AudioDeviceID        device;
UInt32            size;
UInt32            channels[2];
float            volume[2];

// get device
size = sizeof device;
err = AudioObjectGetPropertyData(kAudioHardwarePropertyDefaultOutputDevice, &device, <#UInt32 inQualifierDataSize#>, <#const void *inQualifierData#>, &size, <#void *outData#>);
if(err!=noErr)
{
    NSLog(@"audio-volume error get device");
    return 0.0;
}

// try set master volume (channel 0)
size = sizeof b_vol;
err = AudioDeviceGetProperty(device, 0, 0, kAudioDevicePropertyVolumeScalar, &size, &b_vol);    //kAudioDevicePropertyVolumeScalarToDecibels
if(noErr==err) return b_vol;

// otherwise, try seperate channels
// get channel numbers
size = sizeof(channels);
err = AudioDeviceGetProperty(device, 0, 0,kAudioDevicePropertyPreferredChannelsForStereo, &size,&channels);
if(err!=noErr) NSLog(@"error getting channel-numbers");

size = sizeof(float);
err = AudioDeviceGetProperty(device, channels[0], 0, kAudioDevicePropertyVolumeScalar, &size, &volume[0]);
if(noErr!=err) NSLog(@"error getting volume of channel %d",channels[0]);
err = AudioDeviceGetProperty(device, channels[1], 0, kAudioDevicePropertyVolumeScalar, &size, &volume[1]);
if(noErr!=err) NSLog(@"error getting volume of channel %d",channels[1]);

b_vol = (volume[0]+volume[1])/2.00;

return  b_vol;
}

- (void)setVolume:(float)involume {
OSStatus        err;
AudioDeviceID        device;
UInt32            size;
Boolean            canset    = false;
UInt32            channels[2];
//float            volume[2];

// get default device
size = sizeof device;
printf("setVolume:: value of the volume set =%lf", involume);
err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &size, &device);
if(err!=noErr) {
    NSLog(@"audio-volume error get device");
    return;
}

// try set master-channel (0) volume
size = sizeof canset;
err = AudioDeviceGetPropertyInfo(device, 0, false, kAudioDevicePropertyVolumeScalar, &size, &canset);
if(err==noErr && canset==true) {
    size = sizeof involume;
    err = AudioDeviceSetProperty(device, NULL, 0, false, kAudioDevicePropertyVolumeScalar, size, &involume);
    return;
}

// else, try seperate channes
// get channels
size = sizeof(channels);
err = AudioDeviceGetProperty(device, 0, false, kAudioDevicePropertyPreferredChannelsForStereo, &size,&channels);
if(err!=noErr) {
    NSLog(@"error getting channel-numbers");
    return;
}

// set volume
size = sizeof(float);
err = AudioDeviceSetProperty(device, 0, channels[0], false, kAudioDevicePropertyVolumeScalar, size, &involume);
if(noErr!=err) NSLog(@"error setting volume of channel %d",channels[0]);
err = AudioDeviceSetProperty(device, 0, channels[1], false, kAudioDevicePropertyVolumeScalar, size, &involume);
if(noErr!=err) NSLog(@"error setting volume of channel %d",channels[1]);

}

Thanks in advance!

A: This will do the trick - I just copied and pasted it out of one of my projects, so there are a few extraneous variables and functions but you should be able to get the gist of it:
BOOL gotMaster = NO;
BOOL gotLeft = NO;
BOOL gotRight = NO;
float volume = 1, lvolume = 1, rvolume = 1;
float inVolume = 1, inLvolume = 1, inRvolume = 1;
OSStatus result = noErr;
AudioObjectPropertyAddress thePropertyAddress;
UInt32 thePropSize = sizeof(Float32);
thePropertyAddress.mSelector = kAudioDevicePropertyVolumeScalar;
thePropertyAddress.mScope = kAudioDevicePropertyScopeOutput;
thePropertyAddress.mElement = kAudioObjectPropertyElementMaster;
// see if the device supports volume control, if so, then get it
if (AudioObjectHasProperty(_targetDevice, &thePropertyAddress)) {
  result = AudioObjectGetPropertyData(_targetDevice, &thePropertyAddress, 0, NULL, &thePropSize, &volume);
  if (result) { cwlog("AudioDeviceManager: Error in AudioObjectGetPropertyData: %d", result); return -1; }
  gotMaster = YES;
} else {
  cwlog("AudioDeviceManager: The target device does not support getting the master volume");
}
// see if the device supports left channel volume control, if so, then get it
thePropertyAddress.mElement = 1;
if (AudioObjectHasProperty(_targetDevice, &thePropertyAddress)) {
  result = AudioObjectGetPropertyData(_targetDevice, &thePropertyAddress, 0, NULL, &thePropSize, &lvolume);
  if (result) { cwlog("AudioDeviceManager: Error in AudioObjectGetPropertyData: %d", result); return -1; }
  gotLeft = YES;
} else {
  cwlog("AudioDeviceManager: The target device does not support getting the left channel volume");
}
thePropertyAddress.mElement = 2;
// see if the device supports right channel volume control, if so, then get it
if (AudioObjectHasProperty(_targetDevice, &thePropertyAddress)) {
  result = AudioObjectGetPropertyData(_targetDevice, &thePropertyAddress, 0, NULL, &thePropSize, &rvolume);
  if (result) { cwlog("AudioDeviceManager: Error in AudioObjectGetPropertyData: %d", result); return -1; }
  gotRight = YES;
} else {
  // if the device does not support master volume control, do nothing
  cwlog("AudioDeviceManager: The target device does not support getting the right channel volume");
}
if(!gotMaster && !gotLeft && !gotRight) {
  cwlog("AudioDeviceManager: Could not get any volume settings for %s (%u)", [[self nameOfDevice:_targetDevice] UTF8String], _targetDevice);
  return -1;
}