text:
Cultural Mobilities Between Italy and China
A brief explanation of 衣食住行
Wear 衣
Eat 食
Live 住
Move 行
Chinese-Italian Studies Network
We are a research group that collectively works to investigate Chinese and Italian cultural mobilities. The work was supported by the following grants obtained by Dr. Zhang: SSHRC Insight Development Grants (2018-2020), The Arts Undergraduate Research Award, The International Work Learn Award, and Hampton Fund Research Grant – New Faculty Award, University of British Columbia.
Dr. Gaoheng Zhang
Dr. Zhang is Associate Professor of Italian Studies at the University of British Columbia. He researches broadly on Italy's global history and connections using a cultural-studies approach. His more recent works address migration and mobilities in relation to Italian-Chinese exchanges, the longest-standing "West-East" communications in written record. His first book is titled Migration and the Media: Debating Chinese Migration to Italy, 1992-2012 (University of Toronto Press, 2019), which is the first detailed media and cultural study of the Chinese migration from both Italian and Chinese migrant perspectives, as well as one of the few book-length analyses of migration and culture.
Email me: gaoheng.zhang@ubc.ca
Alexandra Chipperfield
Alexandra Chipperfield is a recent graduate from the Political Science program at UBC. Her passion for exploring intercultural relations within Italy stemmed from her more personal relationship to the country itself. Having been born in the city of Bolzano, but being transported at a young age to Canada, gave her an introduction to some of Italy's traditional aspects and societal customs. Alexandra enjoys exploring Italian identity and what it means within the global context. .
Email me: ali.chipperfield@icloud.com
Dr. Jennifer Lau
Jennifer Lau is a Sessional Lecturer at the University of Toronto and the host of Ask Jenn Anything Podcast for graduate students. Her dissertation (2017) examined Chinese and Canadian interactions of the nineteenth and twentieth century. The recipient of the Social Sciences and Humanities Research Council of Canada's Doctoral Fellowship and Joseph-Armand Bombardier CGS Master's Scholarship, Jennifer's research encompasses transnational history, travel literature, and Chinese cultural studies.
Email me: jenn.lau@utoronto.ca
Han Fei (website design)
Han is a PhD candidate in French literature at the University of British Columbia, Vancouver. Her doctoral thesis investigates the various expressions of global mobility, as seen in migrant literature in Québec, as well as in French contemporary novel from non-migrant authors. Her research interests extend to different aspects of transnational cultural exchanges such as tourism and translation studies.
She is the coordinator of Mobilities Group, a group of researchers with focus on a humanistic, interpretive, multilingual, culturally sensitive scholarship on multiple and intersecting mobilities. This group is also part of the Centre for Migration Studies, UBC. https://migration.ubc.ca/research/mobilities
Email me: hfei@student.ubc.ca
Claire Ping
Camilla Casale
Luca Oluic
Danilo Angulo Molina
Department of French, Hispanic and Italian Studies
Vancouver, BC V6T 1Z2
UBC Vancouver is located on the traditional, ancestral, and unceded territory of the Musqueam people.


