text:
//#include "config.h"
#include <UIlib.h>
#include "Timer.h"

//#include "SharedTimer.h"
//#include "ThreadGlobalData.h"
#include "ThreadTimers.h"
#include <limits.h>
#include <limits>
#include <math.h>
#include "CurrentTime.h"
#include "Atomics.h"

//using namespace std;

//namespace WebCore {

// Timers are stored in a heap data structure, used to implement a priority queue.
// This allows us to efficiently determine which timer needs to fire the soonest.
// Then we set a single shared system timer to fire at that time.
//
// When a timer's "next fire time" changes, we need to move it around in the priority queue.
#if 1

// Simple accessors to thread-specific data.
// static Vector<TimerBase*>& timerHeap()
// {
//     return threadGlobalData().threadTimers().timerHeap();
// }

#define DefTimerHeap() \
	WTF::Vector<TimerBase*>& timerHeap()\
{\
	return m_threadTimers->timerHeap();\
}\
	\
	const WTF::Vector<TimerBase*>& timerHeap() const\
{\
	return m_threadTimers->timerHeap();\
}

#define DefTimerHeapClass(Class) \
	WTF::Vector<TimerBase*>& Class::timerHeap()\
{\
	return m_threadTimers->timerHeap();\
}\
	\
	const WTF::Vector<TimerBase*>& Class::timerHeap() const\
{\
	return m_threadTimers->timerHeap();\
}

// Class to represent elements in the heap when calling the standard library heap algorithms.
// Maintains the m_heapIndex value in the timers themselves, which allows us to do efficient
// modification of the heap.
class TimerHeapElement {
public:
    explicit TimerHeapElement(int i, ThreadTimers* threadTimers)
        : m_index(i)
    {
		m_threadTimers = (threadTimers);
		m_timer = (timerHeap()[m_index]);
        checkConsistency();
    }

	DefTimerHeap()
// 	WTF::Vector<TimerBase*>& timerHeap()
// 	{
// 		return m_threadTimers->timerHeap();
// 	}
//
// 	const WTF::Vector<TimerBase*>& timerHeap() const
// 	{
// 		return m_threadTimers->timerHeap();
// 	}

    TimerHeapElement(const TimerHeapElement&);
    TimerHeapElement& operator=(const TimerHeapElement&);

    TimerBase* timer() const { return m_timer; }

    void checkConsistency() const
    {
        ASSERT(m_index >= 0);
        ASSERT(m_index < static_cast<int>(timerHeap().size()));
    }

private:
    TimerHeapElement();

    int m_index;
    TimerBase* m_timer;

	ThreadTimers* m_threadTimers;
};

inline TimerHeapElement::TimerHeapElement(const TimerHeapElement& o)
    : m_index(-1), m_timer(o.timer())
{
}

inline TimerHeapElement& TimerHeapElement::operator=(const TimerHeapElement& o)
{
    TimerBase* t = o.timer();
    m_timer = t;
    if (m_index != -1) {
        checkConsistency();
        timerHeap()[m_index] = t;
        t->m_heapIndex = m_index;
    }
    return *this;
}

inline bool operator<(const TimerHeapElement& a, const TimerHeapElement& b)
{
    // The comparisons below are "backwards" because the heap puts the largest
    // element first and we want the lowest time to be the first one in the heap.
    double aFireTime = a.timer()->m_nextFireTime;
    double bFireTime = b.timer()->m_nextFireTime;
    if (bFireTime != aFireTime)
        return bFireTime < aFireTime;

    // We need to look at the difference of the insertion orders instead of comparing the two
    // outright in case of overflow.
    unsigned difference = a.timer()->m_heapInsertionOrder - b.timer()->m_heapInsertionOrder;
    return difference < UINT_MAX / 2;
}

// ----------------

// Class to represent iterators in the heap when calling the standard library heap algorithms.
// Returns TimerHeapElement for elements in the heap rather than the TimerBase pointers themselves.
class TimerHeapIterator : public std::iterator<std::random_access_iterator_tag, TimerHeapElement, int> {
public:
    TimerHeapIterator(ThreadTimers* threadTimers) : m_index(-1), m_threadTimers(threadTimers) { }
    TimerHeapIterator(int i, ThreadTimers* threadTimers) : m_index(i), m_threadTimers(threadTimers) { checkConsistency(); }

    TimerHeapIterator& operator++() { checkConsistency(); ++m_index; checkConsistency(); return *this; }
    TimerHeapIterator operator++(int)
	{
		checkConsistency();
		checkConsistency(1);
		return TimerHeapIterator(m_index++, m_threadTimers);
	}

    TimerHeapIterator& operator--() { checkConsistency(); --m_index; checkConsistency(); return *this; }
    TimerHeapIterator operator--(int) { checkConsistency(); checkConsistency(-1); return TimerHeapIterator(m_index--, m_threadTimers); }

    TimerHeapIterator& operator+=(int i) { checkConsistency(); m_index += i; checkConsistency(); return *this; }
    TimerHeapIterator& operator-=(int i) { checkConsistency(); m_index -= i; checkConsistency(); return *this; }

    TimerHeapElement operator*() const { return TimerHeapElement(m_index, m_threadTimers); }
    TimerHeapElement operator[](int i) const { return TimerHeapElement(m_index + i, m_threadTimers); }

    int index() const { return m_index; }

    void checkConsistency(int offset = 0) const
    {
        //ASSERT_UNUSED(offset, m_index + offset >= 0);
        //ASSERT_UNUSED(offset, m_index + offset <= static_cast<int>(timerHeap().size()));
    }

	DefTimerHeap()

	ThreadTimers* threadTimers() {return m_threadTimers;}

private:
    int m_index;

	ThreadTimers* m_threadTimers;
};

inline bool operator==(TimerHeapIterator a, TimerHeapIterator b) { return a.index() == b.index(); }
inline bool operator!=(TimerHeapIterator a, TimerHeapIterator b) { return a.index() != b.index(); }
inline bool operator<(TimerHeapIterator a, TimerHeapIterator b) { return a.index() < b.index(); }

inline TimerHeapIterator operator+(TimerHeapIterator a, int b) { return TimerHeapIterator(a.index() + b, a.threadTimers()); }
inline TimerHeapIterator operator+(int a, TimerHeapIterator b) { return TimerHeapIterator(a + b.index(), b.threadTimers()); }

inline TimerHeapIterator operator-(TimerHeapIterator a, int b) { return TimerHeapIterator(a.index() - b, a.threadTimers()); }
inline int operator-(TimerHeapIterator a, TimerHeapIterator b) { return a.index() - b.index(); }

#endif
// ----------------

DefTimerHeapClass(TimerBase)

// WTF::Vector<TimerBase*>& TimerBase::timerHeap()
// {
// 	return m_threadTimers->timerHeap();
// }
//
// const WTF::Vector<TimerBase*>& TimerBase::timerHeap() const
// {
// 	return m_threadTimers->timerHeap();
// }

TimerBase::TimerBase(ThreadTimers* threadTimers)
    : m_nextFireTime(0)
	, m_threadTimers(threadTimers)
    , m_repeatInterval(0)
    , m_heapIndex(-1)
// #ifndef NDEBUG
//     , m_thread(currentThread())
// #endif
{
}

TimerBase::~TimerBase()
{
    stop();
    ASSERT(!inHeap());
}

void TimerBase::start(double nextFireInterval, double repeatInterval)
{
    //ASSERT(m_thread == currentThread());

    m_repeatInterval = repeatInterval;
    setNextFireTime(currentTime() + nextFireInterval);
}

void TimerBase::stop()
{
    //ASSERT(m_thread == currentThread());

    m_repeatInterval = 0;
    setNextFireTime(0);

    ASSERT(m_nextFireTime == 0);
    ASSERT(m_repeatInterval == 0);
    ASSERT(!inHeap());
}

double TimerBase::nextFireInterval() const
{
    ASSERT(isActive());
    double current = currentTime();
    if (m_nextFireTime < current)
        return 0;
    return m_nextFireTime - current;
}

inline void TimerBase::checkHeapIndex() const
{
    ASSERT(!timerHeap().isEmpty());
    ASSERT(m_heapIndex >= 0);
    ASSERT(m_heapIndex < static_cast<int>(timerHeap().size()));
    ASSERT(timerHeap()[m_heapIndex] == this);
}

inline void TimerBase::checkConsistency() const
{
    // Timers should be in the heap if and only if they have a non-zero next fire time.
    ASSERT(inHeap() == (m_nextFireTime != 0));
    if (inHeap())
        checkHeapIndex();
}

void TimerBase::heapDecreaseKey()
{
    ASSERT(m_nextFireTime != 0);
    checkHeapIndex();
    push_heap(TimerHeapIterator(0, m_threadTimers), TimerHeapIterator(m_heapIndex + 1, m_threadTimers));
    checkHeapIndex();
}

inline void TimerBase::heapDelete()
{
    ASSERT(m_nextFireTime == 0);
    heapPop();
    timerHeap().pop_back();
    m_heapIndex = -1;
}

void TimerBase::heapDeleteMin()
{
    ASSERT(m_nextFireTime == 0);
    heapPopMin();
    timerHeap().pop_back();
    m_heapIndex = -1;
}

inline void TimerBase::heapIncreaseKey()
{
    ASSERT(m_nextFireTime != 0);
    heapPop();
    heapDecreaseKey();
}

