Download the CRISPR
dataset (Achilles_gene_effect.csv). This dataset facilitates the
discovery of genes that when knocked down/out effect the viability of particular cell
lines.
Morpheus can also open data from Excel, text files,
the clipboard, a URL, and Dropbox.
Select Tools > Transpose to put the genes on the rows and the cell lines on the columns.
Adjust Color SchemeSelect View > Options to edit the color scale. By default,
values in the heat map are mapped to colors
using the minimum and maximum of each row independently.
With z-scored data, a fixed scale should be used. Set the range of the fixed color scale to -2, 2.
Video
Download the cell line metadata (sample_info.csv). Select File > Open and then select "Annotate Columns" for "Open File Action". Next go to View > Options and select the Annotations tab. Select "id", "lineage", and "sample_collection_site" for column annotations.
Variance
Click Tools > Create Calculated Annotation.
Enter "variance" for
the "Annotation name".
Enter "VARIANCE()" for "Formula" and
click "OK".
A new row annotation named "variance" will appear to
the right of the heat map.
Show only the top 500 most variable genes by variance
Click Tools > Filter to open the filter dialog.
Click the "Add"
button and set the field name to "variance".
Click
"Switch to top N filter" and enter "500" for "N".
Click Tools > Hierarchical Clustering. Change "Cluster" to "Rows and
columns". Click "OK" to run the analysis.
Do haematopoietic
cell lines cluster together? Try searching the columns for "haematopoietic_and_lymphoid_tissue". Right-click on
the sample_collection_site header
and select "Highlight matching values". Hover over the sample_collection_site
values to highlight cell lines from the same site. You
can dynamically cut the dendrogram by dragging the dashed line at
the top of the dendrogram.
Hierarchical clustering
recursively merges objects based on their pair-wise distance.
Objects closest together are merged first, objects furthest apart
are merged last. The result is a tree structure, referred to as a
dendogram, where the leaf nodes represent the original items and
internal (higher) nodes represent the merges that occurred. Click here
for a more detailed description of the hierarchical clustering
algorithm and here
for a comparison of the Pearson and Spearman correlation methods.
Click View > Fit To Window to compress the heat map. Select View > 100% to return to the original heat map size.
Remove Row FilterSelect Tools > Filter and delete the variance filter to show all rows.
Remove DendrogramsRight-click on the column dendrogram and select "Delete". Do the same for the row dendrogram.
Sort RowsClick the variance row annotation header in the heat map once to sort the heat map in ascending order by the variance. Click it again to sort the heat map in descending. The third click sorts by alternating groups of ten of most similar and dissimilar items. Note that you can shift-click to sort multiple columns simultaneously.
Search Results To Top
Enter "BRAF" in the row search box.
Click
to bring the matches to the top of the heat map.
Double-click on BRAF row to sort by dependency score.
Search columns for "skin".
Do skin cell lines seem to be
more dependent on BRAF than cell lines from other lineages?
You can optionally limit your search to within a field by typing
the field name followed by a colon ":" and then the term you are
looking for.
Click Tools > Nearest Neighbors. Click "OK" to run the analysis.
A new row annotation named "Pearson correlation" will appear.
What genes correlate with BRAF?
Download the PRISM drug sensitivity data (primary_replicate_collapsed_logfold_change.csv) and select File > Open. Open the dataset in a new tab. Select Tools > Transpose to put the compounds on the rows and the cell lines on the columns. Select File > Save Dataset to save the transposed matrix and enter "prism_logfold_change.gct" for the file name. Navigate back to the gene essentiality dataset tab. Select File > Open to open the transposed drug sensitivity matrix. Change "Open File Action" to "Append rows to current dataset". Match the cell line ids in the CRISPR dataset with the cell line ids in the drug sensitivity dataset.
Repeat Nearest Neighbors With drug sensitivity dataset
Create a new tab with BRAF CRISPR dependency scores and drug sensitivity scores by searching rows for
"Source:prism_logfold_change BRAF". Ensure that all columns are selected. Click Tools > New Heat Map to
create a new tab.
Download the compound
annotations (primary_replicate_collapsed_treatment_info.csv) and select File > Open. Choose "Annotate rows" for "Open File Action".
In the new tab, search for BRAF and bring the matches to the top. Select the BRAF dependency scores. Click Tools
> Nearest Neighbors.
Click "OK" to run the analysis.
A new row annotation named "Pearson correlation" will appear.
What drugs correlate with BRAF dependency scores?
Create a new tab with the CRISPR dependency scores only. Remove the number after the gene name by selecting
Tools>Create Calculated Annotation. Enter "id_stripped" for the annotation
name and FIELD('id').substring(0, FIELD('id').indexOf('(')) for the formula.
Download the RNAi dataset (D2_Achilles_gene_dep_scores.csv) and select File>Open. Repeat the same
process
to remove the numbers after the gene name by selecting
Tools>Create Calculated Annotation. Enter "id_stripped" for the annotation
name and FIELD('id').substring(0, FIELD('id').indexOf('(')) for the formula. Select File > Save
Dataset to save the updated dataset and enter "D2_Achilles_gene_dep_scores.gct" for the file name. Navigate back
to the
CRISPR tab and select File > Open. Change "Open File
Action" to "Overlay onto
current dataset". Match the "CCLE Name" in the CRISPR dataset with "id" in the RNAi
dataset and the "id_stripped" annotation in the CRISPR dataset with "id_stripped" in the RNAi dataset. Select
View > Options to
edit the color scale. Change "shape" to "circle" and "size by" to the RNAi dataset. Set the size by minimum to 2
and the maximum to -2.
Download the CCLE Mutations dataset (CCLE_mutations.csv). Rename the file to have the suffix .maf.csv (e.g. CCLE_mutations.maf.csv) so that Morpheus will recognize the file type properly.


Menu
GlassLib
Toggle Dark Mode
General
Calculator
News reader
Productivity
Docs
Sheets
Email
Slides
Full name
Gender
Male
Female
Other
Area of specialization
Select your area of specialization
Front-end
Back-end
Full-stack
Languages
JavaScript
Python
PHP
...
Description
Display picture
Choose picture
Remember my information
I agree to all the
terms and conditions


--- layout: page title: Testimonials permalink: /about/testimonials/ main_image_path: /assets/images/CIMG0493.jpg main_image_caption: aside: true twitterfeed: true _options: layout: hidden: true image: width: 1200 height: 1200 resize_style: contain mime_type: image/jpeg _comments: ---
I liked John's style - adaptable to where people were at … very empowering
The work you did for us in Kolkata was extremely beneficial...your complete understanding of our partners work and your friendly approach
John was sympathetic to those of us who find numbers difficult
Covered a good deal of difficult issues and made them accessible to a wide range of abilities
The material was excellent - exactly what I wanted
Made difficult topics participatory


