The following dependency includes the Aika software library to an existing maven project.
<dependency>
<groupId>org.aika-software</groupId>
<artifactId>aika</artifactId>
<version>1.4.0</version>
</dependency>
This example demonstrates the recognition of the words 'jackson cook' as forename and surname.
If these words would have occurred independently, they would have been recognized as city or
profession based on the example code. The complete code for this example can be found in the class NamedEntityRecognitionTest.
Now, the first step is to create an empty model. The following map is used as a dictionary to look up the individual word input neurons.
Model m = new Model();
HashMap<String, Neuron> inputNeurons = new HashMap<>();
for(String word: new String[] {"jackson", "cook"}) {
Neuron in = m.createNeuron("W-" + word, INPUT);
inputNeurons.put(word, in);
}
These three neurons are just placeholders that will be wired up later on.
Neuron forenameCategory = m.createNeuron("C-forename", INHIBITORY, LIMITED_RECTIFIED_LINEAR_UNIT);
Neuron surnameCategory = m.createNeuron("C-surname", INHIBITORY, LIMITED_RECTIFIED_LINEAR_UNIT);
Neuron inhibitingN = m.createNeuron("INHIB", INHIBITORY, LIMITED_RECTIFIED_LINEAR_UNIT);
The following code snippet is the crucial section of this example. It shows how the first entity neuron is created and connected by its input synapses.
The entity neurons represent the concrete meanings of the input words. As can be seen here the individual inputs have a few more properties than we are used to from other
neural networks. The reason for this is that Aika not only propagates the input activation value to the next neuron but also the text range, the word position.
This entity neuron has three inputs. The first one simply checks if the word 'cook' occurred in the text. The second one is a positive feedback loop and checks if the previous word
was a forename. The last one is a negative feedback loop. It makes sure that only one meaning is assigned to each word.
The other entity neurons are created in a similar fashion which is therefore not shown here.
Neuron cookSurnameEntity = Neuron.init(
m.createNeuron("E-cook (surname)", EXCITATORY, RECTIFIED_HYPERBOLIC_TANGENT),
6.0, // adjusts the bias
new Synapse.Builder() // Requires the word to be recognized
.setSynapseId(0)
.setNeuron(inputNeurons.get("cook"))
.setWeight(10.0)
.setRecurrent(false),
new Synapse.Builder() // The previous word needs to be a forename
.setSynapseId(1)
.setNeuron(forenameCategory)
.setWeight(10.0)
.setRecurrent(true), // this input is a positive feedback loop
// This neuron may be suppressed by the E-cook (profession) neuron, but there is no
// self suppression taking place even though 'E-cook (surname)' is also contained
// in the inhibitingN.
new Synapse.Builder()
.setSynapseId(2)
.setNeuron(inhibitingN)
.setWeight(-100.0)
.setRecurrent(true), // this input is a negative feedback loop
new Relation.Builder() // references the previous word
.setFrom(1) // From Synpase Id
.setTo(0) // To Synapse Id
.setRelation(END_TO_BEGIN_EQUALS),
new Relation.Builder()
.setFrom(2)
.setTo(0)
.setRelation(OVERLAPS),
new Relation.Builder()
.setFrom(0)
.setTo(OUTPUT)
.setRelation(EQUALS)
);
The category neurons in this example only have input. For a real application there would be a long list of inputs.
Neuron.init(
forenameCategory,
0.0,
new Synapse.Builder() // In this example there is only one forename considered.
.setSynapseId(0)
.setNeuron(jacksonForenameEntity)
.setWeight(1.0),
new Relation.Builder()
.setFrom(0)
.setTo(OUTPUT)
.setRelation(EQUALS)
);
Neuron.init(
surnameCategory,
0.0,
new Synapse.Builder()
.setSynapseId(0)
.setNeuron(cookSurnameEntity)
.setWeight(1.0),
new Relation.Builder()
.setFrom(0)
.setTo(OUTPUT)
.setRelation(EQUALS)
);
The last neuron is the suppressing neuron. It is used as a mediator in order to avoid having to connect all of these neurons with each other. Self suppression does not take place.
Neuron.init(
inhibitingN,
0.0,
new Synapse.Builder().setNeuron(cookProfessionEntity)
.setSynapseId(0)
.setWeight(1.0),
new Synapse.Builder()
.setSynapseId(1)
.setNeuron(cookSurnameEntity)
.setWeight(1.0),
new Synapse.Builder()
.setSynapseId(2)
.setNeuron(jacksonCityEntity)
.setWeight(1.0),
new Synapse.Builder()
.setSynapseId(3)
.setNeuron(jacksonForenameEntity)
.setWeight(1.0),
new Relation.Builder()
.setFrom(0)
.setTo(OUTPUT)
.setRelation(EQUALS),
new Relation.Builder()
.setFrom(1)
.setTo(OUTPUT)
.setRelation(EQUALS),
new Relation.Builder()
.setFrom(2)
.setTo(OUTPUT)
.setRelation(EQUALS),
new Relation.Builder()
.setFrom(3)
.setTo(OUTPUT)
.setRelation(EQUALS)
);
Now that the model is complete, we can start processing an actual text.
Document doc = m.createDocument("mr. jackson cook was born in new york ");
int i = 0;
for(String w: doc.getContent().split(" ")) {
int j = i + w.length();
// Feed the individual words as inputs into the network.
inputNeurons.get(w).addInput(doc, i, j);
i = j + 1;
}
// Search for the best interpretation of this text.
doc.process();
System.out.println(doc.activationsToString());
doc.clearActivations();
The output of this example looks as following. Each line in the table represents a neuron activation. In this example, slots simply specify the range begin (slot 0) and the range end (slot 1).
Activation ID - Neuron Type - Final Decision - Slots (Ranges) | Identity - Neuron Label - Logic Layer - Upper Bound -
Value | Sum | Weight - Input Value | Target Value
0 INPUT - - (0:0, 1:4) "mr. " () - W-mr. - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
4 INHIBITORY - - (0:4, 1:12) "jackson " () - C-forename - V:1.0 UB:1.0 Net:1.0 W:0.0
5 INHIBITORY - - (0:4, 1:12) "jackson " () - INHIB - V:1.0 UB:1.0 Net:1.0 W:0.0
1 INPUT - - (0:4, 1:12) "jackson " () - W-jackson - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
2 EXCITATORY - SELECTED - (0:4, 1:12) "jackson " () - E-jackson (forename) - V:1.0 UB:1.0 Net:6.0 W:6.0
3 EXCITATORY - EXCLUDED - (0:4, 1:12) "jackson " () - E-jackson (city) - V:0.0 UB:0.0 Net:-95.0 W:0.0
9 INHIBITORY - - (0:12, 1:17) "cook " () - C-surname - V:1.0 UB:1.0 Net:1.0 W:0.0
10 INHIBITORY - - (0:12, 1:17) "cook " () - INHIB - V:1.0 UB:1.0 Net:1.0 W:0.0
6 INPUT - - (0:12, 1:17) "cook " () - W-cook - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
7 EXCITATORY - SELECTED - (0:12, 1:17) "cook " () - E-cook (surname) - V:1.0 UB:1.0 Net:6.0 W:6.0
8 EXCITATORY - EXCLUDED - (0:12, 1:17) "cook " () - E-cook (profession) - V:0.0 UB:0.0 Net:-95.0 W:0.0
11 INPUT - - (0:17, 1:21) "was " () - W-was - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
12 INPUT - - (0:21, 1:26) "born " () - W-born - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
13 INPUT - - (0:26, 1:29) "in " () - W-in - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
14 INPUT - - (0:29, 1:33) "new " () - W-new - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
15 INPUT - - (0:33, 1:38) "york " () - W-york - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
Final SearchNode:6 WeightSum:12.0
@Test
public void testMutualExclusion() {
Model m = new Model();
// Create the input neurons for the network.
Neuron inA = m.createNeuron("IN-A", INPUT);
Neuron inB = m.createNeuron("IN-B", INPUT);
Neuron inC = m.createNeuron("IN-C", INPUT);
// Instantiate the inhibitory neuron. Its inputs will be added later on.
Neuron inhibN = m.createNeuron("INHIB");
// Create three neurons that might be suppressed by the inhibitory neuron.
Neuron pA = Neuron.init(
m.createNeuron("A", EXCITATORY),
3.0,
new Synapse.Builder()
.setSynapseId(0)
.setNeuron(inA)
.setWeight(10.0)
.setRecurrent(false),
new Synapse.Builder()
.setSynapseId(1)
.setNeuron(inhibN)
.setWeight(-100.0)
.setRecurrent(true),
new Relation.Builder()
.setFrom(1)
.setTo(0)
.setRelation(EQUALS),
new Relation.Builder()
.setFrom(0)
.setTo(OUTPUT)
.setRelation(EQUALS)
);
Neuron pB = Neuron.init(
m.createNeuron("B", EXCITATORY),
5.0,
new Synapse.Builder()
.setSynapseId(0)
.setNeuron(inB)
.setWeight(10.0)
.setRecurrent(false),
new Synapse.Builder()
.setSynapseId(1)
.setNeuron(inhibN)
.setWeight(-100.0)
.setRecurrent(true),
new Relation.Builder()
.setFrom(1)
.setTo(0)
.setRelation(EQUALS),
new Relation.Builder()
.setFrom(0)
.setTo(OUTPUT)
.setRelation(EQUALS)
);
Neuron pC = Neuron.init(
m.createNeuron("C", EXCITATORY),
2.0,
new Synapse.Builder()
.setSynapseId(0)
.setNeuron(inC)
.setWeight(10.0)
.setRecurrent(false),
new Synapse.Builder()
.setSynapseId(1)
.setNeuron(inhibN)
.setWeight(-100.0)
.setRecurrent(true),
new Relation.Builder()
.setFrom(1)
.setTo(0)
.setRelation(EQUALS),
new Relation.Builder()
.setFrom(0)
.setTo(OUTPUT)
.setRelation(EQUALS)
);
// Finally addInput all the inputs to the suppressing neuron.
Neuron.init(
inhibN,
0.0,
new Synapse.Builder()
.setSynapseId(0)
.setNeuron(pA)
.setWeight(1.0)
.setRecurrent(false),
new Synapse.Builder()
.setSynapseId(1)
.setNeuron(pB)
.setWeight(1.0)
.setRecurrent(false),
new Synapse.Builder()
.setSynapseId(2)
.setNeuron(pC)
.setWeight(1.0)
.setRecurrent(false),
new Relation.Builder()
.setFrom(0)
.setTo(OUTPUT)
.setRelation(EQUALS),
new Relation.Builder()
.setFrom(1)
.setTo(OUTPUT)
.setRelation(EQUALS),
new Relation.Builder()
.setFrom(2)
.setTo(OUTPUT)
.setRelation(EQUALS)
);
Neuron outN = Neuron.init(
m.createNeuron("OUT", EXCITATORY),
0.0,
new Synapse.Builder()
.setSynapseId(0)
.setNeuron(pB)
.setWeight(1.0)
.setRecurrent(false),
new Relation.Builder()
.setFrom(0)
.setTo(OUTPUT)
.setRelation(EQUALS)
);
// Now that the model is complete, apply it to a document.
Document doc = m.createDocument("foobar", 0);
// Add input activations starting at char 0 and ending at char 1
// These inputs will be immediately propagated through the network.
inA.addInput(doc, 0, 1);
inB.addInput(doc, 0, 1);
inC.addInput(doc, 0, 1);
// Computes the best interpretation
doc.process();
System.out.println(doc.activationsToString());
Assert.assertEquals(0, pA.getActivations(doc, true).count());
Assert.assertEquals(1, pB.getActivations(doc, true).count());
Assert.assertEquals(0, pC.getActivations(doc, true).count());
Assert.assertEquals(1, outN.getActivations(doc, true).count());
doc.clearActivations();
}
Activation ID - Neuron Type - Final Decision - Slots | Identity - Neuron Label - Upper Bound -
Value | Net | Weight - Input Value | Target Value
0 INPUT - - (0:0, 1:1) "f" () - IN-A - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
3 INPUT - - (0:0, 1:1) "f" () - IN-B - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
6 INPUT - - (0:0, 1:1) "f" () - IN-C - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
2 INHIBITORY - - (0:0, 1:1) "f" () - INHIB - V:1.0 UB:1.0 Net:1.0 W:0.0
1 EXCITATORY - EXCLUDED - (0:0, 1:1) "f" () - A - V:0.0 UB:0.0 Net:-97.0 W:0.0
4 EXCITATORY - SELECTED - (0:0, 1:1) "f" () - B - V:1.0 UB:1.0 Net:5.0 W:5.0
7 EXCITATORY - EXCLUDED - (0:0, 1:1) "f" () - C - V:0.0 UB:0.0 Net:-98.0 W:0.0
5 INHIBITORY - - (0:0, 1:1) "f" () - OUT - V:0.762 UB:0.762 Net:1.0 W:0.0
Final SearchNode:10 WeightSum:5.0
@Test
public void testPatternMatching() {
Model m = new Model();
Map<Character, Neuron> inputNeurons = new HashMap<>();
// Create an input neuron for every letter in this example.
for(char c: new char[] {'a', 'b', 'c', 'd', 'e', 'f'}) {
Neuron in = m.createNeuron(c + "", INPUT);
inputNeurons.put(c, in);
}
Neuron pattern = Neuron.init(
m.createNeuron("BCDE", EXCITATORY),
5.0,
new Synapse.Builder()
.setSynapseId(0)
.setNeuron(inputNeurons.get('b'))
.setWeight(10.0)
.setRecurrent(false),
new Synapse.Builder()
.setSynapseId(1)
.setNeuron(inputNeurons.get('c'))
.setWeight(10.0)
.setRecurrent(false),
new Synapse.Builder()
.setSynapseId(2)
.setNeuron(inputNeurons.get('d'))
.setWeight(10.0)
.setRecurrent(false),
new Synapse.Builder()
.setSynapseId(3)
.setNeuron(inputNeurons.get('e'))
.setWeight(10.0)
.setRecurrent(false),
new Relation.Builder()
.setFrom(0)
.setTo(1)
.setRelation(END_TO_BEGIN_EQUALS),
new Relation.Builder()
.setFrom(1)
.setTo(2)
.setRelation(END_TO_BEGIN_EQUALS),
new Relation.Builder()
.setFrom(2)
.setTo(3)
.setRelation(END_TO_BEGIN_EQUALS),
new Relation.Builder()
.setFrom(0)
.setTo(OUTPUT)
.setRelation(BEGIN_EQUALS),
new Relation.Builder()
.setFrom(3)
.setTo(OUTPUT)
.setRelation(END_EQUALS)
);
// Create a simple text document.
Document doc = m.createDocument("a b c d e ");
// Then add the characters
for(int i = 0; i < doc.length(); i++) {
char c = doc.getContent().charAt(i);
if(c != ' ') {
inputNeurons.get(c).addInput(doc, i, i + 2);
}
}
// Computes the best interpretation
doc.process();
Assert.assertEquals(1, pattern.getActivations(doc, false).count());
System.out.println("All activations:");
System.out.println(doc.activationsToString());
System.out.println();
doc.clearActivations();
}
Activation ID - Neuron Type - Final Decision - Slots | Identity - Neuron Label - Upper Bound -
Value | Net | Weight - Input Value | Target Value
0 INPUT - - (0:0, 1:2) "a " () - a - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
1 INPUT - - (0:2, 1:4) "b " () - b - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
5 EXCITATORY - SELECTED - (0:2, 1:10) "b c d e " () - BCDE - V:1.0 UB:1.0 Net:5.0 W:0.0
2 INPUT - - (0:4, 1:6) "c " () - c - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
3 INPUT - - (0:6, 1:8) "d " () - d - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
4 INPUT - - (0:8, 1:10) "e " () - e - V:1.0 UB:1.0 Net:0.0 W:0.0 - IV:1.0
Final SearchNode:1 WeightSum:0.0