text:
Are You Afraid of The Dark Too? Making More Sense of the STL
Overload Journal #44 - Aug 2001 + Programming Topics Author: Steve Love
On a previous expedition to this territory [Love2001], we explored some of the basic ideas behind the STL, and how to make simple use of it effectively. This time we'll be shining a light on the associative containers, something we missed out on before. In passing, we'll see some more algorithms, some more functors, and some more ways to extend the STL and bend it to your will. So get your hats on! We're going underground...
Stalagmites & Stalactites Revisited - Containers & Iterators
A quick recap then, since we're passing through. The C++ Standard Library provides us with seven main container classes, consisting of three sequence containers, and four associative containers. On our last trip we looked a little at the sequence containers, list, vector and deque, and saw some of their common characteristics, and some of their individualities.
This time, we'll look at the associative containers, map, multimap, set and multiset, see what sets them apart from the sequences, and what distinguishes them from each other. Of course, they also have lots in common with the sequence containers, and we'll have a look at those, too.
There is one other container class we'll have a look at here as well. It's well hidden in a dark corner right at the back; even the C++ Standard seems to mention it only as an afterthought ( [ISO1998], 23.1.2/1 ("Associative Containers") does not mention it at all, but it is described at the end of that section). The standard associative container called bitset is useful, after all, and we will see some common ways to put it to work.
First off, though, let's look at everyone's favourite punch-bag. Love it, or hate it, we can, I'm sure, find some use for it. A word about...
Bed Of Flint - Standard String
Much has been written on this chap of late, quite a lot of it not terribly complimentary, and the truth is, the string class has its flaws. It isn't pretty, and it doesn't always do what you'd expect, but if you're careful and treat it kindly, you'll have a friend for life.
Strings are commonly used to store information such as names, sentences and so on. Given a string such as "Steve", or "My house is on a hill" it's easy, and you are in fact encouraged to think of the string as a singular entity, rather than a sequence of characters. Hence, it is useful to think of adding strings together (one time when addition is not commutative, because "Steve" + "Love" isn't the same as "Love" + "Steve") and reading from a file:
cin >> name;
It is sometimes useful to remember that a string is a sequence of characters, however. As it happens, the standard string class conforms to all the requirements of a standard Sequence container[1]. This isn't hard - you must have iterators, and a begin() - end() pair of member functions which describe the sequence[2]. This turns out to be extremely useful. In our previous visit, we looked at the standard algorithm find_if(), which in the case of a string could be used to find a single character. This is a generally useful technique for parsing a string; so is finding a partial string, a sub-sequence. Again, the C++ Standard Library provides:
string s( "My house is on a hill" );
string sub( " is" );
string::iterator p =
search( s.begin(), s.end(),
sub.begin(), sub.end() );
s = string( s.begin(), p );
cout << s << "\n";
This will print "My house" to the console.
While we're on the topic, let's have a look at one way you can use the techniques of iterators, algorithms and sequences to reduce the above code. The elements are already there; search() returns an iterator to the start of the found sub-sequence (End if it can't find it). You can make a new string from a sequence of iterators. So how about:
s = string( s.begin(),
sub.begin(), sub.end() ) );
We're replacing the string s with a new string created from the range [s.begin(). search(...) ). To the uninitiated, this expression may appear over-complicated, but then if you're not a C++ or C programmer, so does any usage of strtok().
So, the standard string isn't strictly a part of the C++ STL. It is an extension to it, albeit a standard one, and shows how easy it is to roll your own container classes which work seamlessly with the rest of STL.
Reflections - Unique Associative Containers
On the subject of strings, how many of you have ever wanted to do this:
void function( const string & s )
switch( s )
case "Jan":
case "Feb":
It seems perfectly reasonable, and yet can't be done; string is a class after all, not a built-in integral type. But there must be a better way than
if( s == "Jan" )
else if( s == "Feb" )
Well, you guessed it. If there weren't, I wouldn't be talking about it. Enter the multi-talented map container. map is a Pair Associative Container; it maps a key to a value. More than that, a map is sorted by its key, which has the fortunate effect of making it easily searchable by its key. Correspondingly, the type used for a key in a map container must be Less Than Comparable [Austern1998][3].
A map stores two objects per element; one is the key, the other the value. So that both key and value types can be any type, built-in or user-defined, the C++ Standard Library has a helper class called pair, which is parameterised on its first and second types:
template <class _T1, class _T2>
struct pair {
pair( const _T1 & f, const _t2 & s )
: first( f ), second( s ) { }
_T1 first;
_T2 second;
}; // from [STLPort2001]
map stores elements of type pair and uses first as the key and second as the value. (The pair type is much more generally useful, as we shall see). There is also a helper function for making pairs allowing us to add items to a map like this:
map< string, int > months;
months.insert( make_pair( "Jan", 1 ) );
months.insert( make_pair( "Feb", 2 ) );
Here we create a map with string as the key type and int as the value, and start adding months to the container.
There are two things to note about this piece of code. First, we've created a map and associated the value 1 with the string "Jan" and the value 2 with the string "Feb". This is straightforward enough. The second item of note is that a map is sorted on its key; printing the map "in order" demonstrates this[4]:
void print_me(const pair<string, int>
&value){
cout << value.first << ","
<< value.second << "\n";
for_each( months.begin(), months.end(),
print_me );
// Feb,2
// Jan,1
Remember that the key is the string type for our map months, and so "Feb" comes before "Jan", lexically speaking. Remember also that map stores pairs of elements, so naturally its iterators will point to a pair. There is a third thing to note there: this isn't really what you'd normally do with a map. Sure we can use a map as a method of sorting elements in a container, but its best feature is that it associates elements - keys and values. Being sorted is a side-effect of map's greatest attribute - the ability to efficiently find a value given its key.
map can be used as an associative array; it directly supports the array notation (square brackets [] in C++) to provide a key and obtain its associated value. Because our value type is a built-in integral type (which the switch statement requires) we can do the following:
void function( const string & s ) {
switch(months[ s ] ) {
case 1: // Jan
case 2: // Feb
Which is much more like our original requirement[5].
There is a snag to this; you might ask yourself what does the map do if the element identified by s doesn't exist? We appear to have no way of knowing whether the lookup failed, because it isn't reasonable for operator[] to return an invalid value, since it cannot know what is valid. This suggests that operator[] for map never fails, which is in fact the case. If the lookup fails to locate the key provided, a new element with that key is created. The value for that key will be default constructed. operator[] actually returns a reference to the value, so you can change it using assignment:
months[ "Mar" ] = 3;
The snag is that this may not do what you expect - you may be creating a new element and not know it.
There is another method of searching a map which, in keeping with the standard algorithms, returns an iterator to the found element, or End if the item is not found. map provides its own member function for this because firstly the map contains pairs, so using the find() or find_if() algorithms would be clumsy, and partly because map itself is optimised for searching, and the algorithms don't know about this. Using the member function, you search directly for the key, and an iterator is returned:
map< string, int >::iterator p =
months.find( "Jan" );
if(p != months.end()) {
cout << p->second;  // the value
The other useful attribute of map is that it is a Unique Associative Container, meaning that it does not store duplicate keys. If you try to insert two values with the same key, the second insertion will fail. This failure is indicated by the return value from map::insert(), which is a pair object containing a map iterator and a bool. The iterator points either to the newly inserted element, in which case the bool is true, or to the already existing element with the same key, in which case the bool is false:
pair<map<string, int>::iterator, bool>
p =  months.insert( make_pair("Apr", 4));
if(! p->second) { // the insertion failed
cout << p->first->second;
// print the value associated with "Mar"
// remember an iterator points to a pair
// element
In practice, you won't need all this syntax. You will either want to know whether the insertion took place, or you will want to do something with value. In the first case, you can use:
if(!months.insert(
make_pair( "May", 5)->second){
// do something if insertion failed
and in the second, using the array syntax operator[] works fine:
months[ "Jun" ] = 6;
Whether it is less efficient to overwrite the value of an existing element or search for it first will depend upon what the value type is. As they say on the newsgroups, YMMV.
The set class has similarities with map; for instance, it contains only unique elements (it's a model of Unique Associative Container), is sorted by its key and is optimised for searching. It differs in one very important way: it contains single elements, rather than pairs. It is a Simple Associative Container [Austern1998], which means that its key and value types are the same thing.
In particular, this difference means you cannot use set as an associative array; it does not have an operator[] for array-like access to elements. So why have a set container at all?
Well, OK now we get into the realms of speculation (by some well-respected figures, it has to be said). The STL is not a collection of containers. It has been said that STL is merely a "specification of a library of algorithms" [Henney2001], not actually a collection of anything, really. What it means is that if you write your own container, algorithm, iterator, and it conforms to the requirements that STL places on such things, then it is just as much a part of the STL as those components shipped with the C++ Standard Library.
So back to set, and its raison d'être. We need to look behind the set container, at what makes it useful, before we can see its utility. We can guess that it models the concept of Set from mathematics. In fact, that would be inaccurate; mathematical set theory really concerns the operations on sets: Union; Intersection; Difference; Contains. In fact the STL has algorithms for providing these services, and they require that the range of iterators upon which they operate is sorted. This is a key issue, which we passed over fairly quickly in our last trip. The STL algorithms don't work on containers at all, they work with iterators. The container classes can be easily seen as various convenient ways of providing iterators and iterator ranges.
set is no exception. It is a container which happily allows the STL set algorithms to work according to the expected mathematical concepts of those operations ( [Austern1998]). It makes those operations efficient. For example, let's take set_intersection() as an example.
set< string > girl_names;
set< string > boy_names;
set< string > common_names;
set_intersection(
girl_names.begin(), girl_names.end(),
boy_names.begin(), boy_names.end(),
inserter(common_names,
common_names.begin()));
set_intersection() takes two input ranges, and copies its result to an output range. Here we are using a particular type of iterator adaptor, called inserter, to add new elements to an output sequence, common_names in this case. We'll be looking at inserters later in our visit.
If you're familiar at all with mathematical sets, you will know that taking the intersection of two sets results in the elements common to both. The results we might expect from this operation could be:
The point is that set_intersection() can be used with vector, or list, provided they are sorted in advance. The set container is well suited to this operation, and the other set operations for the same reason, because it is always sorted. We could have used list as the result sequence; it allows efficient random insertion of elements, but the fact is that the intersection of two sets results in a new, possibly empty, set in mathematics. The purpose of the set algorithms in STL is to closely model the mathematical meaning of them, and the set container provides support for that goal [Austern1998].
This last example demonstrates how useful typedef can be to make otherwise impenetrable code readable. It could in fact have been improved, and careful use of typedef can make code more maintainable.
In the shown code we have a multimap containing two types, author and publication. From use, we can guess that they are both string types, probably typedefs. This is in fact pretty irrelevant, and we're more interested (as maintenance programmers) in the fact that this multimap contains a mapping for authors to publications. The (supposed) typedefs of the identifiers makes our intent (as original programmers) much more clear. That's one case for typedef.
We've discussed some ways of removing the need to use container iterators directly by using the standard algorithms [Love2001], but there are times, such as here, when we must use them. In doing so, we have to make the whole type, including the container and its template type(s) clear to the compiler, so it knows exactly which iterator we're after. If we'd made a typedef of the container name, not only can we shorten the code, we can make it resilient to a change in the container itself:
typedef string author;
typedef string publication;
typedef multimap< author, publication > index;
pair< index::iterator, index::iterator > range;
The names you use will reflect the scope in which they are used. Of course, in our example, whatever index becomes, should it change, will need to have the same facilities as multimap, including count() and equal_range()
You may find that the enforced uniqueness of elements in a set, and possibly the fact it is an ordered container, useful characteristics in and of themselves, too. set is by no means limited in its use to the standard algorithms.
Refractions - Multiple Associative Containers
As we have seen, map and set both enforce the rule that elements must be unique. This often makes a great deal of sense. For example, sets in mathematics have no concept of duplicated members, and so the STL set container enforces this because it is intended to support the mathematical definition of a set.
There are two other Associative Containers which differ from set and map only in that they allow duplicate elements. They are, appropriately enough, multimap and multiset.
The set algorithms discussed in the previous section are general algorithms which work the same way for multiset as they do for set. They impose no requirement that the input sequences must be unique ranges, only that they are sorted, and multiset is a Sorted Associative Container just as set is. Another useful member of multiset is the count() function, which returns the number of items matching a given key.
multimap is useful for one-to-many relationships (associations) between a key and some values. For example, a publication will generally run articles by several authors, each of whom may submit articles to several publications. A multimap can handle this situation easily.
Both multimap and multiset have two particularly useful member functions, count() and equal_range(). The count() function returns the number of elements with a given key:
multimap< author, publication > articles;
cout << articles.count("Gordon Bennett");
equal_range() returns a pair of iterators describing all elements with a particular key:
typedef multimap< author,     publication >::iterator article_ptr;
pair< article_ptr, article_ptr > range =
articles.equal_range("Arthur Dent");
for_each(range.begin(), range.end(),
print_me);
In fact, set and map have these, too, but since they store only one of each key, these functions have little utility directly.
The False Stalagmite
Finally, the most inconspicuous, quiet mannered, unobtrusive specimen provided as standard in the C++ Standard Library. bitset gives you the ability to use bitmasks without the need to understand hexadecimal numbers. OK, knowledge of hex notation is probably useful anyway, but the real utility of bitset is that it provides a much more convenient way of manipulating individual bits in a mask.
It is often useful to be able to represent a collection of flags which can be on or off, set or not set. Computers generally make extensive use of this (digital computers anyway) and provide the programmer with tools to emulate it. If you've heard the expression "it's all ones and zeros", this is where it comes from - binary representation of values.
A 32 bit number has, unsurprisingly, 32 bit locations, each of which can be a one or a zero. bitset makes it easy to set or unset any one of those values, and to test an individual bit for its state. Doing this in plain C can be tortuous - a knowledge of hexadecimal numbers makes it less painful - because you cannot address an individual bit. A byte is the smallest addressable location in C and C++ alike.
For example, to set the fifth[6] bit to one, you need to bitwise OR it with 1:
mask |= 0x10  // binary 10000
to test the same bit, you need a bitwise AND operation:
if( mask & 0x10 ){
What bitset provides is a way to test an individual bit by its position in the mask. Thus, the equivalent forms of the above might be:
mask.set( 5 );
if( mask.test( 5 ) ) {
You create a bitset with a fixed number of bits, which, unlike unsigned numbers in C++, can be any size. Thus, a bitset of 50 locations is declared thus:
bitset< 50 > mask;
You can create a bitset with a starting mask by providing a number, which is the equivalent of the bare numerical bitmask. You can also use a string to represent the bitmask, which is much more convenient, because deciphering which bits are set in 0x06730 (or worse, 26416) can be difficult. The following is very useful when you are interested not in the value itself, but in which bits are set and unset:
bitset<50> mask(string
("110011100110000"));
I think you'll agree, it's much easier to see what is going on here. Note that the provided mask represents the least-significant bits; this means that the mask will be zero-filled to the left giving "0...0110011100110000".
bitset also has count() and any() member functions which return, respectively, the number of set bits and whether any bits are set in the mask.
Of course, you may actually be interested in conversions between binary and decimal representations of numbers, and bitset can be used for this, too. You can convert to an unsigned long integer using the to_ulong() member. You can also write a bitset to a stream in the usual manner. Thus, converting a decimal number to its binary representation might be done like this:
bitset< 20 > mask ( 516 );
cout << mask << "\n";
// result
// 00000000001000000100
Or conversely, converting a binary number to a number like this:
bitset< 20 > mask ( string( "10110100"));
cout << mask.to_ulong() << "\n";
//  180
Now, as to why bitset is a "false" stalagmite, it isn't really a container in the STL sense, because it has no iterators. It does have the feel of an associative array of bits, however, allowing you to do the following:
mask[ 5 ] = true;
if( mask[ 5 ] ){
As with map, however, this does not indicate that bitset is a Random Access container.
The associative containers' single most important difference from the sequence containers is that they are sorted. This makes it much more efficient to find a particular element by its key, or in the case of multiple associative containers, to locate the range of elements with a given key.
map and set serve specific purposes, and care should be taken when using them that you're not just shoe-horning the requirement because you want a sorted container. It is possible to sort any of the sequence containers using the standard sort() algorithm.
Remember, pair is your friend. Even though it looks like it's a library internal type to make things like map work, as you use it more, you'll think of new and interesting ways to use it more...
Finally, prefer bitset over manual bit-twiddling techniques. It supports the "traditional" bit-operators &, |, ~ and ^, along with the shift operators << and >>, but allows you to specify your intent more cleanly when you use bitmasks.
A Look In The Cauldron - More Adaptors
As we saw in a previous visit here, the adaptors are what make the STL such an interesting brew, and adding your own ingredients is not just allowed, but encouraged. We mentioned in passing an iterator adaptor called inserter. We've already seen Function Adaptors in action ( [Love2001]). Here we'll look at some iterator adaptors and container adaptors to complete our investigation of the containers in STL. For this part, we reopen our boundaries to include the sequence containers once more.
Waterfalls... - Container Adaptors
There are three container adaptors provided with the C++ Standard Library:
In Computer Science, these are discrete data structures in their own right, each with distinct properties and behavioural characteristics. In STL, however, they are implemented in terms of the other containers, simply because they can.
Consider the operations on a stack. You, as the programmer, get access only to the top element in the container. It is a LIFO (last-in, first-out) container. You can add (push) an element, and remove (pop) that element. You cannot look at every element (without popping each one in turn), nor can you sort a stack. In this case, then, we could easily use one of the three sequence containers, and use only those operations permitted by the interface of a stack.
The stack container does this for you, and "adapts" the interface of deque, such that push() becomes deque<>::push_back(), and pop() becomes deque<>::pop_back(). The main utility in using the STL stack adaptor over using deque directly is that you are stating your intent: this program requires a stack, and is restricting its usage to that of a stack.
There is one catch to this. Normally a stack's pop() method will remove the top element of the stack and return it:
my_stack< int > s;
int p = s.pop();
The STL stack adaptor's pop() method returns nothing, and this may seem rather odd. Looking deeper, however, we notice that there is a method top() which returns a reference to the top element.
The reason for this is efficiency. One of the things you may need to do with a stack is to pop off a number of elements, discarding each one. Since the element is being removed, if pop() were to return it, it would have to make a copy and return it by value. If that value is then discarded, at least one copy of a possibly expensive object has been made. The alternative is to allow a copy to be made prior to its removal if that value is needed:
stack< string > s;
string name = s.top();
s.pop();
Again, a queue is a well-known data structure which allows first-in, first-out (FIFO) functionality. This means it operates like a double-ended stack, where you have access to the elements at either end of the container. As with stack, you cannot access the other elements. push() adds a new element to the back of the queue, pop() removes one from the front of the queue. The methods back() and front() provide references to those elements respectively, allowing you to make copies if required.
Priority Queue
priority_queue is like stack more than queue, the difference being that the top element is always the largest (it doesn't have a good four letter acronym!). Hence, push() adds a new element to the priority_queue, and pop() removes the top one, which will always be the largest, according to some comparison. The default comparison is the standard functor less<>, which by default uses operator<() for the given type, but you can provide your own comparator if required.
All of the container adaptors allow you to choose your own underlying container upon which they will be based. By default, stack and queue use deque as their implementation, and priority_queue uses vector. Any container you provide must conform to the adaptor's requirements. These are ( [Austern1998]):
<colgroup> <col> <col></colgroup> <tbody>
stack Back Insertion Sequence
queue Back Insertion Sequence
Front Insertion Sequence
priority_queue Random Access Container
...And Rapids - Iterator Adaptors
All of the standard algorithms work with iterators. The reason for this is generality (or more accurately, genericity). It means the algorithms can work for any container whose iterators fulfil the requirements of the algorithm.
Consider then the standard algorithm copy(). In its simplest form, it takes three iterators, the first two describing the source range, and the third describing the start position (iterator) of the target. Here is a plausible example:
list< string > names;
// initialise names with suitable elements
list< string >target( names.size() );
copy( names.begin(), names.end(),
target.begin() );
Note that we must make enough space in target before copying the elements from names to it, because the default assignment for an iterator is to overwrite the previous contents. This makes perfect sense, usually. However, what we'd really like to achieve here is to make copy() perform its actions by using push_back() on the list, thereby removing the need to pre-size the target container.
Insert Iterators
We cannot change the behaviour of copy() easily, but we could easily create an iterator type that overrides the default meaning of operator=() to perform push_back() on the container.
Enter the Back Insert Iterator. It works with any Back Insertion Sequence (a container with a push_back() method, which means list, vector and deque only, in the C++ Standard Library) and works like this:
list< string >target;
back_inserter( target ) );
There is a corresponding Front Insert Iterator which works for containers with push_front(), which means list and deque only.
However, what happens if your target isn't a Back Insertion Sequence, or you wish to add elements to the middle of the container? Ah well, these library designers they think of everything. There is another Insert Iterator called, well, inserter. As well as the container itself, you provide an iterator to where you would like insertions to start. Thus, the following snippet is equivalent to our previous example:
copy( names.begin(), names.end(), inserter( target, target.end() ) );
The difference being that inserter requires that the target container has an insert method which takes an iterator as the insertion point as well as the value to be added. This includes the Associative Containers we looked at previously. You will recall that the Associative Containers are all sorted. In their case, this insertion-point iterator is merely a hint - the position at which to start looking for an existing element. When using an inserter into a map or set, it's usually best where possible to use begin() or end() as the iterator argument to inserter.
Reverse Iterators
It sometimes makes sense to read a container backwards. It may be for the purposes of finding any subliminal messages, or perhaps reading in reverse alphabetical order. For whatever reason, there are two ways to do this.
The first and simplest method is when you are working directly with a container. Each of the standard containers provide an rbegin() and rend() method. rbegin() returns a Reverse Iterator, which is the equivalent in position of end(), except that incrementing it moves it backwards. Similarly, rend() has the equivalent position of begin() in the container.
The difficulty comes when you have an algorithm which accepts Forward Iterators, but for reasons of efficiency perhaps wants to work with Reverse Iterators. Consider a function called find_last_of(). It takes an iterator range and a value to find. You don't really wish to expose the implementation too much by requiring Reverse Iterators, but then searching the entire range from start to finish might be very inefficient. You need some way of converting a Forward Iterator into a Reverse Iterator. Once again, the C++ Standard is ahead of you, and provides an Iterator Adaptor for exactly this purpose.
reverse_iterator changes the direction of a given Bi-Directional Iterator. All of the standard containers provide Bi-Directional Iterators from their begin() and end() methods. This means you can now write find_last_of() like this:
template<typename Iterator, typename Value>
Iterator find_last_of(Iterator begin,
Iterator end, Value v ){
reverse_iterator<Iterator> rbegin(end);
reverse_iterator<Iterator> rend(begin);
reverse_iterator< Iterator > result =
find( rbegin, rend, v );
return result.base();
That last line which returns the base() of the Reverse Iterator is needed because a Reverse Iterator cannot just convert back to a normal one. For technical reasons. It has to do with the fact that an iterator range is a half-open range, meaning it contains the first but not the last elements [Love2001], [Josuttis1999]. The reversed End (one after the end) is now one before the start, which is not a valid position. Therefore, some hand-waving is needed to make it valid.
The C++ Standard Library provides you with three common data structures which use the basic containers in specialised ways. The reason for this is mainly documentation: by using a stack instead of a vector, you are making your intentions clear to any programmer reading that code. Where possible, you should follow this lead, and instead of writing your own container from scratch, consider re-using one of the standard containers, and adapting it. That way, you save yourself time and effort, at the same time as the time and effort of the poor old maintainer - which might be you. What's not to like about that?
The Iterator Adaptors give you amazing flexibility when using the standard algorithms, and when writing your own algorithms. Insert Iterators really are the last word in decoupling algorithms from data structures, which in turn has the fortunate effect of giving you the ability to use those algorithms in ways which otherwise may have required a custom function. Reusing tried and tested code is a cornerstone of software development, because if something is already tested, you (shouldn't) don't have to test it again.
Back Safe and Sound
As an end-note, I will mention a discussion I had regarding the number of lines of code required for a particular algorithm. This discussion revolved around the pros and cons of STL in particular, but was really focussed on using STL containers over C style arrays. I calculated that using only C arrays it would need 60 lines of code to perform a job that I could perform in 2 using STL. The response was that I was forgetting about the (probably more than) 58 lines in the STL code that were still required. My closing response to that was, "well, that's 58 lines of code I don't have to write - or test."
The moral of the story - write less code. Go on. You know you want to.
Thanks once again to Nigel Dickens for reading through the first drafts of this article. Thank you also to Kevlin Henney who once again sent me advance copies of yet-to-be published articles of his. Also during the writing of this, I find myself time and again referring to both [Josuttis1999] and [Austern1998]. They deserve more than a biblio entry. Perhaps a beer or two if we ever meet face to face...
[ISO1998] International Standard: Programming Language - C++, ISO/IEC 14882:1998(E), 1998
[Austern1998] Matthew H Austern, Generic Programming And The STL,Addison Wesley 1998
[Josuttis1999] Nicolai Josuttis, The C++ Standard Library - A Tutorial and Reference,Addison Wesley 1999
[Love2001] Steve Love, Are You Afraid Of The Dark?,Overload 43, 2001
[Stroustrup2000] Bjarne Stroustrup, The C++ Programming Language, Special Edition,Addison Wesley 2000
[STLPort2001] www.stlport.org, Portable and free STL implementation,
[Henney2001] Various - background
[1] std::string exposes Random Access iterators [Josuttis1999], and so also meets the requirements of Reversible Container [ISO1998]
[2] In addition, multiple iterations over the sequence must return the elements in the same order [Austern1998]
[3] Exactly what it says; for some x and y, x < y must be well-defined.
[4] Note we've used a normal function rather than a function object here. for_each will receive a pointer to a function, which can be dereferenced (called) in the same way as a function. See [Stroustrup2000] for details.
[5] Don't confuse this with Random Access as typified by vector and deque. It is merely a notational convenience in map.
[6] From the right - the first bit is the least significant bit.
Overload Journal #44 - Aug 2001 + Programming Topics

redpajama_set_name: RedPajamaCommonCrawl


PCWin Note: NTP Tool 2.0 download version indexed from servers all over the world. There are inherent dangers in the use of any software available for download on the Internet. PCWin free download center makes no representations as to the content of NTP Tool version/build 2.0 is accurate, complete, virus free or do not infringe the rights of any third party. PCWin has not developed this software NTP Tool and in no way responsible for the use of the software and any damage done to your systems. You are solely responsible for adequate protection and backup of the data and equipment used in connection with using software NTP Tool.
NTP Server Tool - It is a test tool that acts as a client to a NTP server.
NTP Time Server Monitor - The NTP Time Server Monitor lets the user configure and control a local NTP service with a userfriendly graphical user interface. Secondary the current status of the local NTP services, as well as external NTP services, can be displayed.
XPS Removal Tool - XPS Removal Tool allows you to remove the Microsoft XPS Document Writer (MXDW) print queue and driver package from a Windows 8, 7, Vista, 2008, 2012 installation. The program also uninstalls XPS Essentials Pack from Windows XP, Windows Server 2003.
MP3 Repair Tool - MP3 Repair Tool enables you to quick and easy rescue most of your broken MP3 files. Deletes broken ID3v2 header and makes lot of files playable again.
Keyword Research Tool - WBPS Free Keyword Research Tool will help you research appropriate words and phrases to include in your webpage's body text to aid in promotion. Simply enter the sort of word of phrase you wish to be found under.
How To Play Cricket: CricketSecrets.com Tool Bar - The free 'Cricket Secrets: How to play cricket tool bar', gives you quick access to the best cricket tips online. It allows you to stay updated with the latest cricket news, scores and stats. You'll have the cricketing world at your finger tips!
PowerTerm Pro - PowerTerm Pro is a fully functional terminal emulator for Microsoft Windows.
USBExplorer - The USB Explorer 200 is a non-intrusive high speed USB 2.


text:
UK wind energy reaches record 6 GW milestone
The group confirmed last night that the 6GW threshold had been passed after it was announced that the Ormonde offshore wind farm off the coast of Cumbria now has 120 MW of capacity operational.
'This is a landmark achievement,' said RenewableUK's Chief Executive, Maria McCaffery. 'There's a great feeling of pride throughout the industry that we've reached a record high of 6GW, and there's a further 19.5GW of capacity under construction, consented, or in planning.'
She added that the industry remained confident that it could deliver on the target set out in the government's renewable energy roadmap for 31GW of onshore and offshore wind turbines capacity to be in place by 2020.
'The government's Renewable Energy Roadmap is calling for 31 GW of onshore and offshore wind power combined by 2020, and we're confident that we can deliver this if we continue to get the right level of government support,' she said.
Speaking at RenewableUK's annual parliamentary reception last night, Chief Secretary to the Treasury Danny Alexander said the government remained fully committed to accelerating the expansion of the UK's wind energy sector.
'Working together, we can reach even greater heights,' he said. 'We are eager to ensure that the UK becomes the natural home for the most innovative, ambitious and inspiring renewable energy companies in the world, and we will continue to work with the industry to drive down costs and encourage even stronger growth in the years to come.'
www.businessgreen.com/bg/news/2139811/uk-wind-power-reaches-record-6gw-milestone
Previous PostUK: Wind power passes six-gigawatt thresholdNext PostDeveloping More Efficient Concentrating Solar Power Systems


NORFOLK, Va. – Transportation Security Administration officials caught a local man trying to get a loaded handgun through the Norfolk International Airport checkpoint on December 3.
This is the 22nd firearm that TSA officers have caught at the airport this year, more than doubling the 10 that were caught during 2017.
The man, a Norfolk resident, was carrying a .32 caliber handgun in one of his carry-on bags. The gun was loaded with six bullets, officials say.
Airport police responded to the checkpoint, confiscated the weapon and detained the man for questioning before citing him on weapons charges.
Officials are reminding people that anyone who brings weapons to a checkpoint is subject to federal civil penalties of up to $13,000. People who have gun carry permits are not permitted to carry a gun on an aircraft.
A typical first offense for carrying a handgun into a checkpoint is $3,900. You can view a complete list of penalties here.
Passengers are allowed to travel with firearms in checked baggage if they are properly packaged and declared. Firearms must be unloaded, packed in a hard-side case, locked and packed separately from ammunition. TSA officials say the gun must be brought to the airline check-in counter to be placed in the belly of the plane with other checked baggage.
Firearm possession laws vary by state and locality. Travelers are advised to familiarize themselves with state and local firearm laws for each point of travel before departure.
TSA has details on how to properly travel with a firearm, which can be viewed here. Airlines may also have additional requirements for traveling with firearms and ammunition. Travelers should also contact their airline regarding firearm and ammunition carriage policies.


You should look at the reputation of the sport nutrition's manufacturers. This is the only way that you can know for sure that you are going to use the best possible company that is really making the best nutrition supplements that will benefit you when doing workouts.
When you need to know the reputation of these manufacturers, you should make sure that you read as many reviews as possible. This will give you an idea about the reputation of the company and the quality of the supplements that they are selling. See how: http://supplementmanufacturersusa.com/#how-to-get-started.
You need to read the ingredients that they are using to make the supplements. There are some of the ingredients that are essential to have, and not all the capsule manufacturing companies include these ingredients, in a way of making their sport nutrition supplement not the best.
Before you purchase sport nutrition supplement for the first time, you should make sure about the ingredients that there should be in these supplements. Without knowledge, you will not know if you have purchased the right and highest quality nutrition supplements for sport people.
There are some of some sports nutrition manufacturers that are not making sure that they have a good and trusted product. They are just out there to make as much money as possible. And, there are too many people that are falling for that.
The last thing that you want to do, is to make these types of companies rich on a product that isn't really working correctly.
There are some of the nutrition manufacturers that are setting the standard of sport nutrition. And, it is important that you are purchasing the one nutrition supplement that is really going to work for you. With these information, you will know what to look for and how to find the best supplement that is made by trustworthy sports nutrition manufacturers.


Gorgeous 1.15 lot on with stunning views. 680-acre Gated Luxury Community, Waterstone, about 12-minutes from Downtown mcKinney Historical Square. Rolling hills, heavily treed, 4 lakes, community park with playground, basketball court, soccer field, picnic pavilion, covered fishing pier on the main lake, a lot of fish! Luxury homes from $550k to $3-millions. Don't hesitate, this lot will not stay on the market long...so come out and take a look and start living your dream today!


text:
1641 S Allport St,
Geneology Requests
Protecting God's Children for Adults
Dress Code for Liturgical Ministers at the Altar
About St. Ignatius
The Ignatian Spirituality
The Examen of Consciousness
Prayers in the Ignatian Tradition
Some Ignatian Principles for Making Prayerful Decisions
Becoming Catholic – RCIA
Reconciliation & First Communion
St. Procopius School
Home » Volunteer
« View all Sign-up Sheets
Nuestra Fiesta Aug 2-4 2019
Event Chair: Silvia Pels
Sign up below...
Task/Item
Available Spots
Unload deliveries and store properly 9:00 am 1:00 pm #1: javier solis s.h.
#2: Sign up »
Neighborhood cleanup (pulling out weeds, cleaning parking lot and field) 9:00 am 1:00 pm #1: Sign up »
#10: Sign up »
Soup Kitchen - set, serve and clean up 9:30 am 2:00 pm #1: Sign up »
Unload deliveries and store properly 3:00 pm 5:00 pm #1: Sign up »
Take out tables and chairs from the school to the sidewalk 9:00 am 1:00 pm #1: Sign up »
Unload deliveries and store properly 9:00 am 1:00 pm #1: Sign up »
Move all cookware to the school kitchen from the rectory 9:00 am 1:00 pm #1: Sign up »
Wash and clean all cookware 9:00 am 1:00 pm #1: Sign up »
Neighborhood cleanup 9:00 pm 1:00 pm #1: Sign up »
Peeling and chopping vegetables 9:00 am 1:00 pm #1: Sign up »
Move all tent parts outside 2:00 pm 5:00 pm #1: Sign up »
Peeling and chopping vegetables 2:00 pm 5:00 pm #1: Sign up »
Set up barricades at both ends of the street 9:00 am 1:00 pm #1: Sign up »
Set up the 3 large tents 9:00 am 1:00 pm #1: Sign up »
Set up the smaller tents 9:00 am 1:00 pm #1: Sign up »
Clean refrigerators 9:00 am 1:00 pm #1: Sign up »
Wipe down Grills 9:00 am 1:00 pm #1: Sign up »
Pick up large pieces of trash along the street 9:00 am 1:00 pm #1: Sign up »
Arrange round table under tents 2:00 pm 5:00 am #1: Sign up »
Arrange rectangular tables under food tents 2:00 pm 5:00 pm #1: Sign up »
Set up rows of tables on close to the stage 2:00 pm 5:00 pm #1: Sign up »
Anchor food booths with sandbags 2:00 pm 5:00 pm #1: Sign up »
Distribute Streets and San trash cans along the street 2:00 pm 5:00 pm #1: Sign up »
Set up area/counter for Bar 2:00 pm 5:00 pm #1: Sign up »
Chopping vegetables 2:00 pm 5:00 pm #1: Sign up »
Fill small containers with salsa & sour cream 5:00 pm 7:00 pm #1: Sign up »
Wash pots and Pans 5:00 pm 7:00 pm #1: Sign up »
Clean Cafeteria 5:00 pm 7:00 pm #1: Sign up »
Throw out garbage 5:00 pm 7:00 pm #1: Sign up »
Wipe down tables and chairs 9:00 am 1:00 pm #1: Sign up »
Wrap all tables in food booths with plastic table cloth 9:00 am 1:00 pm #1: Sign up »
String pennants on large tents 9:00 am 1:00 pm #1: Sign up »
Bring out tables and chairs to set up the drink station and ticket sale booth 9:00 am 1:00 pm #1: Sign up »
Set in parking lot for kid's games 9:00 am 1:00 pm #1: Sign up »
Help in the kitchen 9:00 am 1:00 pm #1: Sign up »
Help in the cafeteria 9:00 am 1:00 pm #1: Sign up »
Bring out the popcorn machine, microwaves, etc. 9:00 am 1:00 pm #1: Sign up »
Bring out the bins to the food booths 2:00 pm 3:00 pm #1: Sign up »
Bring out the Bingo machine??? 2:00 pm 3:00 pm #1: Sign up »
Help in Kitchen 2:00 pm 5:00 pm #1: Sign up »
Help in Cafeteria 2:00 pm 5:00 pm #1: Sign up »
Garbage pick along the street 5:00 pm 8:00 pm #1: Sign up »
Clean up tables 5:00 pm 8:00 pm #1: Sign up »
Empty wastebaskets from bathrooms 5:00 pm 8:00 pm #1: Sign up »
Empty garbage cans along the street 5:00 pm 8:00 pm #1: Sign up »
Restock bathrooms with toilet paper and hand paper towels 5:00 pm 8:00 pm #1: Sign up »
Help in Kitchen 8:00 pm 11:00 pm #1: Sign up »
Help in Cafeteria 8:00 pm 11:00 pm #1: Sign up »
Clean up tables 8:00 pm 11:00 pm #1: Sign up »
Empty garbage cans along the street 8:00 pm 11:00 pm #1: Sign up »
Empty wastebaskets from bathrooms 8:00 pm 11:00 pm #1: Sign up »
Restock bathrooms with toilet paper and hand paper towels 8:00 pm 11:00 pm #1: Sign up »
Cafeteria Clean 10:00 pm 12:00 am #1: Sign up »
Kitchen clean up 10:00 pm 12:00 am #1: Sign up »
Empty garbage cans along the street 11:30 pm 12:00 am #1: Sign up »
Empty wastebaskets from bathrooms 11:30 pm 12:00 am #1: Sign up »
Wipe down tables and chairs 9:00 am 10:00 am #1: Sign up »
Wrap all tables in food booths with plastic table cloth 9:00 am 10:00 am #1: Sign up »
Help in booths 11:30 am 3:30 pm #1: Sign up »
Help in booths 3:30 pm 7:30 pm #1: Sign up »
Help in booths 7:30 pm 11:30 pm #1: Sign up »
Kitchen clean up and washing pots & pans 10:00 pm 12:00 am #1: Sign up »
Wipe down tables and chairs 9:00 am 9:30 am #1: Sign up »
Wrap all tables in food booths with plastic table cloth 9:00 am 9:30 am #1: Sign up »
Help in booths 9:30 am 2:00 pm #1: Sign up »
Cafeteria Clean up 10:00 pm 12:00 am #1: Sign up »
Kitchen clean up and washing pots & pans up and washing pots & pans 10:00 pm 12:00 am #1: Sign up »
Dismantle tents 10:00 pm 12:00 am #1: Sign up »
Put chairs away 10:00 pm 12:00 am #1: Sign up »
Car Raffle
June 17, 2019 - News - 0 Comments
Nuestra Fiesta 2019
February 11, 2019 - News, Upcoming Events - 0 Comments
St. Procopius Church
7:45 AM – Bilingual
9:15 AM – Español
11:00 AM – English
12:45 PM – Español
8:00 AM -M, T, Th, Fr, Sat
8:30 AM – Wed
Exposition and Adoration of the Blessed Sacrament
St. Procopius Chapel
(Behind the Our Lady of Guadalupe Garden)
8:30 AM – 5:00 PM M-Sat
Saturdays – 8:45 AM – 10:45 AM (in the main Church confessional)
~ Or by appointment, call (312) 226-7887
Sacrament of Anointing
Healing Mass
7:00 PM Last Tuesday of each month
Visiting the Sick in the Home
~ By appointment, call (312) 226-7887
St Procopius Catholic Church - 1641 S Allport St, Chicago, IL 60608 - (312) 226-7887
© 2001 - 2019 All rights reserved. St Procopius/Providence of God. Design CPW.


text:
Online travel agents: you get what you pay for…
Consumer Watch journalist Wendy Knowler talks about the benefits of using a travel agent…
Source: iol.co.za
Last November I incurred the wrath of many travel agents by featuring in this column the results of a Synovate survey which found that consumers could fly to domestic and international destinations far cheaper if they booked using online travel agencies instead of traditional ones.
The researchers had contacted 50 branches of six traditional travel agency groups, collecting hundreds of quotes for local and international destinations.
They compared pricing, consistency and quality of service.
The price differences for flights to Amsterdam, on the same dates, were the most alarming, with the quotes ranging from R6 000 to R14 300 from Cape Town, and from R7 429 to R12 426 from Joburg.
The survey was paid for by online travel agency Travelstart, which naturally had a vested interest in the outcome.
Travelstart chief executive Stephan Ekbergh was quoted as saying: "Consumers are realising that online travel agencies offer them the advantages of lower prices, greater transparency, more flexibility, convenience, a wider choice, and more control over their flight booking experience."
Naturally, Robyn Christie, chief executive of the Association of SA Travel Agents (Asata) had a different view, saying the traditional travel agents' service – for which clients pay a fee – included the negotiation of competitive rates, providing 24-hour access in the event of any unforeseen changes, and interpreting complicated fare rules to avoid unnecessary charges.
"The market is well versed with the virtues of the online booking agents," she said, "but equally aware of the consequences of when things go wrong, which they do more often than not."
"It is at these times when the value of a relationship with a travel company becomes essential."
At the time, Travelstart was a member of Asata, but resigned shortly afterwards.
I have good reason to return to this story now.
In January I started exploring flight options to Vancouver, having agreed to meet my cousins across the globe in that city for a reunion at the end of June.
I sourced a couple of traditional travel agency quotes, then decided to try the online route for the first time.
I went with US-based online agency Orbitz, and settled on a quote considerably cheaper than the traditional agency ones I'd been given.
My route was Joburg-London-Vancouver, returning Vancouver-Toronto-New York-Joburg, on a mix of airlines – Virgin Atlantic, Air Canada and United, operated by SAA.
The fact that the main flights in both directions were delayed by many hours, causing major disruption to our schedule, was not Orbitz's fault, of course, but the agency was guilty of shocking communication.
Virgin Atlantic's Flight 602 from OR Tambo to Heathrow was scheduled to depart at 8.30pm on June 22.
At 3.30pm that day Orbitz sent me an e-mail saying it was delayed until around midnight, and the flight information at the airport confirmed this.
My parents and I had just finished dinner in the airport at around 9pm when my mother did an e-mail check and discovered an e-mail sent by Orbitz, saying the flight had taken off at 8.30pm as scheduled.
Panic-stricken, we raced back to the boarding gate to discover that the flight had yet to take off. As it turned out, it didn't leave until 2am the following morning and we ended up getting to Vancouver 24 hours later than planned (see sidebar).
Worse was to come on my return, this time travelling alone. Concerned about my tight connection in New York, I called United Airlines from Vancouver on my departure day – June 30 – to say I'd be rushing to make the flight, and that I had no check-in baggage.
It referred me to SAA, where a chap called Oscar told me the flight from New York had been delayed from 11.15am the following day to 8.50pm.
It was the first I'd heard of it, and when I later called United I got even worse news – I was no longer booked on that flight.
Having held on for answers from Orbitz for well over an hour on a cellphone, a consultant told me SAA had indeed cancelled my New York to Joburg flight, and maybe I should ask Air Canada to refund that portion of my trip and buy a new ticket to get home.
Just like that. Sorry for you.
By then it was after 4pm on the Saturday, and SAA's US customer care office was closed.
Orbitz's customer service supervisor, Logan, followed up with the following e-mail, sent that evening, just hours before my departure from Vancouver: "We would like to informed (sic) you that your flight from JFK to JNB was just cancelled yesterday by South African Airways. We tried to reinstate the flight directly with the airline.
"However, their specialised department is currently closed.
"The best adviced (sic) that we give you is to confirm your flight directly with the airline's counter.
"We do apologise for the inconvenience. Thank you!"
When I made it to the SAA counter at JFK the following morning – ironically in good time for the originally scheduled flight – they confirmed the almost 10-hour delay and the fact that I wasn't booked on the flight.
But I was quickly reinstated by a charming and sympathetic supervisor, and sent to a nearby hotel for the day with a complimentary room and a lunch voucher.
Then came another e-mail from Orbitz.
"United Airlines flight 7916 departs New York John F Kennedy Intl (JFK) on time at 11.15am…"
Unbelievable. Another Orbitz e-mail with outdated departure information.
I tried to get hold of Orbitz last week, e-mailing "Logan" with a media query. I received a cellphone call from a blocked number with a message so garbled that I heard nothing apart from the words "New York".
It could have been from Orbitz but I have no way of knowing.
I wrote back to Orbitz, asking for an e-mailed response, which hadn't come at the time of writing.
So why was my New York to Joburg SAA flight cancelled, and why didn't SAA contact me directly?
The airline's customer service executive, Suretha Cruse, began by saying that the flight was delayed because an incoming flight left Joburg about 12 hours late on June 29, and the crew had to get their mandatory 48 hours' rest before doing the New York to Joburg return flight.
"Our staff in Fort Lauderdale immediately made contact with customers who had contact or e-mail information on their reservations details, to advise them of the change in schedule," Cruse said.
"Unfortunately we did not have your personal contact details on your reservation."
So SAA sent a flight cancellation notice to its codeshare partner – United Airlines – which should have forwarded it to the "owner of the reservation", Orbitz.
"For some inexplicable reason the flight cancellation message was generated, but not the reaccommodation message.
"Be assured that this matter is receiving priority by our IT team to avoid a recurrence of this nature. It is very unfortunate that this system failure caused the circumstances in question.
"We wish to express our humble and sincere apologies for the stress and frustration that you were subjected to as a result of the delay," Cruse said.
As we boarded that SAA flight to Joburg at JFK, 10 hours later than scheduled, all passengers were handed a notice offering us a 25 percent discount on an SAA flight, valid for 12 months.
So yes, I got to Vancouver and back, having paid less than I would have had I done the booking via a traditional travel agency.
But frankly, I wouldn't do it again, especially not in the case of multiple connections.
Because when things go wrong, as they do, you need the agency to which you paid your fare to be in your corner; to be accessible; to take ownership |of the problem and make it possible for you to be kept informed of any changes in good time.
As it was, I was fed conflicting, bewildering flight information, left to find out about crucial flight changes on my own, and abandoned to my fate.
Lesson learnt.
* In the US, up to 50 percent of flight bookings are made online but in SA that figure is just 5 percent.
Virgin Atlantic – not feeling the love
Most flight delays are unavoidable and beyond the control of airlines. What they do have control over, though, is how they treat passengers.
On the evening of June 22, several airlines, including Virgin Atlantic, were thrown into chaos by a fault in a flight planning system.
The flight my parents and I booked from Joburg to Heathrow, London, scheduled to depart at 8.30pm, was initially delayed until midnight, and left only at 2am.
Virgin Atlantic staff appeared at the boarding gate only very late that evening, then said very little.
No refreshments were provided to the waiting passengers. Having landed at Heathrow, we'd missed our Air Canada flight to Vancouver and were told by a Virgin rep waiting outside the plane to go to that airline's transfer counter for help.
After we waited in that queue, Air Canada said it wasn't its problem and directed us to the monstrous Virgin queue.
We stood in that queue for four and a half hours, during which time we weren't offered any refreshments or approached by any Virgin official with help or advice.
Having finally made it to the desk, we were directed to a nearby hotel for Virgin-paid dinner, bed and breakfast, and issued with Air Canada tickets for a flight to Vancouver the next morning – 24 hours later than the one we'd been booked on.
I have since e-mailed Virgin Atlantic, questioning its handling of the delay, as well as its failure to provide refreshments on either end, which contradicts the airline's website promises in the event of the kind of a delay that we experienced.
Responding, a Virgin spokesperson apologised and said a "thorough internal investigation" was being conducted "to ascertain exactly what took place".
consumer@knowler.co.za
Twitter: @wendyknowler
Posted in General | Tagged Internet, travel agent


Join us during Dumbo opening weekend (3/28 - 3/31) and double your fun wiht Dumbo Kids Activities.
Kids! Dumbo (pictured above) is hiding somewhere in Cinerama. Spot him and claim a prize at the concession counter.
We have a special activity for kids at all Dumbo screenings. Make sure to visit the concessions counter to receive your Dumbo activity pack featuring crayons, coloring pages and a maze.
See Dumbo, now playing at Cinerama.


text:
module Authlete
  module Model
    module Response
      class DeviceVerificationResponse < Authlete::Model::Result
        include Authlete::Utility

        attr_accessor :action

        attr_accessor :responseContent
        alias_method  :response_content,  :responseContent
        alias_method  :response_content=, :responseContent=

        attr_accessor :clientId
        alias_method  :client_id,  :clientId
        alias_method  :client_id=, :clientId=

        attr_accessor :clientIdAlias
        alias_method  :client_id_alias,  :clientIdAlias
        alias_method  :client_id_alias=, :clientIdAlias=

        attr_accessor :clientIdAliasUsed
        alias_method  :client_id_alias_used,  :clientIdAliasUsed
        alias_method  :client_id_alias_used=, :clientIdAliasUsed=

        attr_accessor :clientName
        alias_method  :client_name,  :clientName
        alias_method  :client_name=, :clientName=

        attr_accessor :scopes

        attr_accessor :clientNames
        alias_method  :client_names,  :clientNames
        alias_method  :client_names=, :clientNames=

        attr_accessor :acrs

        attr_accessor :expiresAt
        alias_method  :expires_at,  :expiresAt
        alias_method  :expires_at=, :expiresAt=

        attr_accessor :resources

        private

        def defaults
          super.merge(
            action:            nil,
            responseContent:   nil,
            clientId:          0,
            clientIdAlias:     nil,
            clientIdAliasUsed: false,
            clientName:        nil,
            scopes:            nil,
            clientNames:       nil,
            acrs:              nil,
            expiresAt:         0,
            resources:         nil
          )
        end

        def set_params(hash)
          super(hash)

          @action            = hash[:action]
          @responseContent   = hash[:responseContent]
          @clientId          = hash[:clientId]
          @clientIdAlias     = hash[:clientIdAlias]
          @clientIdAliasUsed = hash[:clientIdAliasUsed]
          @clientName        = hash[:clientName]
          @scopes            = get_parsed_array(hash[:scopes]) { |e| Authlete::Model::Scope.parse(e) }
          @clientNames       = hash[:clientNames]
          @acrs              = hash[:acrs]
          @expiresAt         = hash[:expiresAt]
          @resources         = hash[:resources]
        end
      end
    end
  end
end

redpajama_set_name: RedPajamaGithub


text:
Everything we know about Rabia Chaudry, the woman trying to free Adnan Syed.
Polly Taylor
Page Editor
If it weren't for Rabia Chaudry, you probably never would have heard the name Adnan Syed.
It was Chaudry, a family friend of Syed's, who first brought his case to the attention of former Baltimore Sun reporter and This American Life contributor, Sarah Koenig in 2014.
The eventual result of that interaction, as we all know, was the award-winning podcast and cultural phenomenon, Serial, which has been downloaded more than 175 million times.
Watch the full trailer for The Case Against Adnan Syed here. Post continues below…
The podcast investigates the murder of 18-year-old Baltimore high school student, Hae Min Lee, for which, Chaudry believes, Adnan Syed has been wrongly imprisoned.
The murder and Adnan's possible wrongful conviction are now also the subject of four-part HBO documentary, The Case Against Adnan Syed.
But what more do we know about one of Syed's fiercest advocates? And what has she been doing since Serial?
Who is Rabia Chaudry?
Chaudry, now 44, is an immigration lawyer by trade, and is a Pakistani-American mother of three.
She first met Adnan in 1995, four years before Hae Min's murder, when he began hanging out with her younger brother, Saad.
Chaudry was in college at the time and tells Serial's Koenig that she knew Syed to be 'like the community's golden child.'
Rabia Chaudry with Amy Berg, director of The Case Against Adnan Syed
They were both part of the Baltimore Muslim community and attended the same mosque, where Adnan would often lead prayers.
When Syed was arrested and charged with Hae Min Lee's murder in 1999, Chaudry was 24, and studying for her law degree. She was immediately convinced of his innocence.
Chaudry began visiting Syed in prison, sat in the courtroom when he was convicted, and has advocated for him ever since.
In 2014, she approached Koenig 'out of desperation' and begged her to look into the case.
What did Rabia Chaudry think of Serial?
In December 2014, Chaudry told TIME magazine: "Serial was not what I expected. It was also not what I wanted."
She said that when she approached Koenig "because reporters can go places most of us can't" she wasn't hoping she would create a show about Syed's case.
"I was hoping she would uncover the truth about who killed Hae Min Lee—a truth that would exonerate Adnan," she said.
Rabia has been trying to prove Adnan Syed's innocence for 20 years.
Chaudry has also been vocal about her disappointment in Koenig for refusing to advocate for Syed. She also told TIME that she "felt like a failure" when the podcast failed to definitively prove Syed's innocence.
While her hopes of justice were raised in 2016 when Syed was granted a retrial, and again in 2018 when that decision was upheld, the ruling has since been overturned by Maryland Court of Appeals.
What did Rabia Chaudry do next?
After expressing her disappointment about the outcome of Serial, Chaudry recorded her own podcast, Undisclosed, which has been downloaded over 90 million times.
She also continued to blog about the case and wrote a book, Adnan's story: The Search for Truth and Justice after Serial, a recap of the case, which also includes revelations since Syed's incarceration.
Where is Chaudry now?
Chaudry is now at the centre of the latest exploration of Hae Min Lee's murder, HBO's The Case Against Adnan Syed.
So far, we have seen her cast doubt on the alibi of Don Clinedinst, the man Hae Min had just begun dating at the time of her murder.
She has also pointed to the discrepancies in the testimony of Jay Wilds, who is the key figure in the prosecution's case against Syed.
You can watch the first two episodes of The Case Against Adnan Syed on SBS on Demand now.
Tags: adnan-syed , news-stories , rabia-choudry , serial , the-case-against-adana-syed


text:
Q: EXPO publish fail. What is the cause? I have tried to publish my expo app so I can get started on the release process but publish keeps failing with the following error. What is the issue?
Publishing to channel 'default'...

Request failed with status code 404

Error:

Request failed with status code 404
    at createError (C:\Users\tade2\AppData\Roaming\npm\node_modules\expo-cli\node_modules\axios\lib\core\createError.js:16:15)
    at settle (C:\Users\tade2\AppData\Roaming\npm\node_modules\expo-cli\node_modules\axios\lib\core\settle.js:17:12)
    at IncomingMessage.handleStreamEnd (C:\Users\tade2\AppData\Roaming\npm\node_modules\expo-cli\node_modules\axios\lib\adapters\http.js:237:11)
    at IncomingMessage.emit (node:events:406:35)
    at endReadableNT (node:internal/streams/readable:1331:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)

A: You need to update expo-cli - you are using a version that lesser than 1 year and above old and points to a no longer existing endpoint checkout issues with below link .
https://docs.expo.dev/bare/error-recovery/

redpajama_set_name: RedPajamaStackExchange


text:
PDF Version: ETC: A Review of General Semantics 45:2 (Summer 1988)
Decrease quantity for PDF Version: ETC: A Review of General Semantics 45:2 (Summer 1988)
Increase quantity for PDF Version: ETC: A Review of General Semantics 45:2 (Summer 1988)
45:2 (Summer 1988)
"In Praise of Ears" by Glen Ingram
"MacNeal's Master Atlas of Decision Making: Logics for the Single Decision (Continued)" by Edward MacNeal
"True, False or Funny?: Getting Your Way with Triple Logic" by Derek Brownlee
"Evaluation--Proper and Improper: Part II" by George F. F. Lombard
"Poem" by Roger Woddis
"'Porn,' Polls and Polemics" by A. D. Coleman
"Bottles" by Vilém Flusser
"On the Recently Minted Hundred-Cent Piece" by John Updike
"Television and the Construction of Reality" by Ira Glasser
"Speaking the Unspeakable" by W. C. Watson and David H. Spodick
"How Journalists Select 'News'" by George Kennedy
"Discovering E-Prime" by Elaine C. Johnson
"Oldies but Goodies" by Robert Wanderer
Folkore: Maps & Territories:
"Tall Tales, Part: II: Famous Tellers of Tall Tales" by Joyce Bynum
"Consider the Opposite" by Greg Sawin
Plus Membership Page, Dates and Indexes, Books, Correspondence, and other items.


Hahaha. I hope Gigabyte has a sense of humor.
Yeah. I really didn't have much to go on. I just slapped something quick in on PowerPoint. I'm not the most creative person in the world, that's for sure.
Personally, I think its brilliant but then again, I'm not on the selection staff.
This is why I left an option to email us your entries in case they are top secret.


Our powder coating spray guns use patented Pulse Power technology to deliver superior powder coating coverage and transfer efficiency across all types of applications. Select an image below to see more information.
Achieve high-quality coating through the use of Super Pulse Power®, a High voltage/Low current charging method that minimizes free ions.
Handling is easier due to their lightweight design and easy-to-hold gun grip.
Cup Gun is available with the GX121C fitted with a cup-type powder coating hopper attached to the end of the gun barrel. Accommodates small batch spray tests.
One-touch air purge allows faster, easier clean up during powder coating color changes.
GX132 Powder Coating Gun is a state-of-the-art manual spray gun.


EU Criminal Law is perhaps the fastest-growing area of EU law. It is also one of the most contested fields of EU action, covering measures which have a significant impact on the protection of fundamental rights and the relationship between the individual and the State, while at the same time presenting a challenge to State sovereignty in the field and potentially reconfiguring significantly the relationship between Member States and the EU. The book will examine in detail the main aspects of EU criminal law, in the light of these constitutional challenges. These include: the history and institutions of EU criminal law (including the evolution of the third pillar and its relationship with EC law); harmonisation in criminal law and procedure (with emphasis on competence questions); mutual recognition in criminal matters (including the operation of the European Arrest Warrant) and accompanying measures; action by EU bodies facilitating police and judicial co-operation in criminal matters (such as Europol, Eurojust and OLAF); the collection and exchange of personal data, in particular via EU databases and co-operation between law enforcement authorities; and the external dimension of EU action in criminal matters, including EU-US counter-terrorism co-operation. The analysis is forward-looking, taking into account the potential impact of the Lisbon Treaty on EU criminal law.
Conclusion: Is Criminal Law a Special Case in the EU Legal Order?
"Although written more with legal and institutional audiences in mind, the book offers an instructive account for those approaching the study of crime that has a trans-national dimension from more criminological, sociological and political perspectives.
Beyond the obvious value of this book as a clearly written, poised and thorough guide to the development of EU criminal law as well as the degrees of agreement, resistance and fudges that have emerged during the development of EU engagement in this area, its contribution to political and criminological enquiry may spring as much from the questions it poses to proponents of ever-greater co-operation in international crime fighting.
"The book should ... not be understood as a mere textbook; instead, it goes beyond such scope, being forward-looking in nature.
The book ... makes a valuable contribution as regards the evaluation of EU criminal law matters...The author provides concrete examples to support his arguments in order to provide a better understanding of the rather difficult subject matter. The book is well written; the author's assumptions are convincing and seem logical... the book ... should be recommended to lawyers and practitioners in the field of criminal law as well as European law who are looking for a forward-looking analysis.
"The information...is full and accurate, and ... difficult issues are examined in depth, and often critically.
Remarkable and welcome addition to the literature.
Valsamis Mitsilegas is Head of the Department of Law, Professor of European Criminal Law and Director of the Criminal Justice Centre at Queen Mary, University of London.


text:
CIGNA Faces $16M Judgment for Failing to Pay Insurance Claims
Laurie Thompson
Our Columnists, Palm Beach Article
The court rejected CIGNA's interpretation of the policy because ERISA requires the summary plan language to be written so that an ordinary patient will understand.
A recent decision issued by a federal court in Texas gives a ray of hope to behavioral health care providers in South Florida who have been unable to collect millions for medically necessary services provided to CIGNA policy holders for addiction and other behavioral health treatment. Specifically, the court in Connecticut General Life Insurance Company et al. v. Humble Surgical Hospital, LLC (Humble) entered a judgment against CIGNA for approximately $16 million covering underpayments, penalties and attorneys' fees and costs. Although Humble is not a behavioral health provider, the issues and analysis articulated in the case are helpful to behavior health providers here in South Florida who have waited years to be paid for services provided to patients insured by CIGNA.
The Humble case was actually initiated by CIGNA when it filed claims against Humble under ERISA and Texas common law seeking reimbursement for alleged over payments resulting from out-of-network healthcare services, which Humble rendered to patients insured by CIGNA. Specifically, CIGNA argued Humble engaged in fraudulent billing practices as a result of its custom of "fee-forgiving" or waiving the patient's financial responsibility pursuant to deductibles, co-pays and co-insurance. As a result of Humble alleged custom of waiving the member's financial responsibility, CIGNA argued that the policy's language allowed CIGNA to deny the entire claim submitted by Humble to CIGNA. To the extent the patient paid a portion of their financial responsibility, CIGNA argued that pursuant to the policy's language it was only required to pay the same proportional amount to the provider for CIGNA's share of the claim as paid by the patient.
The court rejected CIGNA's interpretation of the policy because ERISA requires the summary plan language to be written so that an ordinary patient will understand. The court found that CIGNA's interpretation of this language did not pass that test because the average plan participant would not expect CIGNA's payment to be conditional on the patient's payment or to be proportional based upon how much the patient paid. Instead, the court found that the average patient would expect CIGNA to pay its full share in accordance with the terms of the various plans regardless of what the patient paid or was capable of paying.
Moreover, the court disagreed with CIGNA's assertion that CIGNA had the discretion under ERISA to "absolve itself of its responsibility to process and pay claims because it assumed that it could demand upfront payments of co-pays" and then pay some claims on a proportionate share analysis. The court held that CIGNA's actions were improper and were a breach of its fiduciary duty to its members and to Humble as an assignee of the member's benefits. Calling CIGNA's method for processing claims "simply disingenuous and arbitrary," the court stated that it appears that CIGNA's purpose to deny the claims was predetermined and that CIGNA, in fact, denied members of the benefit of the bargain they made when they purchased the policy.
This argument is identical to one of the arguments CIGNA has raised against South Florida behavioral healthcare providers to justify its refusal to pay tens of millions in claims for services provided by those providers to CIGNA insureds. Therefore, although the Humble case is a Texas court decision, hopefully the courts in South Florida will take notice of this case and use its rationale to force CIGNA to act in good faith when dealing with South Florida behavioral healthcare providers and to require CIGNA to pay legitimate claims for services rendered to CIGNA insureds. To allow CIGNA to reduce its obligation to pay for such claims based upon how much the patient paid or is able to pay would cause providers who treat patients without an ability to pay to be punished for helping that population. Moreover, such a policy would create a windfall for CIGNA who has already collected premiums from the patient on the promise that it would pay the claims associated with medically necessary medical and behavior health care services. Laurie Thompson
Laurie Thompson is a partner at Weiner, Lynne & Thompson, P.A. and practices in the area of commercial litigation in both state and federal courts. Ms. Thompson is the immediate past president of the South Palm Beach County chapter of the Florida Association for Women Lawyers and is the development committee chair for the State Florida Association for Women Lawyers. For more information, please call (561) 265-2666 or email [email protected]
Why Did Elizabeth Holmes Go To Trial?
3 Lessons From a Founder Whose Law Firm Started With a Google Search
Dr. Marcos de Escobar says:
Cigna is a quasi legal criminal organization who routinely denies payment to physicians. They owe me hundreds of thousands of dollars then seemigly after 2 years of non payment kicked me out of network. The have master the art of denials through a litany of trap door denial codes. Records requests in which they never seem to be able to find the charts that are sent over despite being sent and signed for certified mail. They even had the audacity after fighting a non payment for over 2 years to say they " were not sure the pateint was even inusred by them despite a valid ID card and proof of payment by the patient. There needs to be a class action lawsuit against such deceptive criminal corporate greed. I have spoken to several practitioners of various specialties and they also have been victims of Cigna in this regard.


text:
You Need To Watch The Most Misunderstood 2000s Spy Flick On Prime ASAP
Ryan Britt
Warner Bros. swiped our Harry Potter wand IP, says Kano
Australia called to step up Ukraine help
Netflix's 'Kids Mystery Box' feature now available on Android devices
Why Brainchip, IAG, Metcash, and ResMed shares are sinking today
6 Scientists Swallowed Legos. Here's What Parents Need To Know
In May 1959, Cosmopolitan published a piece of short fiction by Ian Fleming called "Quantum of Solace," in which James Bond listens to a story at a dinner party. The story itself is not a spy thriller at all. Instead, this tale daringly contrasts Bond's over-the-top lifestyle with the real pain of what real people go through in relationships. The "Quantum of Solace," as described in the story, means "a precise figure defining the comfort, humanity, and fellow feeling required between two people for love to survive." And, although the 2008 James Bond film of the same name has almost nothing to do with the 1959 short story's plot, it could provide a bit of comfort and does explore how love can survive.
Of all the James Bond films, Quantum of Solace is perhaps the most misunderstood, overlooked, and unfairly maligned. Because 007 flicks jump around on streaming all the time, this one leaves Amazon Prime Video on January 31, and Paramount+, too. Here's why you should give it another look before it does.
In 2008, just two short years after Daniel Craig's debut as James Bond in the game-changing Casino Royale, expectations for the sequel were high. Quantum of Solace was billed as a direct sequel to Casino Royale, picking up just minutes after that film ended, something that was a risk for the long-running Bond franchise. Although audiences and critics had embraced Craig's more realistic and grounded take on Bond, the idea of telling a character-centric story in a series of action movies wasn't something the 007 series hadn't attempted in a while. In 1969, in On Her Majesty's Secret Service, James Bond (George Lazenby) got married and then had his wife Tracy (Diana Rigg) killed in front of him. In the next movie, Diamonds Are Forever (1971), Bond was back to being played by Sean Connery, out for revenge for the death of his wife.
The parallels are clear. Just as On Her Majesty's Secret Service was a more tender, less formulaic Bond with a new actor, so was Casino Royale. Each was then followed by sequels that were less than beloved by general audiences, and left hardcore fans just as divided. But, Quantum of Solace isn't the Diamonds Are Forever of the Daniel Craig era for one simple reason: It's actually good, and Diamonds Are Forever isn't. Quantum of Solace is a real movie with real emotional stakes. Marc Forster was selected by the Bond producers as the director of the film, precisely because he'd done The Kite Runner and Finding Neverland. Whenever you think Bond movies aren't artistic and full of amazing cinematic talent, remind yourself that Marc Forster directed this one.
Although Quantum of Solace begins as Bond is taking revenge against Mr. White (Jesper Christensen) for the death of Vesper (Eva Green) in the previous film, the movie quickly morphs into something else — a layered, and taut spy movie in which Bond is one step behind the bad guys the entire time. After learning a clandestine group called "Quantum," has spies everywhere, Bond teams up with a Bolivian agent named Camille Montes (Olga Kurylenko). They're trying to take down Dominic Greene (Mathieu Amalric) a faux-environmentalist who is somehow the most realistic Bond villain of all time. Bond is joined in his adventure by his CIA pal Felix Leiter — played by Jeffrey Wright in his second Bond film — as well as an MI6 agent named Strawberry Fields, played by Gemma Arterton. Judi Dench, of course, is back as Bond's boss "M," while David Harbour sneaks in there as the crooked CIA boss Gregg Beam.
If you don't remember the plot of Quantum of Solace, nor its eventual bit twist, I'll not spoil the details here. Of all the Craig Bonds, this film has the shortest runtime, at a breezy 106 minutes. In a sense, it's like you're watching a really great episode of an imaginary James Bond prestige TV show. This is probably the best way to think about the film. It's less ambitious than Casino Royale, and yet, somehow gutsier because it's less ambitious. Bond doesn't sleep with Camille, and barely has time for puns or one-liners. There aren't a lot of quirky gadgets, giving the film a smaller quality than nearly all the other 007 films.
It's also a film that's actually about what it claims to be about. Both James Bond and Camille Montes are hoping for some kind of solace in their missions of revenge. Both are unsure if they can correctly calculate that "precise figure" to make them happy. It's an action movie about loneliness and a spy movie in which the spies feel truly out in the cold. This a no-frills Bond film that (mostly) rejects nostalgia and callbacks. In 2012, Skyfall would pivot the other way, which was probably for the best. But the Daniel Craig era might have been even richer if we got one more movie like this.
Quantum of Solace is streaming on both Amazon Prime Video and Paramount+ until January 31, 2023.


Everything Ocun do is connected to our love of climbing, rocks and the outdoors. They share the same desire for beauty and perfection and the need to constantly improve our performance, equipment and ourselves. Climbing is our passion. Quality, improved safety and cleaner design of climbing equipment represent a challenge and an opportunity for further work for us. We feel responsible toward climbers, friends and customers who rely on our products at all times, wherever they are. We help them to reach higher and climb to the top safer. The joy and vertical adventures they experience are our reward.


A wiring diagram is an easy visual representation from the physical connections and physical layout of the electrical system or circuit. It shows what sort of electrical wires are interconnected and may also show where fixtures and components could possibly be coupled to the system.
For example, your house builder would want to what is geographic location of electrical outlets and lightweight fixtures employing a wiring diagram to prevent costly mistakes and building code violations.
A schematic shows the master plan and function to have an electrical circuit, but is not interested in the physical layout from the wires. Wiring diagrams show the way the wires are connected and where they ought to located in the actual device, and also the physical connections between each of the components.
Most symbols applied to a wiring diagram resemble abstract versions with the real objects they represent. For example, a switch is a burglary the fishing line with a line in an angle to the wire, comparable to the light switch you can flip off and on. A resistor will likely be represented with a group of squiggles symbolizing the restriction of current flow. An antenna is really a straight line with three small lines branching off at its end, comparable to a true antenna.


WHAT DO CHARTS ACTUALLY SHOW US?
As consumers of visualisations, before we form interpretations and conclusions from the charts we see, we have to remember that they are only a visual display of the data that has been collected and the way that data has been transformed.
What we see is not always an objective reflection of the underlying topic or phenomena rather it is a reflection of what data exists and what's been done to it. A demonstration of this point can be found in this example from FiveThirtyEight's ongoing tracking of the President's approval rates.
In the multiple chart panels we see how each president's approval ratings compare to Trump's (green line) from the day they took office up to the current point in time. Whilst the patterns of approval are interesting, they reveal as much about the advances in data collection and convey the result of hidden statistical treatments applied to the collected data.
We take for granted the daily updates to polling day, not just from single polls but from multiple sources. The approval data we see about Trump and, looking back, for Obama is frequently updated and represents a calculated mean of the various sources, as explained here, accounting for the quality of each poll, recency, sample size and partisan lean.
Looking back to George H. Bush's approval ratings, only 30 years ago, you see how the profile of his line is more cityscape than landscape, reflecting the lower frequency of polling data being collected.
Going further back in time to Harry S Truman, you can now count from the chart only 14 updates to his approval ratings over 738 days (assuming there were never consecutive polls at the exact same level). You can also see that the first occasion of a poll being collected was on day 55, the second on day 181. The shape of this line does not mean the approval of his performance in office remained unchanged for 126 days, it means data about the approval of his performance wasn't collected for 126 days.
All this is to say be careful in what you draw from charts and always ask questions about the data that underlies it. That's not to say that the subjectivity of collection methods and statistical techniques applied are universally unreasonable, quite the opposite, but be diligent.


text:
Latest developments on migration and asylum in Ireland
Department of Jobs Enterprise and Innovation launched a new Employment Permits Online Status Up-date Enquiry Facility.
As of 15 February 2016, a new Atypical Working Scheme for undocumented workers in the fishing industry – Non-EEA Crew Members (Irish Fishing Fleet) has been introduced
From 1 February 2016, changes to Schedules 3 and 4 of the Employment Permits Regulations (the Highly Skilled Eligible Occupations List (HSEOL) and the Ineligible Categories of Employment List (ICEL) came into effect.
100 new citizens will be naturalised in Waterford on 4th March and the next citizenship ceremonies will take place in The Convention Centre Dublin, on Friday 15 April 2016. See: www.inis.gov.ie.
Immigrant Council of Ireland released new publication Islamophobia in Dublin: Experiences and how to respond.
UNHCR Ireland produced guidelines for Irish Media: Reporting on Refugees: Guidance by and for Journalists.
UN Committee on the Rights of the Child published Concluding Observations on Ireland's report by the Irish Human Rights and Equality Commission to the UN Committee on the Rights of the Child on Ireland's Combined Third and Fourth periodic reports.
Anti-human trafficking Unit Newsletter – February 2016.
Doras Luimní: Bulletin Issue 38.
Events / Calls
Irish Refugee Council announced a call for artistic submissions: What Crisis? An artistic exploration of refugees, Direct Provision and misinformation. Deadline 1 April 2016
3 March 2016: Save the date: The Single Protection Procedure: Meeting International Obligations. This seminar is part of the ECRE-led project LEAP. For further information email: [email protected].
5 March 2016: Irish Refugee Council Public Meeting, Dublin.
A new Stamp 1G for students availing of the Third Level Graduate Scheme will be introduced effective from 1 February 2016.
International Protection Act 2015 with the principal purpose of reforming the system for determining applications for international protection in Ireland through the introduction of a single application procedure was signed into law on 30 December 2015.
Revised remuneration requirements for specific Employment Permit types (SI No 442 of 2015), increased the statutory minimum wage to €9.15 per hour effective from 1 January 2016.
Department of Justice and Equality published its Annual Report 2014.
Irish Human Rights and Equality Commission launched its first Strategy Statement 2016-2018.
Ireland and the United Nations Convention on the Rights of the Child: Report by the Irish Human Rights and Equality Commission to the UN Committee on the Rights of the Child on Ireland's Combined Third and Fourth periodic reports (December 2015).
Immigrant Council of Ireland launched a Training Toolkit: Upholding Rights! Early Legal Intervention for Victims of Trafficking.
Ruhama: Newsletter December 2015.
IE news update
· A new Stamp 1G for students availing of the Third Level Graduate Scheme will be introduced effective from 1 February 2016.
· International Protection Act 2015 with the principal purpose of reforming the system for determining applications for international protection in Ireland through the introduction of a single application procedure was signed into law on 30 December 2015.
· Revised remuneration requirements for specific Employment Permit types (SI No 442 of 2015), increased the statutory minimum wage to €9.15 per hour effective from 1 January 2016.
· Department of Justice and Equality published its Annual Report 2014.
· Irish Human Rights and Equality Commission launched its first Strategy Statement 2016-2018
· Ireland and the United Nations Convention on the Rights of the Child: Report by the Irish Human Rights and Equality Commission to the UN Committee on the Rights of the Child on Ireland's Combined Third and Fourth periodic reports (December 2015).
· Immigrant Council of Ireland launched a Training Toolkit: Upholding Rights! Early Legal Intervention for Victims of Trafficking .
· Ruhama December 2015 Newsletter.
· 3 March 2016: Save the date: The Single Protection Procedure: Meeting International Obligations. This seminar is part of the ECRE-led project LEAP. For further information email. [email protected].
EMN Ireland Press Releases
News Stories: 2021


Truth is a term used to indicate various forms of accord with fact or reality, or fidelity to an original or to a standard or ideal,Our Honesty, uniqueness makes us special,Honesty is the first chapter in the book of wisdom..Truth is Nothing rather, simply, a Prototype of our Mind. The opposite of truth is falsehood, which, correspondingly, can also take on logical, factual, or ethical meanings.Language and words are a means by which humans convey information to one another in semiotic associations, and the method used to recognize a truth is termed a criterion of truth.
Most important work in the world,the search for the truth..
Doesn't stop the truth from being true..


The past few days have been filled with pics and anecdotes from DD's trip to Chicago. He's been sipping Oregon pinot noir in bars and going to see jazz bands in clubs and generally having an awesome time.
Guess how often I've thought "damn, I was almost there too"?
Yep … then times it by 20.
I bought a couple of lottery tickets yesterday, but I think a full-time job is where destiny is taking me.
And I can't decide what I want to be when I grow up. It's a little daunting.
What do I want to do with my next 15 years in the workforce?
Meanwhile, on the it shouldn't entertain me quite so much front … DD left his car in my front yard before he flew out, which made my ex think – and hopefully panic slightly – that he was about to meet my bloke for the first time when he came to pick up the kids yesterday (they've gone to a birthday party in Newcastle).
My ex doesn't know anything about DD other than his name. Not discussing our partners is one of the unspoken ways we keep things civil.
>> On Monday I announced that bedroom gymnastics were cancelled.
>> On Tuesday I griped about what I wouldn't be doing on the long weekend. Plus. there was a gallery of pics of celebs enjoying their Memorial Day break.
>> On Wednesday there was a broken heart in the Household … but I made an absolutely brilliant slow-cooker beef curry.
>> On Thursday I wrote about the love that inextricably binds me to my ex-husband.
>> On Friday I revealed I'd almost flown to Chicago on the spur of the moment … and the heart palpitations it gave me.
>> And Saturday was all about my prima donna foxie.
>> Heartbroken dad of swing death toddler: I tried to save my little man.