Asymmetric Encryption¶
Asymmetric encryption refers to a cryptographic system requiring two separate keys, one to encrypt the plaintext, and one to decrypt the ciphertext. Neither key will do both functions. One of these keys is public and the other is kept private. If the encryption key is the one published then the system enables private communication from the public to the decryption key’s owner.
Contents
Asymmetric encryption can be used by a protocol or a user in two different ways:
1. The protocol works on an abstract level and does not know the concrete algorithm of the asymmetric encryption. This way the protocol cannot create a specific Plaintext to the encrypt function because it does not know which concrete Plaintext the encrypt function should get. Similarly, the protocol does not know how to treat the Plaintext returned from the decrypt function. In these cases the protocol has a byte array that needs to be encrypted.
- The protocol knows the concrete algorithm of the asymmetric encryption. This way the protocol knows which Plaintext implementation the encrypt function gets and the decrypt function returns. Therefore, the protocol can be specific and cast the plaintext to the concrete implementation. For example, the protocol knows that it has a DamgardJurikEnc object, so the encrypt function gets a BigIntegerPlaintext and the decrypt function returns a BigIntegerPlaintext. The protocol can create such a plaintext in order to call the encrypt function or cast the returned plaintext from the decrypt function to get the BigInteger value that was encrypted.
The AsymmetricEnc abstract class¶
-
class
AsymmetricEnc
: public Cpa, Indistinguishable¶ General class for asymmetric encryption. Each class of this family must derive this class.
Encryption and Decryption¶
Encrypts the given plaintext using this asymmetric encryption scheme.
Parameters: plainText – message to encrypt Returns: Ciphertext the encrypted plaintext
Decrypts the given ciphertext using this asymmetric encryption scheme.
Parameters: cipher – ciphertext to decrypt Returns: Plaintext the decrypted cipher
Plaintext Manipulation¶
-
shared_ptr<Plaintext>
AsymmetricEnc::
generatePlaintext
(vector<byte> &text)¶ Generates a Plaintext suitable for this encryption scheme from the given message.
A Plaintext object is needed in order to use the encrypt function. Each encryption scheme might generate a different type of Plaintext according to what it needs for encryption. The encryption function receives as argument an object of type Plaintext in order to allow a protocol holding the encryption scheme to be oblivious to the exact type of data that needs to be passed for encryption.
Parameters: text – byte array to convert to a Plaintext object.
-
vector<byte>
AsymmetricEnc::
generateBytesFromPlaintext
(Plaintext *plaintext)¶ Generates a byte array from the given plaintext. This function should be used when the user does not know the specific type of the Asymmetric encryption he has, and therefore he is working on byte array.
Parameters: plaintext – to generates byte array from. Returns: the byte array generated from the given plaintext.
-
int
AsymmetricEnc::
getMaxLengthOfByteArrayForPlaintext
()¶ Returns the maximum size of the byte array that can be passed to generatePlaintext function. This is the maximum size of a byte array that can be converted to a Plaintext object suitable to this encryption scheme.
Returns: the maximum size of the byte array that can be passed to generatePlaintext function.
-
bool
AsymmetricEnc::
hasMaxByteArrayLengthForPlaintext
()¶ There are some encryption schemes that have a limit of the byte array that can be passed to the generatePlaintext. This function indicates whether or not there is a limit. Its helps the user know if he needs to pass an array with specific length or not.
Returns: true if this encryption scheme has a maximum byte array length to generate a plaintext from; false, otherwise.
Key Generation¶
-
pair<shared_ptr<PublicKey>, shared_ptr<PrivateKey>>
AsymmetricEnc::
generateKey
(AlgorithmParameterSpec *keyParams)¶ Generates public and private keys for this asymmetric encryption.
Parameters: keyParams – hold the required parameters to generate the encryption scheme’s keys Returns: KeyPair holding the public and private keys relevant to the encryption scheme
-
pair<shared_ptr<PublicKey>, shared_ptr<PrivateKey>>
AsymmetricEnc::
generateKey
()¶ Generates public and private keys for this asymmetric encryption.
Returns: KeyPair holding the public and private keys
Key Handling¶
-
shared_ptr<PublicKey>
AsymmetricEnc::
getPublicKey
()¶ Returns the PublicKey of this encryption scheme.
This function should not be use to check if the key has been set. To check if the key has been set use isKeySet function.
Returns: the PublicKey
-
bool
AsymmetricEnc::
isKeySet
()¶ Checks if this AsymmetricEnc object has been previously initialized with corresponding keys.
Returns: true
if either the Public Key has been set or the key pair (Public Key, Private Key) has been set;false
otherwise.
Sets this asymmetric encryption with public key and private key.
Sets this asymmetric encryption with a public key
In this case the encryption object can be used only for encryption.
Reconstruction (from communication channel)¶
-
shared_ptr<AsymmetricCiphertext>
AsymmetricEnc::
reconstructCiphertext
(AsymmetricCiphertextSendableData *data)¶ Reconstructs a suitable AsymmetricCiphertext from data that was probably obtained via a Channel or any other means of sending data (including serialization).
We emphasize that this is NOT in any way an encryption function, it just receives ENCRYPTED DATA and places it in a ciphertext object.
Parameters: data – contains all the necessary information to construct a suitable ciphertext. Returns: the AsymmetricCiphertext that corresponds to the implementing encryption scheme, for ex: CramerShoupCiphertext
-
shared_ptr<PrivateKey>
AsymmetricEnc::
reconstructPrivateKey
(KeySendableData *data)¶ Reconstructs a suitable PrivateKey from data that was probably obtained via a Channel or any other means of sending data (including serialization).
We emphasize that this function does NOT in any way generate a key, it just receives data and recreates a PrivateKey object.
Parameters: data – a KeySendableData object needed to recreate the original key. The actual type of KeySendableData has to be suitable to the actual encryption scheme used, otherwise it throws an IllegalArgumentException Returns: a new PrivateKey with the data obtained as argument
-
shared_ptr<PublicKey>
AsymmetricEnc::
reconstructPublicKey
(KeySendableData *data)¶ Reconstructs a suitable PublicKey from data that was probably obtained via a Channel or any other means of sending data (including serialization).
We emphasize that this function does NOT in any way generate a key, it just receives data and recreates a PublicKey object.
Parameters: data – a KeySendableData object needed to recreate the original key. The actual type of KeySendableData has to be suitable to the actual encryption scheme used, otherwise it throws an IllegalArgumentException Returns: a new PublicKey with the data obtained as argument
Using the Generic Interface¶
Sender Usage:
//Get an abstract Asymmetric encryption object from somewhere.
//Generate a key pair using the encryptor.
auto pair = encryptor.generateKey();
//Publish your public key.
Publish(pair.first);
//Set private key and party2's public key:
encryptor.setKey(party2PublicKey, pair.second);
//Generate a plaintext suitable for this encryption object using the encryption object.
Plaintext plaintext = encryptor.generatePlaintext(msg);
//Encrypt the plaintext
AsymmetricCiphertext cipher = encryptor.encrypt(plaintext);
//Send cipher and keys to the receiver.
...
Receiver Usage:
//Get the same asymmetric encryption object as the sender’s object. //Generate a keyPair using the encryption object.
auto pair = encryptor.generateKey();
//Publish your public key.
Publish(pair.getPublic());
//Set private key and party1's public key:
encryptor.setKey(party1PublicKey, pair.second);
//Get the ciphertext and decrypt it to get the plaintext.
...
Plaintext plaintext = encryptor.decrypt(cipher);
//Get the plaintext bytes using the encryption object and use it as needed.
auto text = encryptor.generatesBytesFromPlaintext(plaintext);
...
El Gamal Encryption Scheme¶
The El Gamal encryption scheme’s security is based on the hardness of the decisional Diffie-Hellman (DDH) problem. ElGamal encryption can be defined over any cyclic group G. Its security depends upon the difficulty of a certain problem in G related to computing discrete logarithms. We implement El Gamal over a Dlog Group (G, q, g) where q is the order of group G and g is the generator.
ElGamal encryption scheme can encrypt a group element and a byte array. The general case that accepts a message that should be encrypted usually uses the encryption on a byte array, but in other cases there are protocols that do multiple calculations and might want to keep working on a close group. For those cases we provide encryption on a group element.
In order to allow these two encryption types, we provide two ElGamal concrete classes. One implements the encrypt function on a group element and is called ElGamalOnGroupElementEnc, and the other one implements the encrypt function on a byte array and is called ElGamalOnByteArrayEnc.
Note
Note that ElGamal on a groupElement is an asymmetric multiplicative homomorphic encryption, while ElGamal on a ByteArray is not.
ElGamalEnc abstract class¶
-
class
ElGamalEnc
: public AsymmetricEnc¶ General class for El Gamal encryption scheme. Every concrete implementation of ElGamal should derive this class. By definition, this encryption scheme is CPA-secure and Indistinguishable.
ElGamalOnByteArrayEnc class¶
-
class
ElGamalOnByteArrayEnc
: public ElGamalEnc¶ This class performs the El Gamal encryption scheme that perform the encryption on a ByteArray. The general encryption of a message usually uses this type of encryption. By definition, this encryption scheme is CPA-secure and Indistinguishable.
Constructors¶
-
ElGamalOnByteArrayEnc::
ElGamalOnByteArrayEnc
()¶ Default constructor. Uses the default implementations of DlogGroup and KDF.
Constructor that gets a DlogGroup and source of randomness.
Parameters: - dlogGroup – must be DDH secure.
- kdf – a key derivation function.
- random – source of randomness
Complete Encryption¶
This is a protected function. It completes the encryption operation.
Parameters: plaintext – contains message to encrypt. MUST be of type ByteArrayPlaintext. Returns: Ciphertext of type ElGamalOnByteArrayCiphertext containing the encrypted message.
ElGamalOnGroupElementEnc class¶
-
class
ElGamalOnGroupElementEnc
: public ElGamalEnc, public AsymMultiplicativeHomomorphicEnc¶ This class performs the El Gamal encryption scheme that perform the encryption on a GroupElement.
In some cases there are protocols that do multiple calculations and might want to keep working on a close group. For those cases we provide encryption on a group element. By definition, this encryption scheme is CPA-secure and Indistinguishable.
Constructors¶
-
ElGamalOnGroupElementEnc::
ElGamalOnGroupElementEnc
()¶ Default constructor. Uses the default implementations of DlogGroup and random.
Constructor that gets a DlogGroup and source of randomness.
Parameters: - dlogGroup – must be DDH secure.
- random – source of randomness.
Complete Encryption¶
This is a protected function. It completes the encryption operation.
Parameters: plaintext – contains message to encrypt. MUST be of type GroupElementPlaintext. Returns: Ciphertext of type ElGamalOnGroupElementCiphertext containing the encrypted message.
Multiply Ciphertexts (Homomorphic Encryption operation)¶
-
shared_ptr<AsymmetricCiphertext>
ElGamalOnGroupElementEnc::
multiply
(AsymmetricCiphertext *cipher1, AsymmetricCiphertext *cipher2)¶ Calculates the ciphertext resulting of multiplying two given ciphertexts. Both ciphertexts have to have been generated with the same public key and DlogGroup as the underlying objects of this ElGamal object.
Returns: Ciphertext of the multiplication of the plaintexts p1 and p2 where alg.encrypt(p1)=cipher1 and alg.encrypt(p2)=cipher2
-
shared_ptr<AsymmetricCiphertext>
ElGamalOnGroupElementEnc::
multiply
(AsymmetricCiphertext *cipher1, AsymmetricCiphertext *cipher2, biginteger &r)¶ Calculates the ciphertext resulting of multiplying two given ciphertexts using the given random value r. Both ciphertexts have to have been generated with the same public key and DlogGroup as the underlying objects of this ElGamal object.
Returns: Ciphertext of the multiplication of the plaintexts p1 and p2 where alg.encrypt(p1)=cipher1 and alg.encrypt(p2)=cipher2
Basic Usage¶
Sender usage:
shared_ptr<DlogGroup> dlog = make_shared<OpenSSLDlogECF2m>();
//Create an ElGamalOnGroupElement encryption object.
ElGamalOnGroupElementEnc elGamal(dlog);
//Generate a keyPair using the ElGamal object.
auto pair = elGamal.generateKey();
//Publish your public key.
Publish(pair.first);
//Set private key and party2's public key:
elGamal.setKey(party2PublicKey, pair.second);
//Create a GroupElementPlaintext to encrypt and encrypt the plaintext.
GroupElementPlaintext plaintext(dlog->createRandomElement());
AsymmetricCiphertext cipher = elGamal.encrypt(plaintext);
//Sends cipher to the receiver.
Receiver usage:
//Create an ElGamal object with the same DlogGroup definition as party1.
//Generate a keyPair using the ElGamal object.
auto pair = elGamal.generateKey();
//Publish your public key.
Publish(pair.first);
//Set private key and party1's public key:
elGamal.setKey(party1PublicKey, pair.second);
//Get the ciphertext and decrypt it to get the plaintext.
...
shared_ptr<Plaintext> plaintext = elGamal.decrypt(cipher);
//Get the plaintext element and use it as needed.
GroupElement element = ((GroupElementPlaintext*)plaintext.get()).getElement();
...
Cramer Shoup DDH Encryption Scheme¶
The Cramer Shoup encryption scheme’s security is based on the hardness of the decisional Diffie-Hellman (DDH) problem, like El Gamal encryption scheme. Cramer Shoup encryption can be defined over any cyclic group G. Its security depends upon the difficulty of a certain problem in G related to computing discrete logarithms.
We implement Cramer Shoup over a Dlog Group (G, q, g) where q is the order of group G and g is the generator.
In contrast to El Gamal, which is extremely malleable, Cramer–Shoup adds other elements to ensure non-malleability even against a resourceful attacker. This non-malleability is achieved through the use of a hash function and additional computations, resulting in a ciphertext which is twice as large as in El Gamal.
Similary to ElGamal, Cramer Shoup encryption scheme can encrypt a group element and a byte array. libscapi only provides the group element version.
The CramerShoupOnGroupElementEnc class¶
-
class
CramerShoupOnGroupElementEnc
: public AsymmetricEnc, Cca2¶ Implementation of CramerShoup encryption scheme over group elements.
Constructor that lets the user choose the underlying dlog, hash and random.
Parameters: - dlogGroup – underlying DlogGroup to use, it has to have DDH security level
- hash – underlying hash to use, has to have CollisionResistant security level
- random – source of randomness.
Basic Usage¶
Sender usage:
//Create an underlying DlogGroup.
shared_ptr<DlogGroup> dlog = make_shared<OpenSSLDlogECF2m>();
//Create a CramerShoupOnByteArray encryption object.
CramerShoupOnGroupElementEnc encryptor (dlog);
//Generate a keyPair using the CramerShoup object.
auto pair = encryptor.generateKey();
//Publish your public key.
Publish(pair.first);
//Set private key and party2's public key:
encryptor.setKey(party2PublicKey, pair.second);
//Get a vector message to encrypt. Check if the length of the given msg is valid.
if (encryptor.hasMaxByteArrayLengthForPlaintext()){
if (msg.size() > encryptor.getMaxLengthOfByteArrayForPlaintext()) {
throw invalid_argument(“message too long”);
}
}
//Generate a plaintext suitable to this CramerShoup object.
auto plaintext = encryptor.generatePlaintext(msg);
//Encrypt the plaintext
auto cipher = encrypor.encrypt(plaintext);
//Send cipher and keys to the receiver.
Receiver usage:
//Create a CramerShoup object with the same DlogGroup definition as party1.
//Generate a keyPair using the CramerShoup object.
auto pair = encryptor.generateKey();
//Publish your public key.
Publish(pair.first);
//Set private key and party1's public key:
encryptor.setKey(party1PublicKey, pair.second);
//Get the ciphertext and decrypt it to get the plaintext. ...
auto plaintext = encryptor.decrypt(cipher);
//Get the plaintext element and use it as needed.
GroupElement element = ((GroupElementPlaintext*)plaintext.get()).getElement();
Damgard Jurik Encryption Scheme¶
Damgard Jurik is an asymmetric encryption scheme that is based on the Paillier encryption scheme. This encryption scheme is CPA-secure and Indistinguishable.
DamgardJurikEnc class¶
-
class
DamgardJurikEnc
: public AsymAdditiveHomomorphicEnc¶ Damgard Jurik is an asymmetric encryption scheme based on the Paillier encryption scheme. By definition, this encryption scheme is CPA-secure and Indistinguishable.
Constructor that lets the user choose the source of randomness.
-
shared_ptr<AsymmetricCiphertext>
DamgardJurikEnc::
reRandomize
(AsymmetricCiphertext *cipher)¶ This function takes an encryption of some plaintext (let’s call it originalPlaintext) and returns a cipher that “looks” different but it is also an encryption of originalPlaintext.
Basic Usage¶
The code example below is used when the sender and receiver know the specific type of asymmetric encryption object.
Sender code:
//Create a DamgardJurik encryption object.
DamgardJurikEnc encryptor;
//Generate a keyPair using the DamgardJurik object.
DJKeyGenParameterSpec spec(128, 40)
auto pair = encryptor.generateKey(spec);
//Publish your public key.
Publish(pair.first);
//Set private key and party2's public key:
encryptor.setKey(party2PublicKey, pair.second);
//Get the biginteger value to encrypt, create a BigIntegerPlaintext with it and encrypt the plaintext.
...
BigIntegerPlainText plaintext(num);
auto cipher = encryptor.encrypt(plaintext);
//Send cipher and keys to the receiver.
Receiver code:
//Create a DamgardJurik object with the same definition as party1.
//Generate a keyPair using the DamgardJurik object.
auto pair = encryptor.generateKey();
//Publish your public key.
Publish(pair.first);
//Set private key and party1's public key:
encryptor.setKey(party1PublicKey, pair.second);
//Get the ciphertext and decrypt it to get the plaintext. ...
auto plaintext = elGamal.decrypt(cipher);
//Get the plaintext element and use it as needed.
biginteger element = ((BigIntegerPlainText)plaintext.get()).getX();