1: (Un)Determinism
The theory of dynamic systems allows us to determine the motions of objects under deterministic actions. Newton's development of analytical mechanics showed us that past and future can be predicted systematically from the positions and velocities of particles at any one point, in tandem with infinitisimal motions in any one direction. It is here that the theory of differential equations and dynamical systems takes over. In these notes, we take a different approach than Newton followed. In reality, one can never measure the data precisely enough to determine the state of a system. Inexactness thus shrouds the determinism of a system, which invalidates Newton's model when applied to real-life experiments. Stochastic processes models the uncertainty of observations in a physical system.
We can think of a stochastic process as an experiment, which generates a range of data. For each particular experiment (or observation), we pick a particular $\omega \in \Omega$, and observe the resulting trajectory of data $\{ X_i(\omega) : i \in T \}$. The fact that stochastic processes can model any observation of this variety means they represent a great many phenomena, with many examples of applications.
As a naive model of the uncertainty of weather, we may take a stochastic process with state space $\mathcal{S} = \{ \textbf{sunny}, \textbf{rainy} \}$. For $i \in \mathbf{Z}$, we may model the weather on a certain day $i$ by a random variable $X_i : \Omega \to \mathcal{S}$. Then $\{ X_i : i \in \mathbf{Z} \}$ is a stochastic process. Of course, real models of the weather use much more complicated state spaces and time, but most if not all models will use a stochastic process, because weather is a chaotic system. Even if we use Newtonian mechanics as an approximation of the weather system, we cannot determine all physical variables which may effect the future, and even the smallest uncertainty will drastically effect the state of the future (you may know this as 'the butterfly effect').
In finance, we often want to model the stock market as an uncertain process, because as with weather it is impossible to measure every variable which will determine future stocks (and how would we model a person's internal decision to buy and sell stocks in the future?). We take $\mathcal{S} = \mathbf{R}$, and let $X_i$ be the value of a certain stock at time $i$, for $i \in \mathbf{R}$. This is a continuous time random process, into a continuous state space. We will treat continuous stochastic processes like this at a later time, and discover that modelling the stock market can be effectively generalized as the study of Brownian motion, which also describes the way that atoms move.
In non-parametric statistics, to estimate the CDF of an independant and identically distributed sample $X_1, \dots, X_n \sim F$ of a distribution over the real numbers, we take the estimate \[ \hat{F}(t) = \sum_{i = 1}^n \frac{\mathbf{I}[X_i \leq t]}{n} \] Then, for a fixed $t$, $\hat{F}(t)$ is a random variable, determining a stochastic process, ordered over $t$. Thus the study of this estimate reduces to a problem in stochastic processes, and in fact, most results about this distribution use the ideas of our current approach in disguise.
The examples above show both the boon and deficiency of our approach. On one hand, a vast number of problems can be covered by stochastic processes. On the other hand, this means that when we study stochastic processes in general we are studying far too many things to make meaniningful and deep statements. We will discover that the real fun of stochastic processes begins when we add additional assumptions about our data, and discover the resulting properties.
We have shown that using stochastic processes is a very general notion of repeatedly observing data. This relies on the fact that it is easy to specify some process by an observation of some data which may have some random component. Most constructions of stochastic processes rely on observing a finite portion of the data, and then extrapolating to form the entire process. It is fortunate that mathematics has an existence theorem showing that, provided your finite data is consistent, a stochastic process can always be built to satisfy your needs.
To describe the theorem elegantly, we shall introduce some temporary terminology. Fix some state space $\mathcal{S} \subset \mathbf{R}$, and index set $T$, in which our stochastic process will be generated. Suppose that each finite subset $A$ of $T$ determines a probability distribution $\mathbf{P}_A$ on the Borel $\sigma$-algebra of $\mathcal{S}^A$. If $B \subset A \subset T$, then we have an imbedding of the borel sigma algebras defined by $$ \pi_{B \to A}: \mathcal{B}(S^B) \to \mathcal{B}(S^A) $$ $$ \pi_{B \to A} (X) = \{ x \in \mathcal{S}^A : \{ x_i : i \in B \} \in X\ \text{and}\ x_j = \mathcal{S}\ \text{for}\ j \not \in B \} $$ In other words, we just take $\mathcal{S}$ as the fiber on coordinates not in $B$. A family of finite dimensional distributions $\{ \mathbf{P}_S : S \subset T \}$ is consistant if $\mathbf{P}_A \circ \pi_{B \to A} = \mathbf{P}_B$, for any $B \subset A \subset T$. It was Kolmogorov's discovery that this is all we need to define a stochastic process.
The proof uses the Hahn-Kolmogorov/Carathéodory extension theorem to construct a probability measure on $\mathcal{S}^T$, which can then be taken as the sample space of our random variables $X_i = \pi_i$. We leave the technical details to the reader. The proof given should (in principle) extend naturally to any Polish (separable and completely metrizable) space, but this is not needed here. The random variables specified are not unique, but we shall not worry about this until later on, when we analyze continuous time markov processes, when this has more important repurcussions.
Now that we have introduced the characters of study, we shall begin building our intuitions on the simplest stochastic processes for which interesting results can be obtained: markov chains.


link bold paragraph
this is just normal text
some { brackets
some } brackets
some { } brackets
A link inside of an emphasis tag: link.
Attributes without quote and non-whitespace char link
Attributes without quote and non-whitespace char and a dot link.
Multiple attributes without quote and non-whitespace char and a dot link.


--- layout: page title: Hi, I'm Pavan Reddy Bommana. subtitle: MS student in Computer Science use-site-title: true ---
My name is Pavan Reddy Bommana. I am currently pursuing Masters in Computer Science at University of Massachusetts, Amherst. I am doing a data science concentration in my Masters. I enjoy developing data-intensive systems that solve specific problems using machine learning techniques.
Prior to this I spent two years at Acceletrade Technologies, a high-frequency trading firm based out of Bangalore, India. I worked on some challenging problems in the fintech domain during my stint there. As a result, I developed an acute interest in working on problems in the intersection of finance and machine learning. I also have a Bachelors degree (Honours) in Computer Science and Engineering from Indian Institute of Technology Kharagpur.
Stay tuned for updates. I'll soon be starting a blog on findings in my areas of interest.
In the mean while feel free to reach out to me to discuss about any exciting ideas and opportunities you might have.


--- layout: post authors: ["Sheldon McKay"] title: "2015 Post-workshop Instructor Debriefing, Round 4" date: 2015-02-27 time: "12:53:00" tags: ["Debriefing"] ---
We had our fourth post-workshop debriefing of the year this week, in which we discussed recent workshops at Jagiellonian University in Krakow, Poland, and Michigan State University. All four instructors from the Krakow workshop attended the debriefing and we had a fairly in-depth discussion about that workshop
Notes on the meeting can be found here.
Paulina Lach, Leszek Tarkowski, Piotr Banaszkiewicz, and Klemens Noga taught the workshop in Krakow, Feb 21-22, 2015. Some general observations about this workshop were that the etherpad and sticky notes were well received and used throughout the workshop. One of the helpers kept the etherpad up-to-date through the workshop. 41 people were registered at the workshop, of which 36 attended. There was a small amount of attrition of advanced participants on the second day. At this workshop, they collected informal feedback by sticky notes at the end of each section, which the instructors found helpful. They also observed that the workshop participants transitioned from speaking in formal honorifics, normally used in Polish in an academic context, to addressing each other informally, which indicates a good comfort level at the event.
Git:
The instructor covered Git in detail and taught accordingly to Software Carpentry lesson. The participants appreciated the provided handout (http://education.github.com/git-cheat-sheet-education.pdf), a GitHub cheat sheet for Git, although some complained that the Git lesson did not include all of the commands in the handout and would have preferred to see a handout that more closely followed the lesson plan. A quick poll of showed that 14/22 people would have liked to have used pair-githubbing as part of the Git lesson. Generally, the participants felt that the pace was good for Git.
Shell:
The stock "inflammation" lesson material was used. The instructor managed to teach from the beginning through to loops (5 lessons).
Participants were pleased with quizzes at the ending of each lesson, especially the multiple choice questions. Some were disappointed that the lessons covered did not get as far as building shell scripts.
Python:
The instructor started with the "inflammation" material, then used his own examples to place more emphasis on "for" loops and "if" statements (e.g. nested for loops). At the end, the participants were given the challenge of printing prime numbers in the [2,100] range to the screen. Two participants commented that the example was too "mathematical". The participants enjoyed the instructors' funny anecdotes. From quick feedback, almost equal number found the pace "too fast" as did "too slow", which not all the unusual for workshops with a mix of novice and advanced participants.
SQL:
There were some technical issues at the beginning. This topic was taught using the Firefox plugin for SQLite rather than the pure shell. This was the last section taught at the workshop and time was limited, so there was a feeling of being rushed.
Jiarong Guo reported on the introductory python workshop held at Michigan State University on January 28-29, 2015. This workshop was structured as three half days, with one each devoted to shell, Python and Git.
Basic Python (data type, variable, list, file stream) was taught using more introductory lessons rather than the standard software carpentry materials. The audience are mostly biologists with no experience in Python or Git. 4/15 had some experience with the Unix shell. The instructors tried to make the materials as introductory as possible. They felt that the Python materials on the Software Carpentry GitHub repo were not basic enough for the audience and that some introduction to basic Python data types was necessary.
Things worked well overall. They spent some time explaining the difference between shell (Bash), Python in the shell, and IPython Notebook, as some participants were confused about these concepts before. Both Python in the shell and IPython Notebook were used during the Python lessons. Hand-on exercises for participants worked really well. When students were not interactive, the TAs helped out by posing questions to the instructors. Some participants expressed that there was not enough discussion prior to the hands-on exercises and that they had no idea how to start. Jirong mentioned that more exercise collections in the repo would be nice.
Jason Moore and Andrea Zonca reported by email about the workshop at UCI Data Science Initiative, held February 21 and 22. The workshop went well.
Some specific notes:
git pull
. It went well
at UCI, at UCLA the week before we tried with downloading zip archives
and it very time consuming.The next debriefing meeting will be held on Tuesday, March 10.


This tutorial provides a quick introduction to using Spark. It demonstrates the basic functionality of RDD and DataFrame API
This is the start of using Spark with Scala, from next week onwards we would be working on this tutorial to make it grow. We would look at how we can add more functionality into it , then we would be adding more modules to it together. If you have any changes then feel free to send in pull requests and we would do the merges :) Stay tuned.


My First Heading
My first paragraph.
This is a link
Click me
Coffee
Tea
Milk
This is a
paragraph with a line break.
First name:
Last name:


Play Again
Guessing Game
Enter a Number between 1 - 30
?
Enter Number your Guess 👇
Check
Start Guessing ...
💥 Score:
20
🏆 Highscore:
0


Convex-hull trick.
More...
#include <cht.hpp>
Convex-hull trick.
This can be used to find the minimum of a set of lines at various points.
◆ CHT()
| convex_hull_trick::CHT::CHT |
( |
vector< point > |
v | ) |
|
|
inlineexplicit |
◆ min()
| auto convex_hull_trick::CHT::min |
( |
ll |
x | ) |
|
|
inline |
Minimum value of the lines at x.
◆ lines
| vector<point> convex_hull_trick::CHT::lines |
The lines, specified as (a,b) for ax+b.
The documentation for this struct was generated from the following file:
- /home/ram/OmniTemplate/src/ds/cht.hpp


This Printfection Giveaway browser extension allows you to generate Gift URLs from any of your running Printfection Giveaway campaigns. Simply provide your API key below and then use the Printfection button in your browser bar.
Your API Key has been saved! Go ahead and start using the extension.
Your API Key is located in the Printfection account menu under API Access.


Unscramble
Slippery, wet and greasy, when its in its easy, when it out it jumps about, slippery wet and greasy. What am I?


Digital Fabrication really interested me as an elective course. The Wang Innovation Center (WIC) was recently completed, and had many brand new machines to learn about. On the first day of the course we each got into groups of three to solve two different challenges. The first was to reduce the bounce of a golf ball from a high drop with simple household materials, and the second was to make the tallest free standing tower possible with just tape and newspaper. Both of these challenges were fun, and we learned about problem solving and team work. Here is a photo of us working:
Later in the rotation we were introduced to HTML coding on GitHub. We learned how to add text, images, video, change colors and change fonts in a website. Many of these tools we learned about in HTML on Github are being used in this very website.


Book Trading Club
News
All Books
My Books
Trades
Profile
Log out
Trade Requests For You
Your Trade Requests


WikiLeaks<EMAIL_ADDRESS>leaked emails, 2009 mail archive
This message is part of a
particular mailbox
provided at
WikiLeaks
and it should be
discussed here.
[
Date Prev
][
Date Next
][
Thread Prev
][
Thread Next
][
Date Index
][
Thread Index
]
Attempting Contact
To
: <
<EMAIL_ADDRESS>>
Subject
: Attempting Contact
From
: "Jay Faber" <
<EMAIL_ADDRESS>>
Date
: Thu, 20 Sep 2007 21:05:01 -0400
Seal-send-time
: Thu, 20 Sep 2007 21:05:01 -0400
Let me know if you receive this email......
Prev by Date:
RE: Forgive Me...
Next by Date:
Re: Attempting Contact
Previous by thread:
RE: Forgive Me...
Next by thread:
Re: Attempting Contact
Index(es):
Date
Thread
Entry for this page on WikiLeaks
|
Discussion page on WikiLeaks
|
wikileaks.org
Date Index
|
Thread Index
|
Author Index


We have many public domain and commercial software packages installed on our systems, which are available to all users. However, students are allowed to download and install small software packages in their own home directory, software usually only useful to them personally.
There are a number of steps needed to install the software.
Of the above steps, probably the most difficult is the compilation stage.
All high-level language code must be converted into a form the computer understands. For example, C language source code is converted into a lower-level language called assembly language. The assembly language code made by the previous stage is then converted into object code which are fragments of code which the computer understands directly. The final stage in compiling a program involves linking the object code to code libraries which contain certain built-in functions. This final stage produces an executable program.
To do all these steps by hand is complicated and beyond the capability of the ordinary user. A number of utilities and tools have been developed for programmers and end-users to simplify these steps.
The make command allows programmers to manage large programs or groups of programs. It aids in developing large programs by keeping track of which portions of the entire program have been changed, compiling only those parts of the program which have changed since the last compile.
The make program gets its set of compile rules from a text file called Makefile which resides in the same directory as the source files. It contains information on how to compile the software, e.g. the optimisation level, whether to include debugging info in the executable. It also contains information on where to install the finished compiled binaries (executables), manual pages, data files, dependent library files, configuration files, etc.
Some packages require you to edit the Makefile by hand to set the final installation directory and any other parameters. However, many packages are now being distributed with the GNU configure utility.
As the number of UNIX variants increased, it became harder to write programs which could run on all variants. Developers frequently did not have access to every system, and the characteristics of some systems changed from version to version. The GNU configure and build system simplifies the building of programs distributed as source code. All programs are built using a simple, standardised, two step process. The program builder need not install any special tools in order to build the program.
The configure shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a Makefile in each directory of the package.
The simplest way to compile a package is:
The configure utility supports a wide variety of options. You can usually use the --help option to get a list of interesting options for a particular configure script.
The only generic options you are likely to use are the --prefix and --exec-prefix options. These options are used to specify the installation directories.
The directory named by the --prefix option will hold machine independent files such as documentation, data and configuration files.
The directory named by the --exec-prefix option, (which is normally a subdirectory of the --prefix directory), will hold machine dependent files such as executables.
For this example, we will download a piece of free software that converts between different units of measurements.
First create a download directory
% mkdir download
Download the software here and save it to your new download directory.
Go into your download directory and list the contents.
% cd download
% ls -l
As you can see, the filename ends in tar.gz. The tar command turns several files and directories into one single tar file. This is then compressed using the gzip command (to create a tar.gz file).
First unzip the file using the gunzip command. This will create a .tar file.
% gunzip units-1.74.tar.gz
Then extract the contents of the tar file.
% tar -xvf units-1.74.tar
Again, list the contents of the download directory, then go to the units-1.74 sub-directory.
% cd units-1.74
The first thing to do is carefully read the README and INSTALL text files (use the less command). These contain important information on how to compile and run the software.
The units package uses the GNU configure system to compile the source code. We will need to specify the installation directory, since the default will be the main system area which you will not have write permissions for. We need to create an install directory in your home directory.
% mkdir ~/units174
Then run the configure utility setting the installation path to this.
% ./configure --prefix=$HOME/units174
NOTE:
The $HOME variable is an example of an environment variable.
The value of $HOME is the path to your home directory. Just
type
% echo $HOME
to show the contents of this variable. We will learn more about environment
variables in a later chapter.
If configure has run correctly, it will have created a Makefile with all necessary options. You can view the Makefile if you wish (use the less command), but do not edit the contents of this.
Now you can go ahead and build the package by running the make command.
% make
After a minute or two (depending on the speed of the computer), the executables will be created. You can check to see everything compiled successfully by typing
% make check
If everything is okay, you can now install the package.
% make install
This will install the files into the ~/units174 directory you created earlier.
You are now ready to run the software (assuming everything worked).
% cd ~/units174
If you list the contents of the units directory, you will see a number of subdirectories.
| bin | The binary executables |
| info | GNU info formatted documentation |
| man | Man pages |
| share | Shared data files |
To run the program, change to the bin directory and type
% ./units
As an example, convert 6 feet to metres.
You have: 6 feet
You want: metres
* 1.8288
If you get the answer 1.8288, congratulations, it worked.
To view what units it can convert between, view the data file in the share directory (the list is quite comprehensive).
To read the full documentation, change into the info directory and type
% info --file=units.info
When a piece of software is being developed, it is useful for the programmer to include debugging information into the resulting executable. This way, if there are problems encountered when running the executable, the programmer can load the executable into a debugging software package and track down any software bugs.
This is useful for the programmer, but unnecessary for the user. We can assume that the package, once finished and available for download has already been tested and debugged. However, when we compiled the software above, debugging information was still compiled into the final executable. Since it is unlikey that we are going to need this debugging information, we can strip it out of the final executable. One of the advantages of this is a much smaller executable, which should run slightly faster.
What we are going to do is look at the before and after size of the binary file. First change into the bin directory of the units installation directory.
% cd ~/units174/bin
% ls -l
As you can see, the file is over 100 kbytes in size. You can get more information on the type of file by using the file command.
% file units
units: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped
To strip all the debug and line numbering information out of the binary file, use the strip command
% strip units
% ls -l
As you can see, the file is now 36 kbytes - a third of its original size. Two thirds of the binary file was debug code !!!
Check the file information again.
% file units
units: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), stripped
HINT: You can use the make command to install pre-stripped copies
of all the binary files when you install the package.
Instead of typing make install, simply type make install-strip
<EMAIL_ADDRESS>© October 2001


