Tutorial: Selecting a track
The goal of this tutorial
The RxPlayer has an advanced API when it comes to track selection:
-
You can list the available audio, video and/or text tracks and chose one of them
-
You can disable the current video and / or text track
-
You can also give to the RxPlayer a set of preferences so it can make the best choice by itself without manually having to choose the right track for every contents.
Those preferences can even be applied retro-actively (for example, to the content currently being played), depending on your need.
Because the RxPlayer declares multiple APIs to allow those different use cases, the track selection API can seem intimidating and confusing at first.
This tutorial will help you understand what your options are, why you would use an API instead of another one and how to use them.
What is a “track”?
We should first agree on what is a track, as a concept.
Let’s take for example an italian film presented to an english-speaking audience.
For that film, let’s imagine those multiple “audio tracks”:
- one being the original audio track, in italian
- one being a dub in the english language
- another in english with accessibility features such as an audio description of what visually happens in the film (for example, to give cues of what is happening to the visually-impaired).
There also could be multiple “text tracks”:
- subtitles in english
- closed-captions in english (for example, for the hearing impaired)
And we could even imagine multiple video tracks:
- one displaying the “regular” film
- another displaying either the same film from a different camera angle (seems far-fetched here but let’s just pretend we’re talking about some kind of experimental film!)
All those will provide to the user a different way to offer the same film. They even can technically be switched one independently of the other (though restrictions on possible combinations can exist) to give a large number of different experience for what is effectively the same content.
Listing the available tracks
Preamble
The RxPlayer does not “guess” the tracks available for a given content. It usually finds every information about them in a specific file, called the Manifest.
Thus, the list of available tracks will only be available once the RxPlayer has loaded and parsed that Manifest. Moreover, a Manifest can have several lists of available tracks depending on the player’s position (for example, a live channel with multiple programs might have different audio languages available for different programs).
This means both that the available tracks won’t generally be known just after a
loadVideo
call and that it can then change at any time.
Thankfully, most of this complexity is abstracted by the RxPlayer API.
Using methods
Once the RxPlayer has loaded the content (meaning the RxPlayer is not in the
STOPPED
, LOADING
or RELOADING
player state) you can
begin to ask it what is the current list of available tracks.
This can be done through three RxPlayer methods:
getAvailableAudioTracks()
to list audio tracksgetAvailableVideoTracks()
to list video tracksgetAvailableTextTracks()
to list text tracks
Those methods will all return arrays of objects, each object containing information about a single track.
It should be noted that the information for an audio track won’t be the same than for a video or a text track. For example, you might be interested by the height and width available in a video track. Those notions make absolutely no sense for an audio track.
For more information about the structure of the data returned by those methods, you can refer to their API documentation (a shortcut is available by clicking on the method name).
Note that you can still ask for the current tracks when the RxPlayer does not
have loaded any content (is in the STOPPED
, LOADING
or RELOADING
player
state), but you will most likely only get an empty array in those cases.
Examples
Those methods are straightforward, here are some examples of how they can be used:
// Array of all available audio languages
const availableLanguages = rxPlayer.getAvailableAudioTracks()
.map(track => track.language);
// List of audio tracks containing an audio description of what is visually
// happening
const audioDescriptionTracks = rxPlayer.getAvailableAudioTracks()
.filter(track => track.audioDescription);
// List of video tracks for which a profile with a 1080p resolution is available
const highResVideoTracks = rxPlayer.getAvailableVideoTracks()
.filter(track => {
return track.representations
.some(representation => representation.height !== undefined &&
representation.height >= 1080);
});
// List of text tracks available in french
const frenchTextTracks = rxPlayer.getAvailableTextTracks()
.filter(track => track.normalized === "fra");
Using events
If you want to have the list of available tracks as soon as possible, it might be a good idea to rely on the related events.
Here are the three events you will need to know:
-
"availableAudioTracksChange"
: the list of available audio tracks was just updated -
"availableVideoTracksChange"
: idem for video tracks -
"availableTextTracksChange"
: idem for video tracks
All of those events will have the corresponding available tracks as a payload,
which will be the exact same data that what you would get when calling the
corresponding getAvailable...Tracks
method at this point.
Note that no available...TracksChange
event will be sent when the RxPlayer
stops the content or temporarly goes through the RELOADING
player state,
despite the fact that in those cases there is no available tracks to choose
from.
Still, calling the getAvailable...Tracks
methods in those cases will return
an empty array (as it should). This has to be considered.
Examples
Like any RxPlayer event, you will need to add an event listener for those:
let currentAudioTracks = [];
let currentVideoTracks = [];
let currentTextTracks = [];
rxPlayer.addEventListener("availableAudioTracksChange", audioTracks => {
console.log("New audio tracks:", audioTracks);
currentAudioTracks = audioTracks;
})
rxPlayer.addEventListener("availableVideoTracksChange", videoTracks => {
console.log("New video tracks:", videoTracks);
currentVideoTracks = videoTracks;
})
rxPlayer.addEventListener("availableTextTracksChange", textTracks => {
console.log("New text tracks:", textTracks);
currentTextTracks = textTracks;
})
Should you use the methods or events?
Both the exposed methods and events return the same data.
Whether you should rely on the former or on the latter will depend on what corresponds the most to your codebase:
-
if you want to fetch that list at a given point in time - such as when the user clicks on a button - it can be easier to just call the methods.
-
if you want to know that list as soon as available and perform an action right after (such as selecting a track, displaying this list…), you might prefer relying on the events.
Here you will also have to re-set that list yourself when the player has no content loaded anymore (in the
STOPPED
,LOADING
orRELOADING
player state).
Knowing the current track
You might also want to know which track is the one currently selected. There are several ways to do that.
Through methods
The RxPlayer has a set of methods that just return the currently active tracks:
-
getAudioTrack
: return information on the current audio track -
getVideoTrack
: return information on the current video track -
getTextTrack
: return information on the current text track
Those methods will return an object describing the attributes of the current
tracks.
They can also return null
if no track has been enabled (for example, the user
could have wanted to disable all text tracks) and undefined
if the track is
either unknown (which is a very rare occurence) or if no content is currently
playing.
Like the getAvailable...Tracks
methods, the format of the objects returned
will entirely depend on which method you call. You can refer to the API
documentation to get more information on this.
Also like the getAvailable...Tracks
methods, the current text track will
usually only be known once the RxPlayer has loaded a content (which means we are
not in the STOPPED
, LOADING
or RELOADING
player
state). If no content is loaded, those APIs will just return
undefined
.
Examples
Here is an example on how you could use them:
const currentTextTrack = rxPlayer.getTextTrack();
if (currentTextTrack === null) {
console.log("No text track is enabled");
} else if (currentTextTrack === undefined) {
console.log("We don't know the current text track. " +
"Are you sure a content is loaded?");
} else {
const language = currentTextTrack.language;
console.log("We have a current text track in the " + language + "language");
}
Through events
Exactly like you would obtain the list of available tracks through the
available...TracksChange
events, you can know when the current track change as
soon as possible through the following events:
-
"audioTrackChange"
: the currently-active audio track changed -
"videoTrackChange"
: the currently-active video track changed -
"textTrackChange"
: the currently-active text track changed
Those events just emit the current track information as soon as it changes, in
the same format that the get...Track
methods.
Unlike for the get...Track
methods however, its payload cannot be set to
undefined
: you won’t receive any ...TracksChange
event if the track is
unknown or if there is no content.
This also means that you won’t have any event when the RxPlayer stops or
re-load the current content, despite the fact that you don’t have any current
track in that case.
Calling the get...Track
method in those cases will return undefined
, as it
should. This has to be considered.
Example
Like for any events, you will have to register an event listener:
rxPlayer.addEventListener("textTrackChange", track => {
if (track === null) {
console.log("No text track is active");
} else {
console.log("new active text track in the following language: " + track.language);
}
});
Through the list of available tracks
As written earlier the available...TracksChange
events and the
getAvailable...Tracks
methods both return arrays of objects, each object
defining a single track.
In each of those object, you will find an active
boolean property, which will
be set to true
if the track is the currently chosen one and false
otherwise.
Note that it’s possible that none of the available tracks are active. This is for example the case when the track has been disabled (for example when the user wants no text tracks at all).
// get the active audio track through `getAvailableAudioTracks`
const activeAudioTrack1 = rxPlayer.getAvailableAudioTracks()
.find(track => track.active);
// get the active audio track through `availableAudioTracksChange`
let activeAudioTrack2;
rxPlayer.addEventListener("availableAudioTracksChange", (tracks) => {
activeAudioTrack2 = tracks.find(track => track.active);
});
Which one to use?
As usual here, this is highly dependant on your application. All of those APIs give the same information through different means.
Accessing with the get...Track
method is simple to use, the events allow to
know at the earliest possible time and relying on the list of available tracks
can simplify your code if you want both of them.
Selecting a track
Now that we have the list of available tracks and the current one, we might want to choose another one, or let the final user choose another one.
To do that, you will have to use one of those three RxPlayer methods:
setAudioTrack()
: change the current audio tracksetVideoTrack()
: change the current video tracksetTextTrack()
: change the current text track
Each of those methods take a single string as argument. That string should be
the value of the id
property of the chosen track.
For example, to choose the first audio track with an audio description, you can do:
const firstAudioTrackWithAD = rxPlayer.getAvailableAudioTracks()
.find(track => track.audioDescription);
if (firstAudioTrackWithAD !== undefined) {
rxPlayer.setAudioTrack(firstAudioTrackWithAD.id);
}
It’s important to consider that those APIs only allow to change the current track and will have no impact on the other contents you will encounter in the future.
Depending on your application, you might also want to set a global preference at some point, such as saying that the final user will prefer english audio tracks for now on.
Although setAudioTrack
can be used for this use case - by just setting an
english audio track every times the available audio tracks list change (we can
know that through the availableAudioTracksChange
event) - it is much more
efficient and less cumbersome to use audio track preference APIs for that.
Those will be described later in this tutorial, so stay with me!
After manually setting a track through the set...Track
methods, you will
receive the corresponding ...TrackChange
event when the change is applied.
Note that on some contents, changing a track from a given type might automatically also change the current track for another types. For example, switching to another audio language might also automatically turn on the subtitles. This is because some streaming protocols might “force” some combination.
To detect those cases, you can either listen to every ...TrackChange
events
or call the corresponding get...Track
method everytime you want to use them.
Disabling a track
Now what if you want no track at all?
This is for example a frequent need for text tracks, where you might prefer to have no subtitles or closed captions appearing on the screen.
You could also want to disable the video track, which is a trick often used to reduce the network bandwidth used by a content.
You can disable respectively the current text track and the current video track by calling those methods:
However, like for selecting a track, this only concerns the current content being played. When playing a new content or even when just switching to another part of the content with a different track list, you might need to re-do the same method call.
This is problematic most-of-all when disabling the video track, as going in and
out of that usually requires a short but visible “re-loading” step by the
RxPlayer. You want thus to limit the need to call disableVideoTrack
every
times a new content is encountered.
Thankfully, the RxPlayer has another set of API to let you choose a track even for future contents: the “track preferences APIs”.
Track preferences APIs
All methods and events discussed until now only have an effect for the current content being played.
This has multiple disadvantages:
-
that code has to be run each time a new content is loaded (and each time the track list changes, if there are multiple track lists for a single contents).
-
it is inefficient: In some cases the RxPlayer pre-load new content to allow a smooth transition between the current content and that new one. To do that, it chooses a track itself and begin to download it.
If when reaching the new content a totally other track is finally chosen, we might have wasted network bandwidth for nothing as we would have to re-download a completely different track.
Even more important, the transition won’t be smooth at all because we will have to stop to build some buffer with the wanted track instead.
Thankfully, there exists another set of APIs we call the “track preferences”.
With those, you can tell the RxPlayer that you might always prefer the audio track to be in english - for example - or that you would prefer the video track to be in a given codec.
Bear in mind that track preferences APIs are for a different use case than the classic track selection APIs:
-
the “classic” track selection APIs are here to select a precize track amongst available ones.
This is probably the APIs you will use when displaying a list of available tracks to the final user and choosing one.
-
the track preferences APIs give hints of what the finally user generally wants, so that the right track is automatically chosen by the RxPlayer. It is also useful for optimizations such as when pre-loading the next content.
This is the APIs you will use in most other use cases, where you want to give the general track settings the user wants to the RxPlayer.
The track preferences can be set in two manners:
- During instanciation of the RxPlayer
- At any time, through specific methods
Setting a track preference on instanciation
There are three options you can give to the RxPlayer on instanciation to set the track preferences:
preferredAudioTracks
: set the preferences for the audio trackspreferredTextTracks
: for the text trackspreferredVideoTracks
: for the video tracks
You can click on the name of the option to be redirected to its corresponding API documentation.
Each of those take an array of object which will define which track you want the RxPlayer to choose by default.
As a simple example, to choose french audio tracks without audio description by default you could do:
const rxPlayer = new RxPlayer({
preferredAudioTracks: [{ language: "fra", audioDescription: false }],
});
Because not all contents could have a track matching that preferences, you can add even more elements in that array. For example, if you want to fallback to english if no french audio track is found you can do:
const rxPlayer = new RxPlayer({
preferredAudioTracks: [
{ language: "fra", audioDescription: false },
{ language: "eng", audioDescription: false },
],
});
Here, the RxPlayer will enable a french audio track if it finds one, but if it does not, it will enable the english one instead.
If none of your preferences is found for a given content, the RxPlayer will choose the content’s default (or first, if no default is anounced in the content) track itself.
Those options allow much more powerful configurations. You can refer to the API documentation for that.
track preferences methods
You can also update at any time those track preferences - even when no content
is playing - by calling the following methods:
- setPreferredAudioTracks
:
update the audio preferences
- setPreferredTextTracks
update the text preferences
- setPreferredVideoTracks
update the video preferences
Those methods mostly work the same way than the constructor options. You give them an array of the wanted track configurations and the RxPlayer will try to choose a track that match with the earliest possible configuration in that array:
rxPlayer.setPreferredAudioTracks([
{ language: "fra", audioDescription: false },
{ language: "eng", audioDescription: false },
]);
But there’s another element to consider here. When calling the method (unlike when giving an option to the constructor), the RxPlayer may already be playing a content. So here, there’s a dilemma:
-
should the RxPlayer apply the new preferences to the current content? It could, but it might be unexpected if a track chosen explicitely by the user for the current content changes because it does not match the preferences.
-
or should the RxPlayer only apply it to new contents? In that case, it could also be an unexpected behavior. Especially for contents with multiple track lists - here you could inversely want your new preferences to be considered when seeking back to an already-played content.
There’s no good answer here, it all depends on the implementation you want to do.
Because of that, those methods all can take a boolean as a second argument.
When this second argument is set to true
, the RxPlayer will also apply that
preference to the already-loaded content:
// disable the text tracks from every contents - the current one included
rxPlayer.setPreferredTextTracks([null], true);
If not set or set to false
, it will only be applied for content that have not
been loaded yet.
// Only disable the text tracks from the next encountered contents.
rxPlayer.setPreferredTextTracks([null]);
Obtaining the last set preferences
The RxPlayer also has three methods which will return the last set preferences:
getPreferredAudioTracks
: return the audio preferencesgetPreferredTextTracks
: return the text preferencesgetPreferredVideoTracks
: return the video preferences
The format of the returned array will be the exact same than the array given to
the corresponding setPreferred...Tracks
method (or the value of the
preferred...Tracks
constructor option if the method was never called - or
just an empty array by default when neither was used).
What set of APIs should you use
The “classic” track selection APIs (getAvailable...Tracks
, get...Track
and
set...Track
) are the APIs you should use when explicitely exposing the current
available tracks and selecting one precizely.
The track preferences APIs should be used for anything else.
This is because the track preferences APIs allow to completely move the task of selecting a track out of your code and into the RxPlayer and will allow some optimizations to take place.
The “classic” track selection APIs still allow to make a much more precize choice and allow to know which tracks are currently available. Due to that, they are a perfect fit when you want to propose a track choice menu to the final user.
Notes about the “textTrackMode” option
This tutorial was focused on track selection but there’s still a last point I want to approach, which is how subtitles will be displayed to the user.
By default, text tracks will be displayed through <tracks>
elements which
will be contained in the media element where the content plays.
This allows to display subtitles but may not be sufficient when wanting to
display richer subtitles (such as closed-captions).
This is why the RxPlayer has a
textTrackMode
concept.
By setting the textTrackMode
to "html"
in a
loadVideo
call, you will be able to profit
from much richer subtitles than what you could have by default.
If you do that, you also need to set the
textTrackElement
property
to an HTML element, that the RxPlayer will use to display subtitles into.
More information on those options can be found in the RxPlayer API.