Psalm 105
1 Give thanks to Yahweh, call on his name;
make known his deeds among the nations.
2 Sing to him, sing praises to him;
speak of all his marvelous deeds.
3 Boast in his holy name;
let the heart of those who seek Yahweh rejoice.
4 Seek Yahweh and his strength;
seek his presence continually.
5 Recall the marvelous things he has done,
his miracles and the decrees from his mouth,
6 you descendants of Abraham his servant,
you people of Jacob, his chosen ones.
7 He is Yahweh, our God.
His decrees are on all the earth.
8 He keeps in mind his covenant forever,
the word that he commanded for a thousand generations.
9 He calls to mind the covenant that he made with Abraham
and his oath to Isaac.
10 This is what he confirmed to Jacob as a statute
and to Israel as an everlasting covenant.
11 He said, "I will give you the land of Canaan
as your share of your inheritance."
12 He said this when they were only few in number,
so very few, and were strangers in the land.
13 They went from nation to nation
and from one kingdom to another.
14 He did not allow anyone to oppress them;
he rebuked kings for their sakes.
15 He said, "Do not touch my anointed ones,
and do not harm my prophets."
16 He called for a famine on the land;
he cut off the whole supply of bread.
17 He sent a man ahead of them;
Joseph was sold as a servant.
18 His feet were bound by shackles;
iron chains were put on him.
19 until the time that his prediction came true.
The word of Yahweh proved him to be right.
20 The king sent servants to release him;
the ruler of the people set him free.
21 He put him in charge of his house
as ruler of all his possessions
22 to instruct his princes as he wished
and to teach his elders wisdom.
23 Then Israel came into Egypt,
and Jacob lived for a time in the land of Ham.
24 God increased his people greatly
and made them more numerous than their adversaries.
25 He caused their enemies to hate his people,
to mistreat his servants.
26 He sent Moses, his servant,
and Aaron, whom he had chosen.
27 They performed his signs among the Egyptians,
his wonders in the land of Ham.
28 He sent darkness and made that land dark,
but its people did not obey his commands.
29 He turned their water into blood
and killed their fish.
30 Their land swarmed with frogs,
even in the rooms of their rulers.
31 He spoke, and swarms of flies and gnats came
throughout their country.
32 He sent hail and rain,
with lightning and thunder, to their land.
33 He destroyed their vines and fig trees;
he broke the trees of their country.
34 He spoke, and the locusts came,
so many locusts.
35 The locusts ate up all of the vegetation in their land;
They ate up all the crops of the ground.
36 He killed every firstborn in their land,
the first fruits of all their strength.
37 He brought the Israelites out with silver and gold;
none of his tribes stumbled on the way.
38 Egypt was glad when they went away,
for the Egyptians were afraid of them.
39 He spread a cloud for a covering
and made a fire to light up the night.
40 The Israelites asked for food, and he brought quail
and satisfied them with bread from heaven.
41 He split the rock, and waters gushed from it;
they flowed in the wilderness like a river.
42 For he called to mind his holy promise
that he made to Abraham his servant.
43 He led his people out with joy,
his chosen with shouts of triumph.
44 He gave them the lands of the nations;
they took possession of the wealth of the peoples
45 so that they might keep his statutes
and obey his laws.
Praise Yahweh.


3.3. LR PARSING
Look up top stack state, and input symbol, to get action;
If action is
Shift(
n
):
Advance input one token; push
n
on stack.
Reduce(
k
): Pop stack as many times as the number of
symbols on the right-hand side of rule
k
;
Let
X
be the left-hand-side symbol of rule
k
;
In the state now on top of stack, look up
X
to get “goto
n
”;
Push
n
on top of stack.
Accept:
Stop parsing, report success.
Error:
Stop parsing, report failure.
LR(0) PARSER GENERATION
An LR(
k
) parser uses the contents of its stack and the next
k
tokens of the
input to decide which action to take.
Table 3.19
shows the use of one sym-
bol of lookahead. For
k
=
2, the table has columns for every two-token se-
quence and so on; in practice,
k
>
1 is not used for compilation. This is
partly because the tables would be huge, but more because most reasonable
programming languages can be described by
L R
(
1
)
grammars.
LR(0) grammars are those that can be parsed looking only at the stack,
making shift/reduce decisions without any lookahead. Though this class of
grammars is too weak to be very useful, the algorithm for constructing LR(0)
parsing tables is a good introduction to the LR(1) parser construction algo-
rithm.
We will use
Grammar 3.20
to illustrate LR(0) parser generation. Consider
what the parser for this grammar will be doing. Initially, it will have an empty
stack, and the input will be a complete
S
-sentence followed by $; that is,
the right-hand side of the
S
′
rule will be on the input. We indicate this as
S
′
→
.
S
$ where the dot indicates the current position of the parser.
In this state, where the input begins with
S
, that means that it begins with
any possible right-hand side of an
S
-production; we indicate that by
S
′
→
.
S
$
S
→
.
x
S
→
.(
L
)
1
Call this state 1. A grammar rule, combined with the dot that indicates a
position in its right-hand side, is called an
item
(speciﬁcally, an
LR(0) item
).
A state is just a set of items.
59