Hawaii Health Department confirms 2 more cases of vaping-related lung illness | Honolulu Star-Advertiser
The DOH is urging residents to stop vaping, regardless of substance or source, until investigations nationwide determine the culprit in the illnesses. Read more
Mahalo for reading the Honolulu Star-Advertiser!
You're reading a premium story. Read the full story with our Print & Digital Subscription.
Already a subscriber? Log in now to continue reading this story.
Print subscriber but without online access? Activate your Digital Account now.


{% extends 'pypi_ui/base.html' %} {% block title %}Forbidden{% endblock %} {% block content %}
You tried to get into somewhere you shouldn't be in.


Cycling great Poulidor laid to rest
SAINT-LEONARD-DE_NOBLAT: Former Tour de France winners Bernard Thevenet and Bernard Hinault were among hundreds of mourners who gathered in the village of Saint-Leonard-de-Noblat on Tuesday (Nov 19) for the funeral of Raymond Poulidor, who died last week at the age of 83.

"He was an intergenerational champion. Known by people who never saw him on a bike."
Poulidor clinched 189 wins during his career from 1960-1977 but he will always be remembered for the races he failed to win.
From 1964 to 1976 he finished second in the Tour de France on three occasions and was third five times in an era dominated by Eddy Merckx.
High points included wins in the Tour of Spain, the Dauphine Libere twice, and the Paris-Nice twice.
His grandson Mathieu van der Poel, two-time cyclo-cross world champion, accompanied Poulidor's widow Giselle and their two other grandchildren at the funeral service.