inline void TimerBase::heapInsert()
{
    ASSERT(!inHeap());
    timerHeap().push_back(this);
    m_heapIndex = timerHeap().size() - 1;
    heapDecreaseKey();
}

inline void TimerBase::heapPop()
{
    // Temporarily force this timer to have the minimum key so we can pop it.
    double fireTime = m_nextFireTime;
	m_nextFireTime = -std::numeric_limits<double>::infinity();
    heapDecreaseKey();
    heapPopMin();
    m_nextFireTime = fireTime;
}

void TimerBase::heapPopMin()
{
    ASSERT(this == timerHeap().front());
    checkHeapIndex();
    pop_heap(TimerHeapIterator(0, m_threadTimers), TimerHeapIterator(timerHeap().size(), m_threadTimers));
    checkHeapIndex();
    ASSERT(this == timerHeap().back());
}

void TimerBase::setNextFireTime(double newTime)
{
    //ASSERT(m_thread == currentThread());

    // Keep heap valid while changing the next-fire time.
    double oldTime = m_nextFireTime;
    if (oldTime != newTime) {
        m_nextFireTime = newTime;
        static unsigned currentHeapInsertionOrder = 0;
        m_heapInsertionOrder = atomicIncrement((volatile int *)&currentHeapInsertionOrder);

        bool wasFirstTimerInHeap = m_heapIndex == 0;

        if (oldTime == 0)
            heapInsert();
        else if (newTime == 0)
            heapDelete();
        else if (newTime < oldTime)
            heapDecreaseKey();
        else
            heapIncreaseKey();

        bool isFirstTimerInHeap = m_heapIndex == 0;

        if (wasFirstTimerInHeap || isFirstTimerInHeap)
            m_threadTimers->updateSharedTimer();
    }

    checkConsistency();
}

void TimerBase::fireTimersInNestedEventLoop()
{
    // Redirect to ThreadTimers.
    //threadGlobalData().threadTimers().fireTimersInNestedEventLoop();
}

//} // namespace WebCore


text:
Q: Traceroute hits destination on fourth hop, then does 15 more Traceroute is showing that I hit my destination (147.21.65.42) on the fourth hop.  So why does it do 15 more hops?
From my location, the pipe to this server is an MPLS virtual private network.  I'm thinking that might be affecting what traceroute reports.
C:\>tracert example.com

Tracing route to example.com [147.21.65.42]
over a maximum of 30 hops:

  1     4 ms    <1 ms    <1 ms  172.18.41.254
  2     8 ms    10 ms     8 ms  192.168.208.30
  3    14 ms     8 ms     7 ms  192.168.208.50
  4     8 ms     8 ms     8 ms  147.21.65.42
  5    16 ms    15 ms    16 ms  147.21.65.42
  6    55 ms    54 ms    55 ms  147.21.65.42
  7    55 ms    55 ms    55 ms  147.21.65.42
  8    55 ms    55 ms    54 ms  147.21.65.42
  9    55 ms    55 ms    55 ms  147.21.65.42
 10     *        *        *     Request timed out.
 11     *        *        *     Request timed out.
 12     *        *        *     Request timed out.
 13     *        *        *     Request timed out.
 14     *        *        *     Request timed out.
 15     *        *        *     Request timed out.
 16     *        *        *     Request timed out.
 17     *        *        *     Request timed out.
 18     *        *        *     Request timed out.
 19   143 ms   135 ms   119 ms  147.21.65.42

Trace complete.

A: MPLS is well known to mangle Traceroute results: http://www.cisco.com/en/US/tech/tk436/tk428/technologies_tech_note09186a008020a42a.shtml

redpajama_set_name: RedPajamaStackExchange