Un-Professional
Professional
Page 1
Page 2
Page 3
Woopie
horses
Page 5!
Your browser doesn't support iFrames.
Page 6
Page 7
Your browser does not support CSS animations.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113489-new-members/topic/Kind.20of.20a.20vague.20question.html ---
I've already done all of these, but I'm not sure if I'm on the right track: this never occurs when I do math. So I'll ask for opinions.
Let's say we have a normed_field K
and a normed space γ
over K
. Let f : α → γ
be an integrable function, which means ∫ ∥f x∥ dx < ∞
. Then the l1-norm of f
is usually defined as ∫ ∥f x∥ dx
.
However ∫
(called lintegral
in library) has type (α → ennreal) → ennreal
, thus to define the norm of f, we first need to write ∥f x∥ : ℝ
as metric_space.edist (f x) 0 : ennreal
, then integrate, then turn it back to real
∥f∥ := ennreal.to_real (lintegral (λ x, metric_space.edist (f x) 0))
For example, if I want to do the following reasoning
∫ ∥c • (f x)∥ dx = ∫ ∥c∥ * ∥f x∥ dx
where c : K
and f x : γ
. This should be killed easily by norm_smul : ∥s • x∥ = ∥s∥ * ∥x∥
. But we cannot do that. Because what we need to prove is
lintegral (λ x, metric_space.edist (c • (f x)) 0) = lintegral (λ x, (metric_space.edist c 0) * (metric_space.edist (f x) 0))
And to prove this, I have to first prove an "extended" version of norm_smul
:
metric_space.edist (s • x) 0 = (metric_space.edist s 0) * (metric_space.edist x 0)
I need other "extended" version of norm lemmas, like
∥x + y∥ ≤ ∥x∥ + ∥y∥ metric_space.edist (x + y) 0 ≤ metric_space.edist x 0 + metric_space.edist y 0
etc.
If this has to be the case, I guess I'll just prove those "extended" version of norm lemmas and put them somewhere? If not, then I'm not sure how to modify the definition of integral.
At least metric_space.edist s 0
is unnecessary, because it's always finite (it's a normed field not a enormed field)
But there should also be a definition of enorm
so you don't need all these dist 0
things
wait, isn't the norm of f
also always finite?
so doesn't lintegral (λ x, ∥c • (f x)∥) = lintegral (λ x, ∥c∥ * ∥f x∥)
work?
I think this does't type check, because λ x : α, ∥f x∥
is of type α → ℝ
, while lintegral
expects a α → ennreal
. Though when I tried to check the type of lintegral (λ x : α, ∥f x∥)
, the error message is maximum class-instance
#check lintegral (λ x : α, metric_space.edist (f x) 0)
easily type checks.
#check lintegral (λ x : α, ∥f x∥)
fails.
with
variables {α : Type u} [measure_space α] variables {K : Type*} [normed_field K] {γ : Type*} [normed_space K γ] [second_countable_topology γ] [topological_add_group γ] variables {c : K} {f : α → γ}
Use nnnorm
instead
Yeah, this type checks. But I don't know. The problem is that metric_space.edist
just appears.
It appears in proofs after I unwrap all the subtypes and quotients and definitions.
then don't unwrap all the subtypes and quotients and definitions
this is a very common newbie mistake
only unfold what you have to
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


Trump fires FBI Director James Comey, citing Comey's handling of the Clinton email investigation, and relying on letters from Attorney General Jeff Sessions and Deputy Attorney General Rod J. Rosenstein.
The firing comes one day after Comey testified before Congress.
Source: NY Times


title
description
method
GET
POST
PUT
DELETE
url
request data
response data
response error data
generate
result


--- layout: default title: Home ---
I'm Fabio Maria Carlucci a Research Scientist at Huawei, London. Previously, I completed a PhD in Machine Learning and Computer Vision.
' | remove: '


Coming Soon!
Be Ready,There Is Just:
57
days
16
hours
44
minutes
27
seconds
Copyright © 2017
Seeker.com.
All rights reserved.


"Over the course of our 24 hours in Ordos, we had tried every door within reach – and not one of them had been locked."
I love well documented travel writing. @DarmonRichter's piece on the ghost city of Ordos encourages a level of vicarious travelling that I imagine would only be trumped by VR.


--- layout: page title: Lean Prover Zulip Chat Archive permalink: archive/113488general/22503travisforkcannotallocatememory.html ---
What does this Travis error mean?
https://travis-ci.org/leanprover-community/mathlib/jobs/541682321
It means restart the build and it will probably work.
Tried that... failed again :sad:
I guess lean ran out of memory
Can you build it on your own computer?
{% endraw %}


Review by Lars Lindahl
"Romeo Must Die" (2000)
Starring Jet Li, Aaliyah, Isaiah Washington, Russell Wong, DMX, and Delroy Lindo.
Directed by Andrzej Bartkowiak Written by Eric Bernt, John Jarrell
Grade: **1/2 (out of four)
For those expecting a clever masterpiece of an ancient Shakespeare play, Romeo Must Die will not be satisfying. The only real similarity is that both contain rival gangs from rival families. That's it. In this "adaptation" you won't find any monologues, any romance, any dukes, nor, for that matter, any characters named Romeo or Juliet. You will find a lot of violence, rap music, curse words, and bad acting. This is not necessarily a bad thing; the soundtrack and beautifully choreographed fight scenes add a much needed Matrix-like environment while the bad acting reminds its viewers that this is a movie that doesn't require much thought, just pointless eye-candied entertainment. And when star Jet Li shows off his impressive Martial Arts talent, the movie is extremely fun. He is so graceful at his job that he makes beating up huge gun-carrying gangsters look extremely easy. The elaborate plot made simple follows Han (Jet Li) as he escapes a Hong Kong prison to find out who killed his brother. When Han reaches America, he finds that two gangs, one African American the other, led by his father, Chinese, are in the middle of a nasty battle. As Han continues to search for the truth about his brother, he meets Tricia (singer Aaliyah) the daughter of the opposite gang's leader (Delroy Lindo). The two find they have much in common while the gangs do all they can to separate them.
The real problem with Romeo Must Die is that Li is rarely given a chance to show off his skills. The film is held down by a confusing subplot involving the NFL, in which the two families try to profit off of the league. Also there are way too many characters in this movie. In a pleasing action movie, there should be five main characters max: the hero or the two heroes, the person they try to rescue, and a couple of villains. There are so many actors in this film that Li has to wait large portions of the running time before returning for more action. The other actors do a fine job, they just stand in the way of the main point of the film. Russell Wong and Isiah Washington, in particular, add perfect charisma to their "2nd in charge" characters. Other Martial Arts flicks with thinner (almost nonexistent) plots are entertaining because what is expected, creative fighting scenes, are shown one after the other. Rumble in the Bronx is a good example of a ridiculous plot cured by the expertise of its star (Jackie Chan).
Another problem is that Han and Tricia never give a convincing case that they care for each other. They both disobey their families by secretly meeting to try and find out who killed Li's brother but there is no real reason why they do this. Missing is a scene where the two bond and understand their partner's struggles in life. Would you risk your life for someone you hardly knew? These people would at the blink of an eye.
The scenes in which Jet Li skillfully gets himself out of danger are highly recommended, but unfortunately they are not given the center spotlight. Rent Rumble in the Bronx and save yourself some money.
Lars Attacks! A teenager attacks past and present cinema http://www.angelfire.com/ny3/larsattacks
(c) 2000 Lars Lindahl
Do You Yahoo!? Talk to your friends online with Yahoo! Messenger. http://im.yahoo.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


The IBM DataPower Playground is an interactive website that lets you write GatewayScript code and execute it on a cloud hosted DataPower Gateway for learning purposes.
GatewayScript is a new transformation technology for API, Web and Mobile and is available in DataPower as a Processing Policy Action starting from firmware version 7.0. For more information see the documentation.
To get started click on the Samples tab.
The samples on this page are editable and testable, just click the Edit and Test button and follow the instructions on the next page. You will need to return to this section to complete each sample in turn. If you have questions about a specific API, use the API Reference tab for more detailed information on each API.
The first time through a sample you'll most likely want to leave the script untouched. You can come back to the Code tab at any point, make some modifications and retest. When your done editing the code, click the Request tab to continue.
Use this panel to modify attributes of the request. Each sample populates attributes specific to that sample and you can always revert back to the original code and request details by re-clicking the "Edit and Test" button on the Samples tab. Clicking the green Test button below will transmit the request data and script data to DataPower for processing. Typically the script is static and stored on the DataPower encrypted flash and only the request data is required, but in this case we want to make it super easy to test variations to the scripts and therefore the script is transmitted along with the request data. The Log and Response tabs will be populated with the result.
X-GS-Fiddle-Rule: {request,response} selects the direction to execute
the script from. This is very convenient for testing the response code and
reason phrase API
X-GS-Fiddle-Service: {mpgw, xmlfw) selects the service type
X-GS-Fiddle-Request-URI: {any uri} and X-GS-Fiddle-Backside:{ any URL }
control which endpoint will be contacted with the request. Use this if
you need a custom responder
X-GS-Fiddle-Skip-Backside: {true,false} to skip contacting a backend
turning the service into a loopback service
Header Name
Header Value
This screen contains the result of executing the input
against the script you provided. If an error occurred the
Log tab will have further information.
This page contains the DataPower transaction logs specific to the request you just submitted. The logs are grabbed from the DataPower System Log and redisplayed here for convenience.
======================================
Credits, Tributes, and Copyrights
The IBM license agreement and any applicable information on the web download page for IBM products refers Licensee to this file for details concerning notices applicable to code included in the products listed ("the Program").
Notwithstanding the terms and conditions of any other agreement Licensee may have with IBM or any of its related or affiliated entities (collectively "IBM"), the third party code identified below is subject to the terms and conditions of the IBM license agreement for the Program and not the license terms that may be contained in the notices below. The notices are provided for informational purposes.
IMPORTANT: IBM does not represent or warrant that the information in this NOTICES file is accurate. Third party websites are independent of IBM and IBM does not represent or warrant that the information on any third party website referenced in this NOTICES file is accurate. IBM disclaims any and all liability for errors and omissions or for any damages accruing from the use of this NOTICES file or its contents, including without limitation URLs or references to any third party websites.
The following modules and associated documentation were derived from works of Joyent, Inc. and other Node contributors: Assert, Buffer, Console, Punycode, Querystring, Url, and Util. The Buffers module and documentation were derived from works of the node-buffers module. The CommonJS API for Modules 1.0 was implemented based the specifications at www.commonjs.org. thirdparty license details


h1 title
h2 title
h3 title
h4 title
h5 title
h6 title
Section -> Article -> Span
Ordered List
Unordered List
Anchor


Google Charts:
Example
Row
Clear
Label Options:
Chart Title:
X Axis Label:
X Axis Min:
Max:
Y Axis Label:
Y Axis Min:
Max:
Red From:
To:
Yellow From:
To:
Width:
Height:
Embed Chart