|
Xerces-C++
3.1.4
|
The DOMTypeInfo
interface represent a type used by DOMElement
or DOMAttr
nodes, specified in the schemas associated with the document.
More...
Public Types | |
Public Contants | |
| enum | DerivationMethods { DERIVATION_RESTRICTION = 0x001, DERIVATION_EXTENSION = 0x002, DERIVATION_UNION = 0x004, DERIVATION_LIST = 0x008 } |
These are the available values for the derivationMethod parameter used by the method DOMTypeInfo::isDerivedFrom() . More... | |
Public Member Functions | |
Destructor | |
| virtual | ~DOMTypeInfo () |
| Destructor. More... | |
| virtual const XMLCh * | getTypeName () const =0 |
Returns The name of a type declared for the associated DOMElement or DOMAttr , or null if unknown. More... | |
| virtual const XMLCh * | getTypeNamespace () const =0 |
The namespace of the type declared for the associated DOMElement or DOMAttr or null if the DOMElement does not have declaration or if no namespace information is available. More... | |
| virtual bool | isDerivedFrom (const XMLCh *typeNamespaceArg, const XMLCh *typeNameArg, DerivationMethods derivationMethod) const =0 |
| This method returns if there is a derivation between the reference type definition, i.e. More... | |
Protected Member Functions | |
Hidden constructors | |
| DOMTypeInfo () | |
The DOMTypeInfo
interface represent a type used by DOMElement
or DOMAttr
nodes, specified in the schemas associated with the document.
The type is a pair of a namespace URI and name properties, and depends on the document's schema.
These are the available values for the derivationMethod parameter used by the method DOMTypeInfo::isDerivedFrom()
.
It is a set of possible types of derivation, and the values represent bit positions. If a bit in the derivationMethod parameter is set to 1, the corresponding type of derivation will be taken into account when evaluating the derivation between the reference type definition and the other type definition. When using the isDerivedFrom method, combining all of them in the derivationMethod parameter is equivalent to invoking the method for each of them separately and combining the results with the OR boolean function. This specification only defines the type of derivation for XML Schema.
In addition to the types of derivation listed below, please note that:
DERIVATION_EXTENSION:
If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the derivation by extension. The reference type definition is derived by extension from the other type definition if the other type definition can be reached recursively following the {base type definition} property from the reference type definition, and at least one of the derivation methods involved is an extension.
DERIVATION_LIST:
If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the list. The reference type definition is derived by list from the other type definition if there exists two type definitions T1 and T2 such as the reference type definition is derived from T1 by DERIVATION_RESTRICTION or DERIVATION_EXTENSION, T2 is derived from the other type definition by DERIVATION_RESTRICTION, T1 has {variety} list, and T2 is the {item type definition}. Note that T1 could be the same as the reference type definition, and T2 could be the same as the other type definition.
DERIVATION_RESTRICTION:
If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the derivation by restriction if complex types are involved, or a restriction if simple types are involved. The reference type definition is derived by restriction from the other type definition if the other type definition is the same as the reference type definition, or if the other type definition can be reached recursively following the {base type definition} property from the reference type definition, and all the derivation methods involved are restriction.
DERIVATION_UNION:
If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the union if simple types are involved. The reference type definition is derived by union from the other type definition if there exists two type definitions T1 and T2 such as the reference type definition is derived from T1 by DERIVATION_RESTRICTION or DERIVATION_EXTENSION, T2 is derived from the other type definition by DERIVATION_RESTRICTION, T1 has {variety} union, and one of the {member type definitions} is T2. Note that T1 could be the same as the reference type definition, and T2 could be the same as the other type definition.
| Enumerator | |
|---|---|
| DERIVATION_RESTRICTION | |
| DERIVATION_EXTENSION | |
| DERIVATION_UNION | |
| DERIVATION_LIST |
|
protected |
|
virtual |
Destructor.
|
pure virtual |
Returns The name of a type declared for the associated DOMElement
or DOMAttr
, or null if unknown.
DOMElement
or DOMAttribute
, or null if unknown.
|
pure virtual |
The namespace of the type declared for the associated DOMElement
or DOMAttr
or null if the DOMElement
does not have declaration or if no namespace information is available.
DOMElement
or DOMAttr
or null if the DOMElement
does not have declaration or if no namespace information is available.
|
pure virtual |
This method returns if there is a derivation between the reference type definition, i.e.
the DOMTypeInfo on which the method is being called, and the other type definition, i.e. the one passed as parameters.
| typeNamespaceArg | The namespace of the other type definition. |
| typeNameArg | The name of the other type definition. |
| derivationMethod | The type of derivation and conditions applied between two types, as described in the list of constants provided in this interface. |


PLANET SICK-BOY: http://www.sick-boy.com "We Put the SIN in Cinema"
I don't know if my steady diet of reality television, but Abbas Kiarostami's The Wind Will Carry Us seems a lot like Big Brother.  As a viewer, I almost felt like I didn't belong there – like a high tech eavesdropper. It certainly doesn't seem like anybody in The Wind is acting, as characters routinely turn their backs to the cameras, uttering nearly inaudible words (thank God for subtitles) that sound so natural, I doubt they were ever written in a script.
The Wind takes place in the Siah Dareh, a pueblo-style town built into the side of a mountain about 450 miles from Tehran. Siah Dareh is in the middle of nowhere and, according to one of its inhabitants, it was purposely built to remain hidden to the world so it wouldn't be stolen.
The film's main character, who we know only as the Engineer (Behzad Dourani), has brought a small crew of men to the dinky village with a rather secretive mission, but the crew's assignment isn't the only thing that Kiarostami keeps hush-hush in The Wind. We hear the Engineer's partners talk, but we never see them. Ditto for a ditch digger that the Engineer meets when he drives to the outskirts of town each time his cell phone rings. There's a dying woman in the town that seems to figure into the Engineer's work, but we never see her, either. In fact, we never learn for sure what the Engineer is doing in Siah Dareh, but he gives the townsfolk the impression that he's hunting for buried treasure.
The Engineer befriends a studious young boy, who becomes his guide through the history and customs of Siah Dareh. The two share a love of poetry (the title of the film comes from a poem), and their dialogue flows so naturally, you'll swear they're making it up as they go along. Every time the Engineer sees the boy, he asks about the dying woman. The implication is that the Engineer and his crew are supposed to document an ancient funeral custom that takes place in Siah Dareh. But he could also be the Angel of Death, too.
The main themes of The Wind do seem to concern life and death, but I have a feeling that the whole film may just be Kiarostami's take on the present political climate in Iran. There's just something odd about a guy digging a hole for what he explains will be part of a new telecommunication system for a village that barely has electricity.
 If there was a calendar for the film, I'd be first in line to buy one. Kiarostami's uncanny ability to omit large chunks of the story and still keep the story interesting and understandable is nothing short of amazing.
1:58 – NR but contains no objectionable material
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Size By:
GDP
Population
Mouse over any country to view top trade partners. Click a country to drill down, and click again to go back to world view.


C&C TA: Script Collection
Contact<EMAIL_ADDRESS>The extension has been updated!
Current version:
CHANGELOGS
Close
Options


Nigerian firefighters battle huge blaze in central Lagos
by The Associated Press, StaffLAGOS, Nigeria -- Nigerian firefighters are trying to extinguish a fire at the Balogun market in central Lagos.
Thick black smoke and flames are shooting from five-storey buildings surrounding the market as fire trucks attempt to get access to the fire.
Residents have thrown what belongings they can from the buildings, and some on the rooftops used small buckets of water in an attempt to stop the spread of the fire Tuesday.