text:
Intermittent exposure of cultured endothelial cells to physiologically relevant fructose concentrations has a profound impact on nitric oxide production and bioenergetics
Maria Fiorello , Andrew Treweeke, Ian Megson, David Macfarlane
Division of Biomedical Sciences
Hyperglycaemia is known to induce endothelial dysfunction and changes in metabolic function, which could be implicated in diabetes-induced cardiovascular disease. To date, however, little is known about the impact of physiologically relevant concentrations of fructose on endothelial cells.
A novel in vitro model was devised to establish the impact of substitution of a small proportion of glucose with an equal concentration (0.1 mM or 1 mM) of fructose on EA.hy926 endothelial cells during periodic carbohydrate "meals" superimposed on a normoglycaemic (5.5 mM) background. Parallel experiments were conducted using meals consisting of normoglycaemic glucose, intermediate glucose (12.5 mM) or profound hyperglycaemia (25 mM), each delivered for 2 h, with and without substituted fructose over 50 h. Outcome measures included nitrite as a surrogate marker of the mediator of healthy endothelial function, nitric oxide (NO), and a range of bioenergetic parameters using a metabolic analyser.
Despite its relatively low proportion of carbohydrate load, intermittent fructose induced a substantial reduction (approximately 90%) in NO generation in cells treated with either concentration of fructose. Cell markers of oxidative stress were not altered by this treatment regimen. However, the cells experienced a marked increase in metabolic activity induced by fructose, irrespective of the glucose concentration delivered simultaneously in the "meals". Indeed, glucose alone failed to induce any metabolic impact in this model. Key metabolic findings were a 2-fold increase in basal oxygen consumption rate and a similar change in extracellular acidification rate – a marker of glycolysis. Non-metabolic oxygen consumption also increased substantially in cells exposed to fructose. There was no difference between results with 0.1 mM fructose and those with 1 mM fructose.
Low, physiologically relevant concentrations of fructose, delivered in a pattern that mimics mealtime consumption, had a profound impact on endothelial function and bioenergetics in an in vitro cell model. The results suggest that endothelial cells are exquisitely sensitive to circulating fructose; the potential ensuing dysfunction could have major implications for development of atherosclerotic disease associated with high fructose consumption.
Accepted/In press - 15 Apr 2022
PONE-D-22-04649R1_FTCAccepted author manuscript, 153 KBLicence: CC BY
plosone article 2022Final published version, 1.7 MB
http://www.plosone.org/
Dive into the research topics of 'Intermittent exposure of cultured endothelial cells to physiologically relevant fructose concentrations has a profound impact on nitric oxide production and bioenergetics'. Together they form a unique fingerprint.
Energy Metabolism Medicine & Life Sciences 79%
Cultured Cells Medicine & Life Sciences 73%
Nitric Oxide Medicine & Life Sciences 70%
Endothelial Cells Medicine & Life Sciences 64%
Meals Medicine & Life Sciences 26%
Oxygen Consumption Medicine & Life Sciences 14%
Fiorello , M., Treweeke, A., Megson, I., & Macfarlane, D. (Accepted/In press). Intermittent exposure of cultured endothelial cells to physiologically relevant fructose concentrations has a profound impact on nitric oxide production and bioenergetics. PLoS ONE.
Fiorello , Maria ; Treweeke, Andrew ; Megson, Ian et al. / Intermittent exposure of cultured endothelial cells to physiologically relevant fructose concentrations has a profound impact on nitric oxide production and bioenergetics. In: PLoS ONE. 2022.
@article{0b7a7c2aedef46a497834f2a4a2338e6,
title = "Intermittent exposure of cultured endothelial cells to physiologically relevant fructose concentrations has a profound impact on nitric oxide production and bioenergetics",
abstract = "Hyperglycaemia is known to induce endothelial dysfunction and changes in metabolic function, which could be implicated in diabetes-induced cardiovascular disease. To date, however, little is known about the impact of physiologically relevant concentrations of fructose on endothelial cells.A novel in vitro model was devised to establish the impact of substitution of a small proportion of glucose with an equal concentration (0.1 mM or 1 mM) of fructose on EA.hy926 endothelial cells during periodic carbohydrate "meals" superimposed on a normoglycaemic (5.5 mM) background. Parallel experiments were conducted using meals consisting of normoglycaemic glucose, intermediate glucose (12.5 mM) or profound hyperglycaemia (25 mM), each delivered for 2 h, with and without substituted fructose over 50 h. Outcome measures included nitrite as a surrogate marker of the mediator of healthy endothelial function, nitric oxide (NO), and a range of bioenergetic parameters using a metabolic analyser.Despite its relatively low proportion of carbohydrate load, intermittent fructose induced a substantial reduction (approximately 90%) in NO generation in cells treated with either concentration of fructose. Cell markers of oxidative stress were not altered by this treatment regimen. However, the cells experienced a marked increase in metabolic activity induced by fructose, irrespective of the glucose concentration delivered simultaneously in the "meals". Indeed, glucose alone failed to induce any metabolic impact in this model. Key metabolic findings were a 2-fold increase in basal oxygen consumption rate and a similar change in extracellular acidification rate – a marker of glycolysis. Non-metabolic oxygen consumption also increased substantially in cells exposed to fructose. There was no difference between results with 0.1 mM fructose and those with 1 mM fructose. Low, physiologically relevant concentrations of fructose, delivered in a pattern that mimics mealtime consumption, had a profound impact on endothelial function and bioenergetics in an in vitro cell model. The results suggest that endothelial cells are exquisitely sensitive to circulating fructose; the potential ensuing dysfunction could have major implications for development of atherosclerotic disease associated with high fructose consumption.",
author = "Maria Fiorello and Andrew Treweeke and Ian Megson and David Macfarlane",
note = "https://doaj.org/toc/1932-6203",
Fiorello , M, Treweeke, A, Megson, I & Macfarlane, D 2022, 'Intermittent exposure of cultured endothelial cells to physiologically relevant fructose concentrations has a profound impact on nitric oxide production and bioenergetics', PLoS ONE.
Intermittent exposure of cultured endothelial cells to physiologically relevant fructose concentrations has a profound impact on nitric oxide production and bioenergetics. / Fiorello , Maria; Treweeke, Andrew; Megson, Ian et al.
In: PLoS ONE, 15.04.2022.
T1 - Intermittent exposure of cultured endothelial cells to physiologically relevant fructose concentrations has a profound impact on nitric oxide production and bioenergetics
AU - Fiorello , Maria
AU - Treweeke, Andrew
AU - Megson, Ian
AU - Macfarlane, David
N1 - https://doaj.org/toc/1932-6203
N2 - Hyperglycaemia is known to induce endothelial dysfunction and changes in metabolic function, which could be implicated in diabetes-induced cardiovascular disease. To date, however, little is known about the impact of physiologically relevant concentrations of fructose on endothelial cells.A novel in vitro model was devised to establish the impact of substitution of a small proportion of glucose with an equal concentration (0.1 mM or 1 mM) of fructose on EA.hy926 endothelial cells during periodic carbohydrate "meals" superimposed on a normoglycaemic (5.5 mM) background. Parallel experiments were conducted using meals consisting of normoglycaemic glucose, intermediate glucose (12.5 mM) or profound hyperglycaemia (25 mM), each delivered for 2 h, with and without substituted fructose over 50 h. Outcome measures included nitrite as a surrogate marker of the mediator of healthy endothelial function, nitric oxide (NO), and a range of bioenergetic parameters using a metabolic analyser.Despite its relatively low proportion of carbohydrate load, intermittent fructose induced a substantial reduction (approximately 90%) in NO generation in cells treated with either concentration of fructose. Cell markers of oxidative stress were not altered by this treatment regimen. However, the cells experienced a marked increase in metabolic activity induced by fructose, irrespective of the glucose concentration delivered simultaneously in the "meals". Indeed, glucose alone failed to induce any metabolic impact in this model. Key metabolic findings were a 2-fold increase in basal oxygen consumption rate and a similar change in extracellular acidification rate – a marker of glycolysis. Non-metabolic oxygen consumption also increased substantially in cells exposed to fructose. There was no difference between results with 0.1 mM fructose and those with 1 mM fructose. Low, physiologically relevant concentrations of fructose, delivered in a pattern that mimics mealtime consumption, had a profound impact on endothelial function and bioenergetics in an in vitro cell model. The results suggest that endothelial cells are exquisitely sensitive to circulating fructose; the potential ensuing dysfunction could have major implications for development of atherosclerotic disease associated with high fructose consumption.
AB - Hyperglycaemia is known to induce endothelial dysfunction and changes in metabolic function, which could be implicated in diabetes-induced cardiovascular disease. To date, however, little is known about the impact of physiologically relevant concentrations of fructose on endothelial cells.A novel in vitro model was devised to establish the impact of substitution of a small proportion of glucose with an equal concentration (0.1 mM or 1 mM) of fructose on EA.hy926 endothelial cells during periodic carbohydrate "meals" superimposed on a normoglycaemic (5.5 mM) background. Parallel experiments were conducted using meals consisting of normoglycaemic glucose, intermediate glucose (12.5 mM) or profound hyperglycaemia (25 mM), each delivered for 2 h, with and without substituted fructose over 50 h. Outcome measures included nitrite as a surrogate marker of the mediator of healthy endothelial function, nitric oxide (NO), and a range of bioenergetic parameters using a metabolic analyser.Despite its relatively low proportion of carbohydrate load, intermittent fructose induced a substantial reduction (approximately 90%) in NO generation in cells treated with either concentration of fructose. Cell markers of oxidative stress were not altered by this treatment regimen. However, the cells experienced a marked increase in metabolic activity induced by fructose, irrespective of the glucose concentration delivered simultaneously in the "meals". Indeed, glucose alone failed to induce any metabolic impact in this model. Key metabolic findings were a 2-fold increase in basal oxygen consumption rate and a similar change in extracellular acidification rate – a marker of glycolysis. Non-metabolic oxygen consumption also increased substantially in cells exposed to fructose. There was no difference between results with 0.1 mM fructose and those with 1 mM fructose. Low, physiologically relevant concentrations of fructose, delivered in a pattern that mimics mealtime consumption, had a profound impact on endothelial function and bioenergetics in an in vitro cell model. The results suggest that endothelial cells are exquisitely sensitive to circulating fructose; the potential ensuing dysfunction could have major implications for development of atherosclerotic disease associated with high fructose consumption.
UR - http://www.plosone.org/
Fiorello M, Treweeke A, Megson I, Macfarlane D. Intermittent exposure of cultured endothelial cells to physiologically relevant fructose concentrations has a profound impact on nitric oxide production and bioenergetics. PLoS ONE. 2022 Apr 15.

redpajama_set_name: RedPajamaCommonCrawl


The world's first ever powered wheels that converts any pushcart into a remote-controlled motorized electric golf caddie. Have your bag accompany you rather than hinder your enjoyment of the game. Many say walking is better than riding, but there's no need to carry your bag, or even push it. With the Club Booster eWheels, all your golf equipment will always in the right place at the right time. When you're traversing up and down a hilly course, you don't want to be pushing and pulling your gear from hole to hole. You'll be exhausted after 9 holes and your game will suffer. The constant stops and starts can be draining and hard on your neck and shoulders, all of which negatively impacts your performance. Get around the course quicker and easier with less effort. Perfect for hilly golf courses and on those with downhill inclines.
• DIMENSION(COLLAPSED): 25" x 11" x 11"
• DIMENSION(EXPANDED): 33" x 11" x 11"


text:
Mrs Yu-Foo Yee Shoon was born on 17 February 1950 in
MRS. YU-FOO YEE SHOON
MINISTRY OF COMMUNITY DEVELOPMENT, YOUTH
AND SPORTS
In 1984, Mrs. Yu-Foo Yee Shoon was elected Member of Parliament. Since
then, she has repeatedly been returned to represent the electoral division of
Yuhua, now part of the Jurong Group Representation Constituency (GRC). She
is currently representing Bukit Timah Constituency which is part of the Holland –
Bukit Timah Group Representation Constituency (GRC). In June 1999, she was
appointed Senior Parliamentary Secretary for the then Ministry of Community
Development and Sports. In November 2001, she was appointed Mayor of the
Bukit Timah Community Development Council (CDC), which subsequently
expanded to become the South West CDC. In August 2004, Mrs. Yu-Foo was
appointed Minister of State for the Ministry of Community Development, Youth
and Sports.
She started her career as a Senior Industrial Relations Officer with the National
Trade Union Congress (NTUC) soon after her graduation from the university.
Over the years in NTUC, she has been Chairman, Vice-President, Assistant
Secretary-General and Deputy Secretary-General of NTUC.
Her other
appointments include Member of the Professional Advisory Council of NTUC
Childcare Co-operative Ltd. She was Chairman of the Board of Trustees of the
Singapore National Co-operative Federation (SNCF) and Chairman of the
Central Co-operative Fund Committee (CCFC). She was also Board Member of
several statutory boards, co-operatives and listed companies such as the
Economic Development Board (EDB), Singapore Telecommunications, NTUC
Insurance Co-operative (INCOME), NTUC Fairprice, NTUC Childcare, National
Environment Agency (NEA), Jurong Town Corporation (JTC) and People's
Association (PA). In 2009, she was the Chairperson of the 14th Annual AsiaPacific Economic Cooperation (APEC) Women Leaders' Network (WLN) Meeting
Steering Committee.
She was named "Woman of the Year" in 1995 by Her World Magazine. In 1997,
she was awarded the Rochdale Medal by the Singapore National Co-operative
Federation and in 2005, she received the Alumni Achievement Award from the
Nanyang Technological University. In May 2008, she was conferred the
Honorary Degree of Doctor of Education by Wheelock College, Boston, USA.
Currently, she is also the Chairperson of Comcare Supervisory Committee. The
Singapore Council of Women's Organisations (SCWO) inducted her to its Wall of
Fame in 2009.
Mrs. Yu-Foo had her secondary education in Nanyang Girl's High School from
1962 – 1967. She was admitted to the then Nanyang University where she
graduated in 1971 with a Bachelor Degree in Commerce. In 1996, she obtained
a Master of Business Degree from the then Nanyang Technological Institute.
Mrs. Yu-Foo was born in Singapore in 1950. She is married with three children.
She enjoys reading, cultural activities, cooking for her family and friends and
having brisk walks with them.
Reasons behind sourcing house brand products
Photon Polarization Dependence of
Role of Trade Unions in New Economy: How to Have the Cake and Eat it at the Same Time
The Tripartite Family is all set to welcome even more PMEs into its
PS2249 Revision Document
Singapore Labour Foundation Annual Report 2014 S
COP - United Nations Global Compact


This card captures the spirit of the holiday season so well, with its rich reds and greens, mistletoe, and everything in between. The holiday season always seems to approach more quickly than you expect. Whether you planned ahead this year, or you're needing some last-minute greeting cards, we're here to help. Needing some customer holiday greeting cards, or maybe a greeting card for your entire office? This card is perfect for just about any holiday, as it does not explicitly focus on one or the other. The rich colors and simple background create a professional yet festive card.


text:
Q: 40% drop in number of page views (and users and sessions) after updating ga.js to gtag.js I manage a website which has a corresponding Google Analytics property created many years ago whose ID is like "UA-XXXXXX-X" (where the X's are digits).
Up to now, the tracking code at the top of every html page used to be this:
<script>
window.google_analytics_uacct = 'UA-XXXXXX-X'; var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXXX-X'], ['_trackPageview'], ['_trackPageLoadTime']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);  })();
</script>

which is what Google had told us to use many years ago.
Yesterday I went to Admin -> Tracking Info -> Tracking code (for the very same property) and realised that the tracking code that they give now is:
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXX-X"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-XXXXXX-X');
</script>

So I replaced the old code with the new code in the HTML.
After that, today, the visits (both in terms of page views, users, and sessions) have dropped between 40 and 50%.
It's not a real drop in traffic, there has been no significant decrease in throughput in terms of requests received by the server (and we're talking about ~20k users per day).
If I had done something wrong I could have expected to see exactly zero visits, but around 50% less visits makes no sense.
What could be the issue?
Actually, the exact same thing has happened with two other smaller websites, which have about 1/10th the traffic of the big one (I updated all three at the same time, each with its own tracking ID); for the smallest, the drop has been of about 80%.

A: Well apparently gtag.js simply doesn't work with UA-XXX properties.
They claim it does, they tell you to use it (meaning, the tracking code they give you in the admin panel of your UA property to copy and paste is the one that uses gtag.js), but it won't work.
Source: none except for my own experience. Nothing in the docs tells you this; in fact, they tell you the contrary.
I have done this for half a dozen of UA-XXXX properties, replacing the old ga.js, supposedly obsolete (twice obsolete, as it had already been supposedly replaced with analytics.js), which was working, with the new gtag.js, and in all cases, the amount of data has dropped by anywhere from 50% to almost 100% (i.e. practically no data).
Then I just created new GA4 properties for the same websites, I started tracking them, and I'm getting the data again just fine. Well, I'm getting the data with a lag of several hours, whereas with the old UA properties and the old JS code I was getting all the data instantly, but that's just Google: new versions offer a worse service than the older versions. However, apart from the lag, I now get correct and apparently complete data again.
To summarize, there are three versions of js code for Google Analytics:

*

*ga.js: super obsolete, you are not supposed to use this one (yet I was until yesterday and it was working perfectly with UA-XXX properties). Works with UA properties, not with GA4 properties (i.e. G-XXX)

*analytics.js less obsolete. I haven't used this one so I can't offer any experimental data. It is supposed to replace ga.js, and if I'm not mistaken it's supposed to work with UA properties but not GA4 properties.

*gtag.js the new one. It is supposed to replace everything else and support both UA and GA4 properties (UA-XXXXX and G-XXXXX) but in reality only works with GA4 properties despite all claims to the contrary in the docs. If you use this one with a UA property, you'll lose a random (huge) percentage of the data, with no warning that anything is wrong and no indication of how much downsampling you're getting.

So, they recommend you to migrate to gtag.js, but if you do, you also have to switch to a new GA4 property.
Which will break backwards compatibility with almost any preexisting tools that had anything to do with the API:

*

*anything you had using the Google Analytics API that was compatible with the old UA properties needs to be completely rewritten using the new Google Analytics Data API (which btw is in beta, it's not stable, it's buggy and lacks features that were present in the old one). Oh, and this new stuff will not be compatible with old UA properties. It goes both ways.

*the Embed API (a JS api that allowed you to easily embed front-end pre-made graphs with Analytics data with zero effort) is not compatible and there is no replacement (you need to do it from scratch with the new API and Google Charts).

This is just how Google does business.


text:
En kolplanet, också kallad diamantplanet, är en teoretisk typ av stenplanet föreslagen av Marc Kuchner med inre lager av diamant som kan vara flera kilometer tjockt. De diamantrika planeterna kan formas av små partiklar i protoplanetära skivor som hittas runt många stjärnor om de är rika på kol och har lite syre. Denna typ av planet skulle ha utvecklat sig annorlunda jämfört med Jorden, Mars och Venus, de så kallade silikatplaneterna som till största delen är uppbyggda av kisel och syre.

Nuvarande teorier säger att kolplaneter har en järnrik kärna likt de kända stenplaneterna. Utanför kärnan finns ett tjockt lager av kiselkarbid och titankarbid och utanför detta ett lager av kol.  Kolet skulle vara i form av grafit, möjligen med ett lager av diamanter på botten om planeten är tillräckligt stor för att skapa det nödvändiga trycket.

Planetens yta skulle vara rik på kolväte och kolmonoxid. Jordlikt kolbaserat liv med vatten som lösningsmedel skulle kunna existera på en sådan planet om det finns tillräckligt med vatten, men troligtivis skulle metabolismen få motsatt riktning på grund av den kraftigt reducerande omgivningen.  Syrehaltiga föreningar skulle alltså intas som föda för att reagera med den kolrika atmosfären.

Observationer
Planeterna som kretsar kring pulsaren PSR 1257+12 kan vara kolplaneter, troligtvis formade av en splittrad stjärna som producerat kol när den åldrades.  Andra goda kandidater till att vara kolplaneter är de som ligger nära vintergatans centrum, där stjärnor har mer kol än de som liknar solen.

Kolplaneter förutsägs ha liknande diameter som kisel- och vattenplaneter av samma massa, vilket skulle göra dem potentiellt svåra att urskilja.

Referenser och noter

Se även
Stenplanet
Planetarisk vetenskap
Definitionen av planeter

Externa länkar
astro-ph 0504214 Marc J. Kuchner, Extrasolar Carbon Planets

Typer av planeter

redpajama_set_name: RedPajamaWikipedia


text:
WYPR Arts
The 'Black History' Of America's White House
For many Americans, the White House stands as a symbol of liberty and justice. But its gleaming facade hides harsh realities, from the slaves who built the home to the presidents who lived there and shaped the country's racial history, often for the worse. In The Black History of the White House, Clarence Lusane traces the path of race relations in America by telling a very specific history — the stories of those African-Americans who built, worked at and visited the White House.
"Most of us grew up learning history, and we learned about George Washington and the cherry tree and all of that," Lusane tells NPR's Mary Louise Kelly, "but everything else was kind of a blur." But when you do the research, he says, you see how slavery "really shaped the first third of the country's history, and certainly impacted the White House and the occupants of the White House."
George Washington owned 10 slaves as an 11-year-old, and more than 300 by the time he died. One woman, named Oney Judge, captured Lusane's interest. "Oney was one of the enslaved individuals who traveled with George Washington after he was elected president," Lusane explains.
The White House hadn't been built yet, so during the 10 years of its construction, Washington spent time in New York, then moved to Philadelphia. In Philadelphia, "he had a couple of problems." Philadelphia had a law called the Gradual Abolition Act, passed in 1780. It stated that any slave brought into the state was eligible to apply for their freedom if they were there for longer than six months. Washington rotated his slaves to get around the law.
Judge worked for Martha Washington, who planned to give her away to a relative as a wedding gift. That inspired Judge to act — she knew the Washingtons planned to free their slaves upon their deaths, but that would be unlikely under a new master.
"One evening in 1796, before Washington's presidency ended in Philadelphia, while the Washingtons were sitting down to dinner, she went out the back door," says Lusane. She'd made contact with the local black community, and they helped her escape.
Judge was later discovered in New Hampshire, and President Washington decided to go after her. "Now, think about this," says Lusane. "You've escaped from the most powerful individual in the country, who can send virtually anybody after you. That's the kind of courage that she had."
Washington sent someone to sit down with her and ask her to come back with the promise that she'd eventually be free. Her response, says Lusane, was, "Well, I'm already free." Washington then sent his nephew to kidnap her, but she had been warned and never went back into slavery.
"Her story is so compelling," says Lusane, because she started as powerless as could be — as a slave. But because her desire for freedom was so strong, "she was willing to go up against the most powerful person in the country."


Discussion in 'Windows XP' started by Airan, Jul 20, 2006.
Hello all, I've recently had troubles with Winamp - it closes itself automatically about 10 seconds after opening. This is quite worrying, so I made a HiJackThis scan. I didn't see anything wrong with what's installed until I found 5 entries of awlsp23.dll in the Winsock LSP. Google brings up very little information, except for one site that lists the 88kb file as 'Safe', but could not bring up any company info on it.
You are infected and unfortunately you are going to have to wait for a member of the HJT team to diagnose your log file. I can read them but not proficiently and there fore can not give any help other than this. Have a good one.
Yeah the two things have me worried are the Explorer.EXE and the Winsock entries. Other than that I don't see what else that could be an infection.
I'm using Opera 9 as well, which appears to be less secure than Firefox for some reason. Well, I've had not much of these problems before using Opera 9.
Bump. Anyone have an idea of the DLL file? Or is there a way I can inspect it myself?


Perisic has reportedly agreed to terms with Arsenal after Inter's director confirmed he was ready to leave, and Emery confirmed the Gunners were in the market for a new winger.
The Gunners are equally thin at the backline with most players in that department currently facing spells on the sidelines.
"The club is working with the possibility with different players," the Coach said at a Press conference via Football Italia.
"I do not know the players, I cannot say exactly the players but they are players with the possibility to help us, who can play as [a] winger, right or left.
"I think all the players that can come and help us are good. I know it is not easy. We [have been] speaking [for] two months with this possibility but we know that it's not easy.
"[We could sign] between zero and two. If they aren't coming to help us like we want, I prefer they don't come.
Arsenal will be in action tomorrow when they confront struggling Cardiff at the Emirates stadium.


perf is a comprehensive profiling system for Linux. It is also known as Performance Counters for Linux (PCL) or Linux perf_events (LPE). It provides access to performance counters including low-level hardware counters as well as tracepoints (supported by the kernel's ftrace infrastructure) for dynamic tracing similar to DTrace.


Coupled with a lovely sunny northerly aspect and a very generous 1.151m2 block of land, you have the best of both worlds (size and aspect) to build that special home.
This elevated block with lake glimpses is situated in a nice quiet part of Smiths lake set amongst natural bushland.
–	5 minutes drive to local shops and 7 minutes drive to our stunning beaches.
'List and Sell with the area's leading Agency!
*NB. We have obtained all information in this document from sources we believe to be reliable; however, we cannot guarantee its accuracy. Prospective purchasers are advised to carry out their own investigations.
Sharon moved the Palms in 1988, raising her family and holding a directorship with a major cosmetic company while exploring the region. With a passion for real estate and sales, she joined the sales team in 2005. Since then Sharon has combined her love of working with people and of Pacific Palms continuing to connect families with dream homes.


This, I would assume, is an excellent example of blind faith. Neither of us was injured but the scenario brought home the fact that we may easily place confidence in something that later reveals itself to be unreliable. We find something or someone that we believe is doing "it" the way it should be done; we trust our beliefs and we follow them.
Barbara Alexander, Monterey-based talk show host and supposed financial advisor was sentenced to nine years in federal prison Wednesday for bilking investors out of $6.3 million in a Ponzi scheme that she and associates ran from 2006 to 2009. People liked Alexander and trusted her – and there was, of course, the lure of exceptionally high interest on money they invested.
Carmel resident, Jay Zubick, a supposed financial genius embezzled some $16 million from friends turned investors in a Ponzi scheme he perpetrated from 2000 to 2007. Zubick was liked – he drove great cars, lived in a lovely Monterra home and his children attended a well-respected, private school. Many of his victims cried at his sentencing – visibly displaying their deep and painful feelings of betrayal.
Monterey County seems to have a colorful past – hopefully past – of opportunists turned embezzlers or Ponzi schemers. David Nielsen had taken in some $100 million of investor dollars when his Ponzi cloaked in a mortgage lending scheme, Cedar Funding, came crashing down. Local attorney Dennis Fox diverted more than $1 million from the estate of a deceased client and another local attorney, Richard Wilsdon, diverted funds from clients' estates not once but twice during his legal career.
In truth, as humans we must trust others or we simply could not survive. Additionally, having faith in our fellow man is in our nature and many say that without this, life itself would be meaningless. I agree. However, as we age and become more dependent on others what can be done to protect ourselves from the unscrupulous or illegal acts of others?


35mm Rolls Honister Recess Bracket. Sold in a pack of 2.
Bracket Text: The 35mm Honister recess brackets are an optional extra. They can replace the end bracket so that the pole can be directly fitted to the wall. Two recess brackets can be used if you require a pole to fit between two reveals for example. They are supplied in pairs and fit the 35mm Rolls Honister range of curtain poles.
We offer free delivery on all orders over £97.50. There is a £7.95 delivery charge on orders under this value. Please refer to our delivery Ts and Cs for a full breakdown of our delivery charges.
The leadtimes vary depending on the product ordered. Please refer to the Leadtime on the product specification tab for information on the particular product you are looking at. If the product is available on a 'Next working day' service this applies to all orders received up to 6pm. Please note there is a 4pm cut off for any Jones products. Any orders placed over the weekend will be dispatched on the Monday for delivery to you on the Tuesday.
Please note the next working day service is subject to stock availability. If there are any stock shortages we will notify you immediately and work with you to find a suitable solution to meet your requirements. If you don't want delivery the next day please call us on 01590 615775 to place your order over the phone and we and we can set up delivery for your nominated day.
Whilst we will endeavour to fulfil our delivery promises once the goods leave our warehouse we do rely on 3rd parties to fulfil their obligations. We therefore recommend that a fitter isn't booked until the goods are safely in your hands and have been checked for damage and any missing items. We cannot be held responsible for any fitter cancellations.
We hope that you are delighted with your purchase. In the event that you are not and would like to return your goods we accept returns (except for made to measure products which cannot be returned or exchanged unless faulty) within 30 days of delivery.
There is an £18 collection charge to return curtain pole or curtain track orders. We appreciate this is a lot of money but this is what our couriers charge us. Curtain poles and tracks are classified as 'oversized' items and so they incur a premium for handling long parcels.
If you would like to return curtain pole accessories or curtain track spare parts these can be returned by Royal Mail or a carrier of your choice. Please return smaller items to: The Home Of Interiors, The Design Hub, 41 Brookley Road, Brockenhurst, Hampshire, SO42 7RB.
To return and obtain a refund (excluding delivery costs) please email us at sales@thehomeofinteriors.co.uk or give us a call us on 01590 615775. We will then contact you to organise the collection / return. Failure to notify us may result in no refund or an additional cost to forward your returned item/s to the correct address.
Any products you return will be at your own cost and the goods must be in the same condition which they were received. The goods must be in their original packaging. The goods are your responsibility until they reach us so please make sure any returned items are very well packaged to avoid damage while in transit. Please ensure the returns reference, which will have been emailed to you, is clearly marked on the outside of the parcel. We recommend you use the outer packaging the goods were delivered in.
If on receipt of the goods we inspect them and conclude that they are not in the same condition they were sent out in we will not be able to provide a refund. We will notify you if this is the case.
The refund, minus the original delivery charge and minus the collection charge, is usually actioned within a week of the items being returned but it can take up to 30 days. The refund will be made back to the account that the original purchase was made from.


text:
<?xml version="1.0" encoding="utf-8"?>
<com.hyphenate.easeui.widget.EaseChatPrimaryMenu xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/primary_menu"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

redpajama_set_name: RedPajamaGithub


text:
Home Articles Gear Cars Introducing the dynamic, brand new Range Rover Sport
Introducing the dynamic, brand new Range Rover Sport
From its 'stealth-like' LED lights to its 525 horsepower, here's how the British carmaker created "the most engaging and thrilling Range Rover Sport ever…"
Words: Rory Smith
The words 'Sport' and 'Range Rover' have been unusual bedfellows for close to two decades. Sitting high and weighing in at close to two and half tonnes, its athletic ability might not be the first thing a casual observer might call out to describe the new Range Rover Sport, but 18 years on from the model's debut and the latest Sport has arrived to prove us all wrong.
Descended from the radical Range Stormer concept that made its debut in 2004, the Sport marked the point at which the Range Rover model range expanded beyond the original — a trend that would eventually give way to the Evoque in 2008 and the Velar in 2017. While welly-wearing Range Rover purists panned it before they'd even slotted in behind the wheel, the Sport would prove a success and a highly desirable alternative to the 'full-fat' Range Rover.
"Our latest Range Rover Sport embraces fully our modernist approach of vehicle design," says Jaguar Land Rover's Chief Creative Officer, Prof Gerry McGovern OBE. Continuing his 'reductive' design philosophy, the long-time Land Rover design chief barely had time to take his ballpoint off the sketchpad between the launch of the new Range Rover and the next generation Sport.
Championing the same, squat stance and clean, confident styling as found on its more stately sibling, the Sport is a more dynamic take on McGovern and his team's design direction.
From the side silhouette, you might be hard pushed to tell it apart from the existing Sport but it's the re-worked front and back that set the latest generation apart from its predecessors. Slimmer, 'stealth-like' LED lights slot in between the Sport's cam-shell bonnet at the front and it's new, smooth tailgate at the back. That, coupled with the intricate front bumper and wider stance make for a menacing appearance, while ensuring it sits in-line with its new, elder sibling.
On the inside, it's a case of streamline, refine and add tech, as the Sport now features the same centrally-mounted 13-inch Pivi Pro touchscreen found in the Range Rover which stands proud of a sleek, fuss-free dash. As the name would suggest, everything about the Sport is designed to hint at the car's performance and dynamic qualities, so expect the driving experience and new 'Command' driving position to echo this when it hits the road later this year.
On that very note, the Sport's party piece – of course – was always its driving style, which added a touch of spice to the well-trodden SUV formula. With the range-topping model equipped with a BMW-derived twin-turbocharged V8 engine, expect the Sport to live up to its name, boasting 525bhp and 0-62mph in 4.5 seconds.
Helping it transfer all that power to the road is all-new architecture under the skin and a high-tech chassis system, which combines electric (48-volt) roll control, trick air suspension, rear-wheel steering, an electric active differential and torque vectoring to make Land Rover's stiffest body ever.
"The result is the most engaging and thrilling Range Rover Sport ever…"
"All that comes together to deliver the highest levels of dynamism we've ever seen on Range Rover Sport," says Nick Collins, Jaguar Land Rover's Executive Director for Vehicle Programmes. "The result is the most engaging and thrilling Range Rover Sport ever."
For those looking for something a little more canine and kid-friendly, the Sport can be chosen with six-cylinder petrol, two six-cylinder diesels plus a pair of hybrid plug-ins (434 or 503bhp), which promise to do 54 real-world miles on pure electric. Adding to that, much like it's all-new sibling, the Sport will be offered as an all-electric model in 2024, so hold out a little longer for those looking for an alternative to the Tesla Model Y.
With the order books now open, all that's left to discuss is the price, which starts from a touch under £80,000. Steep, I hear you say? Perhaps. But, considering the new Range Rover starts at a snip under £100,000, the Sport could be seen as a more justifiable purchase – so long as you swerve the extensive options list, that is. Like its predecessors, the Sport will be made in Jaguar Land Rover's Solihull factory, flying the flag for UK car manufacturing once again.
With the dust still settling on frenzy that followed the launch of the new Range Rover a few months ago, Range Rover fans will be spoilt for choice when it comes to picking their next ride. With promising performance figures from the Sport, you might want to consult the pooch before making the purchase, however.
2022 Range Rover Sport
Want more from Range Rover? Here's how Gerry McGovern designed the latest generation car…
Grooming ― 11 months ago
These are the neatest nose hair trimmers for men
Editor's Picks: Ressence 'AIT' Watch, Gucci Jaguar XJ-S and Balblair Whisky
Food & Drink ― 11 months ago
Serious about coffee? Invest in an at-home roaster…


text:
OEF 2023 warm up shows l Daddies Go Grindcore!!!
At the end of April 2023, a short but intense tour of three bands, who have a long-lasting friendship, an age when they…
STRJA: New italian black metal!
A new band is coming in the underground Italian black metal scene: the name of the band is STRJA. At the moment the…
UNALIGNED: New death metal album "Inner Dimensions"
Due to the popularity of their latest album, "Inner Dimensions", technical death metal outfit UNALIGNED will be releasing the album on CD on…
BLINDEAD 23: New experimental metal band formed by Mateusz 'Havoc' Śmierzchalski
One door closes, and another opens. That's one way of viewing the evolution of the career of Mateusz 'Havoc' Śmierzchalski. Extreme metal fans…
ASTARIUM – Politics has the masses as its target audience, whereas art is exclusively individual. How many people out of 1000 listen to black metal?
Black metal project ASTARIUM is formed in the summer of 2005 in Novosibirsk. In the capacity of the unique member acts SiN (all…
SATAN II: Industrial/ Black/ Grind Metal act from France!
Oppressive Industrial Black Metal madness formed by Kosm (Void Of Nothingness/Bong Of Nothingness) and Malemort (Woest) in 2022. https://satanii1.bandcamp.com/album/satan-ii
DIORAMA release a remix compilation!
With "fast advance fast reverse" diorama release a remix compilation as an encore to their much-acclaimed album "tiny missing fragments". The idea for…
GRIEF CIRCLE – We live in quite fucked up times. Two years of pandemic lured many to hopelessness, vague perspectives and powerlessness of one's actions
About GRIEF CIRCLE from Poland: Ex-members of MOANAA, FORGE OF CLOUDS and VOIDSMOKER mixing doom and post-metal for your aural pleasure. Interview: Filip…
DØDSENGEL: 'Angel of Death' has grown exponentially, reaching its apex on 5th full-length "Bab Al On"
15 years since formation the inimitable cult of Norway's DØDSENGEL ('angel of death') has grown exponentially, reaching its apex on 5th full-length "Bab…
ESTRANGEMENT: Australian funeral doom entity premieres "Detritivore" single, new album "Disfigurementality" out this month
Australian funeral doom metal meets classical music act ESTRANGEMENT are now proudly releasing their brand new single "Detritivore", which is taken from the…
Finnish melodic death metal band ADMIRE THE GRIM is set to release their debut EP "Rogue Five"
Finnish melodic death metal band ADMIRE THE GRIM is set to release their debut EP Rogue Five on January 13th 2023 via Inverse…
Dutch doom death metal band STRUCTURE (featuring OFFICIUM TRISTE & THE 11TH HOUR guitarist) releases remastered debut EP via Ardua Music
STRUCTURE is a project created in 2021 by former OFFICIUM TRISTE and THE 11TH HOUR guitarist Bram Bijlhout. After some years of inactivity…
Finnish Occult Rockers CIMINERO reveal new album details; first single out now!
Following their much acclaimed, 2019-debut Subterranean Awakening, recorded just 5 months after the band's first rehearsal, Helsinki-based CIMINERO reveal full details of their…
Polish doomers GRIEF CIRCLE release debut album entitled 'Weightless'
'Weightless' is an excruciatingly emotional journey into the void, just to ultimately reach nothing, never, and nowhere. Quite contrary to the album's title,…
Listen to ÚZKOST's new single "Mt'hr"
"Úzkost" means "anxiety" or "urgent fear" in Czech. The name was chosen in honor of Josh's grandfather who has Czech heritage. Pittsburgh blackened…


text:
Home News Briefs Ottawa's Elliptic Technologies racks up $4 mln in new funding
Ottawa's Elliptic Technologies racks up $4 mln in new funding
Brad Meikle
Elliptic Technologies Inc said Wednesday that it has raised $4 million in funding. Investors included BDC Venture Capital and Anges Québec members. Based in Ottawa, Elliptic Technologies is a provider of embedded security solutions. Update: The company plans to use investment proceeds to support its growth strategy, opportunities through the continued development of its tVault™ technology, and expansion of the sales and marketing teams. Founded in 2001, Elliptic Technologies has been venture-backed since 2002.
Ottawa, Canada (PRWEB) November 13, 2013
Elliptic Technologies, a leading provider of security for the connected world, today announced the company has secured $4 million of additional funding from existing and new investors including BDC Venture Capital and Anges Quebec members.
Building on Elliptic's track record of delivering field-proven embedded security and content protection solutions, the company will deploy the new capital to support the company's growth strategy, and fuel more extensive market opportunities through the continued development of its breakthrough tVault™ technology, and expansion of the sales and marketing teams and initiatives.
"We are delighted to have been early investors in Elliptic Technologies. Elliptic has built an impressive list of clients, and demonstrated consistent leadership and innovation in delivering security solutions which is why we believe they have what it takes to grow and move to the next level," said Ian Wyatt, Partner at BDC Venture Capital. "This investment fits naturally within BDC Venture Capital's efforts to bolster the Canadian venture ecosystem, by enabling the best companies to achieve scale. We wish Elliptic ongoing success in their expansion efforts."
"With the number of connected smart devices predicted to reach 50 billion by 2020, creating countless possibilities to access and use content, we recognize a critical need for embedded security in these devices," said Vijay Dube, President & CEO of Elliptic Technologies. "I consider the support of our existing and new investors to be a strong testimonial of their confidence in Elliptic's products and expertise to compete and succeed in this marketplace."
"Elliptic is an innovative business that has the potential to be a security game-changer for today's connected devices," said Jean-Francois Grenon, Anges Quebec member and lead angel for this investment. "We are pleased to support this funding to boost their long term goals, technical capabilities and ability to gain traction in new markets – they are well poised for success."
Elliptic has recently added three new board members, and is in the process of expanding their marketing, sales and technical support teams to strengthen the company's international presence, drive faster time to market, increase brand awareness and market share.
About BDC Venture Capital
With more than $1 billion under management and more than 25 years of industry experience, BDC Venture Capital is an investor of choice focusing on IT, health and energy/cleantech companies, as well as venture funds, with high growth potential. From seed through expansion to exit, their mandate is to help build outstanding Canadian companies, while working to create a sound financial ecosystem for Canadian technology ventures. Find out more at http://www.bdc.ca/vc or on Twitter @BDC_VC.
About Anges Quebec
Anges Québec is a network of 130 private investors that identifies, finances and coaches innovative Quebec enterprises with high growth potential. In this capacity, Anges Québec works closely with a number of key Québec organizations interested in the development and growth of technological innovations. So far, Anges Québec members have invested and reinvested in 33 promising businesses in the seed and startup phases. http://www.angesquebec.com
About Elliptic Technologies
Elliptic Technologies is a leading provider of embedded security hardware cores and software to chipset vendors, device manufacturers, service and content providers. Elliptic's highly integrated solutions enable the most efficient silicon design and highest levels of security for some of the world's most popular products in markets such as mobile, networking, home entertainment, smart grid and automotive. Elliptic is leading the world in DRM and link protection solutions with flagship technology tVault® for downloading and sharing premium content between multiple devices, including Microsoft® PlayReady®, DTCP-IP and HDCP SDKs built for "trusted execution environments" used in consumer electronics. Learn more at http://www.elliptictech.com
Photo courtesy of Shutterstock.
VC Deals


text:
Top 10 best mobile phones in the world
July 28, 2017 March 3, 2020 by ArticleIcon
Cell phones have turned into an undeniably necessary piece of our lives. The primary handheld cell phone was exhibited by John F. Mitchell and Martin Cooper of Motorola in 1973.
In first quarter of 2017, the best cell phone makers were Samsung, Apple, and Huawei
Here is a rundown of best 10 worldwide cell phones in World in 2017.
Starting with the absolute best telephone as of now accessible.
1. Samsung Galaxy S8 and S8 Plus
Samsung's Galaxy S8 is running on Android working framework v7.0 that runs the telephone effortlessly. In single sim show, there is a committed opening for SD card while Samsung Galaxy S8 likewise collected with double sim spaces. On account of double sim.
Samsung Galaxy S8 Colors
Mobile phones have become an increasingly integral part of our lives. The first handheld mobile phone was demonstrated by John F. Mitchell and Martin Cooper of Motorola in 1973.
In first quarter of 2017, the top smartphone manufacturers were Samsung, Apple, and Huawei.Smsung stupefies everybody by announcing Galaxy S8 so soon as it's a very strong addition to galaxy family
2. iPhone 7 and 7 Plus
Apple iPhone 7 Plus this telephone accompanies a 5.50-inch touchscreen show with a determination of 1080 pixels.
The new leader iPhones are more refined, offering the evacuation of the earphone jack for stereo speakers, alongside better shrouded reception apparatuses and waterproofing.
There are brilliant new hues accessible, and to finish it off, the packaging is presently water safe.
Apple iphone 7 plus and iphone-7
3. Google Pixel
Google turns out with its Pixel and the bigger Pixel XL.The consistent Pixel has a 5-inch Full HD show, while the Pixel XL has a bigger 5.5-inch Quad HD show.
The cost is somewhat high, be that as it may, and they need microSD or waterproofing. They even have a 3.5mm earphone jack.
The cameras are magnificent and the battery life is great.
Google pixel phone
4. OnePlus 5
Awesome plan meets effective specs, with the most recent equipment to match top devices.There's a double camera framework on the back.
You'll get all the mod-cons of significantly more costly handsets, including a HD screen, helping quick unique mark sensor, a nice double camera and insane capable specs.
OnePlus 5 Phone
5. LG G6
The LG G6 gadget offers an assemble, execution and show that are all up there with the best cell phones accessible, and in addition lightweight programming and a double camera.
Weight: 163g | Dimensions: 148.9 x 71.9 x 7.9mm | OS: Android 7.0
LG has utilized a 2016 chipset, so it's not the most proficient cell phone accessible, and the skin over Android Nougat isn't the best out there
LG G6 Phone
6. HTC U11
HTC U11 is controlled by 2.45GHz octa-center Qualcomm Snapdragon 835 processor and it accompanies 6GB of Slam.
It's an awesome telephone since it does essentially everything right: it has a special back plan with those profound glass backs, a high caliber of construct and waterproofing.
HTC U 11 in different Colors
This is a phone that will serve just about anyones need.
OS Android v7.0 Nougat
UI HTC Sense UI
SIM Dual Sim, Dual Standby (Nano-SIM)
Colors Amazing Silver, Sapphire Blue, Brilliant Black, Ice White, Solar Red
2G Band SIM1 & SIM2: GSM 850 / 900 / 1800 / 1900,
3G Band HSDPA 850 / 900 / 1900 / 2100
4G Band LTE band 1(2100), 3(1800), 4(1700/2100), 5(850), 7(2600), 8(900), 12(700), 17(700), 20(800), 28(700), 32(1500), 38(2600), 39(1900), 40(2300), 41(2500)
CPU Octa-core (4 x 2.45 GHz Kryo + 4 x 1.9 GHz Kryo)
7. Huawei P10
Huawei P10 is a cell phone with Apple plan and Android software,it accompanies 5.10-inch 1440×2560 show controlled by octa-center processor nearby 4GB of Smash and 20-megapixel.
The UI still falls behind its rivals, as does the camera, and the battery life isn't extraordinary either.
It's the perfect cell phone on the off chance that you adore Apple's mechanical outline and Google programming.
Huawei p10 color variations
Following are it's features:
OS Android OS, V7.0 (Nougat)
UI Emotion UI 5.0
Colors Mystic Silver, Rose Gold, Graphite Black, Dazzling Gold, Dazzling Blue, Greenery
3G Band HSDPA 850 / 900 / 1700(AWS) / 1900 / 2100
4G Band LTE band 1(2100), 3(1800), 4(1700/2100), 7(2600), 20(800), 38(2600), 39(1900), 40(2300)
CPU Octa-core (4x 2.4 GHz Cortex-A73 + 4 x 1.8 GHz Cortex-A53)
8. Huawei Honor 9
The Huawei Honor 9 is fueled by 1.8GHz octa-center Kirin 960 processor and it accompanies 4GB of Smash.
Respect 9 is a decent cell phone, it has a strong plan, OK camera, and top of the line specs,dual camera is fit for taking some striking pictures.
The Respect 9 is 100% strong in each key respect,following are a portion of it's component.
OS Android OS V7.0 (Nougat)
Dimensions 157 x 77.5 x 6.97mm
SIM Dual-SIM, Dual Standby, Nano-SIM
Colors Various
3G Band HSDPA 900 / 1900 / 2100
4G Band LTE
CPU Octa-Core
Chipset HiSilicon Kirin 960
Technology LTPS capacitive touchscreen, 16M colors, Multitouch
Size 5.7 inches
Extra Features Active noise cancellation with dedicated mic, Google Search, Maps, Gmail, Talk, Document viewer, MP3/WAV/eAAC+/Flac player, MP4/H.265 player, Google talk
Memory Built-in 128GB built-in, 6GB RAM
Memory Card microSD card (supports uo to 256GB)
Camera Main 12 MP + 2 MP, autofocus, dual-LED (dual tone) flash
Camera Features F/2.2, laser, 1.4 um pixel size, geo-tagging, touch focus, face detection, HDR, panorama, Video (1080p@30fps, HDR)
Camera Front F/2.2, laser, 1.4 um pixel size, geo-tagging, touch focus, face detection, HDR, panorama, Video (1080p@30fps, HDR)
Honor 9 colours
9. Lenovo P2
The Lenovo p2 is an Android cell phone that is centered around battery life, created by Lenovo. It was authoritatively reported on September 3, 2016 at IFA demonstrate held in Berlin and discharged on November 2016, as a successor to the Lenovo Vibe P1. The gadget is accessible in Dark, Graphite Dim and Champagne Gold shading variations. It is one of only a handful couple of gadgets which has 5000+ mAh battery.
10. iPhone SE
Apple iPhone SE cell phone was propelled in Walk 2016. The telephone accompanies a 4.00-inch touchscreen show with a determination of 640 pixels by 1136 pixels at a PPI of 326 pixels for every inch.
iPhone SE Satisfies the prerequisites of those searching for a littler iPhone, the iPhone SE is about as spending plan as Apple gets.
The iPhone SE has all the energy of the , giving you speed and power that littler telephones regularly neglect to give you.
With a 4-inch screen and guts which coordinate the iPhone 6S, including the 12MP back camera, 2GB Smash, Apple Pay, Retina show, and Apple A9 chipset, this thing is a little pocket rocket.
Following are a portion of it's highlights.
OS iOS 9.3
Colors Space Gray, Silver, Gold, Rose Gold
2G Band GSM 850 / 900 / 1800 / 1900
3G Band HSDPA 800 / 850 / 900 / 1700(AWS) / 1900 / 2100 – A1662, A1723
4G Band LTE band 1(2100), 2(1900), 3(1800), 4(1700/2100), 5(850), 8(900), 12(700), 13(700), 17(700), 18(800), 19(800), 20(800), 25(1900), 26(850), 29(700) – A1662
CPU 1.84 GHz Dual-Core Twister
Chipset Apple A9
Technology LED-backlit IPS LCD, capacitive touchscreen, 16M colors, Multitouch
iPhone SE all colours
Tagged best mobile phone in the world, best smartphone, best smartphone overall, best smartphones 2016, Google Pixel, HTC U11, Huawei Honor 9, Huawei P10, iPhone 7 and 7 Plus, iPhone SE, Lenovo P2, LG G6, OnePlus 5, Samsung Galaxy S8 and S8 Plus, top 10 mobile brands in world 2017, top 10 smartphones 2016 the best phone out right now, world top 10 mobile company name list
PrevBagh the most beautiful and charming city in the world
NextTesla model 3 electric car prices , specs and pictures


text:
Matron!
I stood on the platform. Staring.
I know advertising execs operate on a different plain to us mere mortals, one where they think "Chocolate = a gorilla playing Phil Collins!" and "Outrageously unaffordable loans = puppets of old people!", but really. Sign up for our new smartcard - as used by zombies! I can only assume someone in the office said the words "dead handy" and they followed a train of thought. A train that probably should have been derailed.
I was back in Huddersfield to complete some unfinished business. Regular readers (hello you!) might recall an incident a couple of months ago where I had a small... moment. I abandoned a planned trip to the Penistone Line and instead spent the day in bed feeling low and miserable. The line remained unfinished.
So even though I was only in Huddersfield a couple of weeks ago, I'd returned to the station to polish it off. I wasn't going to be defeated, dammit.
Besides, it's the Penistone Line: a gift to smut lovers like me. It's got the word Penis in it. I was barely on the train before I started yuk-yukking like Finbar Saunders.
We zoomed through white hillsides, over the county border into South Yorkshire, and stopped at Penistone. It was a busy station, with a horde of passengers ready for their trip into Barnsley or Sheffield. Two workmen were shoveling the snow off the platform, stacking it up at the end while their supervisor took pictures with his phone. I assume it was for some sort of evaluation purposes, and he wasn't just admiring the fragile beauty of the wintry scene.
I do know it's pronounced Pennystun, by the way. It's a shame. I feel they should embrace the smuttiness of their name. IT'S PENIS-TOWN. Sell t-shirts and postcards and key rings. This is Britain, home of the Carry On films: go with the fact that everyone is going to snicker when they see it written down.
Penistone used to be a junction, with a further two platforms the other side of the now closed station building. The second line headed off to Manchester through a tunnel under the Pennines on famous Woodhead Line. This was the first line in the country to be electrified using overhead lines, but, in a typically British fudge, the system used wasn't adopted for the rest of the country. The Woodhead Line remained as a strange blip until British Rail decided in the early Eighties that people really wouldn't want a fast electric train route between Manchester and Sheffield and closed the whole thing. It's part of the Trans-Pennine Trail now, though there are periodic calls for it to be rebuilt.
I'd be visiting the other end of the Woodhead Tunnels at Hadfield later on, so I headed down the slippery road outside the station into town, pausing at the bottom for a smirky sign picture.
I had an hour until the next train south so I decided to go on a walk round the town centre in search of filth. I'd decided that Penistone must be filled with all sorts of smut and I wanted to laugh and point at every double entendre I could find, because basically I'm a twelve year old boy.
Initial signs weren't good. Penistone seemed like a perfectly reasonable small market town. There were chippies and dog grooming parlours (dog groomers seem to be the new tanning salon; every town has one) and a home interiors store. They had a sign in the window advertising Bill Beaumont Textiles, and I had a quiet giggle to myself at the thought of the former rugby player squatting over a knitting machine. I felt quite foolish when I got home and found that, yes, it is that Bill Beaumont; the former Question of Sport team captain has a family history in the world of soft furnishings. Live and learn.
I struggled to get a decent eyebrow raise out of the Penistone Paramount, not least because it's lovely to see a small local cinema still functioning in the era of multiplexes and Netflix. They were showing The Theory of Everything and the latest Hobbit, two films I'd only see at gunpoint, but good on them anyway.
Past the parish church, into the main street. There was a pub called The Spread Eagle, which is sort of rude, but it looked far too classy to indulge in that sort of undignified filth. A small cafe with gingham curtains had windows obscured by steam, while a man sat in Greggs and ate a sausage roll with calm deliberation, each mouthful carefully considered.
My attention was grabbed by the Market Hall. Looking like an old barn, it was attractive and impressive, but I couldn't help noticing there were hardly any stalls in it, and even fewer patrons. A glance further down the street revealed the reason: the car park of an enormous Tesco. It was clear the timber-framed Market Hall had been built as a sweetener for the town, a deal with the devil to allow the construction of the huge superstore. The town council had agreed, and now it found that no-one actually wanted to use the Market any more because the Tesco over the way was cheaper and you could buy a DVD and drop off your dry cleaning while you was there.
Back on the High Street a woman cowered when she saw my camera - "I don't want to be in your photos!". I continued past a beauty salon that offered "HD Brows" - real life is High Definition; you can't do anything to your eyebrows to change that - then turned into the residential Victoria Street. The pavements were slick with ice, so I walked slightly bow legged, each step like the start of an episode of Casualty. When the way ahead curved down a hill I gave up and walked in the road.
I was starting to feel guilty for laughing at Penistone. It seemed like a perfectly nice little town. I mean, I wouldn't want to live in a town with that name. I imagined phoning up a gas company or a credit card and giving my address.
"Town?"
"Pennystun."
"Can you spell that for me?" they'd say, and you'd sigh and go through it. After the fifth letter you'd hear a little snort down the phone, or they'd get annoyed with you for wasting their time, and you'd wonder why you hadn't just bought that house in Denby Dale instead.
After twenty minutes I was back at the entrance to the station again. It was too cold for me to just sit on the platform so I went back into town, taking a different route. I paused at a noticeboard which informed me that the local horticultural society has a website at http://growpenistone.org.uk/, a website that is probably blocked by a lot of workplaces.
Yeah, ok, I didn't feel that guilty about laughing.
Walking up the hill I got a bit of a shock when a skinhead emerged from a side passage. He didn't come at me with a Stanley knife, nothing like that; it was just that he was 100% skinhead: bald, checked shirt with braces under a bomber jacket, jeans that were turned up just above his boots. He was straight out of the 1970s, or rather, straight out of my family album: much to the amusement of my brother and I my mum used to be a skinhead. Like everything that happened to your parents before you was born, this has provided hours of laughter for us.
(In the interests of tonsorial equality, I will point out that my dad spent much of the seventies with a white man afro, my brother once dyed his hair the colour of marmalade by mistake, and this very blog is an ongoing catalogue of my battles with a whole series of hairstyles that don't suit me in the slightest.)
At the top of the hill, eureka! A smutty sign!
COCKPIT. As in COCK. As in PENIS. ROFL.
I'd have laughed louder except there was a funeral just arriving at the church over the way.
I figured that was as good as it would get for Kenneth Williams-esque blinders so I headed back to the station. The workmen were still there, now shoveling the snow on the other platform, chatting about their girlfriends all the while. To hide from the cold, I went into the waiting room, but it smelt like my rabbit's cage when it needed mucking out so instead I sat on the platform and waited for my next train.
I hoped the train would be a nice smooth modern one, not a rickety Pacer. There's nothing worse than climbing on board for a ride then bouncing around so much you end up with a sore backside.
OOER! FNAR! YUK-YUK!
Labels: Huddersfield, Northern Rail, Penistone, Penistone Line
I don't see any jokes in your entry (fnarr fnarr!) about Scunthorpe!
I have very little interest in Scunthorpes.
Jump Back In Time
Ice Station Yorkshire
Room at the Top
Divorce Day


text:
package com.amazonaws.eclipse.dynamodb.testtool;

import org.eclipse.core.databinding.AggregateValidationStatus;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.observable.ChangeEvent;
import org.eclipse.core.databinding.observable.IChangeListener;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.core.databinding.observable.value.WritableValue;
import org.eclipse.core.databinding.validation.IValidator;
import org.eclipse.core.databinding.validation.ValidationStatus;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

import com.amazonaws.eclipse.core.AwsToolkitCore;
import com.amazonaws.eclipse.core.ui.wizards.ErrorDecorator;
import com.amazonaws.eclipse.core.validator.IntegerRangeValidator;
import com.amazonaws.eclipse.databinding.ChainValidator;
import com.amazonaws.eclipse.dynamodb.DynamoDBPlugin;
import com.amazonaws.eclipse.dynamodb.preferences.TestToolPreferencePage;

/**
 * An (optional) wizard page that lets the user set up additional configuration
 * for the test tool instance they're about to launch. For now, that's just
 * the TCP port it will listen on.
 */
public class StartTestToolConfigurationWizardPage extends WizardPage {

    private final DataBindingContext context = new DataBindingContext();

    private final IObservableValue portValue = new WritableValue();
    private Text portInput;

    /**
     * Create a new instance.
     */
    public StartTestToolConfigurationWizardPage() {
        super("Configure the DynamoDB Local Test Tool");

        super.setMessage("Configure the DynamoDB Local Test Tool");
        super.setImageDescriptor(
            AwsToolkitCore.getDefault()
                .getImageRegistry()
                .getDescriptor("dynamodb-service")
        );
    }

    /**
     * @return the chosen port to listen on
     */
    public int getPort() {
        return Integer.parseInt((String) portValue.getValue());
    }

    /**
     * Create the wizard page's controls.
     *
     * @param parent    the parent composite to hang the controls on
     */
    @Override
    public void createControl(final Composite parent) {
        Composite composite = new Composite(parent, SWT.NONE);
        GridDataFactory.fillDefaults().grab(true, true).applyTo(composite);
        composite.setLayout(new GridLayout(2, false));

        Label label = new Label(composite, SWT.NONE);
        label.setText("Port: ");

        portInput = new Text(composite, SWT.BORDER);
        GridDataFactory.fillDefaults().grab(true, false).applyTo(portInput);

        // TODO: Would be nice to drive this off of the manifest.xml for the
        // chosen version, in case future versions of the test tool support
        // additional options.

        bindInputs();

        IPreferenceStore preferences =
            DynamoDBPlugin.getDefault().getPreferenceStore();

        if (preferences.contains(TestToolPreferencePage
                                     .DEFAULT_PORT_PREFERENCE_NAME)) {

            portValue.setValue(Integer.toString(
                preferences.getInt(TestToolPreferencePage
                                       .DEFAULT_PORT_PREFERENCE_NAME)
            ));
            context.updateTargets();
        }

        setControl(composite);
    }

    /**
     * Bind the UI to our internal model and wire up a validator to make sure
     * the user has input valid value(s).
     */
    private void bindInputs() {
        IObservableValue observable =
            SWTObservables.observeText(portInput, SWT.Modify);
        context.bindValue(observable, portValue);
        context.addValidationStatusProvider(
            new ChainValidator<String>(
                observable,
                new PortValidator()
            )
        );

        final AggregateValidationStatus aggregator =
            new AggregateValidationStatus(context,
                AggregateValidationStatus.MAX_SEVERITY);

        aggregator.addChangeListener(new IChangeListener() {
            @Override
            public void handleChange(final ChangeEvent event) {
                Object value = aggregator.getValue();
                if (!(value instanceof IStatus)) {
                    return;
                }

                IStatus status = (IStatus) value;

                setPageComplete(status.isOK());
            }
        });

        ErrorDecorator.bind(portInput, aggregator);
    }

    /**
     * A validator that ensures the input is a valid port number.
     * @deprecated for {@link IntegerRangeValidator}
     */
    private static class PortValidator implements IValidator {
        @Override
        public IStatus validate(final Object value) {
            if (!(value instanceof String)) {
                return ValidationStatus.error("No port specified");
            }

            int port;
            try {
                port = Integer.parseInt((String) value);
            } catch (NumberFormatException exception) {
                return ValidationStatus.error(
                    "Port must be an integer between 1 and 35535");
            }

            if (port <= 0 || port > 0xFFFF) {
                return ValidationStatus.error(
                    "Port must be an integer between 1 and 35535");
            }

            return ValidationStatus.ok();
        }
    }
}