Width: Height:
Standard Endless Auto
Scaling High resolution mode
Standard Grayscale
OK
Game paused
Press “P” to resume, “Q” to quit the game
Game over
result
Back to title
Hold:
Next:


Often 'borrowing' a little of his dad's random psychoactives, a friend of mine brought back some of this 2C-I powder to me for us to try together. He had tried some earlier and thought it was acid, but skeptical of it's cotton-like powder form, we looked up the name on the vile and discovered that it was 2C-I.
Later that morining, about 11 a.m., we each put an amount about the size of a dime in the palm of our hands and licked it off. It had an extremely bitter chemical taste that wasn't very pleasant at all but quickly went away within about 10 minutes.
[Erowid Note: A volume amount of one powder doesn't necessarily weigh the same as the same volume of another powder. For substances active at such a small dose, eyeballing is particularly unwise. See related article]
We then began watching Starsky and Hutch in the living room while we waited for it to kick in. About 45 minutes later I could feel the effects begin kicking in. I was pretty euphoric at first with that disconnected from reality feeling most psychoactives cause.
I believe starting off with the funny movie helped lighten our moods and gave us a good mind-set for the trip. After about another 30 to 45 minutes, the effects had just about completely set in and we threw on 'The Last Waltz' DVD from The Band. We smoked a bowl and laid back on the couch to watch the show. It seemed like I could completely focus on whatever I was directly looking at, but everything around that point was moving and swirling all over the place. My hands and feet were pretty cold even though it was the middle of the summer, but the rest of my body felt quite comfortable.
We were both chain-smoking because the act of smoking was quite delightful. My friend and I also felt as if we were on an extermely close personal level with the members of The Band as we watched them play on the TV and we could pick out every drug that they and their guests (Eric Clapton, Neil Young, Van Morrison, guys like that) were on. Excited about the trip and the new substance, I was quite talkative, but the trip was better when I just focused on one thing.
The trip was very, very mental so where we focused our attention was very important. We continued to smoke a bowl about every hour or so of some pretty high quality cannabis to help us stay continuously chilled out. When the DVD ended, my friend and I felt as if we didn't know what to do with oursleves because the movie was so emotionally exhausting and nothing could beat that final concert that The Band had performed. We walked outside into the light since it was day time to see what that would be like. The light seemed to raise our euphoria and we just sat out there smoking cigarettes and looking around at the outdoors for a while, discussing how we were feeling.
The comedown was really slow and drawn out. It got to the point where I just wanted it to end. Once we were almost completely down, about 8 pm, we felt exhausted and smoked one last bowl before going to bed very early. I woke up the next morning feeling fine with a slight metallic taste in my mouth like after doing acid, but it didn't bother me. I was completely sober, but still felt a little disconnected from the world. The experience was an overall great one and I look forward to doing it again some day. I wouldn't put my experiences with it too close together just to keep my head clear. It is definitely worth trying under the right circumstances.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Rockfish Console
Logout
Rockfish Monitoring
PERIOD
~
Client OS
Client OS Version
Send Type
Encrypt
Service Response Http Status Code
Service Protocol
MENU


Contribute
Introduction
Fuel is a community driven framework and is open for contributions from anyone who feels they can improve it or add a feature that will bring the framework to a higher level. There are multiple forms in which this can be achieved. From writing tutorials, writing and releasing packages, to contributing to the official parts of Fuel (Core, Orm, Docs, etc..).
Contribute code
When you encounter a bug or see one in the issues list that you can or have resolved, and you want to contribute it back to the framework. Use GitHub to send a pull request. Depending on which version you are running the branch you pull on. Follow the next couple of steps to when you request a pull:
- Is the release I am currently using still
supported?
If not, upgrade to the current release, and see if the bug is still exists. - Is the bug still present in the current
release?
If so, upgrade to the current develop branch, and see if the bug is fixed there.
- Push it to your GitHub account
$ git push
- Request the pull
Request the pull on the same branch as you are on (= the current develop branch). Use the "update commit range" interface to direct you request to the correct branch. Pull requests are only accepted on the current release develop branch (1.5/develop). - Wait for your moment of fame
As soon as your request is merged you'll be part of the contributors list of Fame.
You can find this procedure described in more detail on Github.
Non-bug contributions
Non-bug contributions are new features, optimizations and all other alterations. All of these request must be made on the latest development branch. So pull the 1.7/develop branch, make the changes and request a pull.
For large and/or completely new features, or features that will take some time to complete, it might be wise to setup a separate feature branch. Contact one of the core developers via email or on IRC to discuss the options.


Version 2.14.0
Released on Thursday, June 5, 2014
IMPORTANT: Your web browser caches JavaScript. In order for Trifolia to work properly, you may need to force your browser to refresh individual Trifolia pages for it to retrieve the latest version of the application’s JavaScript files. If you encounter any issues within Trifolia, try refreshing your browser before submitting a support request.
User interface
The user interface for Trifolia has been re-designed to provide a more responsive experience. The Twitter Bootstrap API and Javascript are used to provide a clean, consistent and client-side-oriented user interface. Users of Trifolia should see a notable increase in performance.
Template Editor
The template editor has been re-designed to maximize screen real-estate and reduce the amount of time that the user spends waiting for popup dialogs to load.
Template Viewer
The template viewer now has an additional tab called “Relationships”, which shows how other templates relate to the template you are viewing.
Template Editing View Modes
Instead of using tabs in the constraint editor to separate the types of meta-data a user can view/edit for a constraint, a new “View Mode” option has been implemented. When a view mode is selected, it will show the fields available for that view mode in the constraint editor. The view mode stays the same when switching from one constraint to another.
Browsing
In addition to the column filters that already exist in the browse screens, a broad search field has been added that will search multiple fields at once. For example, when searching for templates, the name, oid, implementation guide, and even conformance number fields are used by the broad search.
Development Log
New Feature |
Provide list of sections using a template. |
New Feature |
Implement bootstrap for UI design |
New Feature |
Re-design template editor |
Improvement |
Layout/performance of "View Template" screen |
Improvement |
Default "Is Open" field to "Open" in template editor |
Improvement |
Export option for template statuses |
Improvement |
Value Set Binding - Default to DYNAMIC |
Improvement |
Expand the Terminology Browser window to use more screen real estate. |
Improvement |
Link to contained template in template viewer |
Improvement |
Name of template on Publish Settings Screen |
Defect |
Template editor must unmark identifier for children when branch is unmarked |
Defect |
Auto-resize terminology grids |
Defect |
Duplicate assert IDs |
Defect |
Export globally unique conformance numbers |
Defect |
Vocabulary export using incorrect publish date |
Defect |
Template Review returning wrong template oid |
Defect |
Template Editing - Constraints Search option not functioning correctly |
Defect |
Date picker for publish date - not obvious that there is a date picker |


|
Otter
<IP_ADDRESS>
2d Game Development Framework based on SFML.Net
|
Counter in which the value can be moved in both an X and Y direction. Probably most useful for making menus that are grids which the player can move around in. More...
Inherits Otter.Component.
Public Member Functions | |
| void | MoveLeft () |
| Move the index left. More... | |
| void | MoveRight () |
| Move the index right. More... | |
| void | MoveUp () |
| Move the index up. More... | |
| void | MoveDown () |
| Move the index down. More... | |
| GridCounter (int value, int width=1, int height=1, bool wrapX=false, bool wrapY=false) | |
| Create a new GridCounter. More... | |
| Public Member Functions inherited from Otter.Component | |
| T | GetEntity< T > () |
| Get the Entity as a specific Type. More... | |
| virtual void | Added () |
| Called when the Component is added to the Entity. More... | |
| virtual void | Removed () |
| Called when the Component is removed from the Entity. More... | |
| void | RemoveSelf () |
| Removes the Component from its parent Entity. More... | |
| virtual void | UpdateFirst () |
| Called during the UpdateFirst on the parent Entity. More... | |
| virtual void | Update () |
| Called during the Update on the parent Entity. More... | |
| virtual void | Render () |
| Called during the Render on the parent Entity. More... | |
| virtual void | UpdateLast () |
| Called during the UpdateLast on the parent Entity. More... | |
| T | GetComponent< T > () |
| Gets the first Component of type T from this Component's Entity. More... | |
| List< T > | GetComponents< T > () |
| Gets a list of Components of type T from this Component's Entity. More... | |
Static Public Member Functions | |
| static implicit | operator float (GridCounter counter) |
| static implicit | operator int (GridCounter counter) |
Public Attributes | |
| int | Width |
| The width of the grid. More... | |
| int | Height |
| The height of the grid. More... | |
| bool | WrapX |
| Determines if the GridCounter should wrap horizontally. More... | |
| bool | WrapY |
| Determines if the GridCounter should wrap vertically. More... | |
| Public Attributes inherited from Otter.Component | |
| Entity | Entity |
| The parent Entity of the Component. More... | |
| bool | RenderAfterEntity = true |
| Determines if the Component should render after the Entity has rendered. More... | |
| bool | Visible = true |
| Determines if the Component will render. More... | |
| float | Timer = 0 |
| How long the Component has been alive (added to an Entity and updated.) More... | |
Properties | |
| int | Index [get, set] |
| The 1d value of the counter on the grid. More... | |
| bool | Wrap [set] |
| Set both WrapX and WrapY. More... | |
| int | Count [get] |
| The total number of grid spaces. More... | |
| int | X [get, set] |
| The X value of the counter. More... | |
| int | Y [get, set] |
| The Y value of the counter. More... | |
| Properties inherited from Otter.Component | |
| int | InstanceId [get, set] |
| The Component's id for the Entity its attached to. More... | |
| Scene | Scene [get] |
| The Scene that the parent Entity is in. More... | |
| Collider | Collider [get] |
| The first Collider of the parent Entity. More... | |
| Graphic | Graphic [get] |
| The first Graphic of the parent Entity. More... | |
| List< Graphic > | Graphics [get] |
| The list of Graphics from the parent Entity. More... | |
| List< Collider > | Colliders [get] |
| The list of Colliders from the parent Entity. More... | |
Counter in which the value can be moved in both an X and Y direction. Probably most useful for making menus that are grids which the player can move around in.
| Otter.GridCounter.GridCounter | ( | int | value, |
| int | width = 1 , |
||
| int | height = 1 , |
||
| bool | wrapX = false , |
||
| bool | wrapY = false |
||
| ) |
Create a new GridCounter.
| value | The initial value of the GridCounter. |
| width | The width of the grid. |
| height | The height of the grid. |
| wrapX | Determines if the counter should wrap horizontally. |
| wrapY | Determines if the counter should wrap vertically. |
| void Otter.GridCounter.MoveDown | ( | ) |
Move the index down.
| void Otter.GridCounter.MoveLeft | ( | ) |
Move the index left.
| void Otter.GridCounter.MoveRight | ( | ) |
Move the index right.
| void Otter.GridCounter.MoveUp | ( | ) |
Move the index up.
| int Otter.GridCounter.Height |
The height of the grid.
| int Otter.GridCounter.Width |
The width of the grid.
| bool Otter.GridCounter.WrapX |
Determines if the GridCounter should wrap horizontally.
| bool Otter.GridCounter.WrapY |
Determines if the GridCounter should wrap vertically.
|
get |
The total number of grid spaces.
|
getset |
The 1d value of the counter on the grid.
|
set |
Set both WrapX and WrapY.
|
getset |
The X value of the counter.
|
getset |
The Y value of the counter.


It's a text filter that can parse CSV style input (multiple values per row separated with ";" semicolons) and generate text based on a template applied per input row
Download: TemplateFilter_20100930.zip
Instructions:
Template format:
* The example batch file is the following:
dir /b | TemplateFilter TestTemplate.txt > TestOutput.html start TestOutput.html @pause
* The example template (to create an HTML link for each filename returned by "dir /b" [b=bare mode] command) is as follows:
%1

%1, %2, etc. in the template text are placeholders for column values of each input row - columns are separated by ";", however you could modify the code to change this or add a 2nd command-line parameter for the caller to define the separator character
Source code:
Source code in Object Pascal / Delphi (the .DPR file holds the Delphi command-line project code) included
(C)opyright 2010 - Zoomicon / George Birbilis
Free to use / give due credit


Shown in the heatmap below are genomic alteration and expression values for a cohort of TCGA glioblastoma patients. Each gene-patient field in the heatmap contains values for Expression changes, Mutation and CNA status and Genomic Alterations, which is an integration of the latter two. Mutations are shown in green, CNA loss in blue and CNA gain in red. Expression values shift from blue to yellow.
The heatmap is sorted by the column annotation which represents the glioblastoma subtype. The row annotations contain information for the bias towards functional mutations (fm-bias), mutation frequency (mut-freq), and bias of mutational clustering in the gene (clust-bias).


JSONLint Partners
Check out their products!JSONLint is a validator and reformatter for JSON, a lightweight data-interchange format. Copy and paste, directly type, or input a URL in the editor above and let JSONLint tidy and validate your messy JSON code.
JSON (pronounced as Jason), stands for "JavaScript Object Notation," is a human-readable and compact solution to represent a complex data structure and facilitate data interchange between systems. It's a widespread data format with a diverse range of applications enabled by its simplicity and semblance to readable text. As such, it's used by most but not all systems for communicating data.
There are several reasons why you should consider using JSON, the key reason being that JSON is independent of your system's programming language, despite being derived from JavaScript. Not only is JSON language-independent, but it also represents data that speaks common elements of many programming languages, effectively making it into a universal data representation understood by all systems.
Other reasons include:
Using JSON doesn't require any JavaScript knowledge, though having such would only improve your understanding of JSON. And though the knowledge of JavaScript isn't necessary, following specific rules is:
You can achieve proper JSON formatting by following these simple rules. However, if you're unsure about your code, we suggest using JSONLint Validator.
Programming can be challenging, as it requires enormous attention and excellent knowledge of the programming language, even as simple as JSON. Still, writing codeis tricky, and finding an error in JSON code can be a challenging and time-consuming task.
The best way to find and correct errors while simultaneously saving time is to use an online tool such as JSONLint. JSONLint will check the validity of your JSON code, detect and point out line numbers of the code containing errors. It's an excellent way to correct errors without wasting hours finding a missing coma somewhere inside your code.
JSONLint is an online editor, validator, and reformat tool for JSON, which allows you to directly type your code, copy and paste it, or input a URL containing your code. It will validate your JSON content according to JS standards, informing you of every human-made error, which happens for a multitude of reasons – one of them being the lack of focus.
Using JSONLint, you can quickly find any errors that might've occurred, allowing you to focus more on the rest of your code than on a tiny error itself.
"json"
parameter. Here's an example URL to test.?reformat=compress
to the URL.'STRING'
- You probably have an extra comma at the end of your collection. Something like { "a": "b", }
'STRING'
, 'NUMBER'
, 'NULL'
, 'TRUE'
, 'FALSE'
, '{'
, '['
- You probably have an extra comma at the end of your list. Something like: ["a", "b", ]
{ "key": "value" }
If you use a Windows computer you may end up with different results. This is possibly due to the way Windows handles newlines. Essentially, if you have just newline characters (\n)
in your JSON and paste it into JSONLint from a Windows computer, it may validate it as valid erroneously since Windows may need a carriage return (\r)
as well to detect newlines properly. As a solution, either use direct URL input, or make sure your content's newlines match the architecture your system expects!
Maintained by CircleCell. Thanks to Douglas Crockford of JSON and JS Lint, and Zach Carter, who built a pure JavaScript implementation. You can download the JSONLint source code on GitHub.


Petition seeks medical marijuana for ailing household pets
by MORGAN LEESANTA FE, N.M. (AP) - New Mexico is considering whether to extend its medical cannabis program to dogs with epilepsy and people with attention deficit disorder.
Petitions for new qualifying medical conditions have been filed with the Medical Cannabis Advisory Board at its upcoming meeting in December. The Department of Health withheld the names of petition sponsors.
One petition cites recent studies in veterinary medicine to suggest authorization of cannabis for animals coping with seizures. Cannabidiol derived from hemp or marijuana already is widely marketed for pets.
Another petition would allow marijuana for attention deficit-hyperactivity, anxiety disorder and Tourette’s syndrome.
New Mexico’s medical cannabis program has opened its doors to nearly 80,000 patients who cope with conditions from cancer to HIV. A large majority are diagnosed with post-traumatic stress disorder or severe chronic pain.
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


Git-it teaches the essential, everyday Git commands developers use everyday along with the GitHub Flow, the way developers collaborate on GitHub.
Some challenges require an internet connection, so you'll need to be online to complete Git-it. But you can always open the app and view the challenges and resources offline.
Git-it uses the real terminal, Git and GitHub (rather than emmulating them). When you finish you'll have real repositories on your GitHub account and green squares on your contribution chart!
This app is built with HTML, CSS and JS and uses the Electron library. All of the code for Git-it is online in its repository on GitHub. Git-it is a labor of love by @jlord and kind contributors.


Creating an Artificial Intelligence Library: Manipulating DOM elements with Timers, Sorting Arrays within Web Workers


"I can't see us qualifying if I'm truthful" - Kevin Doyle on Ireland's Euro 2020 hopes
by Niall McGrathFormer Irish striker Kevin Doyle believes Mick McCarthy's team will not qualify for next summer's European Championship finals.
The Boys in Green were drawn away to Slovakia in the first semi-final of the playoffs and a potential meeting against Northern Ireland awaits in the final if Michael O'Neill's side can see off the Bosnia and Herzegovina challenge in the other semi-final.
The Wexford man and horse breeder joined Off The Ball's Friday Night Racing to speak about his involvement in the Irish horse racing scene.
Tough
But when it came to football matters, Doyle wasn't so confident when asked about the team's chances of progressing through 'Path C' of the Euro 2020 playoff section.
"I just saw the draw before I got on to you, and we are away and then away again if we get to the final," he said.
"It's going to be tough, it's Northern Ireland away and then Bosnia Herzegovina - so, not easy that. I can't see us qualifying if I'm truthful."
Mick McCarthy's Ireland side drew 1-1 with Denmark. But it wasn't enough to qualify automatically for next summer's event. Aspects of the approach on Monday night pleased Doyle. But he also thinks Ireland could have asserted themselves more rigorously against a "poor" Danish performance.
"Seanie Maguire came on but came on out wide," he said.
"He didn't really come on as a centre-forward, did he? I don't know, I just thought we could have gone for it a wee bit more."
He also discussed his coaching and punditry experiences since retiring as a player.
You can watch the full Kevin Doyle interview above via our YouTube channel in which he discusses his avid involvement in horse racing. Our racing coverage is in association with Horse Racing Ireland.


--- layout: post title: Small Business Capabilities Example comments: true category: professional ---
In April of this year, I spent a week in New York attending Udi Dahan's Advanced Distributed Systems Design course. It was a great course that taught me a lot and I've been thinking about it and trying to apply those teachings since.
I will probably blog more about the course in the future. But just to give a 10,000ft view for purposes of this post, Udi preaches service-oriented architecture in which each service is totally autonomous and owns its data completely. They communicate via events using messaging. The separation of these services is kept complete to the point that the data is own aggregated on the client by retrieving the data from each service and using a UI framework like Backbone to aggregate the data.
I spent a few lunch hours at work whipping up an insanely small sample web application that:
It is available for anyone to download via:
http://github.com/ddonahue/BusinessCapabilitiesSample
Let me know if you any problems getting the code or getting it to run. I built it in VS2012 and it targets .NET 4.5.
My hope was that, although simple, it provides a starting point to show people how a system broken out into services could be built. I hope it lets people start to reason about how a service-oriented architecture might look, how messaging works, how UI composition could work, etc. I'm hoping it facilitates conversation. I encourage questions and comments.
One thing I'd like to mention is that I did NOT compose data in the web client. I found it easier to compose data from different services in the MVC controllers, or presentation layer. This was done for ease and also because javascript UI composition was one of the most debated topics in the course. I personally find it to be a good suggestion for complete and total autonomy between services, but I think having each service expose a read service to your presentation service (whether that be web or thick client) is a good tradeoff.
I may do a series of follow-up blog posts where I highlight different parts of the project with a more in-depth discussion.
Please bear in mind that it's quite obviously a toy application and a lot of care was NOT put into it around removing duplicate code, best practices, etc.
Hopefully someone finds this useful.


Proton3DInterpreter¶
Instead of directly listing everything the Proton3DInterpreter does by default, this is a quick page on how to edit it since all of the functions here have their Proton counterparts already documented.
So, you want to switch Proton’s underlying engine.
Before you embark on this journey, here are some things to note:
The Proton3DInterpreter doesn’t do anything new - its purpose is to do everything in the documentation, but actually be the part that speaks to whatever engine you are using. (In this case, it’s babylon.js. You should check it out at babylonjs.com!)
Make sure to always return the same things that have been returned in the default Proton3DInterpreter!
Comments should help you on your way. I have quite a few of them, so I do hope that helps!
Proton3DObject functions are in the “Proton3DObject” sub-object, and the same applies for the Proton3DMaterial class.
The Proton3DInterpreter works in a way where it is initialized by the scene with the all parameters from [scene].init. It is a class, so a new instance is created here, but keep in mind that you will only need one scene/interpreter combination - that which Proton automatically makes.
Still up for the task? Here’s how you begin:
Redefine the Proton3DInterpreter in a new JavaScript script, imported after Proton.
Proton3DInterpreter = class ...
Paste the current Proton3DInterpreter (located at [Proton]/engine/wrapper.js) into where the word “class” is marked in step 1, and remove the “Proton3DInterpreter” from your pasted text (or else you’d declare it twice).
Now you can start! Wait, you probably want to import your scripts in a similar fashion to what Proton does. If you need to import your scripts with a quick and easy fashion, here is how Proton does it (note that you can change script paths in Proton to local ones):
function init( scripts ) {
scriptStats.maxScripts = 0;
if ( ! scripts ) {
scripts = {
ammojs: "https://cdn.babylonjs.com/ammo.js",
babylonjs: "https://cdn.babylonjs.com/babylon.js",
babylonjs_materials: "https://preview.babylonjs.com/materialsLibrary/babylonjs.materials.js",
babylonjs_loaders: "https://preview.babylonjs.com/loaders/babylonjs.loaders.js"
};
}
scriptStats.scripts = scripts;
// Babylon.js
importScript( scripts.babylonjs, true, function() {
// Stuff that creates the sky + more materials
importScript( scripts.babylonjs_materials, true );
// Stuff that loads files like glTF
importScript( scripts.babylonjs_loaders, true );
// Physics!
importScript( scripts.ammojs, false );
} );
}
Now you can get to work! Make sure you know what you’re doing, as this can break Proton. Don’t worry if it is! You can always just repeat these steps and start fresh. This is a tedious job after all, so I wish you good luck!


This intention extracts out increment or decrement
operations that are used inside other statements as separate statements. Due to
the inherent possibility of side effects in this operation, this intention may
alter the semantics of the altered statements.
Powered by JavaScript IntentionPowerPack


{% extends "layout.html" %} {% block page_title %} Apply for European Structural and Investment Funding {% endblock %} {% block content %} {% include "includes/phase_banner_alpha.html" %} Home Call list Application overview Project Capital Projects Documents {% include 'includes/page_errors.html' %} Project (4 of 4) Capital Projects Documents back Capital Projects Documents The following accompanying documents should be provided for all Capital Projects applying for ERDF. Accompanying documents for Capital Projects applying for ERDF Evidence that the applicant has/will have control of the site to deliver the project. Specification of the document or acceptable alternative Freehold or leasehold title for the project or signed Heads of Terms between applicant and vendor for land/building acquisition. Comment including name of document and explanatory description where the document does not fully meet the required specifications. Advise whether a document is not applicable for the project Accompanying documents for Capital Projects applying for ERDF State Aid Report Specification of the document or acceptable alternative A State Aid Report, addressed to the Applicant and produced by a suitably qaulified professional organisation (e.g a law firm or accountant) which lists all the Project costs used to determine the State Aid intervention rate gives an opinion as to whether each cost is eligible analyses whether the proposed award to the Applicant meets all the requirements of the specified State Aid scheme sets out all the information required for Article 6 of regulation 651/2014 (if applicable) If the Applicant intends to use the value of any land or buildings in the match funding calculation, the report must provide an express explanation as to how this is State Aid compliant, if necessary using the information set out in the independent valuation report. Comment including name of document and explanatory description where the document does not fully meet the required specifications. Advise whether a document is not applicable for the project Save and continue Cancel and return to dashboard {% include "includes/application_info.html" %} {% include "includes/secondary_nav.html" %} {% endblock %}
The following accompanying documents should be provided for all Capital Projects applying for ERDF.
Evidence that the applicant has/will have control of the site to deliver the project.
Freehold or leasehold title for the project or signed Heads of Terms between applicant and vendor for land/building acquisition.
State Aid Report
A State Aid Report, addressed to the Applicant and produced by a suitably qaulified professional organisation (e.g a law firm or accountant) which
If the Applicant intends to use the value of any land or buildings in the match funding calculation, the report must provide an express explanation as to how this is State Aid compliant, if necessary using the information set out in the independent valuation report.


|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
| Interface Summary | |
|---|---|
| Bag<E> | Defines a collection that counts the number of times an object appears in the collection. |
| BidiMap<K,V> | Defines a map that allows bidirectional lookup between key and values. |
| BoundedCollection<E> | Defines a collection that is bounded in size. |
| BoundedMap<K,V> | Defines a map that is bounded in size. |
| Buffer<E> | Defines a collection that allows objects to be removed in some well-defined order. |
| Closure<T> | Defines a functor interface implemented by classes that do something. |
| Factory<T> | Defines a functor interface implemented by classes that create objects. |
| IterableMap<K,V> | Defines a map that can be iterated directly without needing to create an entry set. |
| KeyValue<K,V> | Defines a simple key value pair. |
| MapIterator<K,V> | Defines an iterator that operates over a Map . |
| MultiMap<K,V> | Defines a map that holds a collection of values against each key. |
| OrderedBidiMap<K,V> | Defines a map that allows bidirectional lookup between key and values and retains and provides access to an ordering. |
| OrderedIterator<E> | Defines an iterator that operates over a ordered collections15. |
| OrderedMap<K,V> | Defines a map that maintains order and allows both forward and backward iteration through that order. |
| OrderedMapIterator<K,V> | Defines an iterator that operates over an ordered Map . |
| Predicate<T> | Defines a functor interface implemented by classes that perform a predicate test on an object. |
| ResettableIterator<E> | Defines an iterator that can be reset back to an initial state. |
| ResettableListIterator<E> | Defines a list iterator that can be reset back to an initial state. |
| SortedBag<E> | Defines a type of Bag that maintains a sorted order among
its unique representative members. |
| SortedBidiMap<K,V> | Defines a map that allows bidirectional lookup between key and values and retains both keys and values in sorted order. |
| Transformer<I,O> | Defines a functor interface implemented by classes that transform one object into another. |
| Unmodifiable | Marker interface for collections15, maps and iterators that are unmodifiable. |
| Class Summary | |
|---|---|
| ArrayStack<E> | An implementation of the Stack API that is based on an
ArrayList instead of a Vector , so it is not
synchronized to protect against multi-threaded access. |
| BagUtils | Provides utility methods and decorators for
Bag and SortedBag instances. |
| BeanMap | An implementation of Map for JavaBeans which uses introspection to get and put properties in the bean. |
| BeanMap.MyMapEntry | Map entry used by BeanMap . |
| BufferUtils | Provides utility methods and decorators for Buffer instances. |
| ClosureUtils | ClosureUtils provides reference implementations and utilities
for the Closure functor interface. |
| CollectionUtils | Provides utility methods and decorators for Collection instances. |
| ComparatorUtils | Provides convenient static utility methods for Comparator
objects. |
| EnumerationUtils | Provides utility methods for Enumeration instances. |
| ExtendedProperties | This class extends normal Java properties by adding the possibility to use the same key many times concatenating the value strings instead of overwriting them. |
| FactoryUtils | FactoryUtils provides reference implementations and utilities
for the Factory functor interface. |
| IteratorUtils | Provides static utility methods and decorators for Iterator
instances. |
| ListUtils | Provides utility methods and decorators for List instances. |
| MapUtils | Provides utility methods and decorators for
Map and SortedMap instances. |
| PredicateUtils | PredicateUtils provides reference implementations and utilities
for the Predicate functor interface. |
| SetUtils | Provides utility methods and decorators for
Set and SortedSet instances. |
| TransformerUtils | TransformerUtils provides reference implementations and
utilities for the Transformer functor interface. |
| Exception Summary | |
|---|---|
| BufferOverflowException | The BufferOverflowException is used when the buffer's capacity has been exceeded. |
| BufferUnderflowException | The BufferUnderflowException is used when the buffer is already empty. |
| FunctorException | Runtime exception thrown from functors. |
This package contains the interfaces and utilities shared across all the subpackages of this component.
The following collection implementations are provided in the package:
|
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |


BiobankCloud - Terms of Service
- We will not outsource your genomic data to the third parties.
- Your uploaded data can be erased anytime you wish.
- We keep registration information such as name, email, address, IP for accountability purposes.
- We provide platform audit trails about your data usage.
- The uploaded data are kept securely in a cloud with limited access.
- I agree to store my uploaded NGS data for a specified period of time and when the retention period finishes platform delete all my uploaded studies.
- I confirm that I will use the BiobankCloud platform solely for legal and lawful research problems in context of my institution.
- I agree to provide evidence of consent for my uploaded data.
- I agree to avoid running cross-link analysis that are not defined lawfully by my home organization.
- I agree an auditor party can inspect my platform usage.
- I agree not to share any of my security credentials with other entities.
- I agree to inform the BiobankCloud in case of any suspicious activity on my account.
- I agree not to use the platform including my data analysis for purposes not defined for the studies.
- ...


10 Expectations High School Coaches have of Youth Lacrosse Players
1.
Can play right and left handed
2.
Protects the stick by holding it vertically. Knows the importance of ball movement
4.
Knows how to move without the ball
5.
Ability to see the field and communicate to other players
6.
Knows defensive positioning, footwork and holds
7.
Knows how to play off-ball defense: flat triangle, slides, crease defense
8.
Knows concepts of different offensive sets, can play freelance
9.
Can work on their own. Strong ethic to take it to the next level
10.
Is a well rounded person- Balances sports with good academics. Enjoys other sports. Maintains a great attitude.


Estonia Will Host One of the World's Largest Cyber Defense Exercises
Estonia will host one of the world's largest cyber defense exercises in a month. This was announced by NATO Secretary General Jens Stoltenberg after meeting with Estonian President Kersti Kaljulaid.
1000 experts from Europe and North America will participate in the exercise. They are expected to test their ability to protect data networks at national level and within the Alliance.
“Such exercises contribute to our collective security. And demonstrate the importance of transatlantic unity.”, Stoltenberg said.
Stoltenberg noted that he and Kaljulaid discussed the forthcoming meeting of NATO leaders in London. in December.
At the meeting it will be noted that by the end of the year, the countries of the alliance (excluding the US) will make military spending $ 100 billion more than projected, he said.


--- title: Elevator Pitch author: Siobhan Oberg date: '2021-08-04' slug: elevator-pitch categories: - Capstone tags: - Capstone - Writing - Background ---
How can we make data science more accessible? How many peole have tried to learn how to use R or python or SQL and gave up because they were overwhelmed or didn’t know where to start? I certainly know that the first time I was exposed to R, I was completely lost. Yet, there are so many disciplines where having some type of coding and data science experience is extremely useful. This is especially true in the field of biology. My goal with this project is to create a website that future biology students at Willamette can refer to as a starting point when using RStudio. This project stems from Professor David Craig’s SCRP project beginning in the summer of 2021. Professor Craig’s work focuses on the conservation of the habitat of the slender billed white breasted nut hatch, particularly the Oregon White Oak. My project will be the beginning of Professor Craig’s team using data analysis to help conserve these trees and birds.


--- layout: post esbma_id: 3028 title: Welcoming Dropbox Datastore date: 2013-07-10 15:00:00 ---
So I guess maybe I need to stop telling people that Zumero is "like Dropbox, except for data instead of files". :-)
This week, Dropbox announced their Datastore API.
Right now, the Datastore API only supports single-user scenarios, but on the Dropbox forums, some "Dropboxer" named "Steve M." clearly says that multi-user is in their plans. I don't know who Steve is, but I consider this kind of remark in a developer forum to be more authoritative than a press release. So I'm going to skip the blog article where I say that "Datastore is nothing more than a cross-platform iCloud" and start considering Dropbox to be a Zumero competitor immediately.
And I'm going to cautiously say that this is a good thing.
Well fine. I'll admit that this news is not all good. Those of you who have been reading my stuff for a long time might recall a piece I wrote ten years ago where I said the ideal competition is "big and dumb". As far as I can tell, Dropbox doesn't really fit into that quadrant. They seem pretty smart. And even though they are FAR bigger than Zumero (how many private companies have done a 100M acquisition anyway?), they're still pretty small (221 employees, 257M funding, according to Crunchbase). So if I were to choose a competitor, I'd prefer somebody bigger and dumber than Dropbox.
Still, this news is mostly good. Why? Because (1) now we have a category, and (2) Zumero's differentiation is solid.
Mobile data sync has been in a weird place. Some people see Zumero and say, "OMG this is so cool and it's exactly what I needed and how does it work?". Other folks send us notes and say, "Why would anybody want this? Everybody has completely reliable LTE, right?"
Anecdotally, the need for sync in mobile is quite clear. One example: StackMob (one of those cool Backend-as-a-Service companies) says, "The ability for apps to work offline is the most requested feature we see from developers."
I've been doing my part to evangelize the cause, such as I did in my previous blog entry, Keep your CRUD off the Internet. But nobody listens to me.
Oh, sorry, dear reader. I didn't mean to imply that you are a nobody. I appreciate you. Really, I do.
A bigger voice for the cause is Couchbase co-founder Chris Anderson, who tends to run around claiming that Sync is the Future of Mobile Data. (Godspeed, Chris.)
But all this localized noise isn't the same as having a widely understood category. A category gives people a label which can be used to very quickly (and with some inaccuracy) explain what a product is. When somebody says, "It's a first-person shooter", you know immediately what to expect. You know that it will be somewhat like Doom (if you're my age) or Halo (if you think Michael Jackson was always white). And if by chance you are not familiar with the label, you can expect to Google it and get it explained quickly. You know that Wikipedia will have an overview, and probably a list.
Products without a category are incredibly hard to sell. Most of them fail or stay confined to a small niche. Two of my favorite examples of this point are Segway and Hypercard. Both were far more successful than the average product without a category. And yet, they both faced challenges arising from the absence of a widely-understood label. In both cases, what I remember most is all the people asking, "What is it?"
 Previously, it was basically just Couchbase and Zumero. And we don't have our series A yet. And our closest airport uses regional jets. So we don't count. Which means actually it was just Couchbase. I don't know what the official criteria are for the existence of a category, but having only one "funded company near a real airport" is not enough.
