In this case study I illustrate the functionality of
ExpressionMatrix2
software
on expression data from
Darmanis et al., 2017, "Single-Cell RNA-Seq Analysis of Infiltrating Neoplastic Cells at the Migrating Front of Human Glioblastoma", Cell Reports 21, 1399-1410, October 31, 2017.
Special thanks to the paper's authors for providing early access to their data.
This is a small data set with under 4,000 cells.
The ExpressionMatrix2
software is designed to comfortably run
on much larger numbers of cells (it was actually run on a data set with over 1 million cells without any downsampling),
so the compute time required to run the case study is minimal,
and all phases of the run can be performed interactively.
This page contains detailed information sufficient to run the ExpressionMatrix2
software on
these data. It contains the following sections:
Getting started
Setting up the run
Downloading input files
The input phase of the case study
Finding pairs of similar cells
A first look at the data
Limiting the gene set used to compute cell similarity
Clustering
Conclusion
Running this case study can serve as a useful introduction
to performing a run on your own data.
To begin, use these directions to make sure you have access
to the software and an environment in which it can run.
When this step is completed, your environment variable PYTHONPATH
will be set to a directory containing a working version of ExpressionMatrix2.so
appropriate to your platform.
To run this case study you will need to use ExpressionMatrix2
release 0.3.0 or later.
Make a copy of directory tests/CaseStudy1
from the
ExpressionMatrix2
release you are using.
To avoid possible errors or problems due to
incompatibilities between releases,
make sure to use the same release from which
your ExpressionMatrix2.so
originates.
In the rest of this page, I will call this copy the
CaseStudy1
directory, and assume that all commands are
run from here.
At this point, your CaseStudy1
directory
only contains some Python scripts and a README
file.
The run requires the following input files, which can be downloaded from here:
GBM_raw_gene_counts.csv
GBM_metadata.csv
CaseStudy1
directory.
These files will be accessed with read-only access.
You may want to protect them by changing their access
permissions accordingly, for example using the following command:
chmod ugo-w *.csv
The expression matrix in file GBM_raw_gene_counts.csv
consists of raw read counts for each gene,
which are integer numbers.
However, the ExpressionMatrix2
software
accepts as input expression counts which are floating point numbers,
for generality. This allows applying, if desired, pre-normalization steps
and/or non-linear transformations of the raw read counts
(for exampe, logarithmic transformations to emphasize the importance
of low expression genes).
You can begin the run using the following command:
./input.py
This causes the ExpressionMatrix2
software to read the input files and create a binary
representation of the expression matrix
in GBM_raw_gene_counts.csv
and of the cell meta data in GBM_metadata.csv
.
This will run quickly (under one minute),
and the run time will be dominated by the
time to read and parse input file GBM_raw_gene_counts.csv
containing the expression matrix.
After this, the two input files will no longer be needed.
Instead, all required information is stored in binary files in the
data
directory that was created in your
CaseStudy1
directory.
Additional commands to be run later will create
additional binary files in the data
directory that will contain various types of
data structures used by the ExpressionMatrix2
software.
These binary files provide fast sequential or random access to
the required data structures and are quite compact.
At this point the size of the data
directory
is about half the size of the input csv files, and
is dominated by the space necessary to store the expression
matrix in a compact, sparse format
(file data/CellExpressionCounts.data
).
Note that, if for any reason you want to restart the run,
you need to remove the data
directory manally before running input.py
again.
This is a safety feature to prevent inadvertent
data loss.
The scripts in the CaseStudy1
directory
assume you are using a platform that uses Python 3.
If you use Python 2, you need to use the following instead of the
above command:
python input.py
This also applies to all invocations of Python scripts for the rest of the case study.
See here for details of input.py
.
With the expression data and cell meta data now stored
in the binary formats required by the ExpressionMatrix2
software,, the next step is to find pairs of cells that have similar
gene expressions, with similarities computed taking all genes
into account. This is done using command
./compute1.pyThe computation is fast (only a few seconds) as it is done using Locality Sensitive Hashing (LSH). See here for details of
compute1.py
.
At this point we are ready to take a first look at the data
using the http server functionality of the ExpressionMatrix2
software.
runServer.py
to start the ExpressionMatrix2
in
http server mode:
./runServer.pyThe code in
runServer.py
is very simple. It simply
creates the ExpressionMatrix
object just like the
compute1.py
script did, then invokes function
explore
to start the http server.
When the server starts, it writes a message containing the port number
on which it is listening for connections - usually port 17100.
The server will continue to run until you interrupt it using Ctrl-C
or by killing the process. However, most of the time
it will be doing nothing - it will just be waiting
for http requests from browsers.
With the server running, we can use a browser to explore the data. The browser communicates with the server using the http protocol, and can run on the same machine as the server, or on a different machine, as long as the two machines can communicate over a network or via the Internet.
In the simplest mode of operations, the browser runs on the same machine as the server. Start the browser and point it to this URL:
http://localhost:17100(Make sure to change the port number from 17100 to whatever port number the server is listening on, which you found out when starting the server).
If the browser is running on a different machine, enter the same URL but replace localhost with the name or ip address of the machine where the server is running. For example, the URL could look like this:
http://server.company.com:17100or
http://<IP_ADDRESS>:17100For this to work, however, it may be necessary to change the configuration of firewall software or firmware on the server or on one of the routers in between by "opening" TCP port 17100, and preferrably the range 17100-17110 to allow some flexibility, as the server will try higher numbered ports if port 17100 is not available.
Security warning: depending on your network and firewall configuration, it may be possible for anybody with network access to the server to look at your data and manipulate them. Use appropriate security precautions to prevent unwanted access to the data. Your IT department will be able to provide security advice.
The ExpressionMatrix2
software was developed
mainly using the Firefox and Chrome browsers.
However most browsers will work, including browsers available
on cell phones and other mobile devices.
When you connect your browser to the server,
the browser window will look like this:
The page summarizes the number of cells genes in the expression matrix
we are looking at, and then displays the README file in the
CaseStudy
directory. At the top of the page are
several buttons that can be clicked to explore the data set in a variety of ways.
For example, you can display information about genes, cells and cell meta data.
You can also create and manipulate gene sets and cell sets, which are
subsets of the genes and cells in yiour expression matrix.
Initially only the AllGenes
and AllCells
sets exists,
but you are free to create additional sets in a variety of ways.
As an example of using this functionality to explore the data, click on
Cell Sets
and then, in the table of cell sets, click
on the hyperlink for cell set AllCells
.
This will display a table of all the cells in this cell set
(which of course includes all 3589 cells in our expression matrix),
and also gives you the ability to select meta data fields to be displayed.
For example, in the field Select cell metadata to display:
,
select Selection
, Location
, and Sample.name
(in most browsers
you will need to press the Ctrl key while selecting the second and third fields).
Then click on Redisplay table
to obtain a table of
cells including the meta data fields you selected:
You can then click on any cell to get detailed information about it:
This also includes gene expression for the cell, which can be seen
by scrolling down:
As another example of using the http server functionality to explore the data,
click on the Cell meta data
button on the top, then
under Histogram a meta data field
select the AllCells
cell set and select meta data name Sample.name
,
then click on Create histogram
.
We can also create a contingency table showing the
combined frequency of two meta data fields.
Click the Cell meta data
button on the top, then
under Contingency table for two meta data fields
select the AllCells
cell set and select meta data names Sample.name
and Location
,
then click on Create contingency table
.
You can familiarize yourself with the rest of the functionality to explore the data. Most of it should be self-explanatory.
We computed above pairs of similar cells
using script compute1.py
.
We can now use these pairs of similar cells to create a
cell similarity graph - an undirected graph in which
each vertex represents a cell, and two vertices
are joined by an edge if the corresponding edges have
similarity greater than a chosen similarity threshold.
To avoid regions in the graph with very high connectivity,
we use a k
parameter that causes only the
best k
neighbors to be kept for each vertex (k-Nearest
Neighbor or k-NN graph).
To create such a cell similarity graph (or simply cell graph)
you can click on button Cell graphs
at the top of the browser window.
Then, you can select graph creation parameters:
Cell graph name
: for this graph we will use all of our 3589 cells,
and our similar cell pairs were computed taking all genes into account.
Therefore, we will choose All
as the graph name.
Cell set name
:
we pick the only choice available, AllCells
, as we have not yet
created any additional cell sets.
Similar pairs name
:
we pick the only choice available, Lsh
, which is the only
set of similar cell pairs we created. As a reminder,
when doing that we took into account all genes
when computing cell similarities.
Similarity threshold
:
we will keep the default value of 0.5. Only cell pairs with similarity at least
0.5 will generate a graph edge. The similar cell pairs were computed
using a threshold of 0.2 (the default value for
similarPairs3
), so we will not lose
any edges due to insufficient information being stored in our similar cell pairs.
Maximum connectivity
:
this is the k
for the k-NN graph.
We will keep the default value of 20.
The similar cell pairs were computed using k
=100
(the default value for
similarPairs3
), so we will not lose
any edges due to insufficient information being stored in our similar cell pairs.
Create a new cell graph
.
This shows a page with a message stating the the graph had 84 isolated vertices, which were removed.
This means that there were 84 cells that no other cell with similarity at least 0.5.
These cells will not be present in the cell similarity graph.
Clicking on Continue
gets you back to the Cell graphs
page, which now shows the cell graph you just created, named All
.
You can display the graph by clicking on its name.
After a short wait to compute the graph layout using the Graphviz package,
the graph is displayed:
Hide graph edges
option and clicking on Redraw graph
.
Note that the Graphviz package is used exclusively to compute the two-dimensional layout of graphs for display. This layout is not used for any other purpose, including clustering (more information on clustering follows). It is just a visual aid.
You can experiment using the pink buttons to make the graphics larger, zoom in or out to visualize specific regions of the graph, and change the display size of vertices and the thickness of edges.
You can also color the graph in a variety of ways that should be self-explanatory. This includes coloring by expression of a specific gene, coloring by similarity to a specific cell, or coloring by categorical or numerical meta data. You can also click on a vertex to display the page for the corresponding cell. This complements the coloring options to allow you to get an idea of the characteristics of cells present in different regions of the graph.
The graph shows clumps that correspond to groups of cells with similar expression vectors.
In an overly simplified view of cell populations, each of these groups corresponds
to a "cell type". The reality, of course, is much more complex.
The ExpressionMatrix2
software provides clustering functionality
which finds these clusters automatically, and I will cover this functionality below.
The Darmanis paper used a commonly used clustering approach,
t-SNE,
to classify the cells in groups, and each cell contains two meta data fields
that describe the clustering computed by t-SNE:
Cluster_2d
contains the id of the cluster each cell was assigned to.
Cluster_2d_color
contains the color assigned to
the cluster each cell was assigned to.
These colors are the same colors used in Figure 2(A) of the Darmanis paper.
The colors are stored as strings in HTML
hex triplet
format, that, is in the form #RRGGBB, where RR, GG, BB are hexadecimal bytes
representing the red, green, and blue intensities.
To see where the t-SNE clusters are located in our cell similarity graph,
we can redisplay the graph, coloring each cell in the color given by its
Cluster_2d_color
.
To do this, in the form above the graph display check the Color by meta data field
button,
and in the selections to the right of that button
select meta data field Cluster_2d_color
and ask that the field be interpreted as a color
.
The graph display will no look like this:
We see that the clumps in the graph display correspond roughly to the t-SNE clusters.
The ExpressionMatrix2
graph was constructed
taking into account expression counts for all genes,
which means that the similarity of two cells is defined
as the regression coefficient between the expression counts
of the two cells, taking all genes into account.
In contrast, the Darmanis paper
used only 500 genes selected based on the variability of their
expression.
In the ExpressionMatrix2
software,
we can use gene sets to restrict the set of genes used.
Clicking on the Gene sets
button at the top of the browser page
leads to a page that offers a variety of ways to create a new gene set,
including by pasting a set of gene names.
This option could be used to define a gene set identical to the one
of 500 genes used in the Darmanis paper.
Another option is to use the dialog near the bottom of the page,
Create a gene set using gene information content
.
This creates a gene set based on an information content criterion
(e. g. a gene that is equally expressed in all cells has zero information content,
a gene expressed only in one of N cells has information content log2N bits).
We can select AllGenes
as the starting gene set,
AllCells
as the cell set used to compute information content,
request an information content of at least two bits,
and name the resulting gene set HighInformationGenes
.
The same operation could also be performed in Python code
using function
createGeneSetUsingInformationContent.
The resulting gene set has 22442 genes out of the 23368 total.
You can use the Gene sets
page to look at the new gene set in detail.
To see what genes were removed, you could create a new gene set
consisting of the set difference betwene gene sets AllGenes
and HighInformationGenes
.
You can also show the computed information content of each gene by using the dialog under
Show gene information content
near the bottom of the Gene sets
page.
Now that we have a new gene set, we can redo the computation of the
pairs of similar cells, this time taking into account only the
gene set we just created.
This is done by compute2.py
, which is very similar to
compute1.py
, except that it requests using the gene set we just created.
To run it, make sure ot first interrupt the http server (using Ctrl+C),
then run command
./compute2.py
Like compute1.py
, this takes just a few seconds for this small data set,
after which you can restart the http server:
./runServer.py
In the browser, click on the Cell graphs
button.
You will notice that cell graph All
we previously created
disappeared. This happens because graphs (contrary to gene sets
and cell sets) are currently not persistent.
In addition to recreating it, you can also create a new graph,
which you can name
AllHighInfo
,
which still uses cell set AllCells
,
but now uses the similar cell pairs LshHighInfo
just computed by compute2.py
.
With coloring by t-SNE color as before and displayed with edges hidden, the graph looks like this:
The clumps are generally more separated. However the table shows that 1596 vertices (cells) were isolated and were removed. This means that for each of the 1596 removed cells there was no other cell with similarity greater than 0.5, the default similarity threshold used to construct the graph. This means that almost half of the cells were removed. This is not surprising, because we discarded genes that were expressed in many cells, and were therefore generally increasing the similarity between cells.
To obtain a more informative graph,
we can create a new graph
in the same way, but choosing a similarity threshold of 0.2 instead of 0.5.
Call this new graph AllHighInfo2
.
Now the number of isolated cells that were removed decreases to 22.
With coloring by t-SNE color as before, the new graph looks like this:
Clearly, it can be useful to experiment with the graph creation parameters. Different choices can reveal different aspects of the data set.
The http server offers various means to investigate the details of this graph - for example, what type of cells are present in each of the clumps. To do this, you can use one or more of the following:
HighInformationGenes
), then redisplay the graph, coloring
by expression of those genes.
Selection
,
Location
, and
Sample.name
,
is particularly informative.
For example, hovering the mouse in the red region on the right
of the display shows that one of the cells there is cell 2235.
Clicking on it shows the page for cell 2235, which reveals that the
most expressed gene is CCL3
.
Here is the display we get if we color the graph by similarity to cell 2235:
And here is graph colored by expression of gene CCL3
:
This functionality can be used to explore gene expressions in the various "clumps"
visible in the graph.
The ExpressionMatrix2
software also provides clustering functionality
which can be used to automatically find clumps or clusters in a cell similarity graph.
It uses the
Label Propagation Algorithm to assign vertices to clusters.
Additional clustering algorithms may also be added in the future.
After clusters are computed, ExpressionMatrix2
also computes
similarities between the average expression vectors of each cluster,
and creates a Cluster Graph in which each vertex represents a cluster,
and two vertices are joined by an undirected edge if the similarity
between then average expression vectors of the corresponding clusters exceeds a
given threshold.
To compute the clustering, click on the Clustering
button near the top of the browser window,
then click on "Run clustering and create a new cluster graph".
A table appears, requesting various parameters for the clustering computation.
Here, specify AllHighInfo2
as the cell graph.
Leave all parameters at their default values except for setting
the minimum number of cells for each cluster to 50
and the similarity threshold for graph edges to 0.2
(the same value we used when creating the cell similarity graph).
Use the same name AllHighInfo2
as the name of the cluster graph to be created (cell graphs and cluster graphs
use different name spaces, so it's ok to use the same name).
Finally, click on Run clustering
.
A page showing log output for the clustering appears.
Here, click on Continue
to get back to ther Cluster graphs
page. This page will now contain a link to the newly created cluster graph
AllHighInfo2
.
Click on that link to get a display of the cluster graph:
Here, each circle corresponds to a cluster. You can hover on the circle to find out how many cells are in each cluster, and also to see the most expressed genes in each cluster. You can also get more detailed information on a cluster, including the average gene expression in the cluster and the list of cells that belong to it, by clicking on it. Each edge in the display is labeled by the similarity between the average gene expressions of the two clusters it joins.
You can also compare the gene expression of two clusters or sets of clusters.
To do this, in the page that displays the cluster graph, click on
Compare gene expression between clusters
.
In the dialog that appears, specify a "first set" consisting of cluster 0
(the cluster displayed in green) and a "second set" consisting of cluster 3
(the cluster displayed in magenta/fuchsia color).
According to the display of the cluster graph, the similarity
of the average expressions of these two clusters is 0.51.
Then click on Compare
.
You get the following display - a scatter plot of the average expression counts
in the second sets versus those in the first set.
Here, each point corresponds to a gene, and you can hover on a point to get the gene name.
This allows you to easily locate genes tha are over-expressed or under-expressed
in one of the two clusters relative to the other.
For example, the rightmost point in the display corresponds to gene CCL3
,
and from its position we can see that this gene is roughly 5 times more
expressed in the first set (cluster 0) then in the second set (cluster 3).
You can do the same comparison for arbitrary sets of clusters, not just individual clusters.
To see how the cluster correspond to clumps in the cell graph,
we can store the result of the clustering operation in a new cell meta data field.
To do this, click on the button labeled Store the cluster ids in this cluster graph
in cell meta data name
after specifying Cluster
as the name
of the cell meta data to be used.
Now go back to the display of cell graph AllHighInfo2
,
and color it using the meta data field we just created, Cluster
,
interpreted as a category.
The display of the cell graph will now look like this:
The color in this display correspond to the colors in the display of the cluster
graph, which allows you to locate each of the computed clusters in the cell graph.
You can then see that the general connectivity of the cel graph
is consistent with the graph connectivity of the cluster graph.
For example, we see from the cell graph that the green and bright purple
clusters (clusters 0 and 4) are close to each other,
and in fact the cluster graph shows a similarity 0.51 between those clusters.
You can also see that the the relative placement of clusters in the two graphs
are similar, even though the two-dimensional layouts,
which are used for display purposes only, are not necessarily consistent.
The cluster graph therefore describes in a synthethic way the clumps in the cell graph and their relative similarities. Of course, several parameters were used to construct the cell similarity graph and the cluster graph, and the actual clusters will depend on the choice of these parameters. This is to be expected, as the type and amount of desired clustering depends on what questions one wants to answer. Therefore, changing the creation parameters for the cell and cluster graphs can be used in the process of exploring and understanding the data.
Despite the above considerations, it is interesting to
compare the results of this clustering with
the clustering obtained via t-SNE in the
Darmanis paper.
To do this, click on the button labeled
oCell meta data
, then, under
Contingency table for two meta data fields
,
select cell set name AllCells
and meta data names Cluster
(the clustering we just computed)
and cluster_2d
(the t-SNE clustering from the Darmanis paper).
This displays a contingency table of the two clusterings -
that is, a table containing the number of cells
with each combination of the two clusterings.
For example, this shows that cluster 0 in our clustering (900 cells) is split into clusters
7 and 8 in the t-SNE clustering.
Conversely, t-SNE cluster 8 (1329 cells) is split between clusters 0, 3, 4, 7, and 10
in our clustering.
We see from our cluster graph display that, for example, the similarity
between the average expressions of clusters 0 and 3 is only 0.51,
so it probably makes sense to keep these are two separate clusters.
For other clusters, there is more agreement between the two clustering.
For example, t-SNE cluster 9 largely corresponds to our cluster 2,
and t-SNE cluster 2 largely corresponds to our cluster 11.
As discussed above, the relative merits of each clustering
can be dependent on the type of information we are trying to extract.
The ExpressionMatrix2
software allows quick exploration
of clustering alternatives, by making it fast and easy to generate
multiple cell similarity graphs and cluster graphs with different
creation parameters.
I used this case study to illustrate most of the functionality of
the ExpressionMatrix2
software currently available, but not all of it.
Most notably, this case study did not illustrate
the functionality to define cell sets - arbitrary subsets of
cells.
Once a cell set is defined, it can be used to create a cell
similarity graph, which will include only cells in the set.
This way you can restrict your investigation to a subset of cells of interest.
This can facilitate data interpretation by reducing distractions
due to cell populations unrelated to the topic of interest.


BusyWait is a low-level interface intended for busy waiting for short durations.
BusyWait is parameterised by its "precision" (milliseconds, microseconds, etc), identified by a type. This prevents, e.g., unintentionally mixing components expecting milliseconds with those expecting microseconds as those interfaces have a different type.
BusyWait's second parameter is its "width", i.e., the number of bits used to represent time values. Width is indicated by including the appropriate size integer type as a BusyWait parameter.
See TEP102 for more details.
precision_tag
- A type indicating the precision of this BusyWait
interface.
size_type
- An integer type representing time values for this
BusyWait interface.
dt
- Time to busy wait for.


Self-awareness: The ability to monitor our internal world, our thoughts and emotions as they arise. To understand our own strengths and weaknesses and to work on them so we can perform better.
Self-regulation: This is basically the ability to think before you act. To control your emotions and impulses and to avoid making careless decisions.
Motivation: Having the ability to be highly productive, effective in whatever you do and to be open to challenges.
Empathy: The ability to identify and understand the wants, needs and viewpoints of others around you. An empathetic person goes in with an open mind set when interacting with others and doesn’t stereotype / judge people too quickly.
Social skills: People with good social skills can work well in teams. Can manage disputes, communicate well and are strong at building/maintaining relationships.
IQ and EQ are completely different things. IQ is short for ‘Intelligence Quotient’ and is wholly focused on one’s intelligence level. IQ tests are standard tests of the brain’s technical strength, and measures things like math, logic and verbal strength. EQ (emotional quotient/intelligence) is measured on your ability to relate and interact with others. Good IQ may help you perform well in a test, but those with low IQs but high EQs may demonstrate remarkable insights with respect to people, emotions, and other areas of life.
Life is a sociable construct. Without the ability to function well within this relational environment, IQ can only get you so far. Emotional intelligence helps us in so many ways: From assisting in looking after our physical and mental well-being, through to the ability to inspire and work with others. Teamwork is huge in the workplace, as it brings everyone’s skills together. Having good EQ will enable you to work well in this environment because you’re working with and interacting with many people.


{% extends "layout.html" %} {% block content %} {% include "includes/phase_banner_alpha.html" %} Back to region selection {% include "includes/breadcrumbs.html" %} {% include "includes/entity_header.html" %} Select the LDU cluster your team belongs to Bedfordshire Cambridgeshire Essex North Essex South Hertfordshire Kent Norfolk, Suffolk Northamptonshire Surrey Sussex Continue to select a team or go back to division selection {% endblock %}


Hyperledger Indy/Sovrin/DID Comprehensive Architecture Reference Model (INDY ARM)
-
-
-
- ...
- Business Document Create Event
- Operational Business Processes
- Data Warehousing
- Data Analytics
- Artificial Human & Artificial Machine Intelligence
- Machine Learning
- Data Mining
- Data Analytics
- Business Analytics
- Statistics
- Data Reporting and Visualization
- UBL 2.2 Specification
- BPMN 2.2 Specification
- DW Schemas
- Data Query
- ETL
- SQL
- ...
- ...
- ...
- XBRL
- ...
- Reporting
- Charting
- Data Visualization
- Interactive Analysis
- Business Document Receive Event
- Business Document Delete Event
- Machine Automation
- Data Vault
- Feedback
- Issuer Role
- Holder Role
- Verifier Role
- Holder Role
- Business Services: Issue, Store, Request, Present, Verify, Register, ...
- Automated Decision Support
- Agents
- Bots
- Robotics
- Decentralized Resource
- SS Digital Identity
- SS Digital Identity
- SS Digital Identity
- Actor (Person)
- Actor (Organization)
- SS Digital Identity
- Process
- Thing (Pet, Car, House)
- SS Digital Identity
- Thing (Product, Assembly, Part)
- SS Digital Identity
- Actor (Software Agent)
- Real-Life Actor "Alice" (Person, Organization, Software Agent)
- Thing (Business Document)
- Real-Life Thing "ThingamaBob" (Pet, Car, House, Business Document, Product, Assembly, Part)
- Virtual Actor "Alice" (Person, Organization, Software Agent)
- Virtual Thing "ThingamaBob" (Pet, Car, House, Business Document, Product, Assembly, Part)
- Inspector Role
- Issue
- Verify
- Present
- Request
- SSI for a Subject (e.g. Birth Certificate, Purchase Order)
- SSI for a Subject (e.g. Birth Certificate, Purchase Order)
- 1. DID Identifier Layer: DID Syntax
- 6. Agent to Agent (A2A) Communications Protocol Layer
- 2. DID Private/Public Key Pair Layer: Private/Public Keys, Wallet
- 3. Verifiable DID Layer: (DID, Keys) => Verifiable NYM Transaction (or equiv)
- 4. DID Document Layer: DID Document, Resolution Protocol, Element Access Protocol
- 5. Agent Layer: Agents, Service Endpoints, Verifiable ATTRIB Transactions (or equiv)
- DID Specification
- DID Resolution Specification
- Indy Agent-2-Agent Communication HIPEs
- HTTP, FTP, SMTP, etc. protocols
- DNS (Domain Name Resolution) protocol
- IP Addresses, TCP-IP and related protocols
- DID Specification
- DID Resolution Specification
- Device Sensor Data (IoT)
- Other Instrumentation (Process Control Systems)
- Gateway
- Router
- Ingestion
- Subject
-
-
-
- P6. Drummond's DID Principles - Rocketchat - Dec. 18, 2018: "One thing I can easily clarify, since it's straight out of the spec: *DID* always refers to the *decentralized identifier*, period. If you want to talk about the JSON-LD document that the DID resolution process returns, that's called the *DID document*. The DID document contains a copy of the DID itself, but the *DID document is not the DID* and the *DID is not the DID document*."
- P5. A DID Document is a JSON-LD serialization of a DID Entity.
- P1. Michael's Thing Principles - Dec. 30, 2018: A Subject is an Actor or a Thing. Actors (Persons, Organizations, and Software Agents) participate in Processes.  Business Documents and Products are different from the traditional Sovrin concept of a Thing (e.g. Pet (w/chip), Car, House).
- P4. A DID Entity is a data structure comprised of a collection of key-value pairs with keys such as: id (DID), service (endpoints), authentication, publicKey, @context, etc.
- P2. A Thing must have a Controller. The Controller of a Thing is an Actor.
- P3. Actors and Things are mutually exclusive categories of Subjects.
- P7. An Actor can have a Controller. The Controller of a Actor is an Actor.
- P8. A Thing must be a Non-Fungible Entity (NFE).
- P9. A Non-Fungible Entity (NFE) is a good or asset that is not exchangeable or replaceable with another individual good or asset of the same type. An NFE is not interchangeable, is unique, and is not divisible (without loss of identity).
-
-
-
-
(Business Document Create Event - Operational Business Processes)
-
(Operational Business Processes - Data Warehousing)
-
(Operational Business Processes - ETL)
-
(ETL - Data Warehousing)
-
(Data Warehousing - Data Query)
-
(Data Query - Data Mining)
-
(Data Mining - Statistics)
-
(Statistics - Data Analytics)
-
(Data Mining - Artificial Human & Artificial Machine Intelligence)
-
(Artificial Human & Artificial Machine Intelligence - Machine Learning)
-
(Statistics - Machine Learning)
-
(Machine Learning - Business Analytics)
-
(Data Analytics - Business Analytics)
-
(Data Analytics - Reporting)
-
(Business Analytics - Reporting)
-
(Reporting - Charting)
-
(Charting - Data Visualization)
-
(Reporting - Interactive Analysis)
-
(Interactive Analysis - Charting)
-
(Interactive Analysis - Data Visualization)
-
(Business Document Receive Event - Operational Business Processes)
-
(Business Document Delete Event - Operational Business Processes)
-
(Artificial Human & Artificial Machine Intelligence - Business Analytics)
-
(Machine Learning - Machine Automation)
-
(Operational Business Processes - Data Vault)
-
(Data Vault - Data Query)
-
(ETL - Data Vault)
-
(Machine Automation - Feedback)
-
(Feedback - Machine Learning)
-
(Indy-Node Distribution - Ledger Node Component)
-
(Indy-Plenum Distribution - Ledger Node Component)
-
(Ledger Node Component - Ledger Node Functions)
-
(Ledger Node Functions - Verifiable Data Registry (VDR) (replica))
-
(Ledger Node Functions - Ledger Node Service Endpoint)
-
(Indy Agent Component - Indy Agent Functions)
-
(Indy Agent Functions - Indy Agent Service Endpoint)
-
(Indy Wallet Component - Indy Wallet Functions)
-
(Indy Wallet Functions - Indy Wallet Service)
-
(Indy Wallet Component - Indy Wallet API)
-
(Indy Wallet API - Indy Wallet Service)
-
(Indy Agent API - Indy Agent Service Endpoint)
-
(Indy Agent Component - Indy Agent API)
-
(Ledger Node Component - Ledger Node API)
-
(Ledger Node API - Ledger Node Service Endpoint)
-
(Indy Agent API - Indy Agent Service Endpoint)
-
(Indy Agent Component - Indy Agent Functions)
-
(Indy Wallet API - Indy Wallet Service)
-
(Indy Wallet Component - Indy Wallet Functions)
-
(Indy Agent Component - Indy Agent API)
-
(Indy Wallet Component - Indy Wallet API)
-
(Indy Wallet Functions - Indy Wallet Service)
-
(Indy Agent Functions - Indy Agent Service Endpoint)
-
(libIndy Distribution - Indy Wallet Component)
-
(Indy-Agent Distribution - Indy Agent Component)
-
(Issuer Role - Issue)
-
(Holder Role - Present)
-
(Indy Agent Functions - Indy Agent Storage)
-
(Indy Wallet Functions - Indy Wallet Pluggable Storage)
-
(Indy Agent Functions - Indy Agent Storage)
-
(Indy Wallet Functions - Indy Wallet Pluggable Storage)
-
(Indy Agent API - Indy Wallet Component)
-
(Indy Agent Service Endpoint - Indy Wallet Functions)
-
(Indy Wallet API - Indy Agent Component)
-
(Indy Wallet Service - Indy Agent Functions)
-
(Indy Wallet API - Indy Agent Component)
-
(Indy Wallet Service - Indy Agent Functions)
-
(Ledger Node API - Indy Wallet Component)
-
(Ledger Node Service Endpoint - Indy Agent Functions)
-
(Indy Agent API - Business Services: Issue, Store, Request, Present, Verify, Register, ... )
-
(Indy Agent Service Endpoint - Business Services: Issue, Store, Request, Present, Verify, Register, ... )
-
(Business Services: Issue, Store, Request, Present, Verify, Register, ... - Issue)
-
(Business Services: Issue, Store, Request, Present, Verify, Register, ... - Present)
-
(Business Services: Issue, Store, Request, Present, Verify, Register, ... - Request)
-
(Business Services: Issue, Store, Request, Present, Verify, Register, ... - Verify)
-
(Indy-Agent Distribution - Indy Agent Component)
-
(libIndy Distribution - Indy Wallet Component)
-
(Ledger Node Service Endpoint - Indy Agent Service Endpoint)
-
(Indy Credential Registry Node Component - Indy Credential Registry Node Functions)
-
(Indy Credential Registry Node Functions - Credential Registry Node Storage)
-
(Indy Credential Registry Node Functions - Indy Credential Registry Node Service Endpoint)
-
(Indy Credential Registry Node API - Indy Credential Registry Node Service Endpoint)
-
(Indy Credential Registry Node Component - Indy Credential Registry Node API)
-
(Indy-Agent Distribution - Indy Credential Registry Node Component)
-
(Edge Web App Functions - Edge Web App Services)
-
(Edge Web App Component - Edge Web App Functions)
-
(Edge Web App UI - Edge Web App Services)
-
(Edge Web App Component - Edge Web App UI)
-
(Indy Agent API - Edge Web App Component)
-
(Indy Agent Service Endpoint - Edge Web App Functions)
-
(Edge Lightweight App Component - Edge Lightweight App Functions)
-
(Edge Lightweight App Component - Edge Lightweight App UI)
-
(Edge Lightweight App UI - Edge Lightweight App Services)
-
(Edge Lightweight App Functions - Edge Lightweight App Services)
-
(Indy Agent API - Edge Lightweight App Component)
-
(Indy Agent Service Endpoint - Edge Lightweight App Functions)
-
(Edge Web App UI - Business Services: Issue, Store, Request, Present, Verify, Register, ... )
-
(Edge Web App Services - Business Services: Issue, Store, Request, Present, Verify, Register, ... )
-
(Edge Lightweight App UI - Business Services: Issue, Store, Request, Present, Verify, Register, ... )
-
(Edge Lightweight App Services - Business Services: Issue, Store, Request, Present, Verify, Register, ... )
-
(DID Resolver Node Functions - DID Resolver Node Service Endpoint)
-
(DID Resolver Node Component - DID Resolver Node Functions)
-
(DID Resolver Node Component - DID Resolver Node API)
-
(DID Resolver Node API - DID Resolver Node Service Endpoint)
-
(DID Resolver Node Service Endpoint - DID Resolver Response)
-
(DID Document (JSON) - Schema ID)
-
(Schema ID - Schema Document)
-
(Schema Document - Schema ID)
-
(Schema Document - Mapping Document: flatten entity graph into a flat serialized format)
-
(Credential Definition Document - ...)
-
(Mapping Document: flatten entity graph into a flat serialized format - Credential Definition Document)
-
(Credential Definition Document - Correctness Proof)
-
(Edge Wallet - Verifiable Credential)
-
(Cloud Wallet - Verifiable Credential)
-
(Credential Registry - Verifiable Credential)
-
(Credential Definition Document - Revocation Requirements)
-
(DID Document (JSON) - UUID (app specific))
-
(DID Document (JSON) - Keys)
-
(DID Document (JSON) - Service Endpoints)
-
(DID Document (JSON) - Revocation ...)
-
(Business Analytics - Automated Decision Support)
-
(Interactive Analysis - Bots)
-
(Automated Decision Support - Agents)
-
(Bots - Interactive Analysis)
-
(Machine Automation - Robotics)
-
(DID Document - id (DID))
-
(DID Entity - Decentralized Resource)
-
(DID Entity - id (DID))
-
(DID Entity - service (endpoints))
-
(DID Entity - authentication)
-
(DID Entity - publicKey)
-
(DID Entity - @context)
-
(DID Entity - ...)
-
(Ledger Node - Verifiable Data Registry (VDR))
-
(Ledger Node - DID Resolver)
-
(Client API - DID Document (JSON-LD))
-
(DID Resolver - Client API)
-
(Client API - Ledger Node)
-
(SS Digital Identity - Decentralized Resource)
-
(SS Digital Identity - Decentralized Resource)
-
(SS Digital Identity - Decentralized Resource)
-
(SS Digital Identity - Actor (Person))
-
(SS Digital Identity - Actor (Organization))
-
(SS Digital Identity - Thing (Pet, Car, House))
-
(DID Entity - SS Digital Identity)
-
(DID Entity - SS Digital Identity)
-
(DID Entity - SS Digital Identity)
-
(DID Entity - SS Digital Identity)
-
(SS Digital Identity - Thing (Business Document))
-
(Actor (Person) - Process)
-
(Actor (Organization) - Process)
-
(Process - Thing (Business Document))
-
(Process - Thing (Pet, Car, House))
-
(DID Entity - SS Digital Identity)
-
(Process - Thing (Product, Assembly, Part))
-
(SS Digital Identity - Thing (Product, Assembly, Part))
-
(Actor (Software Agent) - Process)
-
(SS Digital Identity - Actor (Software Agent))
-
(DID Entity - SS Digital Identity)
-
(DID Document (XML) - DID Entity)
-
(DID Document (JSON-LD) - DID Entity)
-
(id (DID) - id (DID))
-
(service (endpoints) - Software Service Endpoint (for the entity identified by this id (DID) and DID Document))
-
(Software Service Endpoint (for the entity identified by this id (DID) and DID Document) - Client App (or Service))
-
(Software Service Endpoint (for the entity identified by this id (DID) and DID Document) - Metadata Document for Virtual (Real-life) Something (returned by the Service Endpoint for id (DID)))
-
(Metadata Document for Virtual (Real-life) Something (returned by the Service Endpoint for id (DID)) - Virtual Actor "Alice" (Person, Organization, Software Agent))
-
Things are Owned by Actors
(Real-Life Thing "ThingamaBob" (Pet, Car, House, Business Document, Product, Assembly, Part) - Real-Life Actor "Alice" (Person, Organization, Software Agent))
-
(Metadata Document for Virtual (Real-life) Something (returned by the Service Endpoint for id (DID)) - Virtual Thing "ThingamaBob" (Pet, Car, House, Business Document, Product, Assembly, Part))
-
(DID Resolver - DID Document (JSON-LD))
-
(DID Resolver - Client App (or Service))
-
(Metadata Document for Virtual (Real-life) Something (returned by the Service Endpoint for id (DID)) - Metadata Document Repository)
-
(DID Document (JSON-LD) - Verifiable Data Registry (VDR))
-
(Virtual Actor "Alice" (Person, Organization, Software Agent) - Software Service Endpoint (for the entity identified by this id (DID) and DID Document))
-
(Virtual Thing "ThingamaBob" (Pet, Car, House, Business Document, Product, Assembly, Part) - Software Service Endpoint (for the entity identified by this id (DID) and DID Document))
-
(Virtual Thing "ThingamaBob" (Pet, Car, House, Business Document, Product, Assembly, Part) - Real-Life Thing "ThingamaBob" (Pet, Car, House, Business Document, Product, Assembly, Part))
-
(Virtual Actor "Alice" (Person, Organization, Software Agent) - Real-Life Actor "Alice" (Person, Organization, Software Agent))
-
Things are Owned by Actors
(Virtual Thing "ThingamaBob" (Pet, Car, House, Business Document, Product, Assembly, Part) - Virtual Actor "Alice" (Person, Organization, Software Agent))
-
(Holder Role - Request)
-
(DID Document (JSON) - DID Entity)
-
(DID Entity - Thing (Product, Assembly, Part))
-
(DID Entity - Thing (Business Document))
-
(DID Entity - Actor (Software Agent))
-
(DID Entity - Actor (Organization))
-
(DID Entity - Actor (Person))
-
(DID Entity - Thing (Pet, Car, House))
-
(DID Entity - id (DID))
-
(DID Entity - service (endpoints))
-
(DID Entity - authentication)
-
(DID Entity - publicKey)
-
(DID Entity - @context)
-
(DID Entity - ...)
-
(id (DID) - id (DID))
-
(DID Document (JSON) - id (DID))
-
(DID Document (JSON) - ...)
-
(DID Document (JSON) - @context)
-
(DID Document (JSON) - publicKey)
-
(DID Document (JSON) - authentication)
-
(DID Document (JSON) - service (endpoints))
-
(Ledger Node API - DID Resolver Node Component)
-
(Ledger Node Service Endpoint - DID Resolver Node Functions)
-
(Indy-Agent Distribution - Ledger Node Component)
-
(DID Resolver Node API - Edge Lightweight App Component)
-
(DID Resolver Node Service Endpoint - Edge Lightweight App Functions)
-
(DID Resolver Node API - Indy Agent Component)
-
(DID Resolver Node Service Endpoint - Indy Agent Functions)
-
(DID Resolver Node API - Indy Agent Component)
-
(DID Resolver Node Service Endpoint - Indy Agent Functions)
-
(Indy Agent Functions - Indy Agent Service Endpoint)
-
(Indy Agent Functions - ...)
-
(Indy Agent Functions - A2A Protocol)
-
(A2A Protocol - Indy Agent Service Endpoint)
-
(Indy Agent Functions - A2A Protocol)
-
(A2A Protocol - Indy Agent Service Endpoint)
-
(Indy Agent Service Endpoint - Indy Agent Functions)
-
(Indy Agent Functions - Indy Agent Service Endpoint)
-
(Indy Agent Functions - ...)
-
(Ledger Node Functions - Ledger-to-Ledger Protocol)
-
(Ledger-to-Ledger Protocol - Ledger Node Service Endpoint)
-
(Ledger Node Functions - Ledger Node Service Endpoint)
-
(Ledger Node Functions - Verifiable Data Registry (VDR) (replica))
-
(Verifiable Data Registry (VDR) (replica) - Verifiable Data Registry (VDR))
-
(Verifiable Data Registry (VDR) - didDocument)
-
(Issue - Holder Role)
-
(Verifier Role - Verify)
-
(Present - Holder Role)
-
(Request - Inspector Role)
-
(Inspector Role - Verify)
-
(Issue - SSI for a Subject (e.g. Birth Certificate, Purchase Order))
-
(Present - SSI for a Subject (e.g. Birth Certificate, Purchase Order))
-
(Request - SSI for a Subject (e.g. Birth Certificate, Purchase Order))
-
(Verify - SSI for a Subject (e.g. Birth Certificate, Purchase Order))
-
(Indy Agent Service Endpoint - Business Services: Issue, Store, Request, Present, Verify, Register, ... )
-
(DID Resolver Response - ...)
-
(DID Resolver Response - methodMetadata)
-
(DID Resolver Response - resolverMetadata)
-
(DID Resolver Response - didDocument)
-
(didDocument - DID Document (JSON))
-
(Universal-Resolver drivers/sov Distribution - DID Resolver Node Component)
-
(Present - SSI for a Subject (e.g. Birth Certificate, Purchase Order))
-
(Verifiable Data Registry (VDR) (replica) - Verifiable Data Registry (VDR))
-
(6. Agent to Agent (A2A) Communications Protocol - 6. DID Document Verification Layer)
-
(6. DID Document Verification Layer - 5. Agents and Service Endpoints)
-
(5. Agents and Service Endpoints - 4. DID Document Data Model)
-
(4. DID Document Data Model - 3. Verifiable DID Layer: (DID, Keys) => Verifiable NYM Transaction (or equiv))
-
(3. Verifiable DID Layer: (DID, Keys) => Verifiable NYM Transaction (or equiv) - 2. DID Private/Public Key Pairs and Wallets)
-
(2. DID Private/Public Key Pairs and Wallets - 1. DID Identifier Data Model: DID Syntax)
-
(NYM Transaction (Detail) - alias)
-
(NYM Transaction (Detail) - role)
-
(NYM Transaction (Detail) - dest)
-
(NYM Transaction (Detail) - verkey)
-
(NYM Transaction (Detail) - NYM Tx)
-
(id (DID) - dest)
-
(verkey - verkey)
-
(id (TRUST_ANCHOR DID) - identifier)
-
(NYM Tx - SEND_NYM Message)
-
(1. DID Identifier Layer: DID Syntax - 2. DID Private/Public Key Pair Layer: Private/Public Keys, Wallet)
-
(2. DID Private/Public Key Pair Layer: Private/Public Keys, Wallet - 3. Verifiable DID Layer: (DID, Keys) => Verifiable NYM Transaction (or equiv))
-
(3. Verifiable DID Layer: (DID, Keys) => Verifiable NYM Transaction (or equiv) - 4. DID Document Layer: DID Document, Resolution Protocol, Element Access Protocol)
-
(4. DID Document Layer: DID Document, Resolution Protocol, Element Access Protocol - 5. Agent Layer: Agents, Service Endpoints, Verifiable ATTRIB Transactions (or equiv))
-
(5. Agent Layer: Agents, Service Endpoints, Verifiable ATTRIB Transactions (or equiv) - 6. Agent to Agent (A2A) Communications Protocol Layer)
-
(Device Sensor Data (IoT) - Gateway)
-
(Other Instrumentation (Process Control Systems) - Gateway)
-
(Gateway - Router)
-
(Router - Ingestion)
-
(Ingestion - Operational Business Processes)
-
(Actor (Person) - Subject)
-
(Actor (Organization) - Subject)
-
(Actor (Software Agent) - Subject)
-
(Thing (Pet, Car, House) - Subject)
-
(Thing (Business Document) - Subject)
-
(Thing (Product, Assembly, Part) - Subject)
-


Welcome to my Personal Project! It's just a simple data tracker showcasing all my knowledge gained throughout my time at CodeFellows.


Class Environment
Environment
This class decouples the Slim application from the global PHP environment.
This is particularly useful for unit testing, but it also lets us create
custom sub-requests.
-
Slim\Collection
implements
Slim\Interfaces\CollectionInterface
-
Slim\Http\Environment
implements
Slim\Interfaces\Http\EnvironmentInterface
Methods summary
public static
Slim\Http\Environment
|
#
mock( array $userData = [] )
Create mock environment
Parameters
- $userData
- Array of custom environment keys and values
Returns
Implementation of
|
Methods inherited from Slim\Collection
__construct(),
all(),
clear(),
count(),
get(),
getIterator(),
has(),
keys(),
offsetExists(),
offsetGet(),
offsetSet(),
offsetUnset(),
remove(),
replace(),
set()
|


packageName
January 0, 0000
Cheatsheet Usage
- Click the icon to copy the SVG to your clipboard
- Click the
U
value to copy the character to your clipboard
- Click the hex value to copy the codepoint to your clipboard
- Click the icon name to copy to your clipboard
All Icons -
Deprecated Icons -
Deprecated icons will be removed in a future major release.


- hasChildren(BasicTreeNode<E>) - Method in class com.tomzhu.tree.BasicTree
-
- hasChildren(BinaryTreeNode<E>) - Method in class com.tomzhu.tree.BinaryTree
-
- hasChildren() - Method in class com.tomzhu.tree.TreeNode
-
- hash - Variable in class com.tomzhu.tree.Entry
-
- hashFamily(int) - Method in class com.tomzhu.hash.PerfectHashingTable
-
- HashMap<K extends java.lang.Comparable<K>,V> - Class in com.tomzhu.tree
-
- HashMap() - Constructor for class com.tomzhu.tree.HashMap
-
construct a default hashMap with initial capacity 16 and load factor 0.75f
- HashMap(int) - Constructor for class com.tomzhu.tree.HashMap
-
construct a hashMap with specific initial capacity and default load factor 0.75f
- HashMap(int, float) - Constructor for class com.tomzhu.tree.HashMap
-
construct a hashMap with specific capacity and load factor.
- HashTable - Class in com.tomzhu.external
-
an efficient and external memory hash table implementation by mapped file.
- HashTable(String) - Constructor for class com.tomzhu.external.HashTable
-
creating a default hash table.
- HashTable(String, int) - Constructor for class com.tomzhu.external.HashTable
-
construct a hash table with the save path and maximum element size.
- HashTableByLinearProbing<K,V> - Class in com.tomzhu.hash
-
a simple hash table implementation by linear probing where h(i) = i.
- HashTableByLinearProbing() - Constructor for class com.tomzhu.hash.HashTableByLinearProbing
-
create a default hash table.
- HashTableByLinearProbing(int, float) - Constructor for class com.tomzhu.hash.HashTableByLinearProbing
-
construct a hash table by specifics some initial parameters
- HashTableByQuadraticProbing<K,V> - Class in com.tomzhu.hash
-
a simple quadratic probing hash table implementation where h(i) = i^2.
- HashTableByQuadraticProbing() - Constructor for class com.tomzhu.hash.HashTableByQuadraticProbing
-
construct a default quadratic probing hash table with default settings.
- HashTableBySeparateChain<K,V> - Class in com.tomzhu.hash
-
A simple hash table implementation using separate Chain.
- HashTableBySeparateChain() - Constructor for class com.tomzhu.hash.HashTableBySeparateChain
-
initialize a default hash table, with load factor is 0.75, and initialized length is 16.
- HashTableBySeparateChain(int, float) - Constructor for class com.tomzhu.hash.HashTableBySeparateChain
-
initialize a hash table by initialCapacity and load factor.
- hasLeftChild(BinaryTreeNode<E>) - Method in class com.tomzhu.tree.BinaryTree
-
- hasLeftChild() - Method in class com.tomzhu.tree.BinaryTreeNode
-
- hasLeftSibling(BasicTreeNode<E>) - Method in class com.tomzhu.tree.BasicTree
-
- hasLeftSibling() - Method in class com.tomzhu.tree.BasicTreeNode
-
- hasLeftSibling() - Method in class com.tomzhu.tree.BinaryTreeNode
-
- hasLeftSibling() - Method in class com.tomzhu.tree.TreeNode
-
- hasRightChild(BinaryTreeNode<E>) - Method in class com.tomzhu.tree.BinaryTree
-
- hasRightChild() - Method in class com.tomzhu.tree.BinaryTreeNode
-
- hasRightSibling(BasicTreeNode<E>) - Method in class com.tomzhu.tree.BasicTree
-
- hasRightSibling() - Method in class com.tomzhu.tree.BasicTreeNode
-
return whether this node has right sibling node.
- hasRightSibling() - Method in class com.tomzhu.tree.BinaryTreeNode
-
- hasRightSibling() - Method in class com.tomzhu.tree.TreeNode
-
- head - Variable in class com.tomzhu.tree.RedBlackTree
-
- HopscotchHashTable<K,V> - Class in com.tomzhu.hash
-
a simple hopscotch hash table implementation.
- HopscotchHashTable(int, int) - Constructor for class com.tomzhu.hash.HopscotchHashTable
-
construct a hopscotchashTable by initialCapacity and hopSize.
- HopscotchHashTable() - Constructor for class com.tomzhu.hash.HopscotchHashTable
-
construct a default hopscotchHashTable with initialCapacity (16) and hopSize (4)


Home
Hamburgers rule!
This page tests a short menu with long content.
Bacon ipsum dolor amet brisket tail chuck meatball leberkas doner. Burgdoggen ribeye shank brisket. Biltong short ribs kielbasa, ball tip pork belly chuck rump frankfurter. Shank filet mignon spare ribs, doner sirloin ham biltong alcatra pork meatloaf cow.
Biltong pancetta cow, ham hock drumstick kielbasa salami. Porchetta venison shankle bresaola meatloaf chuck drumstick ground round biltong pork loin tongue pork belly tri-tip short loin. Turkey fatback shankle pancetta andouille swine. Chicken drumstick shankle short ribs.
Tail t-bone flank short ribs pork loin filet mignon pork chop andouille pastrami.  Short ribs meatloaf leberkas strip steak alcatra. Picanha pastrami shankle ball tip flank pork loin, tail short ribs bacon filet mignon.
Pig capicola corned beef bacon frankfurter filet mignon drumstick meatloaf. Shoulder kevin strip steak rump venison t-bone. Brisket landjaeger flank ground round, filet mignon tongue kielbasa turducken alcatra turkey ham. Pig jerky spare ribs short ribs, ball tip cupim rump. Shoulder turkey kielbasa rump. Turducken beef sausage venison turkey boudin kevin beef ribs meatloaf pork chop tail chicken frankfurter ground round biltong. Fatback chicken bresaola frankfurter drumstick kielbasa ribeye, venison doner bacon tongue prosciutto.
Prosciutto short loin biltong strip steak bresaola flank frankfurter alcatra brisket cupim ball tip swine picanha. Pork loin pancetta flank tenderloin spare ribs short loin salami shankle. Biltong pancetta filet mignon meatball turkey boudin. Spare ribs pastrami strip steak, hamburger pork cupim brisket sirloin venison. Drumstick brisket salami flank. Biltong ham t-bone drumstick fatback sirloin. Sirloin ground round kielbasa spare ribs chuck brisket.


Install and Start Using the C (libcouchbase) SDK with Couchbase Server
The Couchbase C SDK (libcouchbase
) enables C and C++ programs to access a Couchbase cluster.
The C SDK is also commonly used as a core dependency of SDKs written in other language to provide a common implementation and high performance.
Features
-
Cross-Platform: Officially supported on Linux, Mac OS X, and Microsoft Windows (though it is also known to run on other platforms).
-
Key-Value (CRUD) operations (
lcb_get3
,lcb_store3
, etc.) -
N1QL query operations (
lcb_n1ql_query
) -
Map Reduce (view) query operations (
lcb_view_query
) -
Secure SSL connections (Couchbase Enterprise only)
-
Pluggable non-blocking event loops such as libevent, libev, and libuv- integrate with your own non-blocking application, or use
lcb_wait
in blocking code
Note that SSL and N1QL features depend on server support. See Compatibility to see which server versions support which features.
Platform support and installation
The Couchbase C SDK can be installed via apt or yum repositories on Linux; homebrew on Mac OS X; and binary archives for Microsoft Windows. It may also be built from source on any of the platforms mentioned above, and more.
Installing on Linux
For installation on Linux, install the couchbase-release repository, and then install the libcouchbase packages. The following examples download and install couchbase-release repository, a C and C++ compiler, and the C SDK core (libcouchbase2-core), command line tools (libcouchbase2-bin), and the development tools (libcouchbase-devel [RPM] or libcouchbase-dev [DEB]).
# Only needed during first-time setup:
wget http://packages.couchbase.com/releases/couchbase-release/couchbase-release-1.0-4-amd64.deb
sudo dpkg -i couchbase-release-1.0-4-amd64.deb
# Will install or upgrade packages
sudo apt-get update
sudo apt-get install libcouchbase-dev libcouchbase2-bin build-essential
Note that as of Couchbase Data Platform 6.0, couchbase-release (1.0.4) supports Debian 7 and 8, and Ubuntu 12.04, 14.04, and 16.04. If you wish to install a Couchbase SDK on a more recent Ubuntu or Debian, follow these steps (but note that beyond Ubuntu 18.04, other platforms are not necessarily supported):
# Install Couchbase's GPG key
sudo wget -O - http://packages.couchbase.com/ubuntu/couchbase.key | sudo apt-key add -
# Adding Ubuntu 18.04 LTS repo to apt/sources.list
sudo echo "deb http://packages.couchbase.com/ubuntu bionic bionic/main" > /etc/apt/sources.list.d/couchbase.list
# To install or upgrade packages
sudo apt-get update
sudo apt-get install libcouchbase-dev libcouchbase2-bin build-essential
# Only needed during first-time setup:
wget http://packages.couchbase.com/releases/couchbase-release/couchbase-release-1.0-4-x86_64.rpm
sudo rpm -iv couchbase-release-1.0-4-x86_64.rpm
# Will install or upgrade existing packages
sudo yum install libcouchbase-devel libcouchbase2-bin gcc gcc-c++
You should install the libcouchbase2-libevent or libcouchbase2-libev plugin in case your application will use more than 1024 file descriptors.
The default select() based event loop only supports 1024 file descriptors.
|
Installation on Mac OS X
To install the library on Mac OS X, first install the de-facto package manager for OS X: homebrew. Once homebrew is configured:
brew update # get list of latest packages
brew install libcouchbase
Installation on Microsoft Windows
See Installation and Release Notes section for details.
Installing from Source Code
You may install the library from source code, either via a repository checkout or using a release tarball (download links may be found at Installation and Release Notes. Follow the instructions in the README.markdown file at the top of the source tree.
Documentation and Examples
-
A reference guide (this manual) is suitable for a general overview and learning how to use the library.
-
The API documentation is generated from comments in the header and covers all the APIs of the library.
-
Small standalone examples can be found in the github repository.
-
Other Couchbase SDKs are written on top of the C SDK and show more complex usage of the library’s features:
-
The library’s own
cbc
(https://github.com/couchbase/libcouchbase/blob/master/tools/cbc.cc) andcbc-pillowfight
(https://github.com/couchbase/libcouchbase/blob/master/tools/cbc-pillowfight.cc) utilities. Note that these tools may use internal APIs not intended for public use. -
C++11 wrapper (https://github.com/couchbaselabs/libcouchbase-cxx, not officially supported)
Information on new features, fixes, known issues as well as information on how to install older release versions is available in the release notes.
Hello Couchbase
The simple example below (which requires version 2.5.6 or higher to function) can be integrated into an existing application, or added to a CLI skeleton to make a demo app. Error checking is omitted for brevity.
#include <string.h>
#include <libcouchbase/couchbase.h>
static void
opCallback(lcb_t instance, int cbtype, const lcb_RESPBASE *rb) {
fprintf(stderr, "%.*s: %s... ", (int)rb->nkey, rb->key, lcb_strcbtype(cbtype));
if (rb->rc != LCB_SUCCESS) {
fprintf(stderr, "%s\n", lcb_strerror(NULL, rb->rc));
} else {
fprintf(stderr, "OK");
if (cbtype == LCB_CALLBACK_GET) {
const lcb_RESPGET *rg = (const lcb_RESPGET *)rb;
fprintf(stderr, "... Value: %.*s\n", (int)rg->nvalue, rg->value);
} else {
fprintf(stderr, "\n");
}
}
}
int storeAndRetrieveKey()
{
assert(lcb_version_g >= 0x020506 && "This example requires 2.5.6 or greater");
lcb_t instance;
struct lcb_create_st options;
memset(&options, 0, sizeof options);
options.version = 3;
options.v.v3.connstr = "couchbase://localhost/bucketname";
options.v.v3.username = "mark";
options.v.v3.passwd = "s3cr3t";
lcb_error_t rc = lcb_create(&instance, &options);
lcb_create(&instance, &options);
lcb_connect(instance);
lcb_wait(instance);
lcb_install_callback3(instance, LCB_CALLBACK_GET, opCallback);
lcb_install_callback3(instance, LCB_CALLBACK_STORE, opCallback);
lcb_CMDSTORE scmd = { 0 };
LCB_CMD_SET_KEY(&scmd, "key", 3);
LCB_CMD_SET_VALUE(&scmd, "true", 4);
scmd.operation = LCB_SET;
lcb_store3(instance, NULL, &scmd);
lcb_wait(instance);
lcb_CMDGET gcmd = { 0 };
LCB_CMD_SET_KEY(&gcmd, "key", 3);
lcb_get3(instance, NULL, &gcmd);
lcb_wait(instance);
lcb_destroy(instance);
return 0;
}
Scheduling, Blocking and non-blocking
The library is designed to be non-blocking. As opposed to a blocking API where API calls themselves perform the operations and return results, the C SDK’s non-blocking API schedules the operation, with the result of the operation being passed to a callback which is invoked when ready. The readiness and completion of an operation will only happen when the library has had a chance to send the operation to the server and await a response from the network.
Most operations in the library do not execute the operation immediately, but rather schedule it to be executed when it is possible to perform network I/O.
The lcb_wait()
function will instruct the library to send all scheduled operations to the cluster and await the results for those operations.
As results become available, designated callbacks (specified using lcb_install_callback3()
) are invoked with the results.
If your application is built on top of an event loop (for example, libev) you can integrate the C SDK to perform its I/O within the context of your event loop, avoiding the need to block for I/O with lcb_wait()
.
Library Handle and Server Connections
Almost all operations within the library are done with a library handle of type lcb_t
.
The lcb_t
is a handle representing a connection to a single bucket (though it is possible to access other buckets as well for certain operations).
An lcb_t
is created using the lcb_create()
function.
Once created the handle must be connected: lcb_connect()
schedules the connection and lcb_wait
waits for the connection to complete.
Once lcb_wait
returns, lcb_get_bootstrap_status
may be used to determine if the connection completed successfully.
Note: If you have an environment with port mapping, such as Couchbase Server and the SDK in separate containers under Kubernetes, see the multi-network configuration note under Managing Connections
Once the handle has been successfully connected it may then be used for data access.
When the library handle is no longer needed, it can be destroyed via lcb_destroy()
.
API Reference
The API reference is generated for each version.
The API reference for version 2.10.0
is at http://docs.couchbase.com/sdk-api/couchbase-c-client-2.10.0


Hands-on promo clip of the foldable ThinkPad X1 will have many fans telling Lenovo to take their money
by Daniel R DeakinLenovo has posted a promo clip of the foldable ThinkPad X1 on YouTube that was filmed at the company’s recent Tech World event. A rendered marketing video for the folding laptop was already released earlier this year, but this latest clip shows the actual device going through a thorough hands-on workout. The foldable PC looks impressive but is clearly in an unfinished state.
Lenovo has already told the world about the foldable ThinkPad X1, which it classified as the “world’s first foldable PC”. However, at the time all that was available to show off the device were some renders and a teaser video. Now a new promo video has been uploaded by the company that shows the real-world laptop being folded and manhandled at Lenovo Tech World 2019 – and the 13.3-incher certainly folds like a pro.
The foldable Lenovo ThinkPad X1 was officially unveiled in China by Yang Yuanquing, who is the CEO of the Chinese company. The executive folded and unfolded the laptop, perched it on a convenient built-in stand, and then spun it around a few times so the audience could justifiably gawp at it a little. The hinge mechanism can be seen in some of the images (see below) but the fold itself doesn’t seem to have too much of an egregious impact on the display.
Apparently there is a 2K-capable OLED screen for media consumption on the foldable Lenovo ThinkPad X1, so clearly the company wants to convince potential purchasers that at least the screen is almost top-notch. Little has been divulged in regard to the innards, and there’s no word on price yet either. However, it is believed the foldable PC will start being shipped in the second quarter of 2020.
Obviously, the device on show is somewhat in a raw state. It does have an unfinished look to it, and the black tape over the central hinge looks incongruous and messy. This is not a production model of the Lenovo ThinkPad X1, though, and the final product will likely be much more impressive. Some have questioned the point of a ThinkPad without the renowned keyboard or famous TrackPoint, and others have bemoaned its somewhat coarse appearance. But if Lenovo manages to produce a clean-looking workable business laptop with the foldable ThinkPad X1 it could end up revolutionizing the target sector.
Source(s)
YouTube (Lenovo)
ITHome (in Chinese)


NVAPI Reference Documentation
|
|
Release 343: September 30
|
#include <nvapi.h>
Used in NV_DISPLAY_PATH_INFO.
(IN) If set, this display path should have the focus after the GPU topology change
(IN) Used only on Win7 and higher during a call to NvAPI_SetViewEx(). Turns off optimization & forces OS to set supplied mode.
(IN/OUT) Indicates if this is the desktop GDI primary.
(IN/OUT) Indicates if this is the GPU's primary view target. This is not the desktop GDI primary. NvAPI_SetViewEx() automatically selects the first target in NV_DISPLAY_PATH_INFO index 0 as the GPU's primary view.
Color format if it needs to be specified. Not used now.
(IN) Specify connector type. For TV only.
(IN) Depth of the mode
(IN) Device mask
(IN) the physical display/target Gpu id which is the owner of the scan out (for SLI multimon, display from the slave Gpu)
(IN) Height of the mode
(IN) Interlaced mode flag
(IN/OUT) X-offset of this display on the Windows desktop
(IN/OUT) Y-offset of this display on the Windows desktop
(IN) Refresh rate of the mode
(IN) Rotation setting.
(IN) Scaling setting
(IN) Values will be based on the number of heads exposed per GPU(0, 1?)
(IN) To choose the last TV format set this value to NV_DISPLAY_TV_FORMAT_NONE
(IN) Width of the mode


Human trafficking is defined by the National Human Trafficking Hotline as, “a crime involving the exploitation of someone for the purposes of compelled labor or a commercial sex act through the use of force, fraud, or coercion.” It is a modern-day form of slavery in which traffickers force their victims to engage in sex acts or labor services against their will. They use force, fraud or coercion in order to control these vulnerable victims. Human trafficking has become one of the most serious human rights issues of our time. It not only affects individuals throughout every corner of the world, it occurs right here in the United States. It touches every community and affects individuals regardless of age, ethnicity or socio-economic background. Human trafficking is an estimated $32 billion a year industry and is tied with arms dealing as the second largest criminal industry in the world, drugs still rank as number one.
The informative charts provided include data for U.S. human trafficking victims only. The data was collected by the National Human Trafficking Hotline and includes data from cases reported to their hotline only.
The chart below shows the states that have reported cases of human trafficking.
Choose a year from the dropdown menu to see the chart specific to that year. Hover your mouse over the different states to see how many cases were reported from that state in a year. The states that are red have no human trafficking data reported from them to the National Human Trafficking Hotline.
The dropdown menu also filters the data table that prints out each state with reported cases, and the number of cases specific to that state.

Labor trafficking is “the recruitment, harboring, transportation, provision, or obtaining of a person for labor or services, through the use of force, fraud, or coercion for the purposes of subjection to involuntary servitude, peonage, debt bondage, or slavery, (22 USC § 7102).”
The chart below shows the percentage of total cases that were reported to the National Human Trafficking Hotline that were classified as sex trafficking, labor trafficking, sex and labor trafficking, or not specified trafficking.
Choose a year from the dropdown menu to see the chart specific to that year. Hover your mouse over the different colors to see how many cases were reported that were classified as that type of trafficking that year.
 When Brown was only 16 years old, she was forced into prostitution by an older male. Her day to day life consisted of being beat on and raped while under the control of her pimp. This month, the enraging case of Brown resurfaced over the internet causing people of all backgrounds to speak out against the injustice she was served. In this video, you will be informed on the many details of her lengthy case.
We as a society need to work on bringing justice and rehabilitation to the respective victims, while punishing the oppressors. Feel encouraged to start conversation in your area using #FreeCyntoiaBrown through your social media.
A flight attendant was able to save the life of a young trafficking victim while flying mid-air. Shelia Fedrick of Alaska Airlines noticed the alarming difference between an older gentlemen who was dressed nice and a young girl who was underdressed and very rough looking. Fedrick was able to get the girl to the bathroom where she left a note asking if she was in danger. The young girl actually wrote back that she needed help, and the flight attendant took action of informing the pilot, who called the police for their next landing. Fedrick's advice to all is always be aware of what is going on around you. If you see something, say something.
• Is not free to leave or come and go as he/she wishes
• Is in the commercial sex industry and has a pimp / manager
• Is unpaid, paid very little, or paid only through tips
• Works excessively long and/or unusual hours
• Is not allowed breaks or suffers under unusual restrictions at work
• Owes a large debt and is unable to pay it off
• Was recruited through false promises concerning the nature and conditions of his/her work
• High security measures exist in the work and/or living locations (e.g. opaque windows, boarded up windows, bars on windows, barbed wire, security cameras, etc.)
• Is fearful, anxious, depressed, submissive, tense, or nervous/paranoid
• Exhibits unusually fearful or anxious behavior after bringing up law enforcement
• Avoids eye contact
• Lacks medical care and/or is denied medical services by employer
• Appears malnourished or shows signs of repeated exposure to harmful chemicals
• Shows signs of physical and/or sexual abuse, physical restraint, confinement, or torture.
• Has few or no personal possessions
• Is not in control of his/her own money, no financial records, or bank account
• Is not in control of his/her own identification documents (ID or passport)
• Is not allowed or able to speak for themselves (a third party may insist on being present and/or translating)
• Claims of just visiting and inability to clarify where he/she is staying/address
• Lack of knowledge of whereabouts and/or of what city he/she is in
• Loss of sense of time
• Has numerous inconsistencies in his/her story
Content sources: https://humantraffickinghotline.org/type-trafficking/sex-trafficking
http://www.heuni.fi/material/attachments/heuni/projects/wmPiHN4hb/Trafficking_in_Persons_and_Gender.pdf
http://hankeringforhistory.com/the-history-of-human-trafficking/
Picture sources: https://highwaymail.co.za/271272/unite-and-support-anti-human-trafficking-walk/
http://www.gospelherald.com/articles/50296/20140131/dark-side-super-bowl-largest-human-trafficking-event-u-s.htm
http://dioriosereni.com/human-trafficking-victims-are-not-prostitutes/
Video sources: https://www.facebook.com/pg/ajplusenglish/videos/?ref=page_internal
https://www.nbcnews.com/widget/video-embed/871305795537


Esri (a.k.a. Environmental Systems Research Institute) is an international supplier of geographic information system (GIS) software, web GIS and geodatabase management applications. The company is headquartered in Redlands, California.
The company was founded as Environmental Systems Research Institute in 1969 as a land-use consulting firm. Esri products (particularly ArcGIS Desktop) have 40.7% of the global market share. In 2014, Esri had approximately a 43 percent share of the GIS software market worldwide, more than any other vendor.
The company has 10 regional offices in the U.S. and a network of 80+ international distributors,[5] with about a million users in 200 countries. The firm has 3,200 employees in the U.S., and is privately held by its founders. In 2006, revenues were about $660 million. In a 2016 Investor's Business Daily article, Esri's annual revenues were indicated to be $1.1 Billion, from 300,000 customers ($4000/customer/year).


net.rubyeye.xmemcached.command
Interfaces
AssocCommandAware
MapReturnValueAware
MergeCommandsAware
ServerAddressAware
Classes
BinaryCommandFactory
Command
KestrelCommandFactory
TextCommandFactory
VerbosityCommand
Enums
CommandType
OperationStatus


Alyssa Cruz: Outside the Baker Ballroom! The windows overlooking the campus are beautiful and the spot is pretty secluded.
Grace Koennecke: My favorite place to study is Alden Library, preferably on the 6th or 7th floor. I really like this area because it's always quiet and you can see all of Athens just by looking out the window!
Katie Millard: I love to study on a picnic blanket on college green when it’s nice out! It feels less like studying when you're outside and I’m always more productive.
McKenna Christy: I only enjoy studying on the third and fourth floors of Alden Library. I can't study in complete silence and these floors of Alden are the perfect balance of loudness and quietness.
Tate Raub: The Post’s newsroom or my desk at home because I feel comfortable there and there’s enough noise that I don't feel like I’m alone with my thoughts.
Ashley Beach: In my hammock in the Convo parking lot because nobody goes over there and it feels like your own little world!
Anastasia Carter: Fourth floor of Alden is my favorite place to study because there are lots of windows to look out of and plenty of spaces to sit and work.
Alex Imwalle: I like to study in my room! It’s nice to be in a place that feels most comfortable, and I like to be alone to minimize distractions.
Mimi Calhoun: Alden fourth floor! It has a lot of natural light and is a pretty quiet environment with people still around.
What is the best place to grab coffee?
Cruz: Donkey- The staff is so kind, the drinks are great and the vibes are so cozy!
Koennecke: My favorite coffee shop is Donkey Coffee because it's so welcoming and cozy. Also, they play good music!
Millard: I think Brenen’s Coffee Cafe has the best iced caramel latte, and it’s right underneath my apartment so it’s super convenient.
Christy: My favorite coffee shop on campus is The Front Room Coffeehouse in Baker Center. The baristas are always super nice and I can get my all time favorite drink, which happens to be Starbucks' Pink Drink!
Raub: Donkey Coffee because I like that they’re sustainable and ethically source their coffee, which I think tastes the best. The vibes in there are just a lot better too.
Beach: Court Street Coffee! So, so, so, so many options for decaf for a caffeine-sensitive person like me!
Calhoun: Donkey Coffee because the balcony is perfect for people watching and their iced vanilla chai can’t be beat.
Which dining hall is best?
Cruz: Boyd! It has the best options and the most variety.
Koennecke: My favorite dining hall is Boyd because they usually have way healthier and better tasting food than Nelson.
Millard: Unpopular opinion but I love Nelson. There is always something to eat there and the seating makes much more sense. Also, brunch on weekends at Nelson is unmatched.
Christy: Boyd is the obvious answer and I don't think it needs much more explanation. However, I will note that Boyd's food is fresher than Nelson.
Raub: Boyd because I feel like it’s easier to find a balance between what I’m craving and what’s healthy.
Beach: Boyd for the sheer amount of veggie options and the nectar of the gods – I mean queso – always serves.
Imwalle: Nelson is my favorite dining hall because it always has different options each day. It’s close to East and South Green dorms, so it is typically the most convenient as well!
Calhoun: A bit controversial but Nelson since it has homey food options and breakfast.
Where is the best place on Court Street to grab a bite to eat?
Cruz: My favorite place to eat on Court is Ginger. The food is so good and satisfies all your cravings.
Koennecke: My favorite place to eat on Court at the moment is probably Fusion Noodle Company. I just think it's the best Asian food near campus compared to the other restaurants Athens has.
Millard: Bagel Street Deli is a classic option, and I love that there is something for anyone at any time of day. Plus, who doesn’t love bagels?
Christy: My favorite place to eat on Court Street is Ginger. When I have a busy day, I always look forward to eating at Ginger because the food is filling and delicious.
Raub: Ginger or Bagel Street Deli, depending on the day. Both are affordable, filling and just so good.
Beach: Brenen’s, because there is no where else in Athens to get a cheap, true sandwich and all sandwiches come with a side!
Carter: It isn't on Court Street, but it's close enough. Restaurant Salaam is by far my favorite place to eat in Athens. There are not many Mediterranean food options in Athens, but Restaurant Salaam always gets it right.
Imwalle: I love Courtside Pizza because it is always so easy to stop in and order. Anytime you’re out on Court Street it is the ideal option for an inexpensive, quality piece of pizza.
Calhoun: Mr. Hibachi, as it has great quality sushi and hibachi.
Where is the best place to shop on Court Street?
Koennecke: My favorite place to shop on Court is definitely Little Professor Book Store since they have all of my books I usually need for classes, and they also just have a great selection of books to choose from.
Millard: There is a Family Dollar at the end of Court Street that I frequent way too much. They always have great deals, and I like the walk!
Christy: I love shopping at 10 West Clothing Co. They always have the best spirit wear for all of OU's festivities and occasions. Their clothes are sold at reasonable prices too!
Raub: Based on how many sweatshirts and t-shirts I have from there, probably College Bookstore. There’s a lot to choose from and the $7.77 shirts and $18.04 sweatshirts have never let me down.
Beach: UPTOWN COSTUMES. They have everything you could ever need for a decent price!
Calhoun: The College Bookstore because it has literally anything and everything you could need.
What is something you wish you had known about sooner as a freshman?
Cruz: Do not stress out about making friends! Just be yourself and the right people will come your way.
Koennecke: I wish I would've known about Strouds Park sooner, as I only went once and it was my last weekend in Athens. It's so pretty and a really good place to relax!
Millard: Join anything and everything that interests you! It’s the easiest way to make friends, and then you have things to do outside of class, studying and hanging around. For example: join The Post!
Christy: I wish I had known that you don't need to rush your friendships. Good people will come into your life if you allow them to! I have met amazing people who I consider my best friends and I just took my time to get to know them!
Raub: Just be kind to yourself. You can start to feel like you’re drowning in work or you don’t have enough friends yet in the beginning and I wish I had started telling myself to relax a lot earlier because I stressed myself out over making sure I was doing college the “right” way.
Beach: the Glidden Hall elevator is always open … made walking back from my parking spot so much easier.
Calhoun: The Glidden Elevator in the music building. It saves you some walks up Jeff Hill.
What is the best green on campus?
Cruz: The best green is College Green! It's right in the hub of things, and it's the best place to bring a picnic blanket and relax.
Koennecke: My favorite green is by far OU's color green! It matches with most things and I think it flows well with the campus too.
Millard: I have always lived on East Green, so it has a special place in my heart. Plus, it’s like its own community and the shade of the hill always makes it a nice temperature.
Christy: This is a hard question but my favorite green is either South Green or West Green. Both of them are their own little communities and they make campus feel like one big home.
Raub: College Green because it is just so pretty and I lived in Bryan Hall this past year, sophomore year, and it was so nice to be so close to everything while also getting to walk by College Green every day.
Beach: I’m a North Green/College Green stan because it is the prettiest part of campus.
Carter: East Green because I lived there for two years, and also the aesthetic of the old Ohio University seems to remain in the buildings there.
Calhoun: East Green! It’s super cozy since the buildings are pretty close to one another, and there’s almost somebody always out on the lawn space.
What is your favorite thing about Athens?
Cruz: My favorite thing about Athens is the people. The community is so tight knit and everyone is here to help each other.
Koennecke: My favorite thing about Athens is how nice everyone is. Everyone on campus is always willing to help you and always allows you to be yourself!
Millard: There is such a welcoming, warm feeling to the place and to the people. Everyone is inviting and kind, and I always feel at home here.
Christy: There is always something happening in Athens (get it). I love how there's always something to go out and do on campus. Also, the scenery of Athens is another favorite of mine. It's hard to pick just one! Raub: I’ve heard alumni and other students say this before I came here but there is just a certain vibe to this place that I can’t quite put my finger on. The closest thing would be that you feel like you’re home every time you come back.
Beach: I have never felt like I didn’t belong. There’s something for everyone and you’ll find your niche before you know it. Whether that be a student org, or the Stephen's basement, you’ll find your place! Carter: My favorite thing about Athens is the people because there are so many students who come from all over, but also a mix of natives who have lived here longer. Regardless, all of the people have a genuine joy in their hearts for being in Athens.
Imwalle: Athens is the perfect size! It is big enough so you can always meet new people, but you can also count on seeing at least one person you are familiar with whenever you go out!
Calhoun: Athens allowed me to meet some of my best friends who I can’t imagine not having in my life.


Aditya Sanghi
Software Craftsman
This is a little bit more information about myself.
I am blah blah blah
My Skills
Some of my existing skills.
HTML
Ruby
MySQL
Contact Me
Reach out to me on
Twitter
or
Github


Lil Uzi VertLilYatchy |YoungBoy | JuiceWrld | Beyonce | liluzivert | TravisScott | |
Symere Bysil Woods (born July 31, 1994), known professionally as Lil Uzi Vert, is an American rapper, singer, and songwriter. Characterized by his face tattoos, facial piercings, eccentric hairstyles and androgynous fashion,[3] his music is often defined by dark subject matters and imagery built on a melodic emo approach to trap.[4] Born and raised in Philadelphia, Uzi Vert gained initial recognition following the release of the commercial mixtape Luv Is Rage (2015), which led to a recording contract with Atlantic Records, to whom he signed to under DJ Drama's Generation Now imprint.[5] Lil Uzi Vert attracted mainstream attention following the release of his debut single "Money Longer" in 2016.[6] The song would act as the lead single for the subsequent mixtape Lil Uzi Vert vs. the World (2016), which also contained the song "You Was Right". After releasing two additional mixtapes in 2016 and 2017, including one in collaboration with Gucci Mane, Lil Uzi Vert was featured on the Billboard Hot 100 chart-topping Migos' single "Bad and Boujee". He later secured his first top ten single with "XO Tour Llif3", which won the MTV Video Music Award for Song of Summer. "XO Tour Llif3" acted as the lead single to Lil Uzi Vert's debut studio album Luv Is Rage 2 (2017), which debuted at number one on the Billboard 200, and was certified double platinum by the Recording Industry Association of America (RIAA).[6] At the 2018 Grammy Awards, Lil Uzi Vert was nominated for Best New Artist. His second studio album, Eternal Atake (2020), was among the most anticipated albums in hip hop and peaked at number one on the Billboard 200.[7] |


Places I like visiting
These are some of the places which I like to visit the most:
Reykjavik
, Iceland
Lamu
, Kenya
Abu Dhabi
, UAE


Ether Mart!

Email
@
Reason
Pick One...
Adoration
Ordering a White Russian
Complaint
I am lost
Message
Our fake address
Ether Mart
123 Tampines Street 12
Singapore 521123
12312312
Support:
<EMAIL_ADDRESS>Marketing:
Marketing@ethermart.com


Home in Adelaide's inner-north totally destroyed by suspicious fire | Cannabis crop discovered after house fire in Adelaide's west
Police are investigating a suspicious fire that completely destroyed a home in Adelaide's inner-north. Meanwhile, a Cannabis crop was found after a house fire in Adelaide's west last night.
Police and fire crews were called to Florence Cres in Brompton about 9:10pm where 10 MFS appliances, with 45 firefighters and one command vehicle, found a home engulfed in flames.
Thankfully, the home was unoccupied at the time and two dogs in the backyard survived.
The blaze was extinguished in 40 minutes and was contained to the property, causing $350,000 worth of damages.

Meanwhile, a Cannabis crop was found after a house fire in Marleston last night.
Police and MFS were called to the Cudmore Tce property about 8:20pm with reports of smoke coming from the roof.
Once fire crews extinguished the blaze, a hydroponic crop was found inside with at least 20 plants being grown.
Anyone with information is urged to contact Crime Stoppers on 1800 333 000, or online at www.crimestopperssa.com.au.


Plan Payment Page
Press a button below to signal transaction status back to the browser
OK
Failed
Device Information:


A new kind of Instant Messaging
Whether it's corporations or governments, digital surveillance today is widespread. Tox is easy-to-use software that connects you with friends and family without anyone else listening in. While other big-name services require you to pay for features, Tox is completely free and comes without advertising — forever.


--- layout: page title: "About" description: "A little about me." header-img: "img/floor.jpg" ---
My name is Billy. I'm a technologist that works on open learning environments.
If you're reading this page, you probably want to know more about me.
I work for the Outreach College at the University of Hawai'i at Manoa (UHM). I support faculty who are interested in the development of Open Educational Resources (OER). You can find out more about my current work here.
I previously worked with the Distance Course Design and Consulting (DCDC) Group in the College of Education at UHM and for Creative Commons (cc). Much of my work has focused on open, distributed learning and instructional design. Aside from that I build bicycles, surf some, and tinker with Web technology that supports digital literacy development and other fun things.
I occasionally facilitate workshops and speak, mainly about copyright, Open Education and OER. If you're interested in getting in touch, head over to my contact page.
Every good blog should have a blogroll. Here's some of my reading list.
billymeinke.wordpress.com > A graduate school ePortfolio that grew into my former professional blog.
My work has been featured by CC, the OER Research Hub, the PLOS Sci Ed blog, the LSE Impact Blog, and Opensource.com.
Header image from unsplash.com / CC0
Profile image by catmapper


If you have a secret (text) that you want to communicate to someone then submit your text to One Time Link and it will give you a link to send to them (by secure means).
Make sure you communicate that link to someone via a secure means (like Signal, WhatsApp). If you send the link to someone using a non-secure means like email then you are exposed to a man-in-the-middle attack in that someone else can intercept the link, view it, then create another link to forward to the receiving party. Neither the sender nor the receiving part are aware of the leaking of the secret.
If the receiver of the link cannot view the secret then it is possible that the secret has been compromised by a third party. This is really only possible if the transport mechanism you use has been compromised (like non-TLS email). In this situation the original secret should be changed and resent (perhaps by another transport method!).
Version: ${project.version}, git commit ${git.commit.hash.short}
Full source code for this version's implementation is here.
The critical part of this implementation is coming up with an easy cheap way of guaranteeing exactly-once delivery. Yes you could achieve this using a database that supports transactions but there is another much simpler and cheaper way:
create one new FIFO SQS queue per message which is disposed of on message view.
AWS Lambda is a great cheap solution to run the backend serverless but occasionally a user may encounter a six second delay while a new backend server is provisioned ("cold start"). Not a big deal every now and then.
Notes:
There's nothing that guarantees that every message is read so we also need to perform a cleanup to deal with unread messages building up in storage and queues. Every 12 hours an AWS Lambda function iterates the S3 data bucket objects, inspects the expiry time metadata and every message that has expired is removed (and its associated queue deleted).


ABOUT US
Canara Bank is one of the largest public sector banks owned by the Government of India. It is headquartered in Bengaluru. It was established at Mangalore in 1906 by Ammembal Subba Rao Pai. It is one of the oldest public sector banks in the country. The government nationalized the bank in 1969.The Tagline of Canara Bank is "Together we Can"..As of 31 March 2019, the bank had a network of 6310 branches and more than 8851 ATMs which are spread across 4467 centers. The bank also has offices abroad in London, Hong Kong, Moscow, Shanghai, Dubai, Tanzania and New York.
Do not share your internet banking username/password or Credit/Debit Card number/CVV/OTP via e-mail or over the phone
IMPORTANT : Canara Bank never asks for your user id/password/pin no. through phone call/SMS/e-mails. Please do not respond to any such phone call/SMSes/e-mails. Any such phone calls/SMSes/E-mails asking you to reveal your login credentials or One Time Password through SMS could be an attempt to withdraw money from your account. NEVER NEVER share these details to anyone.
State bank of India wants you to be secure.if you come across any such instances please inform us


*Grade symptoms at the highest activity level at which you think you could function without significant symptoms, even if you are not actually performing activities at this level.
1. What is the highest level of activity that you can perform without significant knee pain?
2. During the past 4 weeks, or since your injury, how often have you had pain?
Never 0 1 2 3 4 6 7 8 9 10 constant
3. If you have pain, how severe is it?
No pain 0 1 2 3 4 6 7 8 9 10 Worst pain imaginable
4. During the past 4 weeks, or since your injury, how stiff or swollen has your knee been?
5. What is the highest level of activity you can perform without significant swelling in your knee?
6. During the past 4 weeks, or since your injury, has your knee locked or caught?
7. What is the highest level of activity you can perform without significant giving way in your knee?
8. What is the highest level of activity you can participate in on a regular basis?
9. How does your knee affect your ability to:
a. Go up stairs
b.  Squat
e. Sit with your knee bent
f. Rise from a chair
g. Run straight ahead
h. Jump and land on your involved leg
i. Stop and start quickly
10. How would you rate the function of your knee on a scale of 0 to 10 with 10 being normal, excellent function and 0 being the inability to perform any of your usual daily activities which may include sport?
a.FUNCTION PRIOR TO YOUR KNEE INJURY:
Could't perform daily activities 0 1 2 3 4 6 7 8 9 10 no limitation in daily activities
b.CURRENT FUNCTION OF YOUR KNEE:
Anwering date:


Cait Olivia
Home
About
Services
Contact
Contact
Name
Email
Event Type
Face Paint
Balloon Twisting
Craft Corner
Custom Event Coordinating
Description


---
name: message-structure
layout: post
title: "GSoC Finale"
time: 2013-09-24 03:44:00.0001000 +5.30
tags: gsoc mailman
---
So I have pushed my final commit for now for my GSoC project. I will try
to be brief on all the accomplishments and mention concisely
what-is-working.
- Signature rule following strict rfc 3156 can now be verified, only
pgp-mime messages are accepted and messages without a (valid) signature
are held.
- SignMessage handler creates multipart/signed message, first of whose
part is the original message formed after all the processing(in
default-posting-pipeline this handler is at last before the message is
send out or copied to nntp or any other queue). It expects a
`multipart/signed` or `multipart/mixeed` message. The signature is
calculated on whole part using the list's secret key.
- A List's key can be created from postorius and other signature
parameters can also be changed from there( only 'signature_max_age for
now).
- A user can import his public key from public keyservers( defaults to
ha.pool.sks-keyservers.net) by entering their public key id or they can
copy paste their public key data to upload their public key.( Exceptions
handling is not implemented yet in postorius, if works fine in perfect
situations).
I will soon come up with post more detailed about how my project functions,
but for now if anyone wants to have a look my code it
is here
.


Check DOIs
Upload a list of DOIs, and we'll access the Unpaywall database to find OA information for each one. You'll get results as a spreadsheet emailed to you in a few minutes. You can check up to 10,000 DOIs at a time this way.
Success!
Your DOIs have been submitted. In a few minutes, you'll get an email from us with an attached spreadsheet showing the results. Keep an eye on your spam folder, since automated emails can often be flagged as spam.
Sorry, there was a problem!
Looks like we're having trouble processing your request. There may have been a problem with either the DOIs or the email you entered. Please email us at<EMAIL_ADDRESS>and we'll work to get the problem fixed.


Core
Labs
Conditions
Environment
Vaccinations
Medications
Demographics
Age
40yo
Gender
Height
'
"
Submit your mixed hScore
Feedback


Leaked Russian interference report raises UK vote questions
LONDON (AP) - A senior Labour party official says leaks from a report on Russian interference in British politics raises serious questions about the security of next month’s election.
The Sunday Times says the report from Parliament’s intelligence committee concludes that Russian interference may have affected Britain’s 2016 Brexit referendum, though the impact was “unquantifiable.” The Times says the report discusses the impact of articles posted by Russian new sites that were widely disseminated on social media.
Emily Thornberry, Labour’s foreign affairs spokeswoman, told the newspaper that Prime Minister Boris Johnson must “clear up the confusion, spin and speculation around this ISC report by publishing it in full at the earliest opportunity.”
TOP STORIES
George Soros group asks Fox News to ban guest who claimed billionaire controls State Dept.
Edwards narrowly re-elected Louisiana governor
Sudden expansion of 2020 Democratic presidential field reveals unease with Biden, Warren, Sanders
She says if the Conservative leader does not, “people will rightly continue to ask: what is he trying to hide from the British public and why?”
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


AWS Thing Name:
cloud_on
LEDs & Buttons
off/on
LED 1
Button 1
off/on
LED 2
Button 2
off/on
LED 3
Button 3