Welcome to OWASP WrongSecrets. With this app, we hope you will re-evaluate your secrets management strategy
For each of the challenges below: try to find the secret! Enter it in the `Answer to solution` box and score points! Note that some challenges require this app to run on additional infrastructure (see in the table below).
| # | Challenge | ||||
|---|---|---|---|---|---|
| Docker | Kubernetes or Minikube | Kubernetes or Minikube with Vault | AWS, GCP, Azure |
Hasty? Here is the Vault secret;-)


Introduction to Map Reduce
rpi.analyticsdojo.com
50. Introduction to Map Reduce¶
Adopted from work by Steve Phelps: https://github.com/phelps-sg/python-bigdata This work is licensed under the Creative Commons Attribution 4.0 International license agreement.
50.1. Overview¶
Recap of functional programming in Python
Python’s
map
andreduce
functionsWriting parallel code using
map
The Map-Reduce programming model
50.2. History¶
The Map-Reduce programming model was popularised by Google (Dean and Ghemawat 2008).
The first popular open-source implementation was Apache Hadoop, first released in 2011.
50.3. Functional programming¶
Consider the following code:
def double_everything_in(data):
result = []
for i in data:
result.append(2 * i)
return result
def quadruple_everything_in(data):
result = []
for i in data:
result.append(4 * i)
return result
double_everything_in([1, 2, 3, 4, 5])
[2, 4, 6, 8, 10]
quadruple_everything_in([1, 2, 3, 4, 5])
[4, 8, 12, 16, 20]
50.3.1. DRY - Fundamental Programming Concept¶
The above code violates the “do not repeat yourself” principle of good software engineering practice.
How can rewrite the code so that it avoids duplication?
def multiply_by_x_everything_in(x, data):
result = []
for i in data:
result.append(x * i)
return result
multiply_by_x_everything_in(2, [1, 2, 3, 4, 5])
[2, 4, 6, 8, 10]
multiply_by_x_everything_in(4, [1, 2, 3, 4, 5])
[4, 8, 12, 16, 20]
Now consider the following code:
def squared(x):
return x*x
def double(x):
return x*2
def square_everything_in(data):
result = []
for i in data:
result.append(squared(i))
return result
def double_everything_in(data):
result = []
for i in data:
result.append(double(i))
return result
square_everything_in([1, 2, 3, 4, 5])
[1, 4, 9, 16, 25]
double_everything_in([1, 2, 3, 4, 5])
[2, 4, 6, 8, 10]
50.3.2. DRY - Fundamental Programming Concept¶
The above code violates the “do not repeat yourself” principle of good software engineering practice.
How can rewrite the code so that it avoids duplication?
50.3.3. Passing Functions as Values¶
Functions can be passed to other functions as values.
def apply_f_to_everything_in(f, data):
result = []
for x in data:
result.append(f(x))
return result
apply_f_to_everything_in(squared, [1, 2, 3, 4, 5])
[1, 4, 9, 16, 25]
apply_f_to_everything_in(double, [1, 2, 3, 4, 5])
[2, 4, 6, 8, 10]
50.3.4. Lambda expressions¶
We can use anonymous functions to save having to define a function each time we want to use map.
apply_f_to_everything_in(lambda x: x*x, [1, 2, 3, 4, 5])
[1, 4, 9, 16, 25]
50.4. Python’s map
function¶
Python has a built-in function
map
which is much faster than our version.
map(lambda x: x*x, [1, 2, 3, 4, 5])
<map at 0x7fd4ac4f4c50>
50.5. Implementing reduce¶
The
reduce
function is an example of a fold.There are different ways we can fold data.
The following implements a left fold.
def foldl(f, data, z):
if (len(data) == 0):
print (z)
return z
else:
head = data[0]
tail = data[1:]
print ("Folding", head, "with", tail, "using", z)
partial_result = f(z, data[0])
print ("Partial result is", partial_result)
return foldl(f, tail, partial_result)
def add(x, y):
return x + y
foldl(add, [3, 3, 3, 3, 3], 0)
Folding 3 with [3, 3, 3, 3] using 0
Partial result is 3
Folding 3 with [3, 3, 3] using 3
Partial result is 6
Folding 3 with [3, 3] using 6
Partial result is 9
Folding 3 with [3] using 9
Partial result is 12
Folding 3 with [] using 12
Partial result is 15
15
15
foldl(lambda x, y: x + y, [1, 2, 3, 4, 5], 0)
Folding 1 with [2, 3, 4, 5] using 0
Partial result is 1
Folding 2 with [3, 4, 5] using 1
Partial result is 3
Folding 3 with [4, 5] using 3
Partial result is 6
Folding 4 with [5] using 6
Partial result is 10
Folding 5 with [] using 10
Partial result is 15
15
15
foldl(lambda x, y: x - y, [1, 2, 3, 4, 5], 0)
Folding 1 with [2, 3, 4, 5] using 0
Partial result is -1
Folding 2 with [3, 4, 5] using -1
Partial result is -3
Folding 3 with [4, 5] using -3
Partial result is -6
Folding 4 with [5] using -6
Partial result is -10
Folding 5 with [] using -10
Partial result is -15
-15
-15
(((((0 - 1) - 2) - 3) - 4) - 5)
-15
Subtraction is neither commutative nor associative, so the order in which apply the fold matters:
(1 - (2 - (3 - (4 - (5 - 0)))))
3
def foldr(f, data, z):
if (len(data) == 0):
return z
else:
return f(data[0], foldr(f, data[1:], z))
foldl(lambda x, y: x - y, [1, 2, 3, 4, 5], 0)
Folding 1 with [2, 3, 4, 5] using 0
Partial result is -1
Folding 2 with [3, 4, 5] using -1
Partial result is -3
Folding 3 with [4, 5] using -3
Partial result is -6
Folding 4 with [5] using -6
Partial result is -10
Folding 5 with [] using -10
Partial result is -15
-15
-15
foldr(lambda x, y: x - y, [1, 2, 3, 4, 5], 0)
3
50.6. Python’s reduce
function.¶
Python’s built-in
reduce
function is a left fold.
from functools import reduce
reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
15
reduce(lambda x, y: x - y, [1, 2, 3, 4, 5], 0)
-15
foldl(lambda x, y: x - y, [1, 2, 3, 4, 5], 0)
Folding 1 with [2, 3, 4, 5] using 0
Partial result is -1
Folding 2 with [3, 4, 5] using -1
Partial result is -3
Folding 3 with [4, 5] using -3
Partial result is -6
Folding 4 with [5] using -6
Partial result is -10
Folding 5 with [] using -10
Partial result is -15
-15
-15
50.7. Functional programming and parallelism¶
Functional programming lends itself to parallel programming.
The
map
function can easily be parallelised through data-level parallelism,provided that the function we supply as an argument is free from side-effects
(which is why we avoid working with mutable data).
We can see this by rewriting it so:
def perform_computation(f, result, data, i):
print ("Computing the ", i, "th result...")
# This could be scheduled on a different CPU
result[i] = f(data[i])
def my_map(f, data):
result = [None] * len(data)
for i in range(len(data)):
perform_computation(f, result, data, i)
# Wait for other CPUs to finish, and then..
return result
my_map(lambda x: x * x, [1, 2, 3, 4, 5])
Computing the 0 th result...
Computing the 1 th result...
Computing the 2 th result...
Computing the 3 th result...
Computing the 4 th result...
[1, 4, 9, 16, 25]
50.8. A multi-threaded map
function¶
from threading import Thread
def schedule_computation_threaded(f, result, data, threads, i):
# Each function evaluation is scheduled on a different core.
def my_job():
print ("Processing data:", data[i], "... ")
result[i] = f(data[i])
print ("Finished job #", i)
print ("Result was", result[i])
threads[i] = Thread(target=my_job)
def my_map_multithreaded(f, data):
n = len(data)
result = [None] * n
threads = [None] * n
print ("Scheduling jobs.. ")
for i in range(n):
schedule_computation_threaded(f, result, data, threads, i)
print ("Starting jobs.. ")
for i in range(n):
threads[i].start()
print ("Waiting for jobs to finish.. ")
for i in range(n):
threads[i].join()
print ("All done.")
return result
my_map_multithreaded(lambda x: x*x, [1, 2, 3, 4, 5])
Scheduling jobs..
Starting jobs..
Processing data: 1 ...
Finished job # 0
Result was 1
Processing data: 2 ...
Finished job # 1Processing data: 3 ...
Finished job # 2
Result was 9
Result was 4
Processing data: 4 ...
Finished job # Processing data:Waiting for jobs to finish..
3
Result was 16
5 ...
Finished job # 4
Result was 25
All done.
[1, 4, 9, 16, 25]
from numpy.random import uniform
from time import sleep
def a_function_which_takes_a_long_time(x):
sleep(uniform(2, 10)) # Simulate some long computation
return x*x
my_map_multithreaded(a_function_which_takes_a_long_time, [1, 2, 3, 4, 5])
Scheduling jobs..
Starting jobs..
Processing data: 1 ...
Processing data: 2 ...
Processing data: 3 ...
Processing data: 4 ...
Processing data:Waiting for jobs to finish..
5 ...
Finished job # 1
Result was 4
Finished job # 4
Result was 25
Finished job # 0
Result was 1
Finished job # 3
Result was 16
Finished job # 2
Result was 9
All done.
[1, 4, 9, 16, 25]
50.9. Map Reduce¶
Map Reduce is a programming model for scalable parallel processing.
Scalable here means that it can work on big data with very large compute clusters.
There are many implementations: e.g. Apache Hadoop and Apache Spark.
We can use Map-Reduce with any programming language:
Hadoop is written in Java
Spark is written in Scala, but has a Python interface.
Functional programming languages such as Python or Scala fit very well with the Map Reduce model:
However, we don’t have to use functional programming.
A MapReduce implementation will take care of the low-level functionality so that you don’t have to worry about:
load balancing
network I/O
network and disk transfer optimisation
handling of machine failures
serialization of data
etc..
The model is designed to move the processing to where the data resides.
50.10. Typical steps in a Map Reduce Computation¶
ETL a big data set.
Map operation: extract something you care about from each row
“Shuffle and Sort”: task/node allocation
Reduce operation: aggregate, summarise, filter or transform
Write the results.
50.11. Callbacks for Map Reduce¶
The data set, and the state of each stage of the computation, is represented as a set of key-value pairs.
The programmer provides a map function:
\(\operatorname{map}(k, v) \rightarrow \; \left< k', v' \right>*\)
and a reduce function:
\(\operatorname{reduce}(k', \left< k', v'\right> *) \rightarrow \; \left< k', v'' \right> *\)
The \(*\) refers to a collection of values.
These collections are not ordered.
50.12. Word Count Example¶
In this simple example, the input is a set of URLs, each record is a document.
Problem: compute how many times each word has occurred across data set.
50.13. Word Count: Map¶
The input to \(\operatorname{map}\) is a mapping:
Key: URL
Value: Contents of document
\(\left< document1, to \; be \; or \; not \; to \; be \right>\)
In this example, our \(\operatorname{map}\) function will process a given URL, and produces a mapping:
Key: word
Value: 1
So our original data-set will be transformed to:
\(\left< to, 1 \right>\) \(\left< be, 1 \right>\) \(\left< or, 1 \right>\) \(\left< not, 1 \right>\) \(\left< to, 1 \right>\) \(\left< be, 1 \right>\)
50.14. Word Count: Reduce¶
The reduce operation groups values according to their key, and then performs areduce on each key.
The collections are partitioned across different storage units, therefore.
Map-Reduce will fold the data in such a way that it minimises data-copying across the cluster.
Data in different partitions are reduced separately in parallel.
The final result is a reduce of the reduced data in each partition.
Therefore it is very important that our operator is both commutative and associative.
In our case the function is the
+
operator\(\left< be, 2 \right>\)
\(\left< not, 1 \right>\)
\(\left< or, 1 \right>\)
\(\left< to, 2 \right>\)
50.15. Map and Reduce compared with Python¶
Notice that these functions are formulated differently from the standard Python functions of the same name.
The
reduce
function works with key-value pairs.It would be more apt to call it something like
reduceByKey
.
50.16. MiniMapReduce¶
To illustrate how the Map-Reduce programming model works, we can implement our own Map-Reduce framework in Python.
This illustrates how a problem can be written in terms of
map
andreduce
operations.Note that these are illustrative functions; this is not how Hadoop or Apache Spark actually implement them.
##########################################################
#
# MiniMapReduce
#
# A non-parallel, non-scalable Map-Reduce implementation
##########################################################
def groupByKey(data):
result = dict()
for key, value in data:
if key in result:
result[key].append(value)
else:
result[key] = [value]
return result
def reduceByKey(f, data):
key_values = groupByKey(data)
return map(lambda key:
(key, reduce(f, key_values[key])),
key_values)
50.17. Word-count using MiniMapReduce¶
data = map(lambda x: (x, 1), "to be or not to be".split())
data
<map at 0x7fd4ac4f4f28>
groupByKey(data)
{'to': [1, 1], 'be': [1, 1], 'or': [1], 'not': [1]}
reduceByKey(lambda x, y: x + y, data)
<map at 0x7fd4ac512c18>
50.18. Parallelising MiniMapReduce¶
We can easily turn our Map-Reduce implementation into a parallel, multi-threaded framework by using the
my_map_multithreaded
function we defined earlier.This will allow us to perform map-reduce computations that exploit parallel processing using multiple cores on a single computer.
def reduceByKey_multithreaded(f, data):
key_values = groupByKey(data)
return my_map_multithreaded(
lambda key: (key, reduce(f, key_values[key])), key_values.keys())
reduceByKey_multithreaded(lambda x, y: x + y, data)
Scheduling jobs..
Starting jobs..
Waiting for jobs to finish..
All done.
[]
50.19. Parallelising the reduce step¶
Provided that our operator is both associative and commutative we can also parallelise the reduce operation.
We partition the data into approximately equal subsets.
We then reduce each subset independently on a separate core.
The results can be combined in a final reduce step.
50.19.1. Partitioning the data¶
def split_data(data, split_points):
partitions = []
n = 0
for i in split_points:
partitions.append(data[n:i])
n = i
partitions.append(data[n:])
return partitions
data = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
partitioned_data = split_data(data, [3])
partitioned_data
[['a', 'b', 'c'], ['d', 'e', 'f', 'g']]
50.19.2. Reducing across partitions in parallel¶
from threading import Thread
def parallel_reduce(f, partitions):
n = len(partitions)
results = [None] * n
threads = [None] * n
def job(i):
results[i] = reduce(f, partitions[i])
for i in range(n):
threads[i] = Thread(target = lambda: job(i))
threads[i].start()
for i in range(n):
threads[i].join()
return reduce(f, results)
parallel_reduce(lambda x, y: x + y, partitioned_data)
'abcdefg'
50.20. Map-Reduce on a cluster of computers¶
The code we have written so far will not allow us to exploit parallelism from multiple computers in a cluster.
Developing such a framework would be a very large software engineering project.
There are existing frameworks we can use:
In the next notebook we will cover Apache Spark.


{extend name="public:base" /} {block name="content"}
smtp port defaults to 25. Please refer to the description of each STMP service provider (If you are using Gmail or a QQ mailbox, set the port to 465)
E-mail address Please enter the full address<EMAIL_ADDRESS>format
The sender's mailbox is displayed in the message


‘Good Newwz’ trailer traces hilarious mix-up between two sets of expecting parents
Film stars Akshay Kumar, Kareena Kapoor, Kiara Advani and Diljit Dosanjh in the lead roles and is set for a December 27 release
by The Hindu Net DeskThe trailer of Bollywood comedy Good Newwz has finally released, and promises to be a laugh riot, and within minutes of release, has inspired a number of memes on social media.
The trailer, starring Akshay Kumar, Kareena Kapoor, Kiara Advani and Diljit Dosanjh, traces the story of two couples who opt for an IVF treatment to become parents — but a mix-up at the hospital due to similar surnames (the Batras) — leads to plenty of complications and hilarity ensues. Ultimately, the four have to become parents ‘together’.
The film is directed by Raj Mehta and produced by Dharma Productions, and is set for a Christmas release date on December 27.


RT @searls: PSA: no matter how e-famous maintainers of a popular OSS project, when you rag on their work without offering help it really bu…
5/25/2014, 9:58:12 AM
Favs: 0
Retweets: 0
link--- layout: tweet ---
RT @searls: PSA: no matter how e-famous maintainers of a popular OSS project, when you rag on their work without offering help it really bu…
5/25/2014, 9:58:12 AM
Favs: 0
Retweets: 0
link


Highlights of December 2016:
- The Fields of View workshop was conducted for The Teacher Foundation in Bangalore on December 17, 2016 by Bharath and Anirudh. The FoV workshop is our most popular workshop, and it helps define the problem and design in contexts where there are different perspectives/disciplines involved. For more information, please see http://fieldsofview.in/projects/fov-workshop/
- The Srishti Institute of Art, Design, and Technology, Bangalore in association with the UNESCO Chair for Culture, Habitat, and Sustainable Development organized the First Annual Postgraduate Interlude between November 28 and December 22, 2016, where students designed around a particular thematic. Sruthi was invited to be part of the expert panel for the Interlude.
Highlights of January 2017:
- We conducted a Special General Body Meeting at Fields of View to re-elect our Board Members and make a modification to our Memorandum of Association on January 14, 2017.
- Research in Play is a series at Fields of View where we conducted talks focusing at the intersection of theory and practice. For the twelfth and final edition of Research in Play, we had Bharath give a talk on ĹA Tale of Complexity: Poverty, Income and Well Beingĺ on January 20, 2017.
- We conducted a session on 'Games for policymaking' for the students of Presidency School, Bilekahalli, Bangalore on January 20, 2017.
- We attended 'Public Policy Processes and Performance at Different Stages of Life Cycle: Sharing of Recent Research' organized by Centre for Budget and Policy Studies (CBPS) on January 21, 2017
- For our Annual Planning Meeting, our entire team went to the scenic and quiet Ajjanamane, a homestay at Talaguppa between January 23, 2017 and January 27, 2017. Fortified by delicious home-cooked food and calm, we had long discussions to chart the year ahead and create a roadmap.
Highlights of February 2017:
- The 'Global Go To Think Tank Index Report' is an annual report created by the University of Pennsylvania ranking think tank organizations worldwide. We are delighted that for the fourth consecutive year, Fields of View has been featured in the 'Best New Idea or Paradigm developed by a Think Tank' category.
- We participated in 'City Scripts', an festival on urban writing organized by IIHS between February 3 and 5, 2017.
- We participated in a consultation on the Karnataka Slum Policy held to mobilise the critique of the policy from the perspective of slum dwellers and to plan the way forward. The consultation attended by Bhagya was organised by Slum Janara Sangatane on February 7, 2017.
- Bharath gave a talk based on his research into creating a simulation to model the relationship between income and well-being to the students of M.Sc. (Digital Society) students at IIIT-Bangalore on February 8, 2017.
- Anirudh, Srijan, and Harish attended a 'Visit of Canadian start-ups' at IIIT-B, organized by Canada International Innovation Programme (CIIP) and Global Innovation and Technology Alliance (GITA, India)
- Fields of View turned five-years-old on February 10, 2017, a significant milestone in the journey of our organization. Our plans for the future include, A 'Policy Lab', a space for experimenting with policies and testing them; a 'School of Policy', to keep abreast of the latest methods and tools in the field; and 'Demystifying Policy', an initiative where we design games, graphic novels, and other resources for different communities, in order to deepen their participation.
- We attended a national workshop on 'Innovating Fish Market Chain for Urban Food Security' held as part of a larger project titled "Fish for Food Security in City Regions of India and Ghana: An Inter-regional Innovation Project", in short Fish4Food held on February 12, 2017. Bharath gave a talk on 'History of Slums' in the workshop.
- Ray Nathan, CEO of Fish Chain, a seafood company, visited FoV to discuss possible collaborations on February 16, 2017.
- We attended a 'Festival of Planning our Bangalore' organised by Janaravedike, a civil society collective, on February 18, 2017.
- Harsha conducted training sessions for Jharkhand's Town Planning Officials using the FoV workshop in Ranchi on February 21 and 22, 2017. The training was organized as part of a capacity building programme under the Atal Mission for Rejuvenation and Urban Transformation (AMRUT) organized by IIHS with the support of the Jharkhand government.
- The FoV team
|
|
|
|


Page Structure
Enable keyboard users to navigate effectively.
Users Affected
Blind
Low Vision
Mobility
Cognitive
Checklist
-
Headings and landmarks create accurate structure of the content
-
Skip-links are provided to bypass blocks of links and repetitive content
-
Title text describes framed content (frame and iframe elements in HTML)


Norwegian Vessel Boarded by Pirates, 9 Crew Members Kidnapped - Norwegian Shipping Firm
Nine of the crew members on the MV Bonita, owned by J.J. Ugland company, were kidnapped by the criminals, as the remaining crew notified the local authorities.
Norwegian Shipping Firm J.J. Ugland reports that one of its vessels was boarded by pirates off the coast of Benin on Saturday.
The remaining crew members anchored at the port city of Cotonou later the same day and informed the local authorities of the incident.
The company's emergency team says that they are in charge of the situation and will provide further updates as soon as new confirmed information is provided.
Local media reported that the port authorities have expressed their deepest sympathies to the kidnapped crew and their families.
"The families of the crewmembers have been contacted and will be kept informed by Ugland. In the interest of the wellbeing of the crewmembers Ugland will not make any further comments regarding the situation", the company said.
Norwegian media reported on Sunday citing the Norwegian Shipowners' Association, that all of those kidnapped are Filipino nationals.
Later, Spokesperson of the Norwegian Foreign Affairs Ministry Guri Solberg also confirmed to the Norwegian News Agency (NTB) that no Norwegian citizens were involved in the incident.


| Opcode/Instruction | Op /En | 64/32 bit Mode Support | CPUID Feature Flag | Description |
|---|---|---|---|---|
|
EVEX.LIG.F3.0F.W0 79 /r VCVTSS2USI r32, xmm1/m32{er} |
T1F | V/V | AVX512F | Convert one single-precision floating-point value from xmm1/m32 to one unsigned doubleword integer in r32. |
|
EVEX.LIG.F3.0F.W1 79 /r VCVTSS2USI r64, xmm1/m32{er} |
T1F | V/N.E.1 | AVX512F | Convert one single-precision floating-point value from xmm1/m32 to one unsigned quadword integer in r64. |
NOTES: 1. EVEX.W1 in non-64 bit is ignored; the instructions behaves as if the W0 version is used.
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| T1F | ModRM:reg (w) | ModRM:r/m (r) | NA | NA |
Description
Converts a single-precision floating-point value in the source operand (the second operand) to an unsigned double-word integer (or unsigned quadword integer if operand size is 64 bits) in the destination operand (the first operand). The source operand can be an XMM register or a memory location. The destination operand is a general-purpose register. When the source operand is an XMM register, the single-precision floating-point value is contained in the low doubleword of the register.
When a conversion is inexact, the value returned is rounded according to the rounding control bits in the MXCSR register or the embedded rounding control bits. If a converted result cannot be represented in the destination format, the floating-point invalid exception is raised, and if this exception is masked, the integer value 2w – 1 is returned, where w represents the number of bits in the destination format.
VEX.W1 and EVEX.W1 versions: promotes the instruction to produce 64-bit data in 64-bit mode.
Note: EVEX.vvvv is reserved and must be 1111b, otherwise instructions will #UD.
Operation
VCVTSS2USI (EVEX encoded version)
IF (SRC *is register*) AND (EVEX.b = 1)
THEN
SET_RM(EVEX.RC);
ELSE
SET_RM(MXCSR.RM);
FI;
IF 64-bit Mode and OperandSize = 64
THEN
DEST[63:0] (cid:197) Convert_Single_Precision_Floating_Point_To_UInteger(SRC[31:0]);
ELSE
DEST[31:0] (cid:197) Convert_Single_Precision_Floating_Point_To_UInteger(SRC[31:0]);
FI;
Intel C/C++ Compiler Intrinsic Equivalent
VCVTSS2USI unsigned _mm_cvtss_u32( __m128 a);
VCVTSS2USI unsigned _mm_cvt_roundss_u32( __m128 a, int r);
VCVTSS2USI unsigned __int64 _mm_cvtss_u64( __m128 a);
VCVTSS2USI unsigned __int64 _mm_cvt_roundss_u64( __m128 a, int r);
SIMD Floating-Point Exceptions
Invalid, Precision
Other Exceptions
EVEX-encoded instructions, see Exceptions Type E3NF.


Speech
Schools Minister outlines the guiding principles behind the vision for the education system.
Thank you for that introduction, and thank you for inviting me to the Grammar Schools Heads Association conference. I’m very pleased to have the opportunity to talk to, and hear from, the head teachers of so many excellent schools. Although most of my secondary school education was spent in comprehensive schools, I have very happy memories of my one year at Maidstone Grammar School. It was - and I know, under the leadership of Nick Argent, still is - a fantastic school, with a strong ethos and an emphasis on academic excellence and rigour.
Grammar schools are renowned for their focus on standards, high quality of teaching, excellent results, and a culture of achievement. Last year, over 98 per cent of grammar school pupils achieved five good GCSEs including English and mathematics. Virtually all achieved two or more passes at A Level and equivalent, with over a quarter achieving three or more A grades. And on top of these achievements, the schools represented here today offer a vast array of extra-curricula activities and sport, helping to create well-rounded, as well as well-educated, young people.
Your achievement is a great testament to the skill, dedication and professionalism of all staff and pupils, as well as to the hard work of the governing bodies that I know play an important role in supporting and developing the ethos of individual schools.
This Government has a radical agenda to raise standards right across the education sector, to improve outcomes for the most disadvantaged, to restore confidence in our qualifications and exams system, and to ensure that children leave school with the knowledge and the important skills they need to succeed in further and higher education and the world of work.
But, if we are to affect real change, restore Britain’s education system, and close the achievement gap between the richest and the poorest in our society, we have to raise aspiration and attainment. And the guiding principles we will follow are those that unite the coalition partners right across this government: freedom, fairness and responsibility.
At the core of our approach to education policy is trusting professionals: leaving behind the top down prescription which was the flawed - albeit well-intentioned - approach of the previous government.
We need to give teachers the freedom to decide how to teach, and to some extent what they teach, their pupils.
That’s why one of the first steps we took was to introduce the Academies Bill, now working its way through committee in the House of Lords before coming to the Commons next month. This Bill builds on the successful introduction of academies by the last Government, and will allow more schools to benefit from the freedoms and opportunities of academy status.
Academies are free from local authority control, can deploy resources in the most effective way and have the ability to set their own pay and conditions for staff. They have greater freedom over the curriculum, and may also change the length of terms and school days. Yet they operate within a broad framework of accountability which is designed to ensure that standards remain high, and consistent.
Our Academies Bill will allow more schools to benefit from these freedoms including, for the first time, primary schools and special schools. And we will enable teachers, parents and education providers to set and run new free schools.
Schools rated outstanding by Ofsted - including grammar schools - that want to become academies will have their applications fast-tracked through the process, and ready to open this year if that is what they want to do.
This is permissive legislation. We are not instructing schools to become academies unless their performance is a serious cause for concern. But many schools are keen to benefit from the additional freedoms that academies deliver.
Indeed, so far, over 1770 schools have expressed interest. 870 are rated outstanding - including over half of all outstanding secondary schools in the country - so this is something that schools clearly want.
I’m also delighted that, of the 164 grammar schools, 75 have already expressed an interest in acquiring academy status which will allow them to enjoy these additional freedoms and to partner with at least one other school to help drive improvement across the board.
The Admissions Code will continue to apply to all academies and to any new Free School being established by parents, teacher groups or other philanthropic organisations. So selection by ability will not be an option for those schools. But for grammar schools that opt to become academies, which already select pupils by general ability, they will be able to continue to do so.
Freedom does not start and end with academy-status. It is also about sweeping away the reams of paper and bureaucratic burdens piled on to teachers and schools: the fortnightly delivery of lever arch files that languish unread in the supply cupboard but whose presence serves to undermine confidence. In Opposition, we added up the total number of pages sent to schools in one 12 month period. It came to 6000 pages, more than twice the length of the complete works of Shakespeare. We will ensure that, in the coming years, schools will be able to find more useful things to keep in their supply cupboards.
And we have also announced an inspection regime for high performing schools that is very light touch. We want Ofsted’s resources to be focussed sharply on those schools that are coasting or struggling and which are failing to deliver the best quality education to their students.
The second guiding principle of the Coalition is fairness.
Our education system continues to be characterised by inequality.
This is a dreadful situation which no government should be prepared to tolerate. Not only does this let down hundreds of thousands of bright children who should have the opportunity to go to excellent schools and to swim in the pool of knowledge that pupils from the better off families take for granted, it will also impair all of our economic and cultural futures.
I believe strongly that the teaching of knowledge - the passing on from one generation to the next - is the fundamental purpose of education. Yet, over the years, too often the teaching of knowledge has been subsumed by an over focus on life skills and well-meaning additions to the curriculum designed to deal with wider social issues and problems. But it is this very drift away from core traditional subjects that is actually widening social division.
It is a huge concern, for example that the number of pupils being entered for modern foreign languages has fallen from over 450,000 in 2003 to just under 280,000 last year. It’s a concern that 47 per cent of A* grades in GCSE French went to pupils in the independent sector despite educating just 7 per cent of pupils. And it’s a real worry that while in 2001 30.4 per cent of pupils gained five or more GCSEs including English, maths, science and a modern foreign language, last year that figure was six percentage points lower, at 24.5 per cent.
E.D. Hirsch, the American academic writes brilliantly about the importance of knowledge. He says, ‘It is the duty of schools to provide each child with the knowledge and skills requisite for academic progress - regardless of home background’.
He goes onto say, ‘Among advantaged children, wide knowledge nourishes an active curiosity to learn still more, and more, so that the ever-active tentacles create still more tentacles.’
An education system with fairness at its core will ensure that all children regardless of background have access to the rich body of knowledge that is the hallmark of any culture. Knowledge is the currency of a common culture, it is a basic requirement of a civilised nation. Children from knowledge- and education-rich backgrounds start school with an in-built advantage over those from backgrounds without those features. If the school then fails to make up that knowledge deficit, those divisions widen still further.
Which is why we know from Leon Feinstein’s research that low-ability children from wealthy backgrounds often overtake and outperform more able children from poorer backgrounds during the first years of primary school.
In pursuing fairness in our education system, we need to sharpen our focus on the core business of teaching and learning at every level, ensuring that pupils have the opportunity to select the qualifications that best suit them, and restore confidence in our exams system.
We will slim down the National Curriculum to ensure pupils have the knowledge they need at each stage of their education. We want a curriculum and qualifications that are comparable and on a par with the best the world has to offer: whether that is the Massachusetts of E.D. Hirsch, Singapore, Finland, Hong Kong, or Alberta.
We will reform league tables so that parents have the reassurance they need that their child is progressing. But we must also restore confidence in our exam system. Pupils must be entered for qualifications that are in their best interests, not with a view to boosting a school’s performance in the league tables.
And we have opened up qualifications unfairly closed off to pupils in state maintained schools - such as the iGCSE - to offer pupils greater choice, and to ensure that they are afforded the same opportunities as those who have the money to go to independent schools. I know that a number of grammar schools have wanted to offer these qualifications to their pupils and now that opportunity is there.
The third coalition principle is responsibility.
The Government has a responsibly to ensure we have a high quality education system, but it is the responsibility of pupils and their parents to ensure that behaviour in our schools is of a standard that delivers a safe and happy environment in which children are able to concentrate and learn.
I became an MP in 1997, bright-eyed and eager, never dreaming I’d spend the next 13 years in gruelling Opposition. But over the last five years as the Shadow Minister for Schools, I visited nearly 300 schools which has given me real insight into some of the wonderful schools we have in this country. The best schools I have seen have succeeded for many of the reasons that the grammar schools represented here succeed: strong leadership; rigorous standards; recruiting and retaining talented teachers; and, above all, good behaviour.
I have been to schools in some of the most deprived parts of the country that have excellent behaviour. Mossbourne Community Academy in Hackney is a great example.
But I’ve also been to schools in leafy suburbs where behaviour is challenging to say the least. We are determined to give teachers and head teachers the powers they need to ensure they can maintain a safe and secure environment for their students. And we are working to ensure that teachers are protected from the professional and social humiliation of false accusations.
Mr Chairman, thank you for giving me the opportunity to set out the principles that underpin the coalition government’s approach to education.
Getting this right could not be more important. It will determine the kind of society we will have in twenty or thirty years’ time. Thank you.
Published: 25 November 2010


I am currently appointed as lecturer at the University of Groningen. I teach courses in various areas of philosophy, including epistemology, philosophy of science, business ethics, and logic.
I obtained my PhD in philosophy at the University of Groningen. Before that, I have been awarded an MA (cum laude) and BA (with Honours Certificate) in philosophy, as well as a BSc in Business Administration, from that same university.
During my graduate studies, I spent a semester at the University of St. Andrews, and made several research visits to the University of Edinburgh.
My area of specialization is epistemology, with a particular focus on the Internalism/Externalism debate about epistemic justification and various accounts of epistemic luck. My areas of competence include philosophy of science, philosophy of mind, logic and argumentation theory, as well as (business) ethics.
| forthcoming | Pritchard vs. Pritchard on Luck, Metaphilosophy |
| 2017 (online first) | Epistemic Justification and Epistemic Luck, Synthese (SI: Epistemic Justification) |
| [Draft] | Towards a Hybrid Account of Luck |
At the University of Groningen:
| 2018 | Philosophy of Social Science (as Primary Instructor) |
| 2018 | Philosophy of Science in the Study of Religion and Culture (as Instructor) |
| 2017 | Logic and Argumentation (as Primary Instructor) |
| 2017 | Business Ethics (as Instructor) |
| 2017 | Ethics and International Business (as Instructor) |
| 2017 | Philosophy of Social Science (as Primary Instructor) |
| 2016 | Advanced Epistemology (as Primary Instructor) |
| 2016 | Current Issues in Epistemology (as Primary Instructor) |
| 2015 | Logic and Argumentation Theory (as TA) |
| 2013 | Body, Brain, Mind (as TA) |
| 2012 | Body, Brain, Mind (as TA) |
| 2011 | Philosophy of Science (as TA) |
You can find my C.V. here.


Let not your heart be troubled, neither let it be afraid.


Come And Fall In Love With Me
Sex:
man
feman
Brithday:
--Year--
1990
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
--Month--
Jan
Feb
Mar
Apr
May
June
July
Aug
Sep
Oct
Nov
Dec
--Day--
1
2
3
4
5
6
7
8
9
30
Address
Marry or Not
Single
Married
Divorce
Education
Type You Love
sexy
lovely
strong
thin
all
Introduce Your Self
Say Something About Yourself
I agree with the registration terms and membership criteria
I am a member.Log in now
I Promise
18 Years Old
Serious Attitude
Sincerely


RT @1337807: I'm coordinating sponsorships for Cascadia Ruby in Portland! http://cascadiarubyconf.com/prospectus Great opportunities for the right sponsors…
9/4/2013, 10:49:31 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
RT @1337807: I'm coordinating sponsorships for Cascadia Ruby in Portland! http://cascadiarubyconf.com/prospectus Great opportunities for the right sponsors…
9/4/2013, 10:49:31 PM
Favs: 0
Retweets: 0
link


Ok, back to real life once again. I feel like I have been living in bizarro word for the past 11 weeks. I didn't blog during DBC because I wanted to focus solely on the work that they were giving me to do.  But I'll get back to that
Attending DBC was an experience that differed from anything else I had ever done. The energy and atmosphere is amazing! Everyone there is extreamly helpful and supportive. Coming from profession where everyone is only looking out for themselves and won't hesitate to stab you in the back for your job, it was a breath of fresh air. Even now as the job hunt begins, the whole cohort is still together discussing job oppertunities and contacts that we have made. It's really weird to be part of this community, and I love every minute of it.
The pitfall of this type of community though is that you get back what you put in. You just want to do the base work assigned to you? That's fine, you'll come out of the program with a basic knowledge of ruby and object oriented programming. No one is going to yell at you, you're not being graded, there is no competition. Why would you do that to yourself though?  You have at least 9 weeks of ulimate freedom to learn as much as you can and to make awesome and beautiful things along the way. TAKE ADVANTAGE OF IT. You will be surronded by brilliant people who have already run into the problems that you run into, and who are specifically there to HELP YOU.
Now, I have to find a job, and as excited as I am to start my new life, I'm really going to miss DBC and everything that happens there. It truly is an amazing place that all aspiring developers should experience.


Neural Network¶
Neural networks, with their remarkable ability to derive meaning from complicated or imprecise data, can be used to extract patterns and detect trends that are too complex to be noticed by either humans or other computer techniques. A trained neural network can be thought of as an “expert” in the category of information it has been given to analyse. This expert can then be used to provide projections given new situations of interest and answer “what if” questions.
- What are neurons in NN ? The Neuron is nothing more than a set of inputs, a set of weights and an activation function. The Neuron translates these inputs into a single output, which can then be picked up as a input for another layer of neurons later on.
Logistic Regression didn’t work well with “Flower Dataset”. So now we are going to train NN with a single hidden layer.
Mathematically¶
For one example,
\[ \begin{align}\begin{aligned}z^{[1](i)} = W^{[1]}x^{(i)} + b^{[1]}\\a^{[1](i)} = tanh(z^{[i](i)}\\z^{[2](i)} = W^{[2]}a^{[i](i)} + b^{[2]}\\y`^{i} = a^{[2](i)} = sigma(z^{[2](i)})\end{aligned}\end{align} \]
Problem Statement¶
According to this model the following are the parameters to be noted,
- Hidden Layer is of Size 4
- Input Layer has 2 inputs
- Output Layer has Activation Function as Sigmoid
- Hidden Layer has Activation Function as tanh


The Bank of the Philippines Islands (BPI) says a major system glitch led to customers being hit by unauthorised money withdrawals and deposits.
The problematic transactions reached up to thousands of pesos. Some users claimed on social media that their accounts had even gone into the red.
BPI chief executive Cezar Consing apologised on Wednesday morning in an interview with a local TV station.
"This is not a hack, this is an internal issue," he said.
"Over the next few hours, we are making sure the double credits, debits are corrected," he told ANC.
Account holders on social media are claiming to have lost anything from 4,000 pesos ($80; £62) to up to 100,000 pesos.
"Over the next few hours, we are making sure the double credits, debits are corrected," he told ANC.
Account holders on social media are claiming to have lost anything from 4,000 pesos ($80; £62) to up to 100,000 pesos.


We tolerate paypal payment. After selecting your account will redirect you to the PayPal payment page, then after approval changes the type of deposit account on selected earlier.
Which credit cards can I use?
You can use Visa, MasterCard, and American Express.


LASG seals off plastic company over death of worker
by NANThe Lagos State Government has sealed off Multipak Nigeria Ltd., a plastic producing factory, for violation of safety rules and regulations, poor house-keeping and lack of signage, which led to the death of a worker.
The Director-General, Lagos State Safety Commission (LSSC), Mr Lanre Mojola, made this known in an interview with the News Agency of Nigeria (NAN) in Lagos on Sunday.
The company is located at Plot F8, Kudirat Abiola Way, Oregun, Lagos.
Signage is a graphic design, symbols, emblems or words, used especially for identification or as a means of giving directions or warning.
According to him, the factory was sealed up following the Lagos State Government’s declaration of zero tolerance for factories and private organisations that violate safety rules and regulations.
“LASG seals off Multipak factory for violation of safety rules and regulations as well as poor house-keeping and lack of signage.
“The poor house-keeping led to the untimely death of Mr Femi Olatunde, a factory worker, who got his head stuck while operating one of the machines.
“Mr Babajide Sanwo-Olu’s administration is passionate about safety of lives and property of the citizenry.
“On no account should any factory operates without putting in place safety equipment, quality house-keeping, signage, good wiring system and a clean environment devoid of hazards to the lives of workers and visitors, ’’ Mojola said.
He, however, urged organisations and individuals to embrace best practices and international safety operations to prevent fatal incidents that endangered lives.
The LSSC boss said that safety of lives and property was collective responsibility and warned that factories that violated safety rules would be severely sanctioned.


be.ac.kuleuven.cs.ips2.project2002.awtgui
Class InputRepr
java.lang.Object
|
+--be.ac.kuleuven.cs.ips2.project2002.awtgui.InputRepr
- class InputRepr
- extends java.lang.Object
Instances of this type paint a connection between 2 logic circuits, representing
inputs of a logic gate from another logic circuit.
Note: this class is only partially
structured and formally specified.
- Version:
- $Revision$
- Author:
- Jan Dockx, Guy Veraghtert, Vincent Stephen-Ong
| Methods inherited from class java.lang.Object |
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CVS_SOURCE
public static final java.lang.String CVS_SOURCE
CVS_REVISION
public static final java.lang.String CVS_REVISION
CVS_DATE
public static final java.lang.String CVS_DATE
CVS_STATE
public static final java.lang.String CVS_STATE
CVS_TAG
public static final java.lang.String CVS_TAG
CVS_AUTHOR
public static final java.lang.String CVS_AUTHOR
InputRepr
public InputRepr(LogicCircuitRepr source,
LogicCircuitRepr target)
getSourceRepr
LogicCircuitRepr getSourceRepr()
getTargetRepr
LogicCircuitRepr getTargetRepr()
getRepresentationCanvas
RepresentationCanvas getRepresentationCanvas()
paint
void paint(java.awt.Graphics g)
- Paint this input representation. This is a line between the center
of getSource() and the center of getTarget().
If this is reacting, a different visual representation is choosen
then when it is not.


The language used by Logica is a prefix version of the language used in class. Every expression takes the form of a logical operator or a relation constant followed by its arguments and enclosed in parentheses.
The following examples illustrate the relationship between the infix notation used in class and this prefix notation.
| Infix | Prefix |
|---|---|
| r(a,b,c) | (r a b c) |
| ~p | (not p) |
| p&q | (and p q) |
| p|q | (or p q) |
| p=>q | (=> p q) |
| p<=q | (<= p q) |
Case does not matter in this notation. Upper and lower case versions of a character are treated as the same character. Variables are denoted by prefixing with the ? character. In other words, to enter the variable X, type ?x or ?X.
| Infix | Prefix |
|---|---|
| p(X,b)=>q(X) | (=> (p ?x b) (q ?x)) |
We know that it would not have been hard to parse the prefix form, but we just thought of putting this thing up for you recently and wanted to get it in your hands without further delay.
Type your premises into the Premise box and your desired conclusion, if any, into the Conclusion box. If you enter no premises, it will assume you have none. If you have no conclusion, it will assume false. If the system detects a syntax error in either field, it will treat that field as empty. So, if you enter premises or conclusions and do not see any in the resulting proof, it means there is a syntax error.
Once you have entered your premises and conclusions, select from among the strategy choices. The system ALWAYS applies identical step removal, i.e. it will not produce the same conclusion twice.
Finally, select how many steps you want to see. Beware of specifying too high a number. This will waste system resources and tax your patience. The proofs you should be considering at this time should be no more than a few dozen steps.


A list of instructions given to a computer to carry out a particular task.
For example, A LOGO program to draw a square of size 20 is:
Forward 20; Right 90; Forward 20; Right 90; Forward 20; Right 90; Forward 20;
Alternatively, one might say: REPEAT 4 [Forward 20; Right 90]


This button shows attribute table
This button shows fly to modal
This button shows transparency control for 2D
This button shows layer reorder control for 2D
This button shows zoom to control for 2D
Attribute table
×
<<< Previous 1000 records
Next 1000 records >>>
Object identification
×
Fly to location
×
Easting:
Northing:
Height:
Head (deg):
Tilt (deg):
Zoom to location
×
Easting:
Northing:
Change transparency
×
Tree
Building
Podium
DOP
Layer transparency:
2D layer reorder
×
Tree
Building
Podium
DOP
3D Footprint
×
Rotation:
Scale:
Scene settings
×
Scene FOV
30
50
80
100
Split Screen
None
Horizontal
Vertical
Triple
Quad
Close
Profile result
Selected block:
Floors:
Edit mode:
Reshape
Move
Rotate
Resize
Floor Height:
No. of Floor:
Building Height:
Footprint Area sq.m:
GFA (Area * No. of Floor):
Start Edit
Reset Edit
Cancel
Design type:
Domestic
Tower type:
Apartment
House
No. of Tower:
Avg flat size (sq.m):
No. of flat per floor:
No. of domestic floor:
No. of lobby floor:
Domestic Floor Height (m):
Lobby Floor Height (m):
Refuge Floor Height (m):
No. of Tower:
Floor size (sq.m):
No. of non-domestic floor:
No. of lobby floor:
Non-Domestic Floor Height (m):
Lobby Floor Height (m):
Refuge Floor Height (m):
Proposed total GFA:
Total No. of Flat:
Define Site
Plot blocks
Save option
Select image file
Split Screen
Pano mode
Bird-eye mode
Northing (m)
Easting (m)
Altitude (m)
Heading (deg)
Stop montage
<%=APP_NAME %>
<%=session.getAttribute("USER_ID") %> (<%=session.getAttribute("USER_POST") %>)
Current Project:
No project opened
Current Option:
No option opened
Project Management Panel
Site Search Tool
Make comments
UAT Plan
Searchable Layers:
Application No.
Amendment No.
Building Name
GLA
Land Lot No.
OZP Plan No.
Road name
SSSI
Tenancy
Old-Valued Tree
Lamp Post
Hydrant
Hyperlinks
Buffer analysis
Cross section (terrain)
Viewshed
Line of sight
3D distance measurement
Horizontal/Vertical distance measurement
Projected area measurement
View and Navigate
View settings:
Scene mode:
3D
2D
2D View settings:
Set map scale:
Select map scale
1:1000
1:5000
1:20000
3D View settings:
Choose mode:
Bird mode
Walk mode
360 View
Enter Google StreetView
Easting:
Northing:
Height:
Head (deg):
Tilt (deg):
Buffer type:
By Point
By Polyline
By Polygon
By Selected Feature
Buffer size (m):
Search in layer:
Building Vector
Lot
Application
Start
Fly to layer
Attribute Table
Move layer up
Move layer down
Add 3D footprint
Add annotation
Insert label into 3D scene:
Clear all billboard


| Name: mrs.Hemalatha | Reg No: 17-4SMMHC18 |
|---|---|
| Age / Sex:40/F | Contact No:8050981557 |
| Marital Status: ML- 14 YEARS | Date:26/4/18 |
| Occupation: HOUSEWIFE ( PUC) | Dr. PJFP |
Address:NATIVE OF BALLARY IN BLORE SINCE 14 YEARS |
DIAGNOSIS- |
ARTHRITIS FROM 7 YEARS.
STARTED WITH LEFT KNEE JOINT NEXT TO BOTH SHOULDERS AND ELBW JOINTS. 6 MONTHS AFTER 2ND DELIVERY. WEIGHT LOSS SINCE 1 YEAR. TAKING PANKAJA KASTURI FEELING BETTER NOW.
DISTORTED HAND FINGERS SINCE 2 YEARS FOR RT HAND AND 1 YR FR LEFT HAND. PAIN IN THE FINGER JOINTS.
PAIN MORE IN THE NIGHTS AND AS SHE WAKES UP IN THE MORNING AND WORKS IT REDUCES. PERIODS TIME PAIN INC. 4 TH DAY FEELS WEAK AND AFTER BATH FEELS WEAK. 12-1 PM FEELS BETTER.
PAIN IS MORE CANT LIFT THE SHOULDERS
IN WINTER THE FINGERS PAIN A LOT.
NIGHTS SHOULDERS PAIN A LOT.
PRICKING TYPE OF PAIN.
HOT WATER.
PAST H/O:
2007 – APPENDICITIS OP AFTER DELIVERY.2ND
GOT SOME BOIL ON THE BACK THEN TOOK HOMOEO.
FAMILY H/O:
DAD: HEART ATTACK. 61 YRS DIED (PT WAS 28 YEARS)
MOM: BONE CA. (PT WAS 13 YEARS)
3RD ELDER BRO – DM. 44 YEARS.
3 ELDER BRO AND SHE IS THE LAST.
GOT MARRIAGE WHEN SHE WAS 26 YEARS.
HAS 2 KIDS.
2 LSCS.
LSCS – GIRL BABY 13 YEARS . A N H ( HAD HYPEREMESIS)
LSCS – BOY 9YEARS A N H.
PERSONAL H/O:
VEG, IRREGULAR DUE TO WAITING FR HUSBAND AND KIDS. HUSBAND WORKS AS PUROHIT IN TEMPLE.
DESIRES: SPICY
THIRST: 2 LTS A DAY FEELS THIRSTY.
URINE: NS
MOTION: NS.
SWEAT: FEELS LESS. BEFORE DELIVERIE USE TO SWEAT WELL. AFTER DELIVERY FEELS REDUCED A LOT.
EYES: DOESN’T WATER HER EYES. FEELS BURNING IN EYES BUT DOESN’T WATER. OCASSIONALLY LEFT EYE BURNS MORE AND RED.
LIKES SUMMER AND WARMTH.
IN WINTER THE JOINT PAINS INCREASE.
MENSES : REGUALR.
ARTHRITIC PAINS INC WITH MENSES AFTER A DAY.
DREAMS: MORE ABOUT GODS , SEES AMMAVARU MORE. SNAKES. AS IF FOLLOWING HER. LIFTING HOODS AND LOOKING AT HER.
SLEEP: GOOD REFRESHED.
POSITION: LIKES TO SLEEP ON LEFT SIDE.
DOESN’T LIKE QUARRELELS AND SHOUTINGS WILL COME INSIDE THE HOUSE. WONT TALK MORE. TALKING WITH ME ITSELF IS MORE. USE TO HAVE ONLY ONE FRN IN SCHOOL. LIKES CLASSICAL DANCE AND SONGS LEARNT TO SOME EXTENT AND STOPPED.
IF ANGRY WILL SHOUT AT EVRYONE AND WILL KEEP QUIET. WILL NOT TALK AT ALL FR DAY.
RX:
IGNATIA 200 – 1 DOSE – NIGHT B/FOOD.
RHUS TOX 200 – 4-4-4-4
CALC.PHOS 12 X 4-4-4-4.
26/5/18: having pain in the joints only during periods tht too left elbow joint more pain. dreams as if going to school and searching for her classroom. Worried that her sons school is reopening and she has to wake up early with those pain and send him to school. That fear is there. Feels from 7-8 days gets phlegm after brushing and after spitting again gets it. White color. Feeling weak to bring out the mucus.
Rx:
Carcinosin 1m – 1 dose.
IGNATIA 200 – 1 DOSE – NIGHT B/FOOD.
RHUS TOX 200 – 4-4-4-4
CALC.PHOS 12 X 4-4-4-4.
9/6/18: feeling painful in the shoulders and dorsum of hand and elbow joint < morning > hot bath. Weather also became cold so feeling cold due to that feels pain also inc. heel pain < while walking bare foot. Cold from 3-5 days bfr after returning from tpt. Lmp 16/5/18. No change in pain. mouth feels dry. Keeps drinking water. No water in my mouth she says. Wont get tears. Feels cant weep. Mayb if tears com I mayb better.
Rx:
Puls 200 – 1 dose .
Rub 15 – 1 dose nt b.food
Pl pills 2 dram 4-4-4-4.
28/6/18: weakness during menses. Pain inc. more hip, shoulder, little swelling below the rt. Elbow joint. And left ulna paining. Started nerve treatment. feeling good sleep. Dryness in mouth same. Knee pain started . unable slightest touch when in pain. feels like life is gone. if holds tightly thr part pain better. Closes eyes and cathses the part tightly.< night.
Rx:
Tub 1m – 1 dose.
Rhus tox 1m – 1 dram pills 4-4-4-4.
Ignatia 1m – 1 dram pills 4-4-4-4.
Rub 15 doses – nt b/food.
21/7/18: 1 week fever app down. pain inc. left wrist painful. Lmp: 11/7/18. Dryness same.
Rx:
Carc1m/ignatia1m/rhus tox1m. 1 dram
Polyporus 200 – 4-0-4. Disc.
Rub 15 – 1 dose nt.
Oil rheumagic.
550
17/8/18:
Left side more pain < night feels numbness also.
Sensitive to cold. Unable to touch cold water also. Pain inc.
Feeling pain increased.
40% better with shoulder pain. feels more in the left shoulder that too.
Elbow pain feels inc than before during periods only. feels swelling b/l.
Hip pain more during periods only.left side stiffness.
> straight lying. < lying on sides.
Knee pain not much 3 days before periods and 3 days after periods gets knee pain.
Dryness of lips and mouth same.
Lmp: 10/8/18.
Rx:
Rhododendron1m/sil1m/psorinum1m
Rub 15 – 1 dose night b/food.
Kaliphos 6x 4-4-4-4.
3/9/18: pain 30-40% better. Lmp: 10/8/18. Numbeness in the left hand. < night. No relief only. even left shoulder also same. Hip pain is also better. Neck pain is bit disturbing tho reduced than before. < night only. knee pain also better. Dryness same on the lips. Weakness also not as much as before. One week having more phlegm whitish. Cold. Not so watery. Hunger is good sleep also better. Had wd for 9 days while taking homoeo med. Weept but no tears. My husband was my mother. Im unable to do anything fr him now.
Rx:
Staphysagria1m/ merc sol1m/rhododendron1m. weekly repeat.
Lac can 1m – 4 pills daily night 4 pills. 1 dram pills.
Kali phos 12 x 4-4-4-4.
Rub 15 – night 1 dose b/food.
Fr cold and cough sos – hepar sulph 3 – 4 pills ….
20/9/18: lmp: 9/9/18. Both knee joints pain till morning. Shoulders and wrist pain. numbness and pain. < night. Than last time period pain this time better by 30%.
Rx:
Lachesis1m/syphilinum1m – 4-4-4-4 repeat weekly 3 days gap.
Nat mur 12x 4-4-4-4
Kali phos 12 x 4-4-4-4.
Mag phos 12 x 4-4-4-4 – in hot water only.
Rub 15 – night 1 dose b/food.
Rhododendron 200 – 4 pills sos. Joint pain.
Sabina200 – 1 dose.
11/10/18:
Periods time the pain is more as usual during menses. From one week feeling weak. Loosing weight.  Left arm pain. lmp: 5/10/18. Feeling hot wants fan. Feeling salty compared to others. Since appendix op then reduced weight.
Probable r: lith carb, led, lyc, rhus tox,
Rx:
Puls 1m - 1dose . stat.
Puls 0/2 – 3-0-3 pills water doses.
Carcinosin 0/2 – 3-0-3 pills alternatively.
Lith carb 200 – 4-0-4.
Rub 15 – night 1 b/food.
Ledum1m+lyco1m – 4-4-4-4.
alfalaQ+avenaQ+guiacumQ – 10-10-10 drops in water.
27/10/18: shoulder pain better but hand pain is there. Numb and painful. App better.
Rx:
ferr phos 30 /acid phos 30 – 4-0-4 disc.
Puls 1m – 4 doses – weekly 2 times. boiron. Night b/food.
Ledum1m+lyco1m – 6-6-6. Weekly 3 days – 2 dram pills 30 size
Syphilinum1m – 8 doses – weekly 2 times. Mng b/food.
alfalaQ+avenaQ+guiacumQ – 10-10-10 drops in water.
Sabina 1m – 4 pills 4 times before and during periods. Till periods are over.
11/12/18: lmp: 26/11/18. Fingers all were pulling pain. shoulders and elbow joint painful. Lips dryness better. 45.7kg. knee pain better. Weakness not much. Bleeding is more than befr this time. Hunger also improved. Sleep also better. Dreams like going to temple and leaving her behind and she is following. Even her dad is coming.
ferr phos 200 /acid phos 200 – 4-0-4 disc.
Puls 10m – 1 dose stat.
Ledum1m/syphilinum1m – 6-6-6. Weekly 3 days – 2 dram pills 30 size
alfalaQ+avenaQ+guiacumQ – 10-10-10 drops in water.
Calc flour30 – 2-0-2 b/food. boiron
Puls 50 m – mng 4 pills b/food.
Iodum 200 – night b/food.
7/1/19: weakness better. Pain a bit inc due to cold. Lmp:26/11/18. Hunger is good. Got some mass on the thumb ? from right to left it came. Rx:
tub 1m – 3 doses- mng b/food water alternate days.
Calc phos 1m- on 13th jan 2019
Rub 30 – 1 tab night b/food.
Acid benz 30 – disc 4-4-4 b/food.
18/2/19: left hand pain is same in the morning and night.sleepless. calf cramps. Nights more. Weakness better.lateral malleolus on the right foot is also giving. pain< while standing as if pulling typ of pain. When eating watr melon feels burning in the retrosternal region. Dryness of lips same. Rt. Ear pain only when sleeping. If pressing behind the ear feels better. Unable to see things from reading short distance. Anger on daughter tht she doesn’t help. During menses more anger. Lmp: 10/1/19; 7/2/19 .
Rx:
Calc phos 0/1 – 2-0-2 water doses.
Acid benz 1m – disc 4-0-4.
Nat ars 1m -4-4-4-4 a/food.
Rub 28 – 1 tab night b/food.


new ShowEvents(events, eventRef)
ShowEvents constructor.
Parameters:
| Name | Type | Description |
|---|---|---|
events |
array | events to display |
eventRef |
object | Firebase reference to the events route |
- Source:
Members
eventRef :object
Frebase events reference
Type:
- object
- Source:
events :object
The events
Type:
- object
- Source:
Methods
removeEvent(id)
Remove an event from events
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | of event to remove |
- Source:


| 038:035 Khan | : |
He said: "My Lord! Forgive me, and bestow upon me a kingdom such as shall not belong to any other after me: Verily, You are the Bestower." |
| 038:035 Maulana | : |
He said: My Lord, forgive me and grant me a kingdom which is not fit for any one after me; surely Thou art the Great Giver. |
| 038:035 Pickthal | : |
He said: My Lord! Forgive me and bestow on me sovereignty such as shall not belong to any after me. Lo! Thou art the Bestower. |
| 038:035 Rashad | : |
He said, "My Lord, forgive me, and grant me a kingship never attained by anyone else. You are the Grantor." |
| 038:035 Sarwar | : |
saying, "Lord, forgive me and grant me a kingdom that no one after me can have the like. You are All-munificent". |
| 038:035 Shakir | : |
He said: My Lord! do Thou forgive me and grant me a kingdom which is not fit for (being inherited by) anyone after me; |
| 038:035 Sherali | : |
He said, 'O my Lord, grant me forgiveness and bestow on me a kingdom that may not be inherited by anyone after me; surely, Thou art the Great Bestower.' |
| 038:035 Yusufali | : |
He said, "O my Lord! Forgive me, and grant me a kingdom which, (it may be), suits not another after me: for Thou art the Grantor of Bounties (without measure). |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > صفات الله تعالى > الوهاب Pillars of Islam> Islamic> Oneness of Allah> His Glory's Characteristics> The Bestower
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


New Life Ministries was born as a result of my response to a cry for help. It was January 1992 that I met a young woman who expressed a sincere desire to change her life. Chemically dependent and floundering in a system which reinforced her feelings of guilt and inadequacy she took a chance and reached out to me. Little did I know this was the beginning of a whole new life for both of us.
Being led by the spirit of God I began to make myself available to many such women. Some had enmeshed in a cycle of “victim-less" crimes, some were in danger of permanently losing their children, all were in danger of losing their futures as victims of chemical abuse. These women were in need of a place where they could find safety, encouragement and nurturing. New Life Residential Center Inc. was born as a result of this need on June 14, 1993.
Over the years women of all demographics, backgrounds and stations in life have come through our doors…different in many ways but all sharing one challenge…CHEMICAL DEPENDENCY. The New Life Residential Center has and will continue to support these women to break the cycle of dependency and offer time tested methodologies for conquering old behaviors and boldly embracing new life changing behaviors.
It is our philosophy that recovery must be the total focus of your three months at New Life Residential Center. We expect that you will spend as much energy, if not more, into obtaining your recovery as you did in obtaining your drug of choice. In return, we pledge to support you on this exciting journey which you have begun.
We believe that recovery goes beyond abstinence from drugs and alcohol. It involves a conscious and intentional split from the people, places, things and behaviors that were present in your life during active use.
We also believe that few can accomplish this change alone; therefore the environment that has been created at New Life Residential Center provides support and insight from a group of people who have also dedicated their lives to the recovery process.
New Life Residential Center Inc. provides a highly structured residential program for women who endeavor to overcome addictive behaviors, build self-esteem and obtain healing in a supportive family environment while promoting principles of self-determination, respect of self and others and cultivating hope for the future.
Director, Elim Christian Fellowship
Retired Registered Nurse, 31 years
Statement of Commitment: " I have been called to serve and encourage"
Medical Social Worker MSW, Kalieda Healthy Systems
Support Counselor, Transitional Services Inc.
Statement of Commitment: I'm dedicated to New Life Residential Center because of the on going care , commitment and sincere desire to make a difference in the lives of every woman at New Life Residential Center."
RN, MSN Ed, ACRN, CHW
Professor D'Youville College
Statement of Commitment: " I am committed to the mission and the values of NLRC, every woman has undiscovered qualities that can positively impact the world."
Retired Rehabilitation Addictions Counselor, Erie County Medical Center, 22 years
Statement of Commitment: "I am committed to NLRC because there is such inadequate care for women in this area."
Retired Attorney, Pfalzgraf, Beinhauer & Menzies, 38 years
Statement of Commitment: "I have been a board member since before the residential center was purchased...and I will continue my commitment."
President/CEO, Innovative Marketing Strategies
Director of Marketing & Special Events, New Life Residential Center Inc.
Statement of Commitment: " I believe a healthy world starts with an healthy family. A healthy family's cornerstone is the mother. New Life Residential Center is integral in transitioning addicted mothers into healthy women."
Faculty Emertus, University of Buffalo, 22 years
Volunteer Coordinator for Friends of Broadway
Statement of Commitment: "I am committed because I believe in empowerment of community residents."
Director of Development & Administration, Housing Opportunities Made Equal (HOME)
MS, Management of Non Profit Agencies
Statement of Commitment: " I am proud to be a part of an organization that serves the women of my community.
Attorney At Law
Statement of Commitment: "I am committed to NLRC because I am a sober woman, I want to share the joys of a sober life and I respect the commitment & sobriety of Margaret and Tina."
Pastoral Care, Erie County Medical Center
Retired, Director of Office of Strategic Planning
Commissioner of Community Development
Retired, Special Clerk Telephone Company
<EMAIL_ADDRESS>Office:<PHONE_NUMBER> Cell:<PHONE_NUMBER>
<EMAIL_ADDRESS>Office:<PHONE_NUMBER> Cell:<PHONE_NUMBER>
<EMAIL_ADDRESS>Office:<PHONE_NUMBER> Cell:<PHONE_NUMBER>
<EMAIL_ADDRESS>Office:<PHONE_NUMBER> Fax:716.854.0944


Objective: Reach the airport to make your flight before time runs out. Remember that safety always comes first and nothing is worth risking the health and safety of yourself and others.
Game Summary: On your journey to the airport there are various obstacles that you will encounter. In order to clear these obstacles you must solve a trivia question.
If you answer incorrectly, a time penalty will be applied (unless on "Early Learner" difficulty) and a new question will be presented.
Hints: You will start the game with a preset amount of hints that you can use throughout the game. The number of hints you start with is dependent on the difficulty level you have chosen.
Early Learner: Unlimited time limit/ Unlimited hints /No time penalty applied for incorrect answer
Beginner: 5 minute time limit/ 5 hints available/ 10 second time penalty applied for incorrect answer
Intermediate: 4 minute time limit/ 3 hints available/ 10 second time penalty applied for incorrect answer
Advanced: 3 minute time limit/ 1 hint available / 15 second time penalty applied for incorrect answer


- CARD_ABSENT - Static variable in class com.acs.audiojack.AudioJackReader
-
There is no card in the reader.
- CARD_COLD_RESET - Static variable in class com.acs.audiojack.AudioJackReader
-
Cycle power and reset the card.
- CARD_NEGOTIABLE - Static variable in class com.acs.audiojack.AudioJackReader
-
The card has been reset and is awaiting PTS negotiation.
- CARD_POWER_DOWN - Static variable in class com.acs.audiojack.AudioJackReader
-
Power down the card.
- CARD_POWERED - Static variable in class com.acs.audiojack.AudioJackReader
-
Power is being provided to the card, but the library is unaware of the
mode of the card.
- CARD_PRESENT - Static variable in class com.acs.audiojack.AudioJackReader
-
There is a card in the reader, but it has not been moved into position
for use.
- CARD_SPECIFIC - Static variable in class com.acs.audiojack.AudioJackReader
-
The card has been reset and specific communication protocols have been
established.
- CARD_SWALLOWED - Static variable in class com.acs.audiojack.AudioJackReader
-
There is a card in the reader in position for use.
- CARD_UNKNOWN - Static variable in class com.acs.audiojack.AudioJackReader
-
The library is unaware of the current state of the reader.
- CARD_WARM_RESET - Static variable in class com.acs.audiojack.AudioJackReader
-
Force a reset on the card.
- CardTimeoutException - Exception in com.acs.audiojack
-
Thrown when the card operation timed out.
- CardTimeoutException() - Constructor for exception com.acs.audiojack.CardTimeoutException
-
- CardTimeoutException(String, Throwable) - Constructor for exception com.acs.audiojack.CardTimeoutException
-
- CardTimeoutException(String) - Constructor for exception com.acs.audiojack.CardTimeoutException
-
- CardTimeoutException(Throwable) - Constructor for exception com.acs.audiojack.CardTimeoutException
-
- com.acs.audiojack - package com.acs.audiojack
-
Provides classes and interfaces for communicating with ACS audio jack readers on
Android 2.0 (Eclair) or above.
- CommunicationErrorException - Exception in com.acs.audiojack
-
Thrown when there is an error occurred in the communication.
- CommunicationErrorException() - Constructor for exception com.acs.audiojack.CommunicationErrorException
-
- CommunicationErrorException(String, Throwable) - Constructor for exception com.acs.audiojack.CommunicationErrorException
-
- CommunicationErrorException(String) - Constructor for exception com.acs.audiojack.CommunicationErrorException
-
- CommunicationErrorException(Throwable) - Constructor for exception com.acs.audiojack.CommunicationErrorException
-
- CommunicationTimeoutException - Exception in com.acs.audiojack
-
Thrown when there is timeout in the communication.
- CommunicationTimeoutException() - Constructor for exception com.acs.audiojack.CommunicationTimeoutException
-
- CommunicationTimeoutException(String, Throwable) - Constructor for exception com.acs.audiojack.CommunicationTimeoutException
-
- CommunicationTimeoutException(String) - Constructor for exception com.acs.audiojack.CommunicationTimeoutException
-
- CommunicationTimeoutException(Throwable) - Constructor for exception com.acs.audiojack.CommunicationTimeoutException
-
- compareKeySerialNumber(byte[], byte[]) - Static method in class com.acs.audiojack.DukptReceiver
-
Compares the two key serial numbers.
- control(int, int, byte[], int) - Method in class com.acs.audiojack.AudioJackReader
-
Transmits the control command.
- CRC16 - Class in com.acs.audiojack
-
The CRC16
class is used to compute a CRC16 checksum from data
provided as input value.
- CRC16() - Constructor for class com.acs.audiojack.CRC16
-
- createFrame(byte[]) - Method in class com.acs.audiojack.AudioJackReader
-
Creates a frame.
- createFrame(byte[], int, int) - Method in class com.acs.audiojack.AudioJackReader
-
Creates a frame.


Contact Us: Click to get in contact with a member of the OEA team
ContactUsing Modern Analytics Practices to Help Shape Policy
Technology and the Government are usually oxymorons. OGP's Office of Evidence and Analysis uses cutting-edge open source Data Science concepts such as Machine Learning, AI, and Serverless Design. We work in conjunction with policy makers to make more efficient and data driven public policies.


@() @master_layout { @partials.leftnav() Person Registration Head Office Name Head Office Number Contact Person Name Contact Person ID/Passport No. Mobile Number County address Cell_2 Submit send } { } { }


Beck reveals the ‘Paisley Park Sessions’ EP, recorded in Prince’s legendary Studio A
The first music made there since Prince's death
Beck has released a new EP, ‘The Paisley Park Sessions’, the first music recorded in Prince‘s famous Studio A since the musician’s death in 2016.
- Read More: Beck tells us about his new album, ‘Hyperspace’, working with “master minimalist” Pharrell and more
The three-track release comprises of new versions of Beck’s ‘Where It’s At’ and ‘Up All Night’, plus a special medley of Prince hits including ‘Raspberry Beret’, ‘When Doves Cry’, ‘Kiss’ and ‘1999’.
Prince lived and worked at Paisley Park from 1985 until the end of his life. It contains a number of rehearsal spaces and studios, the most famous of which is Studio A which was his main creative space for most of his career.
The EP has been released exclusively through Amazon Music, and can be heard here, while a video filmed behind the scenes of the sessions can be seen below.
“I’ve heard the name since I was a child, ‘Paisley Park’, and just imagined this place. It’s special to be here,” says Beck of the experience.
“Every Studio has its own life to it, its special energy, it felt very creative. I didnt have any expectations of what I wanted to happen, it was just coming in here and seeing where it took us, and it was surprising.”
‘The Paisley Park Sessions’ comes ahead of Beck’s fourteenth studio LP ‘Hyperspace’, which is out on November 22.
Seven of the album’s 11 tracks, including the already-released ‘Dark Places’ and ‘Saw Lightning’, were co-written and co-produced by Pharrell. Another previously released track, ‘Uneventful Days’ was accompanied by a video directed by Dev Hynes.


Airbus extends lead over Boeing with 415 airplane sales in October
The European planemaker also announced on Thursday deals including 12 orders for its A330neo passenger jet from an unidentified buyer
by ReutersAirbus had 415 airplane orders in October, including its largest ever from a single airline, extending a wide lead over Boeing, which has been hit by the grounding of its 737 MAX.
The European planemaker also announced on Thursday deals including 12 orders for its A330neo passenger jet from an unidentified buyer.
The Airbus deals, including a record order for 300 aircraft from India's IndiGo announced last week, brought the January-October total to 718 aircraft or a net 542 after cancellations.
Boeing has reported 170 orders through end-September, the latest period for which data is available, or a net total of 54 after cancellations.
After an accounting adjustment representing jets ordered in previous years but now thought unlikely to be delivered, Boeing's net total sank to a negative 84 airplanes.
Airbus, which last week cut its annual delivery target by 2-3% to 860 aircraft, said it had delivered 648 aircraft in the first 10 months of 2019.


title
hash again
definition
example
links
trees
chains
mining 1
mining 2
longest chain
takeaways
summary 2


© 2016 Automotive Grade Linux is a Linux Foundation Project. All Rights Reserved.
Linux Foundation is a registered trademark of The Linux Foundation. Linux is a registered trademark of Linus Torvalds.
Please see our privacy policy and terms of use.


City regulator toughens up financial accountability rules after scandals
by Anna MeninTougher accountability rules have today been extended to cover around 47,000 firms across the financial sector, as the financial watchdog seeks to clean up the City’s reputation following a string of scandals.
The Senior Managers and Certification Regime (SMCR) holds firms’ senior managers directly accountable for their actions, and is intended to help regulators punish the right people quickly for failures on their watch.
Read more: AJ Bell boss fears ‘domino effect’ after M&G fund suspension
The new regulation, which was initially introduced to cover banks and insurers three years ago, is today being rolled out to cover all asset managers, independent financial advisers and hedge fund managers regulated by the Financial Conduct Authority (FCA).
“SMCR fundamentally swings the pendulum of personal accountability for wrongdoing from the trading floor to the boardroom,” said Quinn Perrot, co-founder of regulation-focused fintech Traction.
The introduction of the tougher rules come at the end of a year during which regulators have trained their sights on the fund industry following scandals including the collapse of Neil Woodford’s investment empire.
Concerns were raised when SMCR was introduced in 2016 that the rules would make it harder to find staff willing to take on the additional responsibility, but legal experts generally view the enforcement of the regime by the FCA and Bank of England’s Prudential Regulation Regulation Authority division as negligible.
DLA Piper partner Michael McKee said the implementation of SMCR “will not seem like a step change at first” for many firms.
Read more: Woodford Income Focus fund stays suspended as administrators mull options
“However, the challenges associated with the SMCR come from the change in supervisory expectations on boards and senior managers and in the impact of enforcement action – when this is taken,” he added. “
These changes will flow through later – in the second half of 2020 and beyond.”