Now we have two. Couchbase and Dropbox. (Plus that little company out in the Illinois cornfield, the one that starts with a Z.)
Do I really want these two companies as my competition? No, but Zumero is probably not big enough to get a category started, and Couchbase and Dropbox probably are. And we must have a category. Having competition is rarely fatal. Selling without a category usually is.
Shout out to Forrester analyst Michael Facemire: Hello Michael, what's happening? Ummm, I'm gonna need you to go ahead and begin writing about this mobile database sync category. So if you could start drafting some research about Couchbase Lite and Dropbox Datastore, that would be great, mmkay.. oh oh! and I almost forgot ahh, I'm also gonna need you to go ahead and mention Zumero in there too, kay. We ahh have a great product, but we're two hours from Chicago, and ah, we sorta need to play catch up.
There is no reason to be scared of competition if your differentiation is solid. For most people, this rule is extremely counterintuitive. They see competition and they run away. They think the only way to be successful is to have a product that is better.
That thinking is correct but incomplete. Actually, you need to have a product which is better for some [sufficiently large] group of customers.
There's nothing wrong with the word "better". Being better is good. Making your product better is good. Three cheers for "better".
But I have found that it is often more productive to think less about how your product can be better and think more about how your product can be different.
The word "better" connotes a simple two-person race or game. Run faster. Hit harder. It encourages an inward focus. It drives attention to the product and your competitors. These things aren't all bad.
But the word "different" suggests that you ask for whom your product will be better. It drives attention to the customer. It wants you to think about a [sufficiently large] group of people whose different needs lead them to see your product as the best choice.
In marketing terms, this is Ries and Trout Law #2: "If you cannot be first in your category, setup a new category" (which is another thing I wrote about a long time ago).
So I feel great about Zumero because our product is different from Couchbase and Dropbox in very significant ways, the most important of which is SQL.
I'm not interested in the religous war, so don't email me to explain how Mongo saved your marriage. NoSQL is cool. But the simple fact is that lots of companies have a massive investment in SQL. And those companies want mobile solutions which integrate with their existing stuff using technologies they already know. There is enormous business opportunity for us.
Is Zumero always better than Couchbase Lite and Dropbox Datastore? For every single situation? Certainly not. But for companies who prefer SQL, it certainly is.