Class: TableSetter::Table
- Inherits:
-
Object
- Object
- TableSetter::Table
- Defined in:
- lib/table_setter/table.rb
Instance Attribute Summary
- - (Object) data readonly The Table class handles processing the yaml processing and csv loading, through table fu.
- - (Object) facets readonly The Table class handles processing the yaml processing and csv loading, through table fu.
- - (Object) next_page readonly The Table class handles processing the yaml processing and csv loading, through table fu.
- - (Object) page readonly The Table class handles processing the yaml processing and csv loading, through table fu.
- - (Object) prev_page readonly The Table class handles processing the yaml processing and csv loading, through table fu.
- - (Object) table_opts readonly The Table class handles processing the yaml processing and csv loading, through table fu.
Class Method Summary
- + (Object) all Returns all the tables in the table directory.
- + (Boolean) exists?(slug) Does a table with this slug exist?.
- + (Object) fresh_yaml_time fresh_yaml_time checks each file in the tables directory and returns the newest file’s modification time — there’s probably a more unix-y way to do this but for now this is plenty speedy.
- + (Object) table_path(slug) Convenience method for looking up by slug.
Instance Method Summary
- - (Object) csv_data The csv_data for the table fu instance is loaded either from the remote source or from a local file, depending on the keys present in the yaml file.
- - (Boolean) faceted?
- - (Boolean) hard_paginate? hard_paginate instructs the app to render batches of a table.
- - (Table) initialize(slug, opts = {:defer => false}) constructor A new Table should accept a slug, mapped to a yaml in the tables directory, optionally you can defer loading of the table until you’re ready to render it.
- - (Object) load The load method handles the actual request either to the file system or remote url.
- - (Object) method_missing(method) We magically need access to the top level keys like google_key, or uri for the other methods.
- - (Object) paginate!(curr_page) paginate uses TableFu’s only! method to batch the table.
- - (Object) per_page The number of rows per page.
- - (Object) sort_array A convienence method to return the sort array for table setter.
- - (Boolean) sortable? A table isn’t sortable by tablesorter if it’s either faceted or multi-page paginated.
- - (Object) total_pages The total pages we’ll have.
- - (Object) updated_at The real updated_at of a Table instance is the newer modification time of the csv file or the yaml file.
- - (Object) uri Returns a usable uri based on what sort of input we have.
Constructor Details
- (Table) initialize(slug, opts = {:defer => false})
A new Table should accept a slug, mapped to a yaml in the tables directory, optionally you can defer loading of the table until you’re ready to render it.
14 15 16 17 18 19 20 21 22 |
# File 'lib/table_setter/table.rb', line 14 def initialize(slug, opts={:defer => false}) = indifferent_access YAML.load_file(Table.table_path(slug)) @table_opts = [:table] @table_opts[:slug] = slug @deferred = opts[:defer] if !@deferred self.load end end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
- (Object) method_missing(method)
We magically need access to the top level keys like google_key, or uri for the other methods. It’s a bit dangerous because everything returns nil otherwise. At some point we should eval and create methods at boot time.
110 111 112 113 114 |
# File 'lib/table_setter/table.rb', line 110 def method_missing(method) if @table_opts[method] @table_opts[method] end end |
Instance Attribute Details
- (Object) data (readonly)
The Table class handles processing the yaml processing and csv loading, through table fu
10 11 12 |
# File 'lib/table_setter/table.rb', line 10 def data @data end |
- (Object) facets (readonly)
The Table class handles processing the yaml processing and csv loading, through table fu
10 11 12 |
# File 'lib/table_setter/table.rb', line 10 def facets @facets end |
- (Object) next_page (readonly)
The Table class handles processing the yaml processing and csv loading, through table fu
10 11 12 |
# File 'lib/table_setter/table.rb', line 10 def next_page @next_page end |
- (Object) page (readonly)
The Table class handles processing the yaml processing and csv loading, through table fu
10 11 12 |
# File 'lib/table_setter/table.rb', line 10 def page @page end |
- (Object) prev_page (readonly)
The Table class handles processing the yaml processing and csv loading, through table fu
10 11 12 |
# File 'lib/table_setter/table.rb', line 10 def prev_page @prev_page end |
- (Object) table_opts (readonly)
The Table class handles processing the yaml processing and csv loading, through table fu
10 11 12 |
# File 'lib/table_setter/table.rb', line 10 def table_opts @table_opts end |
Class Method Details
+ (Object) all
Returns all the tables in the table directory. Each table is deferred so accessing the @data attribute will throw and error.
176 177 178 179 180 181 182 183 |
# File 'lib/table_setter/table.rb', line 176 def all tables=[] Dir.glob("#{TableSetter.table_path}/*.yml").each do |file| table = new(File.basename(file, ".yml"), :defer => true) tables << table if table.live end tables end |
+ (Boolean) exists?(slug)
Does a table with this slug exist?
207 208 209 |
# File 'lib/table_setter/table.rb', line 207 def exists?(slug) File.exists? table_path(slug) end |
+ (Object) fresh_yaml_time
fresh_yaml_time checks each file in the tables directory and returns the newest file’s modification time — there’s probably a more unix-y way to do this but for now this is plenty speedy.
188 189 190 191 192 193 194 195 196 197 198 199 |
# File 'lib/table_setter/table.rb', line 188 def fresh_yaml_time newest_file = Dir["#{TableSetter.table_path}/*.yml"].inject do |memo, obj| memo_time = File.new(File. memo).mtime obj_time = File.new(File. obj).mtime if memo_time > obj_time memo else obj end end File.new(newest_file).mtime end |
+ (Object) table_path(slug)
Convenience method for looking up by slug.
202 203 204 |
# File 'lib/table_setter/table.rb', line 202 def table_path(slug) "#{TableSetter.table_path}#{slug}.yml" end |
Instance Method Details
- (Object) csv_data
The csv_data for the table fu instance is loaded either from the remote source or from a local file, depending on the keys present in the yaml file.
39 40 41 42 43 44 |
# File 'lib/table_setter/table.rb', line 39 def csv_data case when google_key || url then Curl::Easy.perform(uri).body_str when file then File.open(uri).read end end |
- (Boolean) faceted?
62 63 64 |
# File 'lib/table_setter/table.rb', line 62 def faceted<EMAIL_ADDRESS>end |
- (Boolean) hard_paginate?
hard_paginate instructs the app to render batches of a table.
72 73 74 |
# File 'lib/table_setter/table.rb', line 72 def hard_paginate? @table_opts[:hard_paginate] == true end |
- (Object) load
The load method handles the actual request either to the file system or remote url. It performs the requested data manipulations form the yml file after the data has been loaded. We’re keeping this explicit to control against unnecessary http requests.
27 28 29 30 31 32 33 34 35 |
# File 'lib/table_setter/table.rb', line 27 def load csv = csv_data @data = TableFu.new(csv_data, @table_opts[:column_options] || {}) if @table_opts[:faceting] @data.col_opts[:ignored] = [@table_opts[:faceting][:facet_by]] @facets = @data.faceted_by @table_opts[:faceting][:facet_by] end @data.delete_rows! @table_opts[:dead_rows] if @table_opts[:dead_rows] end |
- (Object) paginate!(curr_page)
paginate uses TableFu’s only! method to batch the table. It also computes the page attributes which are nil and meaningless otherwise.
83 84 85 86 87 88 89 90 91 |
# File 'lib/table_setter/table.rb', line 83 def paginate!(curr_page) return if !hard_paginate? @page = curr_page.to_i raise ArgumentError if @page < 1 || @page > total_pages adj_page = @page - 1 > 0 ? @page - 1 : 0 @prev_page = adj_page > 0 ? adj_page : nil @next_page = page < total_pages ? (@page + 1) : nil @data.only!(adj_page * per_page..(@page * per_page - 1)) end |
- (Object) per_page
The number of rows per page. Defaults to 20
77 78 79 |
# File 'lib/table_setter/table.rb', line 77 def per_page @table_opts[:per_page] || 20 end |
- (Object) sort_array
A convienence method to return the sort array for table setter.
101 102 103 104 105 |
# File 'lib/table_setter/table.rb', line 101 def sort_array @data.sorted_by.inject([]) do |memo, (key, value)| memo << [@data.columns.index(key), value == 'descending' ? 0 : 1] end end |
- (Boolean) sortable?
A table isn’t sortable by tablesorter if it’s either faceted or multi-page paginated.
67 68 69 |
# File 'lib/table_setter/table.rb', line 67 def sortable? !faceted? && !hard_paginate? end |
- (Object) total_pages
The total pages we’ll have. We need to calculate it before paginate, so that we still have the full @data.rows.length
96 97 98 |
# File 'lib/table_setter/table.rb', line 96 def total_pages @total_pages ||= (@data.rows.length / per_page.to_f).ceil end |
- (Object) updated_at
The real updated_at of a Table instance is the newer modification time of the csv file or the yaml file. Updates to either resource should break the cache.
57 58 59 60 |
# File 'lib/table_setter/table.rb', line 57 def updated_at csv_time = google_key.nil? ? modification_time(uri) : google_modification_time (csv_time > yaml_time ? csv_time : yaml_time).to_s end |
- (Object) uri
Returns a usable uri based on what sort of input we have.
47 48 49 50 51 52 53 |
# File 'lib/table_setter/table.rb', line 47 def uri case when google_key then "http://spreadsheets.google.com/pub?key=#{google_key}&output=csv" when url then url when file then File.("#{TableSetter.table_path}#{file}") end end |


Kohli Connect is comprised of engineering, sales, marketing, design and support professional. We are best known for Digital Marketting solutions. Our services are reliable and trusteworthy.
Kohli Connect is comprised of engineering, sales, marketing, design and support professional. We are best known for Digital Marketting solutions. Our services are reliable and trusteworthy.
We plan to gradually develop a fully-fledged and wide-ranging network of technicians and customers to develop our brand and provide extensive services worldwide.
Kohli connect has a long-term vision of creating an evolved powerful society where technologies shall rule the Internet worldwide, making it easily accessible to all the potential users in futureConnect to your customers by by our SMS Marketting Service.
Experience our powerful Email Marketing Tool with Lots of Amazing Features.
Manage your business calls seamlessly with our comprehensive IVR service.
Connect to your customers by just one missed call..
Lorem ipsum dolor sit amet consectetur adipisicing elit. Iste sunt porro delectus cum officia magnam.
Genearte QR code for you files, images, websites etc
SMS marketing is a simple and effective way to increase customer loyality or drive demand. With our SMS marketing service, your business is able to contact thousands of customers around the globe. We design our platform to be simple and effective to use. You will be able to create the messages as you wish nad deliver in the way you want your customes to see.
SMS marketing is a simple and effective way to increase customer loyality or drive demand. With our SMS marketing service, your business is able to contact thousands of customers around the globe. We design our platform to be simple and effective to use. You will be able to create the messages as you wish nad deliver in the way you want your customes to see.
Greet your customers with our professional interactive voice response (IVR) system. With our system, you can decide what your customers hear. So, Save manpower and be online 24x7 with Kohli Connect.
Sometimes, you don’t even need to talk. Use our powerful tool for surveys, instant customer service and campaigns. Our Missed Call service will work wonders for your Customer Relationship and Campaign Management.
Social Media an effective way to grow your business’ brand awareness, relationships, and website traffic. Whether you are a startup, a small business or a multi-national organization, Kohli Connect will help build your following in Social media and help your business grow. We will design a social media strategy by understanding your business, competition landscape and growth opportunities. We help grow you social media audience across different channels.
Most of the time you need qr for website, brochures, pamplets etc that are connected to any files or websites. Generate any type of QR vbu our QR Code generate.
Kohli Media LLP. SCO 31, Sector 86 Mohali - 160062, India.
+91-6280848783
+1-347-632-8098


MultiplayerSessionList
Home
Privacy
Game
Refresh
Game List Test
Name
Players/Spectators
Locked
Passworded
State
...
Name
Players/Spectators
Locked
Passworded
State
...


*** out of ****
Year: 1999. Starring Ben Affleck, Matt Damon, Linda Fiorentino, Chris Rock, Salma Hayek, Alan Rickman, Jason Lee, Jason Mewes, Kevin Smith, George Carlin. Written by Kevin Smith. Directed by Kevin Smith. Rated R.
Kevin Smith's "Dogma" shows that the young director of "Clerks" and "Chasing Amy" has learned to make a big-budget movie without turning it into the overstuffed turkey "Mallrats" was. This film is, for the most part, a fun, thoughtful romp through the Catholic religion. It's clever and funny while asking some very worthwhile questions about what the church has become. Rather than being a condemnation of religion, as some advocates have claimed, it is really more of a devout meditation on this filmmaker's own beliefs, ones that are probably shared by a great many Catholics. It's not perfect, and Smith's indulgences get in the way of the narrative (such as it is) too often, suggesting he hasn't completely mastered his use of a bigger budget, but it's still a funny, entertaining experience. "Dogma" is humorous and thoughtful at the same time, something that is rare in a film from a filmmaker as young as Smith, but very welcome.
Ben Affleck and Matt Damon star as Bartleby and Loki, two renegade angels trying to get back into heaven through a loophole opened up by the Catholic Church. Because of a doctrine passed down by Cardinal Glick (George Carlin), they find that they simply need to pass through the doors of a church in New Jersey in order to be absolved of all wrongdoing. Unfortunately, since this will prove God fallible, it will result in the universe being blinked out of existence. To stop Bart and Larry, a messenger angel (Alan Rickman) who acts as the voice of God enlists Bethany (Linda Fiorentino), a Catholic abortion clinic worker having a crisis of faith. Along to help her are Jay and Silent Bob (Jason Mewes and Kevin Smith) as unlikely prophets, Rufus the 13th Apostle (Chris Rock), who was left out of the Bible because he was black, and Serendipity (Salma Hayek), a muse who has taken human form, only to be stricken with writer's block. Further complicating matters is Azrael (Jason Lee), a demon with his own agenda who is actively trying to help the angels and hinder the good guys.
Kevin Smith's best talent is as a writer, as the dialogue-driven "Clerks" and "Chasing Amy" proved. In "Dogma," his fourth effort, Smith begins to show some signs of growth as a director. He has begun making use of camera movement and including action taking place behind the focus of the scene. Smith has always been rather lackluster cameraman (by his own admission), and his visual style is still mostly of the "talking-heads" variety, but he shows a little more visual flair here than he has in previous films.
As always, when he concentrates on writing conversations, Smith tinges them with just the right amount of wit to get his point across without becoming preachy. His script is a little disjointed, with too much expository dialogue, but it still contains enough worthwhile moments to overlook its flaws. Smith does a good job of alternating between smart satire and the "poop jokes" his audience has become used to. There are several priceless bits, the standout being George Carlin's "Catholicism WOW!" program, in which his Cardinal Glick announces that he will replace the "depressing" crucifix symbol with the more jovial "Buddy Christ." Smith's idea of a Jesus for the 90's is flat-out hilarious. Chris Rock has some good moments, especially during his explanation of why his apostle was left out of the Bible. Some other inspired bits have Matt Damon talking a nun out of Catholicism and an unusual (to say the least) casting choice in the role of God. Smith has a fine pop-culture sensibility, including references to everything from "Sixteen Candles" to "Indiana Jones." Most of them work.
The performances in "Dogma" are varied. Matt Damon and Ben Affleck have the same chummy chemistry they exhibited in "Good Will Hunting." Linda Fiorentino is passable as Bethany, but she's hampered by a lack of emotional range and Smith's obvious discomfort with dramatic scenes. Her one "big" emotional moment comes off like an excuse to get her into a wet shirt, and I 'm still wondering if anybody in the real world has ever actually uttered the sentence, "I'm physically and psychologically exhausted." Chris Rock and Alan Rickman have plenty of good moments, the latter delivering all his lines with delicious sarcasm. Jason Lee (who seems to Kevin Smith what Samuel L. Jackson is to Tarantino) continues to impress as a solid supporting actor, taking the role of the heavy with devilish glee (please excuse the bad pun). Salma Hayek has yet to prove to me that she's more than a pretty face, while George Carlin's scenes are all wonderfully inspired ("The Catholic Church does not make mistakes!"). Jay and Silent Bob, the recurring characters of Smith's filmography, get a much larger slice of screen time here, and their Mutt-and-Jeff antics keep the film continually lively, even when it gets bogged down in exposition. Jay's stoner quips are consistently funny (that is, if you aren't offended by constant use of the F-word) and Silent Bob's facial expressions never cease to amuse me.
Where "Dogma" really runs into problems is in its story. Smith may be proficient at writing witty dialogue and one-liners, but he still has yet to understand good pacing. One of the reasons I think "Clerks" is still his best movie is that he didn't bother with a story, just piecing together scenes from a day in the life of a convenience store clerk. Here, he's got an action movie plot as a vehicle for his discussions of Catholic dogma as a vehicle for throwaway jokes and gags. Very often, the story gets lost in the shenanigans. What "Dogma" needed after its fast start was a quick wrap-up. Unfortunately, we get a long, drawn-out climax that takes far too long to dispatch of the many characters it has introduced and is soiled by far too much violence (a shame, since some of Smith's better jokes come in the final sequence). This is a clear example of Smith getting too caught up in his comic book indulgences, though the most egregious example happens when he has a monster composed entirely of human feces threaten our heroes, only to have him taken care of in a ridiculously conventional manner. I don't know why he decided to leave this scene in, other than the obvious reason that it cost quite a bit of money to produce. Smith needs to learn restraint before he can be considered a "great" filmmaker. I do give him credit for trying, though, because I see some signs of improvement here. He definitely didn't indulge himself as much as he did in "Mallrats" (his other big-budget production), which was a lifeless mess, save for Jason Lee's performance. If he keeps on track, he should have a good grasp on what it takes to make a complete motion picture.
"Dogma" is far from a perfect film, but it's nevertheless a worthwhile experience, and sure to please fans of the director. (Note to Smith devotees: Look for cameos by the two original stars of "Clerks," Brian O' Halloran and Jeff Anderson.) Smith is a filmmaker with his own voice, and as a practicing Catholic, he has clearly made a work that comes from the heart. His discussion of Catholicism is intriguing, often exhausting, and always honest, while his trademark wit remains firmly intact. Smith is a writer and novice director who is clearly still learning his trade, but he is also showing improvement. He has the pop-culture sensibility of Quentin Tarantino and the scattershot politics of Spike Lee. If he keeps this up, he could make some truly great movies in the future. "Dogma" is merely a good one.
-reviewed by Shay Casey
For more reviews, go to http://www.geocities.com/Hollywood/Land/4252/movies.html
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


WITNESS LIST Natural Resources Committee March 22, 2001 - 2:00P SB 5 FOR: Benthul, Harless Attorney (Houston Construction Houston Construction Industry Coalition), Houston, TX Garrett, Doug President (Building Performance & Comfort, Inc.), Leander, TX Gilley, Kyle Government Affairs Manager (Lennox International), Dallas, TX Husted, Amy Legislative & Regulatory Affairs (Texas Waterway Operators Association), Houston, TX Jackson, Lee Dallas County Judge (Conference of Urban Counties & Dallas County), Dallas, TX Newton, Jennifer Director, Environmental & Public Affairs (AGC of Texas), Austin, TX AGAINST: Aponte, Carol Area VP of TAB (Texas Association of Builders Central TX Association of Builders), Kempner, TX Joslove, Scott President & CEO (Texas Hotel & Motel Assn), Austin, TX Luber, Richard Executive Director (Austin Convention & Visitors Bureau), Austin, TX Riddering, Hannah Taxi Driver (Self), Austin, TX Rohde, Geoffrey Taxi Driver (Self), Austin, TX Serff, Paul President (Texas Travel Industry Assoc.), Austin, TX Trigger, Jeff General Manager (Driskill Hotel), Austin, TX ON: Anderson, Sparky Texas Program Director (Clean Water Action), Austin, TX Arambula, Tracy Environmental Justice Director (Sierra Club, Lone Star Chapter), Austin, TX Barnard, Ronald Air Quality Specialist (City of Corpus Christi), Corpus Christi, TX Burch, Robert Consulting Professional Engineer (City of Houston-Construction Industry Council), Houston, TX Burch, Robert Chairman-Energy Conservation Committee (Construction Industry Council-City of Houston), Houston, TX Carter, Jerry Member (Texas Association of Counties), Garland, TX Collins, Clay Deputy Director (Capital Planning Council), Austin, TX Good, Marilyn Communications Director (Texas Nursery & Landscape Assn.), Austin, TX King, Robert Representative/Lobbyist (Texas Energy Services Coalition), Austin, TX MacLeod, Mark Director, Special Projects (Environmental Defense), Austin, TX Marquez, Ralph Commissioner (TNRCC), Round Rock, TX Mathews, Jim General Counsel (Northeast Texas Air Care), Austin, TX Miksa, Mary VP Governmental Affairs (Texas Association of Business & Chambers of Commerce), Austin, TX Oliver, Matthew Board Member (Texas Assoc. of Builders, Texas Capitol Area Builders Assoc., Oliver Custom Homes), Austin, TX Registering, but not testifying: For: Ellmer, Mindy (Lyondell Chemical Company Coalition for Auto Repair Equality Automotive Aftermarket Industry Assn.), Austin, TX Glacken, Shawn Manager, Environmental Programs (Association of Electric Companies of Texas), Dallas, TX Hentges, Sandy Director of Government Relations (Greater Austin Chamber of Commerce), Austin, TX Keleher, Tim VP Governmental & Urban Affairs (Fort Worth Chamber of Commerce), Fort Worth, TX Lee, Donald Executive Director (Texs Conference of Urban Counties), Austin, TX Miller, Scott Manager of State Relations (Reliant Energy, Inc.), Cedar Park, TX Morphew, Cindy VP for Environmental Affairs (Texas Oil & Gas Association), Austin, TX Oneacre, Amanda VP, Government Relations (Greater Dallas Chamber), Dallas, TX Suhm, Vic Senior Consultant (North Texas Commission), Dallas, TX Against: Collins, Judy Driver (Self), Del Valle, TX Gaines, Carol Public Information Officer (Harris Co. Tax Assessor-Collector, Office of Paul Bettencourt), Houston, TX Johnson, M. Joan President (Hotel & Motel Assn of Greater Houston), Houston, TX Millar, Roger VP of Operations (Homewood Suites/Valencia Hotels), Austin, TX Murdock, Robert General Manager (Hampton Inn-Austin South), Austin, TX Owings, Scotty Director of Tourism (Austin Convention & Visitors Bureau), Austin, TX Reyna, Anna Executive Director (Austin Hotel Motel Assn.), Austin, TX Rodriguez, Manrique General Manager (Inter-Continental Stphen F. Austin Hotel), Austin, TX Sahyoun, Anthony General Manager (Holiday in Town Lake), Austin, TX Simmons, Deborah GM (Clarion Inn & Suites), Austin, TX Slater, David VP (Texas) Doubletree Hiltons (Hilton Hotels Corp.), Austin, TX Takacs, Daisy GM (Hampton Inn & Suites), Austin, TX Wells, Kayla General Manager (Greater Austin Transportation Co.), Austin, TX On: Hodge, Stan Director of Travel Research (Texas Department of Economic Development), Austin, TX Spinks, Margaret Technician in License Issuance Bureau (TX Dept. of Public Safety), Austin, TX Providing written testimony: For: Fisher, Jon Senior Vice President (Texas Chemical Council), Austin, TX Reynolds, Caroline Engineer (American Institute of Chemical Engineers-South Texas Section), Austin, TX Against: Sexton, Stephen President (Texas Taxicab Assn.), Lubbock, TX On: Blake, Shiela (Self), Houston, TX SB 5 Registering, but not testifying: Against: Borchers, Erica Sales Manager (Hilton Austin Airport Hotel), Austin, TX SB 546 AGAINST: Hollingsworth, Dewey Member (Concerned Citizens of Spicewood), Spicewood, TX Schnieder, Margie Chairperson (Residents for a Better Community), Houston, TX Vickery, Tracy Member (Concerned Citizens of Spicewood), Spicewood, TX Wall, David Chairman, Technical Advisory Committee (Residents for a Better Community), Houston, TX Registering, but not testifying: For: Stewart, Michael (TX Aggregates & Concrete Assn.), Austin, TX Against: Baumann, Brenda (Concerned Citizens of Spicewood), Spicewood, TX On: Steib, John Director, Air Permits (TNRCC) SB 810 FOR: Blevins, Wesley (Calhoun Co. Shrimpers Shrimp Limited Entry Review Board Calhoun Co. Marine Advisory Committee), Seadrift, TX Collins, Julias President (Texas Shrimp Assn.), Brownsville, TX Henderson, Wilma Executive Director (Texas Shrimp Assn.) Moore, Richard President (Pices), Dickinson, TX Stanley, C.L. Shrimp Advisory Committee Chairman (Shrimp Advisory Committee and Pisces), Dickinson, TX Zimmerman, Walter President (Texas Gulf Trawling), Port Isabel, TX AGAINST: Sybert, Brian Natural Resources Director (Sierra Club, Lone Star Chapter), Austin, TX ON: Osburn, Hal Coastal Fisheries Division Director (TX Parks & Wildlife), Austin, TX Registering, but not testifying: For: Blevins, Janie (Calhoun County Shrimpers), Seadrift, TX Clayton, Bill Consultant (TX Shrimper Assn.), Austin, TX Against: Baker, Pam Fisheries Biologist (Environmental Defense), Corpus Christi, TX On: Eymard, Donna Administrative Asst. to Port Director (Port of Brownsville), South Padre Island, TX SB 858 FOR: Blevins, Wesley (Calhoun Co. Shrimpers Shrimp Limited Entry Review Board Calhoun Co. Marine Advisory Comm.), Seadrift, TX Moore, Richard President (Pisces), Dickinson, TX Registering, but not testifying: For: Anderson, Sparky Texas Program Director (Clean Water Action), Austin, TX Blevins, Janie (Calhoun Co. Shrimpers), Seadrift, TX Gutierrez, Hector Public Affairs Consultant (City of El Paso), Austin, TX Ivic, Mihael Owner (Misho's Oyster Co.), Seabrook, TX Nelson, Ben Owner (Jeri's Seafood), Anahuac, TX On: Reck, Michael (State Comptroller's Ofice) Sarahan, Paul Director, Litigation Division (TNRCC), Austin, TX Stites, DeeAnn Coordinator ofor State Legislative Polic (TX Dept. of Agriculture), Austin, TX Wiles, Kirk Seafood Safety Director (Texas Department of Health), Austin, TX SB 906 Registering, but not testifying: For: Garcia, Joe (County of El Paso), Austin, TX SB 1162 Registering, but not testifying: For: Sybert, Brian Natural Resources Director (Sierra Club, Lone Star Chapter), Austin, TX SB 1335 FOR: Beal, Joseph General Manager (Lower Colorado River Authority), Austin, TX Clark, Jerry Executive VP, General Manager (Sabine River Authority), Orange, TX Rothe, Greg General Manager (San Antonio River Authority), San Antonio, TX West, Bill General Manager (Guadalupe Blanco River Authority), Seguin, TX AGAINST: Neild, Patty President (Lower Neches Valley Authority), Beaumont, TX Penny, Charles President; Board of Directors (Colorado River Municipal Water Dist.), Odessa, TX ON: Bell, David General Manager (West Central Texas Municipal Water District), Abilene, TX Mason, Thomas General Counsel (Lower Colorado River Authority), Austin, TX Owen, Wayne Planning & Development Mgr. (Tarrant Regional Water District), Ft. Worth, TX Stover, John General Counsel (Angelina & Neches Authority), Lufkin, TX Williams, John General Manager (Canadian River Municipal Water Authority), Sanford, TX Registering, but not testifying: For: Brown, Jim General Manager (Upper Guadalupe River Authority), Kerrville, TX Ray, Tom Deputy General Manager (Brazos River Authority), Waco, TX Against: Grant, John General Manager (Colorado River Municipal Water District), Big Spring, TX On: Brittin, Carolyn Water Program Coordinator (TNRCC), Austin, TX Schwartz, Suzanne General Counsel (TX Water Development Board), Austin, TX Swinton, John Assistant State Auditor (Texas State Auditor's Office) Providing written testimony: On: Adams, Jim General Manager (San Jacinto River Authority), Conroe, TX Kramer, Ken Director (Lone Star Chapter, Sierra Club), Austin, TX Sears, Walt General Manager (Northeast Texas Municipal Water District), Hughes Springs, TX SB 1338 Registering, but not testifying: On: Savage, Leslie (Railroad Commission of Texas), Austin, TX SB 1339 FOR: Ervi, Steve State President (Citizens Against Poultry Pollution), Midway, TX Grimm, James Executive VP (Texas Poultry Fed.), Austin, TX Registering, but not testifying: For: Anderson, Sparky Texas Program Director (Clean Water Action), Austin, TX Richardson, Fred Communications Director (Lone Star Chapter of Sierra Club), Austin, TX On: Moore, James Assistant Executive Director (Texas State Soil and Water Conservation Board), Temple, TX Roscoe, Zoe (TNRCC) SB 1390 FOR: Stewart, Michael VP (TX Aggregates & Concrete Assn), Austin, TX Registering, but not testifying: For: Sickels, Linda VP (Trinity Ind Inc), Austin, TX On: Sarahan, Paul Director, Litigation Division (TNRCC), Austin, TX SB 1410 Registering, but not testifying: For: Blevins, Wesley (Calhoun County Shrimpers Shrimp Limited Entry Review Board Calhoun County Marine advisory Comm.), Seadrift, TX Blevis, Janie (Calhoun County Shrimpers), Seadrift, TX Sybert, Brian Natural Resources Director (Sierra Club), Austin, TX On: Osburn, Hal Coastal Fisheries Division Director (Texas Parks & Wildlife Department), Austin, TX SB 1541 FOR: Kay, Douglas Radiation Protection Supervisor (TXU), Granbury, TX AGAINST: Galindo, Jimmy County Judge (Reeves County), Pecos, TX Rogers, Erin Outreach Coordinator (Sierra Club, Lone Star Chapter), Austin, TX ON: Devous, Michael Professor of Radiology (UT Southwestern Medical Center), Dallas, TX Dutton, Alan Research Scientist (Bureau of Economic Geology, UT Austin), Austin, TX Edwards, Thomas Assistant Attorney General (Office of the Attorney General), Austin, TX Eisenrich, Lloyd President (Andrews Industrial Foundation), Andrews, TX Klein, Dale Vice Chancellor (University of Texas System), Austin, TX Norton, Jr., Maurice Radiation Safety Officer (UT MD Anderson Cancer Center), Houston, TX Peddicord, Kenneth Associate Vice Chancellor (Texas A&M University System), College Station, TX Peus, Eric President (Waste Control Specialist), Austin, TX Selig, Edward General Manager (Advocates for Responsible Disposal), Austin, TX Woodward, Michael Attorney (Waste Control Specialists), Austin, TX Registering, but not testifying: On: Ing, Leigh Deputy Director, Office of Permitting (TNRCC), Austin, TX Jablonski, Susan Technical Specialist (TNRCC), Austin, TX Phillips, Jim Deputy Director, Legal Services (TNRCC), Austin, TX Ratliff, Richard Chief, Bureau of Radiation Control (Texas Department of Health), Austin, TX SCR 28 Registering, but not testifying: For: Patterson, Jerry (Houston Safari Club Houston Gun Collectors Assoc.), Austin, TX Rogers, Johnnie (Houston Safari Club & Dallas Gun Collectors), Austin, TX


A super simple and minimalist ORM built on top of IndexedDB powered by idb that makes IndexedDB usable in both service worker and application
This is a Node.js module available through the npm registry.
Before installing, download and install Node.js.
Installation is done using the npm install command:
$ npm install idborm
# or yarn
$ yarn add idborm
In order to use this module inside the service worker
use --serviceworker
flag provided by idborm binary script :
$ ./node_modules/.bin/idborm --serviceworker <PATH_TO_YOUR_SERVICE_WORKER>
you'll see it create idborm.iife.js
containing immediately invoked idborm function expression next to your service worker (provided after --serviceworker flag) and generate following code snippet on top of the service worker file:
/** "idborm": Following code snippet is required to access the "IDB"*/
importScripts("./idborm.iife.js");
const { IDB } = idborm;
now, you can access idborm utility functions using destructed IDB class
Assuming you're using a module-compatible system (like webpack, Rollup etc):
import IDB from "idborm";
const DB = IDB.init(database_name, database_version, object_store(s)_Initializer);
database_name
: Name of the database
object_store(s)_Initializer
: Represent database object store(s)( something like Table
or Model
in relational or non-relational databases ); you can initialize your database object store(s) using one of the following methods:
import { IDB } from "idborm";
// Using an initializer_object
const DB = IDB.init(database_name, database_version, {
name: object_store_name,
options: object_store_options,
});
import { IDB } from "idborm";
// Using List containing multiple initializer_objects
const DB = IDB.init(database_name, database_version, [
{ name: object_store_one_name, options: object_store_one_options },
{ name: object_store_two_name },
.
.
.
]);
import { IDB } from "idborm";
// Using a callback function that and initializer_object contains or a list containing multiple initializer_objects
const DB = IDB.init(database_name, database_version, () => {
return { name: object_store_name, options: object_store_options };
// or
return [
{ name: object_store_one_name, options: object_store_one_options },
{ name: object_store_two_name, options: object_store_two_options },
];
});
object_store_name
: Name of object store
object_store_options
optional : You can specify one of the following options:
no_options: You should manually provide key for each record when putting it in the database
keyPath
: Uses specified keyPath as record's key therefore records should contains specified keyPath
autoIncrement
: Uses autoIncrement integers as record's key
// i.e.
import { IDB } from "idborm";
// Create a dataBase containing three object stores
const MyDB = IDB.init("MyDB", 1, [
{ name: "User", options: { keyPath: "email" } },
{ name: "Post", options: { autoIncrement: true } },
{ name: "Article" },
]);
database_version
: Database objectStore(s) schema version, you have to bump database_version on changing object_store(s)_initializer to apply changes on database; (using same version or lower version will not change database object store(s)/*
i.e.
In following example we're create "Post" object store to database so we increased database version (1 -> 2) to apply changes on database
*/
import { IDB } from "idborm";
// Before
const MyDB = IDB.init("MyDB", 1, { name: "User", options: { keyPath: "email" } });
// After
const MyDB = IDB.init("MyDB", 1, [
{ name: "User", options: { keyPath: "email" } }
{ name: "Post" }
]);
name
will completely delete it and create another oneoptions
not applying changes on database, you have to completely delete the data base using asynchronous DB.delete( ) and reinitialize itdatabase_version
will not apply changes on databaseOnce you define your object stores you can destructor them from your database.objectStores
// i.e.
import { IDB } from "idborm";
// Create a dataBase containing three object stores
const MyDB = IDB.init("MyDB", 1, [
{ name: "User", options: { keyPath: "email" } },
{ name: "Post", options: { autoIncrement: true } },
{ name: "Article" },
]);
// Make sure that destructor object stores using exact same name the you defined them
const { User, Post, Article } = MyDB.objectStores;
Based on the options you specified to related object store you can put the record in the object store using ObjectStore.put(value, optional_key)
it will Put record in the object store and Replaces items with the same keys
Notice when no option (keyPath or autoIncrement) specified key(out-of-the-line-key) is required
import { IDB } from "idborm";
const MyDB = IDB.init("MyDB", 1, [
{ name: "User", options: { keyPath: "email" } },
{ name: "Post", options: { autoIncrement: true } },
{ name: "Article" },
]);
const { User, Post, Article } = MyDB.objectStores;
(async () => {
// email property is required because we're used email as object store keyPath
await User.put({ email<EMAIL_ADDRESS>name: "bob" });
// Uses autoIncrement integer as record's keys
await Post.put("post");
// Out-of-the-line-key is required because we not specified any option
await Article.put(["article"], "article one");
})();
Based on the options you specified to related object store you can get the record from object using ObjectStore.get(value, optional_key)
import { IDB } from "idborm";
const MyDB = IDB.init("MyDB", 1, [
{ name: "User", options: { keyPath: "email" } },
{ name: "Post", options: { autoIncrement: true } },
{ name: "Article" },
]);
const { User, Post, Article } = MyDB.objectStores;
(async () => {
// Use specified keyPath property as key to retrieve the record
const user = await User.get("bob@bob.com");
// AutoIncrement integer as key to retrieve the record
const post = await Post.get(1);
// Use manually specified key to retrieve the record
const article = await Article.get("article one");
})();
import { IDB } from "idborm";
const MyDB = IDB.init("MyDB", 1, [
{ name: "User", options: { keyPath: "email" } },
{ name: "Post", options: { autoIncrement: true } },
{ name: "Article" },
]);
const { User, Post, Article } = MyDB.objectStores;
(async () => {
// Use specified keyPath property as key to delete the record
await User.delete("bob@bob.com");
// AutoIncrement integer as key to delete the record
await Post.delete(1);
// Use manually specified key to delete the record
await Article.delete("article one");
})();
import { IDB } from "idborm";
const MyDB = IDB.init("MyDB", 1, { name: "User" });
const { User } = MyDB.objectStores;
(async () => {
await User.put("bob one", "user one");
await User.put("bob 2", 2);
await User.put("bob three", "user three");
const keys = await User.keys();
console.log(keys);
/*
output:
[ "user one", 2, "user three" ]
*/
})();
import { IDB } from "idborm";
const MyDB = IDB.init("MyDB", 1, { name: "User", options: { autoIncrement: true } });
const { User } = MyDB.objectStores;
(async () => {
await User.put("bob one");
await User.put({ name: "bob two" });
await User.put(3);
const values = await User.values();
console.log(values);
/*
output:
[ "bob one", { name: "bob two" }, 3 ]
*/
})();
import { IDB } from "idborm";
const MyDB = IDB.init("MyDB", 1, { name: "User", options: { keyPath: "id" } });
const { User } = MyDB.objectStores;
(async () => {
await User.put({ id: "user one", name: "bob one" });
await User.put({ id: "user two", name: "bob two" });
const entries = await User.entries();
console.log(entries);
/*
output:
[
["user one", { id: "user one", name: "bob one" }],
["user two", { id: "user two", name: "bob two" }]
]
*/
})();
import { IDB } from "idborm";
const MyDB = IDB.init("MyDB", 1, { name: "User", options: { keyPath: "id" } });
const { User } = MyDB.objectStores;
(async () => {
await User.put({ id: "user one", name: "bob one" });
await User.put({ id: "user two", name: "bob two" });
await User.clear();
const values = await User.values();
console.log(values);
/*
output:
[]
*/
})();
/*
i.e.
Delete all completed task:
*/
import { IDB } from "idborm";
const MyDB = IDB.init("MyDB", 1, { name: "Todo", options: { keyPath: "id" } });
const { Todo } = MyDB.objectStores;
(async () => {
await Todo.put({ id: "task one", completed: true });
await Todo.put({ id: "task two", completed: false });
await Todo.iterate(([key, value], index, entries) => {
if (value.completed) {
return Todo.delete(key);
}
});
const values = await Todo.values();
console.log(values);
/*
output:
[ { id: "task two", completed: false } ]
*/
})();
/**
i.e.
Put some data in the all objectStore of a database:
*/
import { IDB } from "idborm";
const MyDB = IDB.init("MyDB", 1, [
{ name: "User", options: { autoIncrement: true } },
{ name: "Post", options: { autoIncrement: true } },
]);
(async () => {
await MyDB.objectStores.methods.iterate((ObjectStore, index, objectStoresArray) => {
return ObjectStore.put("some data");
});
})();
import { IDB } from "idborm";
const MyDB = IDB.init("MyDB", 1, [
{ name: "User", options: { autoIncrement: true } },
{ name: "Post", options: { autoIncrement: true } },
]);
(async () => {
await MyDB.delete();
})();
I always welcome help. Please just stick to the lint rules and write tests with each feature/fix
I use SemVer for versioning. For the versions available, see the tags on this repository
This project is licensed under the MIT License - see the LICENSE file for details
Generated using TypeDoc


# Picker Secure-num
**Paste the following code into the `head` section of your site's HTML.**
```html
```
Required file picker to use the plug-in is a "jQuery, ax5core, ax5 picker".
If you want to use UI such as the picker calendar will ax5ui-calendar needs.


ZIP: 210 Title: Sapling Anchor Deduplication within Transactions Owners: Jack Grigg<EMAIL_ADDRESS>Status: Withdrawn Category: Consensus Created: 2019-03-27 License: MIT
This ZIP has been withdrawn because a similar change has been incorporated into the ZIP 225 proposal for a version 5 transaction format. 5
The key words "MUST" and "MAY" in this document are to be interpreted as described in RFC 2119. 1
The term "network upgrade" in this document is to be interpreted as described in ZIP 200 3.
The term "Sapling" in this document is to be interpreted as described in ZIP 205 4.
This proposal defines a modification to the transaction format whereby a single Sapling anchor is used for all Sapling spends. This change removes a potential implementation fingerprint, and reduces the size of Sapling transactions within the block chain.
The Sapling network upgrade 4 introduced new shielded inputs (spends) and outputs. Each spend proves the existence of the note being spent by including the anchor of a Merkle tree that contains the note's commitment, and proving in zero knowledge the existence of a path from the commitment to the anchor (a witness). Valid anchors correspond to the state of the Sapling commitment tree after each block in the chain.
The choice of anchor leaks information about the note being spent, namely that the note was created no later than the anchor's block height. This is an unavoidable outcome of the Zcash design, and the least information it is possible to leak about a note being spent. However, the Sapling v4 transaction format 2 includes a separate anchor for each Sapling spend, and thus it is possible to leak additional information by using different anchors for different notes. The anchor selection choices could also be used as a fingerprint to identify transactions created by particular wallet implementations, reducing the privacy set.
Modifying the transaction format to have a single Sapling anchor field, instead of one field per Sapling spend, removes the ability (within the new transaction format version) to create transactions with this fingerprint. It also reduces the size of the transaction, costing 32 bytes per transaction instead of 32 bytes per spend.
A new transaction format is defined, identical to the Sapling v4 transaction format except for two changes:
anchor
field in SpendDescription
is removed.saplingAnchor
is placed between vShieldedOutput
and vJoinSplit
, if and only if vShieldedSpend
is not empty.Consensus rules that previously applied to individual anchor
entries MUST be applied to saplingAnchor
.
TODO: If this is the only ZIP updating the transaction format in a NU, specify the full transaction format here. Otherwise, reference the new transaction format when specified.
Implementations that support older transaction formats MAY copy saplingAnchor
into each spend's in-memory representation during parsing to reduce code duplication, and MUST ensure that these per-spend in-memory anchors are all identical prior to serialization.
Placing the saplingAnchor
field after vShieldedOutput
means that it can be conditionally included (saving space when there are no Sapling spends), while ensuring that the transaction can still be parsed unambiguously.
Requiring all Sapling spends to use the same anchor removes a possible performance optimisation in certain classes of (particularly light) wallets, where witnesses for older notes are only updated periodically instead of every block. This optimisation is exactly the kind of behaviour that can be used as a fingerprint in the v4 transaction format, and that we are choosing to prevent with this proposal.
This proposal eliminates a possible avenue for distinguishing transactions based on the client implementation that created them.
TBD
| 1 | RFC 2119: Key words for use in RFCs to Indicate Requirement Levels |
|---|
| 2 | Zcash Protocol Specification, Version 2021.2.16. Section 7.1: Transaction Encoding and Consensus |
|---|
| 3 | ZIP 200: Network Upgrade Mechanism |
|---|
| 4 | ZIP 205: Deployment of the Sapling Network Upgrade |
|---|
| 5 | ZIP 225: Version 5 Transaction Format |
|---|


Match Play. Red leads 4-1 to 5. Crawford Game. How should Red play 33?
pips Red=110 White=127
(CorrectAnswer= 0/0, ErrorScore= 0)
For money and with the cube with White anything other than 8/5(2), 7/4(2)* would be a bad blunder. However, this is the Crawford game and all Red needs to do is win the game, gammons are irrelevant.
To that end now any play other 13/10(2), 11/8, 6/3(2) is a blunder. The resultant position is compact and likely to play very well for Red. As ever the match score is the driving force here.
To that end now any play other 13/10(2), 11/8, 6/3(2) is a blunder. The resultant position is compact and likely to play very well for Red. As ever the match score is the driving force here.
1. Cubeful 2-ply 13/10(2) 11/8 6/3 Eq.: +0.573 0.796 0.121 0.003 - 0.204 0.019 0.000 2. Cubeful 2-ply 11/5 8/5(2) Eq.: +0.543 (-0.030) 0.784 0.163 0.004 - 0.216 0.025 0.000 3. Cubeful 2-ply 13/10(2) 8/5(2) Eq.: +0.519 (-0.054) 0.774 0.148 0.004 - 0.226 0.029 0.000 4. Cubeful 2-ply 8/5(2) 7/4*(2) Eq.: +0.476 (-0.096) 0.766 0.282 0.009 - 0.234 0.054 0.002 5. Cubeful 2-ply 11/8 7/4*(3) Eq.: +0.476 (-0.097) 0.756 0.187 0.005 - 0.244 0.035 0.000


See credential
Received the award for exceptional work ethic among the new hires.
Received for securing overall second place in the Computer Science department
Link for the paper
Designed and developed scripts to enable data scientists to run job in parallel on the domino platform decreasing time to process by 60%.
Worked with multiple enterprise customers as an account manager and field engineer to increase the adoption of Domino Data science workbench.
Developed automation to enable Data Scientists to serve ML models at scale using Kubernetes and flask to users, enabling a Continuous Delivery workflow which reduced time to market for ML models to 2 weeks.
Responsible for building and delivering micro services backed by Machine Learning models to consumer facing Nike apps.
Built a cache service using in-memory data store and deployed it in AWS Elastic Cache.
Developed Airflow operators to interact with Databricks API.
Refactored and optimized the Nike product recommender Tensor flow model.
Won the 48-hour Intern Hackathon for developing an IOS app using AR to bring Nike’s stories and innovations using marker recognition and Unity.
Created spark scripts to aggregate and process the clickstream data from Nike.com and build reports.
Developed experiments to explore wealth visibility in a setting of dynamic social network interactions using the breadboard framework.
Created chatbots in Facebook to automate survey responses
· Designed and developed a tool called PDF extractor which creates and extracts information from structurally similar PDFs using Java and Hadoop Map Reduce.
Developed spark scripts for parallel processing to create a course recommendation tool.
Won Hack IT IV, 2014 (Cisco wide hackathon) for developing crime detection in ATMs.
Coded and deployed an android application called Pustack (interactive book) by integrating several APIs like Google maps, Google books and mediaWiki action.
Coursework: Cloud Computing, Large-Scale Data Mining, Distributed Database Systems, Statistics Programming, Graphs and Network Flows
Coursework: Neural Networks, Soft computing, Data Mining.