{% verbatim %}
*Be sure to log out when you are done*
Outfits
All outfits must be checked in person by December 9th. All outfit checks will be held in the AOII suite.
Remaining outfit check times:^^^ Please fill this form out by December 5th. This form is so that you have access to your dorm room during pre-recruitment/recruitment. You only need to fill out the column highlighted in yellow: student ID, building name, ROOM (not suite) number, and the date you are returning. (Most of you should be returning on January 8th. Reminder: ERC should be coming back on January 7th- unless you've spoken to me.) If you live off campus in res-life housing, please write your address and room number. If you live off campus in non-reslife housing, please write that you live in non-reslife housing in the column that says building name- and leave the other columns blank. Thank you!
Use the spreadsheet above to coordinate rides back to campus with sisters!
Use this list to help you pack your bag for pre-recruitment/recruitment. Feel free to add to this list if you have additional suggestions!
Recruitment Schedule:
Monday, January 8th at 5pm: Pre-recruitment begins
Tuesday, January 9th: Pre-recruitment
Wednesday, January 10th: Pre-recruitment
Thursday, January 11th: Arete Day
Friday, January 12th: Philanthropy Day
Saturday, January 13th: Sisterhood Day
Sunday, January 14th: Preferences Day
Monday, January 15th: Unity Day & Bid Day


(Part of the Series ALL THE BOYS AND GIRLS IN THEIR TIME)
RATING (0 TO 10): 7.9
Shown at the Philadelphia Festival of World Cinema Running Length: 0:59 MPAA Classification: Not Rated (Mature themes)
Cast: Circe, Julien Rassam, Joelle Cohen, James Brown Director: Chantal Akerman Screenplay: Chantal Akerman Cinematography: Raymond Fromont Distribution unknown In French with subtitles
ALL THE BOYS AND GIRLS IN THEIR TIME is a series of films commissioned by the French-German TV station Arte. Ten directors were asked to participate by making a movie about their teenage years. Each film had to include at least one party scene which highlighted the music of the time. PORTRAIT OF A YOUNG GIRL AT THE END OF THE 1960S IN BRUSSELS, Chantal Akerman's entry, takes place in April of 1968 and, as the title states, occurs on the streets of Brussels. Aside from a few supporting figures, there are really only two characters: Michelle, a thoughtful teenage loner who has given up school, and Paul, a guy she meets in a movie theater.
Like Richard Linklater's BEFORE SUNRISE, this movie is about two people walking around a European city, getting to know one another. Some of the subjects of conversation here even match those of Linklater's picture. However, while SUNRISE is a love story, PORTRAIT is something less romantic. It's about two people learning the other's secrets, but never really connecting.  "Even when I'm happy," she says, "I'm in pain, but I never show it." Paul, on the other hand, is eager to soothe her, but it's rare that she lets him within arm's distance.
Akerman, known for extremely slow-moving character dramas, speeds up the pace a little here, although this film certainly doesn't fly by. Nevertheless, during the one-hour running time, we get to know both Michelle and Paul, and are given an opportunity to ponder the subjects that arise during their rambling discussions. Michelle is an especially fascinating person, and perhaps the most refreshing aspect of PORTRAIT is that it allows us to spend time with her without foisting distracting plot complications upon us. Akerman has painted just what the title suggests -- a portrait for all who enjoy a slow-paced, leisurely look at a select character and her circumstances.
- James Berardinelli<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews