CS-109B Advanced Data Science
Lab 8: Recurrent Neural Networks¶
Harvard University
Fall 2020
Instructors: Mark Glickman, Pavlos Protopapas, and Chris Tanner
Lab Instructors: Chris Tanner and Eleni Angelaki Kaxiras
Content: Srivatsan Srinivasan, Pavlos Protopapas, Chris Tanner
# RUN THIS CELL TO PROPERLY HIGHLIGHT THE EXERCISES
import requests
from IPython.core.display import HTML
styles = requests.get("https://raw.githubusercontent.com/Harvard-IACS/2019-CS109B/master/content/styles/cs109.css").text
HTML(styles)
Learning Goals¶
In this lab we will look at Recurrent Neural Networks (RNNs), LSTMs and their building blocks.
By the end of this lab, you should:
- know how to put together the building blocks used in RNNs and its variants (GRU, LSTM) in
keras
with an example. - have a good undertanding on how sequences -- any data that has some temporal semantics (e.g., time series, natural language, images etc.) -- fit into and benefit from a recurrent architecture
- be familiar with preprocessing text and dynamic embeddings
- be familiar with gradient issues on RNNs processing longer sentence lengths
- understand different kinds of LSTM architectures, classifiers, sequence to sequence models and their far-reaching applications
1. IMDb Review Classification: Feedforward, CNN, RNN, LSTM¶
In this task, we are going to do sentiment classification on a movie review dataset. We are going to build a feedforward net, a convolutional neural net, a recurrent net and combine one or more of them to understand performance of each of them. A sentence can be thought of as a sequence of words that collectively represent meaning. Individual words impact the meaning. Thus, the context matters; words that occur earlier in the sentence influence the sentence's structure and meaning in the latter part of the sentence (e.g., Jose asked Anqi if she were going to the library today). Likewise, words that occur later in a sentence can affect the meaning of earlier words (e.g., Apple is an interesting company). As we have seen in lecture, if we wish to make use of a full sentence's context in both directions, then we should use a bi-directional RNN (e.g., Bi-LSTM). For the purpose of this tutorial, we are going to restrict ourselves to only uni-directional RNNs.
import numpy
from keras.datasets import imdb
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM, SimpleRNN
from keras.layers.embeddings import Embedding
from keras.layers import Flatten
from keras.preprocessing import sequence
from keras.layers.convolutional import Conv1D
from keras.layers.convolutional import MaxPooling1D
from keras.layers.embeddings import Embedding
import numpy as np
# fix random seed for reproducibility
numpy.random.seed(1)
# We want to have a finite vocabulary to make sure that our word matrices are not arbitrarily small
vocabulary_size = 10000
# We also want to have a finite length of reviews and not have to process really long sentences.
max_review_length = 500
Computers have no built-in knowledge of words or their meanings and cannot understand them in any rich way that humans do -- hence, the purpose of Natural Language Processing (NLP). As with any data science, computer science, machine learning task, the first crucial step is to clean (pre-process) your data so that you can soundly make use of it. Within NLP, this first step is called Tokenization and it concerns how to represent each token (a.k.a. word) of your corpus (i.e., dataset).
TOKENIZATION¶
A token
refers to a single, atomic unit of meaning (i.e., a word). How should our computers represent each word? We could read in our corpus word by word and store each word as a String (data structure). However, Strings tend to use more computer memory than Integers and can become cumbersome. As long as we preserve the uniqueness of the tokens and are consistent, we are better off converting each distinct word to a distinct number (Integer). This is standard practice within NLP / computer science / data science, etc.
As a simple example of tokenization, we can see a small example.
If the five sentences below were our entire corpus, our conversion would look as follows:
- i have books - [1, 4, 7]
- interesting books are useful [10,2,9,8]
- i have computers [1,4,6]
- computers are interesting and useful [6,9,11,10,8]
- books and computers are both valuable. [2,10,2,9,13,12]
- Bye Bye [7,7]
Create tokens for vocabulary based on frequency of occurrence. Hence, we assign the following tokens
I-1, books-2, computers-3, have-4, are-5, computers-6,bye-7, useful-8, are-9, and-10,interesting-11, valuable-12, both-13
Thankfully, our dataset is already represented in such a tokenized form.
NOTE: Often times, depending on your NLP task, it is useful to also perform other pre-processing, cleaning steps, such as:
- treating each punctuation mark as a token (e.g., , . ! ? are each separate tokens)
- lower-casing all words (so that a given word isn't treated differently just because it starts a sentence or not)
- separating each sentence with a unique symbol (e.g.,
and) - removing words that are incredibly common (e.g., function words, (in)definite articles). These are referred to as 'stopwords'). For language modelling, we DO NOT remove stopwords. A sentence's meaning needs to include all of the original words.
Load data¶
(X_train, y_train), (X_test, y_test) = imdb.load_data(num_words=vocabulary_size)
print('Number of reviews', len(X_train))
print('Length of first and fifth review before padding', len(X_train[0]) ,len(X_train[4]))
print('First review', X_train[0])
print('First label', y_train[0])
Preprocess data¶
If we were training our RNN one sentence at a time, it would be okay to have sentences of varying lengths. However, as with any neural network, it can be sometimes be advantageous to train inputs in batches. When doing so with RNNs, our input tensors need to be of the same length/dimensions. Thus, let's pad our sentences.
X_train = sequence.pad_sequences(X_train, maxlen=max_review_length)
X_test = sequence.pad_sequences(X_test, maxlen=max_review_length)
print('Length of first and fifth review after padding', len(X_train[0]) ,len(X_train[4]))
MODEL 1A : FEED-FORWARD NETWORKS WITHOUT EMBEDDINGS¶
Let us build a single-layer feed-forward net with a hidden layer of 250 nodes. Each input would be a 500-dim vector of tokens since we padded all our sequences to size 500.
model = Sequential()
model.add(Dense(250, activation='relu',input_dim=max_review_length))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=128, verbose=2)
# Final evaluation of the model
scores = model.evaluate(X_test, y_test, verbose=0)
print("Accuracy: %.2f%%" % (scores[1]*100))
MODEL 1B : FEED-FORWARD NETWORKS WITH EMBEDDINGS¶
What is an embedding layer ?¶
An embedding is a "distributed representation" (e.g., vector) of a particular atomic item (e.g., word token, object, etc). When representing items by embeddings:
- each distinct item should be represented by its own unique embedding
- the semantic similarity between items should correspond to the similarity between their respective embeddings (i.e., words that are more similar to one another should have embeddings that are more similar to each other).
There are essentially an infinite number of ways to create such embeddings, and since these representations have such a great influence on the performance of our models, there has been an incredible amount of research dedicated to this very aspect. If you are interested in learning more, start with the astromonically impactful papers of word2vec and GloVe.
In general, though, one can view the embedding process as a linear projection from one vector space to another (e.g., a vector space of unique words being mapped to a world of fixed-length, dense vectors filled with continuous-valued numbers. For NLP, we usually use embeddings to project the one-hot encodings of words (i.e., a vector that is the length of the entire vocabulary, and it is filled with all zeros except for a single value of 1 that corresponds to the particular word) on to a lower-dimensional continuous space (e.g., vectors of size 100) so that the input surface is dense and possibly smooth. Thus, one can view this embedding layer process as just a transformation from $\mathbb{R}^{inp}$ to $\mathbb{R}^{emb}$
embedding_dim = 100
model = Sequential()
# inputs will be converted from batch_size * sentence_length to batch_size*sentence_length*embedding _dim
model.add(Embedding(vocabulary_size, embedding_dim, input_length=max_review_length))
model.add(Flatten())
model.add(Dense(250, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
# fit the model
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=2, batch_size=128, verbose=2)
# evaluate the model on the test set
scores = model.evaluate(X_test, y_test, verbose=0)
print("Accuracy: %.2f%%" % (scores[1]*100))
MODEL 2 : CONVOLUTIONAL NEURAL NETWORKS (CNN)¶
Text can be thought of as 1-dimensional sequence (a single, long vector) and we can apply 1D Convolutions over a set of word embeddings. Let us walk through convolutions on text data with this blog. If you want to learn more, read this published and well-cited paper from my friend, Byron Wallace.
Fit a 1D convolution with 200 filters, kernel size 3, followed by a feed-forward layer of 250 nodes, and ReLU and Sigmoid activations as appropriate.
# %load sol2.py
# create the CNN
model = Sequential()
model.add(Embedding(vocabulary_size, embedding_dim, input_length=max_review_length))
model.add(Conv1D(filters=200, kernel_size=3, padding='same', activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(250, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
# train the CNN
model.fit(X_train, y_train, epochs=2, batch_size=128)
# evalute the CNN
scores = model.evaluate(X_test, y_test, verbose=0)
print("Accuracy: %.2f%%" % (scores[1]*100))
MODEL 3 : Simple RNN¶
Two great blogs that are helpful for understanding the workings of a RNN and LSTM are
- http://karpathy.github.io/2015/05/21/rnn-effectiveness/
- http://colah.github.io/posts/2015-08-Understanding-LSTMs/
At a high-level, an RNN is similar to a feed-forward neural network (FFNN) in that there is an input layer, a hidden layer, and an output layer. The input layer is fully connected to the hidden layer, and the hidden layer is fully connected to the output layer. However, the crux of what makes it a recurrent neural network is that the hidden layer for a given time t is not only based on the input layer at time t but also the hidden layer from time t-1.
Mathematically, a simpleRNN can be defined by the following recurrence relation.
If we extend this recurrence relation to the length of sequences we have in hand, our RNN architecture can be viewed as follows (this is also referred to as 'unrolling' the network):
# %load sol3.py
model = Sequential()
model.add(Embedding(vocabulary_size, embedding_dim, input_length=max_review_length))
model.add(SimpleRNN(100))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(X_train, y_train, epochs=20, batch_size=16)
# Final evaluation of the model
scores = model.evaluate(X_test, y_test, verbose=0)
print("Accuracy: %.2f%%" % (scores[1]*100))
RNNs and vanishing/exploding gradients¶
Let us use sigmoid activations as example. Derivative of a sigmoid can be written as
Remember, an RNN is a "really deep" feed-forward-esque network (when unrolled in time). Hence, backpropagation happens from $h_t$ all the way to $h_1$. Also realize that sigmoid gradients are multiplicatively dependent on the value of sigmoid. Hence, if the non-activated output of any layer $h_l$ is < 0, then $\sigma$ tends to 0, effectively "vanishing" the gradient. Any layer that the current layer backprops to $H_{1:L-1}$ does not learn anything useful out of the gradients.
LSTMs and GRU¶
LSTM and GRU are two sophisticated implementations of RNNs that have gates (one could say that their success hinges on using gates). A gate emits probability between 0 and 1. For instance, LSTM is built on these state updates:
$L$ is a linear transformation $L(x) = W*x + b.$
$f_t = \sigma(L([h_{t-1},x_t))$
$i_t = \sigma(L([h_{t-1},x_t))$
$o_t = \sigma(L([h_{t-1},x_t))$
$\hat{C}_t = \tanh(L([h_{t-1},x_t))$
$C_t = f_t * C_{t-1}+i_t*\hat{C}_t$ (Using the forget gate, the neural network can learn to control how much information it has to retain or forget)
$h_t = o_t * \tanh(c_t)$
MODEL 4 : LSTM¶
Now, let's use an LSTM model to do classification! To make it a fair comparison to the SimpleRNN, let's start with the same architecture hyper-parameters (e.g., number of hidden nodes, epochs, and batch size). Then, experiment with increasing the number of nodes, stacking multiple layers, applying dropouts etc. Check the number of parameters that this model entails.
# %load sol4.py
model = Sequential()
model.add(Embedding(vocabulary_size, embedding_dim, input_length=max_review_length))
model.add(LSTM(100))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(X_train, y_train, epochs=3, batch_size=64)
# evaluation of the LSTM's performance
scores = model.evaluate(X_test, y_test, verbose=0)
print("Accuracy: %.2f%%" % (scores[1]*100))
MODEL 5 : CNN + LSTM¶
CNNs are good at learning spatial features, and sentences can be thought of as 1-D spatial vectors (dimensionality is determined by the number of words in the sentence). We apply an LSTM over the features learned by the CNN (after a maxpooling layer). This leverages the power of CNNs and LSTMs combined! We expect the CNN to be able to pick out invariant features across the 1-D spatial structure (i.e., sentence) that characterize good and bad sentiment. This learned spatial features may then be learned as sequences by an LSTM layer, and the final classification can be made via a feed-forward connection to a single node.
model = Sequential()
model.add(Embedding(vocabulary_size, embedding_dim, input_length=max_review_length))
model.add(Conv1D(filters=32, kernel_size=3, padding='same', activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(LSTM(100))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(X_train, y_train, epochs=3, batch_size=64)
# Final evaluation of the model
scores = model.evaluate(X_test, y_test, verbose=0)
print("Accuracy: %.2f%%" % (scores[1]*100))
CONCLUSION¶
We saw the power of sequence models and how they are useful in text classification. They give a solid performance, low memory footprint (thanks to shared parameters) and are able to understand and leverage the temporally connected information contained in the inputs. There is still an open debate about the performance vs memory benefits of CNNs vs RNNs in the research community.
As a side-note and bit of history: how amazing is it that we can construct these neural networks, train them, and evaluate them in just a few lines of code?! Imagine if we didn't have deep learning libraries like Keras and Tensorflow; we'd have to write backpropagation and gradient descent by hand. Our last network could easily require thousands of lines of code and many hours of debugging. This is what many people did just 8 years ago, since deep learning wasn't common and the community hadn't yet written nicely packaged libraries. Many libraries have come and gone, but nowadays most people use either Tensorflow/Keras (by Google) or PyTorch (by Facebook). I expect them to remain as great libraries for the foreseeable future, so if you're interested in deep learning, it's worth the investment to learn one, or both, of them well.
2. 231+432 = 665.... It's not ? Let's ask our LSTM¶
In this exercise, we are going to teach addition to our model. Given two numbers (<999), the model outputs their sum (<9999). The input is provided as a string '231+432' and the model will provide its output as ' 663' (Here the empty space is the padding character). We are not going to use any external dataset and are going to construct our own dataset for this exercise.
The exercise we attempt to do effectively "translates" a sequence of characters '231+432' to another sequence of characters ' 663' and hence, this class of models are called sequence-to-sequence models (aka seq2seq). Such architectures have profound applications in several real-life tasks such as machine translation, summarization, image captioning etc.
To be clear, sequence-to-sequence (aka seq2seq) models take as input a sequence of length N and return a sequence of length M, where N and M may or may not differ, and every single observation/input may be of different values, too. For example, machine translation concerns converting text from one natural language to another (e.g., translating English to French). Google Translate is an example, and their system is a seq2seq model. The input (e.g., an English sentence) can be of any length, and the output (e.g., a French sentence) may be of any length.
Background knowledge: The earliest and most simple seq2seq model works by having one RNN for the input, just like we've always done, and we refer to it as being an "encoder." The final hidden state of the encoder RNN is fed as input to another RNN that we refer to as the "decoder." The job of the decoder is to generate each token, one word at a time. This may seem really limiting, as it relies on the encoder encapsulating the entire input sequence with just 1 hidden layer. It seems unrealistic that we could encode an entire meaning of a sentence with just one hidden layer. Yet, results even in this simplistic manner can be quite impressive. In fact, these early results were compelling enough that these models immediately replaced the decades of earlier machine translation work.
from __future__ import print_function
from keras.models import Sequential
from keras import layers
from keras.layers import Dense, RepeatVector, TimeDistributed
import numpy as np
from six.moves import range
The less interesting data generation and preprocessing¶
class CharacterTable(object):
def __init__(self, chars):
self.chars = sorted(set(chars))
self.char_indices = dict((c, i) for i, c in enumerate(self.chars))
self.indices_char = dict((i, c) for i, c in enumerate(self.chars))
# converts a String of characters into a one-hot embedding/vector
def encode(self, C, num_rows):
x = np.zeros((num_rows, len(self.chars)))
for i, c in enumerate(C):
x[i, self.char_indices[c]] = 1
return x
# converts a one-hot embedding/vector into a String of characters
def decode(self, x, calc_argmax=True):
if calc_argmax:
x = x.argmax(axis=-1)
return ''.join(self.indices_char[x] for x in x)
TRAINING_SIZE = 50000
DIGITS = 3
MAXOUTPUTLEN = DIGITS + 1
MAXLEN = DIGITS + 1 + DIGITS
chars = '0123456789+ '
ctable = CharacterTable(chars)
def return_random_digit():
return np.random.choice(list('0123456789'))
# generate a new number of length `DIGITS`
def generate_number():
num_digits = np.random.randint(1, DIGITS + 1)
return int(''.join( return_random_digit()
for i in range(num_digits)))
# generate `TRAINING_SIZE` # of pairs of random numbers
def data_generate(num_examples):
questions = []
answers = []
seen = set()
print('Generating data...')
while len(questions) < TRAINING_SIZE:
a, b = generate_number(), generate_number()
# don't allow duplicates; this is good practice for training,
# as we will minimize memorizing seen examples
key = tuple(sorted((a, b)))
if key in seen:
continue
seen.add(key)
# pad the data with spaces so that the length is always MAXLEN.
q = '{}+{}'.format(a, b)
query = q + ' ' * (MAXLEN - len(q))
ans = str(a + b)
# answers can be of maximum size DIGITS + 1.
ans += ' ' * (MAXOUTPUTLEN - len(ans))
questions.append(query)
answers.append(ans)
print('Total addition questions:', len(questions))
return questions, answers
def encode_examples(questions, answers):
x = np.zeros((len(questions), MAXLEN, len(chars)), dtype=np.bool)
y = np.zeros((len(questions), DIGITS + 1, len(chars)), dtype=np.bool)
for i, sentence in enumerate(questions):
x[i] = ctable.encode(sentence, MAXLEN)
for i, sentence in enumerate(answers):
y[i] = ctable.encode(sentence, DIGITS + 1)
indices = np.arange(len(y))
np.random.shuffle(indices)
return x[indices],y[indices]
q,a = data_generate(TRAINING_SIZE)
x,y = encode_examples(q,a)
# divides our data into training and validation
split_at = len(x) - len(x) // 10
x_train, x_val, y_train, y_val = x[:split_at], x[split_at:],y[:split_at],y[split_at:]
print('Training Data shape:')
print('X : ', x_train.shape)
print('Y : ', y_train.shape)
print('Sample Question(in encoded form) : ', x_train[0], y_train[0])
print('Sample Question(in decoded form) : ', ctable.decode(x_train[0]),'Sample Output : ', ctable.decode(y_train[0]))
Let's learn two wrapper functions in Keras - TimeDistributed and RepeatVector with some dummy examples.¶
TimeDistributed is a wrapper function call that applies an input operation on all the timesteps of an input data. For instance, if I have a feed-forward network which converts a 10-dim vector to a 5-dim vector, then wrapping this TimeDistributed layer on that feed-forward operation would convert a batch_size * sentence_len * vector_len(=10) to batch_size * sentence_len * output_len(=5)
model = Sequential()
#Inputs to it will be batch_size*time_steps*input_vector_dim(to Dense)
# Output will be batch_size*time_steps* output_vector_dim
# Here, Dense() converts a 5-dim input vector to a 8-dim vector.
model.add(TimeDistributed(Dense(8), input_shape=(3, 5)))
input_array = np.random.randint(10, size=(1,3,5))
print("Shape of input : ", input_array.shape)
model.compile('rmsprop', 'mse')
output_array = model.predict(input_array)
print("Shape of output : ", output_array.shape)
RepeatVector repeats the vector a specified number of times. Dimension changes from batch_size number of elements to batch_size number of repetitions * number of elements.
model = Sequential()
# converts from 1*10 to 1*6
model.add(Dense(6, input_dim=10))
print(model.output_shape)
# converts from 1*6 to 1*3*6
model.add(RepeatVector(3))
print(model.output_shape)
input_array = np.random.randint(1000, size=(1, 10))
print("Shape of input : ", input_array.shape)
model.compile('rmsprop', 'mse')
output_array = model.predict(input_array)
print("Shape of output : ", output_array.shape)
# note: `None` is the batch dimension
print('Input : ', input_array[0])
print('Output : ', output_array[0])
MODEL ARCHITECTURE¶
Note: Whenever you are initializing a LSTM in Keras, by the default the option return_sequences = False
. This means that at the end of the step the next component will only get to see the final hidden layer's values. On the other hand, if you set return_sequences = True
, the LSTM component will return the hidden layer at each time step. It means that the next component should be able to consume inputs in that form.
Think how this statement is relevant in terms of this model architecture and the TimeDistributed module we just learned.
Build an encoder and decoder both single layer 128 nodes and an appropriate dense layer as needed by the model.
# Hyperaparams
RNN = layers.LSTM
HIDDEN_SIZE = 128
BATCH_SIZE = 128
LAYERS = 1
print('Build model...')
model = Sequential()
#ENCODING
model.add(RNN(HIDDEN_SIZE, input_shape=(MAXLEN, len(chars))))
model.add(RepeatVector(MAXOUTPUTLEN))
#DECODING
for _ in range(LAYERS):
# return hidden layer at each time step
model.add(RNN(HIDDEN_SIZE, return_sequences=True))
model.add(TimeDistributed(layers.Dense(len(chars), activation='softmax')))
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.summary()
Let's check how well our model trained.
for iteration in range(1, 2):
print()
model.fit(x_train, y_train,
batch_size=BATCH_SIZE,
epochs=20,
validation_data=(x_val, y_val))
# Select 10 samples from the validation set at random so
# we can visualize errors.
print('Finished iteration ', iteration)
numcorrect = 0
numtotal = 20
for i in range(numtotal):
ind = np.random.randint(0, len(x_val))
rowx, rowy = x_val[np.array([ind])], y_val[np.array([ind])]
preds = model.predict_classes(rowx, verbose=0)
q = ctable.decode(rowx[0])
correct = ctable.decode(rowy[0])
guess = ctable.decode(preds[0], calc_argmax=False)
print('Question', q, end=' ')
print('True', correct, end=' ')
print('Guess', guess, end=' ')
if guess == correct :
print('Good job')
numcorrect += 1
else:
print('Fail')
print('The model scored ', numcorrect*100/numtotal,' % in its test.')
EXERCISE¶
Try changing the hyperparams, use other RNNs, more layers, check if increasing the number of epochs is useful.
Try reversing the data from validation set and check if commutative property of addition is learned by the model.
- Try printing the hidden layer with two inputs that are commutative and check if the hidden representations it learned are same or similar. Do we expect it to be true? If so, why? If not why? You can access the layer using an index with model.layers and layer.output will give the output of that layer.
- Try doing addition in the RNN model the same way we do by hand. Reverse the order of digits and at each time step, input two digits get an output use the hidden layer and input next two digits and so on.(units in the first time step, tens in the second time step etc.)


A random box will Highlight.
Click the correct Highlighted Box.
The next box will Highlight.
Click each box (In sequence) then, click on the newly Highlighted box.
The goal is to remember the order of each box as it's highlighted, the longer you play the more difficult it will be to remember the correct order of boxes to click.


Decimal QuantConnect.Algorithm.QCAlgorithm.CalculateOrderQuantity (Symbol
symbol,Double
target )
Calculate the order quantity to achieve target-percent holdings.
Decimal QuantConnect.Algorithm.QCAlgorithm.CalculateOrderQuantity (Symbol
symbol,Decimal
target )
Calculate the order quantity to achieve target-percent holdings.


In November 2016, I decided that I want to go for something more challenging than the work I was doing. I was always fascinated with programming and Mobile environments but never got around doing that. So, since then, I have been learning how to code and have gotten familiar with various parts of the Front end and Back end side of the development. I finished a course of Web & Mobile developer, which includes HTML5, CSS3, JavaScript and the Framework Bootstrap; Multi-Platform Mobile Application Development using Cordova, Ionic, AngularJS; CMS of which Drupal and WordPress; Simple native Java Development for Android, SEO / SEM and more recently I’m finishing to learn AngularJS with the Ionic Framework for mobile development.
I’m challenging myself to always be up to date on the technological landscape with my self-learning ability.
Redesigning website using HTML5, CSS3, JavaScript, Bootstrap, AngularJS and PHP;
Improving performance and accessibility;
Lower the maintenance effort later on;
Provide routine maintenance and support for all computers of the company
Conducted necessary upgrades to hardware and software as needed
Maintained detailed and up to date inventory of all technological equipment
Utilized and repaired all common office equipment.
Laminar Website
Leading all aspects of the airline ground station;
Act as the controller and manager of the assistance to Passengers in disruption situations such as delays, diversion's, cancellations, overbooking and others according to EU regulations;
Measures the KPI’s against the actual performance, reporting the results to Ground Operation's team every week;
Operations controller, coordinating aircraft handling operations, managing standard messaging, support airline operations for fast turnarounds, assisting flights within VHF range.
Weight and Balance Certification on, AVRO RJ-85/100, Dash8-Q400, Fokker 50, Saab 2000, ATR-72 and Embraer 190.
Responsible for the safe and on-time coordination of the turnaround according to the airlines / airport standards.
Supervise the check-in/ticketing/gate operations of all assigned flights.
Managing incoming requests for Executive Flights/Private Aircraft Operations.
Worked with corporate management to maximise operational performance in areas of on-time performance.
Took a course of Web & Mobile developer, learned Algorithms using Python as a base, then:
Complete redesign of the company website to use the most recent technologies, done using HTML5, CSS3, AngularJS and PHP.
View websiteI created this Portfolio to showcase my works done under studies and under my constant learning projects. I used it also to learn SASS and Gulp.
View ProjectDone using only HTML and CSS. This was my first the project I used to learn HTML5 and CSS3.
View ProjectUsing AngularJS to consume Punk Beer API, along with ui.bootstrap. Learned how to use npm packages.
View ProjectUsed to learn AngularJS, consumes the API from DarkSky Weather online service.
View ProjectDone in Java. Used to Learn Java in Android Studio, just a simple app with various activities, toast, login validation, youtube video connection, google maps, sorting List View and CRUD.
View ProjectDone with HTML, PHP and MySQL, a simple online store with CRUD. Used this project to learn and I am still improving in PHP. PHP is in the moment at my lowest skill set as of yet.
View Project


Young rugby star sets her sights on Miss England beauty pageant title
A promising rugby player is ditching the rugby boots for sparkly heels as she takes part in the Miss England pageant.
Prashika Sapkota decided to enter the competition on a whim after watching this year’s Miss England final on TV, and she has now reached the semi-finals of the competition.
But the 17-year-old isn’t giving up her sporting dreams – she wants to do both. She currently plays rugby at county level, but would love a run out for England in the future.
The teenager, from Reading, has broken her nose twice playing the sport she loves, but she’s not about to let that hold her back and doesn’t think it’ll harm her chances in the pageant.
‘I started playing rugby in Year 8 at school during PE and our team became county champions in Year 9,’ says Prashika.
‘In the first game I played in the south England’s school tournament I got a concussion which wasn’t a good start.
Advertisement Advertisement
‘When I broke my nose the first time I was in a lot of disbelief, having thought my friends weren’t being serious when they told me I had actually broken it.
‘Then I looked at myself and it became apparent.’
Prashika had to have rhinoplasty surgery after both accidents, but she’s hoping for better luck when the semi-finals of Miss England take place in June next year.
She says it was her mum who encouraged her to take part in the Miss England contest.
‘I didn’t even think about entering until she mentioned it,’ she explains. ‘I was surprised when I got through to the next heat because I don’t have any experience.
‘I didn’t think I’d get this far – it feels crazy.
‘Being in a male-dominated environment in my hobbies and studies makes me feel empowered as a woman.’
Prashika hopes to use her platform to spread a positive message about women in sport and show that it is possible to be interested in beauty pageants and playing rugby competitively.
‘I want to show that girls can go down the same route as me and still be interested in things like Miss England,’ she says.
Advertisement Advertisement
‘It also shows that pageant queens aren’t just pretty, they are smart and they do a lot for charities.’


I am a
Frontend Developer
based in Stockholm, Sweden.
My journey into tech started with an
Assistant position in a Tech Department.
The more I learned about tech, the more
I wanted to give it a try myself.
I signed up for a coding course and when
I learned how to build my first website
using HTML and CSS, I realized what was
missing in my career all along. I am
currently working on making a full switch
to frontend development.
Check out my projects and follow my
progress on GitHub.


Hack Club SSGI is a developer community at my college and it is registered under Dept. of Computer Science Engineering. We built this community to collaborate on projects, increase gender diversity in tech and share knowledge in the community by gathering like-minded people and organizing workshops and coding jams. Conversations in my community are of mostly Web Development but there are many developers from Mobile App dev, Cyber Security, Open Source and Competitive Programming. We usually meet once or twice a month on Video Conference for Networking and some workshops. Hack Club SSGI was established on 30th September 2020, we started small with only 5 members and gradually we got around 170+ students in a year to join our Slack Workspace.


{% extends 'animal/animalgroup_detail.html' %} {% block content %} {{ block.super }} {% if object.can_delete %} {% include "hawc/_delete_block.html" with name="animal-group" notes="This will remove all data associated with the animal-group, including dose-regimes, endpoints, and BMD modeling runs." %} {% else %}


--- layout: default title: ICMIE'17 - Conference Program meta: The conference program can be found here keyword: mechanical engineering conference, robotics conference, energy conference, fluid dynamics conference, cfd conference, industrial engineering conference, mechanics conference, heat transfer, instrumentation, combustion, mechatronics, mems, nanotechnology, renewable energy, solid mechanics, fluid flow, flow, multiphase flow, multiphase heat transfer, turbulent flow, fluid mechanics, mechanical engineering, robotics, energy, fluid dynamics, cfd, industrial engineering, mechanics, heat transfer conference, instrumentation conference, combustion conference, mechatronics conference, mems conference, nanotechnology conference, renewable energy conference, solid mechanics conference, fluid flow conference, flow conference, multiphase flow conference, multiphase heat transfer conference, turbulent flow conference, fluid mechanics conference ---
The Conference Program for the 6th International Conference on Mechanics and Industrial Engineering (ICMIE'17) is now available! Please follow the link below to access the program:


WDV221 Intro Javascript
Skill Test - Implement Function
Instructions:
- Implement the greeting( ) function on this page.
- Use an onload event handler on the body element to run the script as soon as the page is loaded.
- The output from the function should display in the greeting div container.
Additional instructions are in the script.


See-through Lab is Jeff Crouse, who goes by a few titles: Interactive Director, Creative Technologist, Technical Director.
Since 2007, I have been collaborating with artists, studios, and agencies to create immersive experiences that utilize emerging technologies thoughtfully to create ground-breaking, award winning experiences. My work is informed by my studies in storytelling and game design and my experience in advertising, architecture, and entertainment. I create projects that transport and inspire, grounded in the fundamentals of interactivity and narrative, but with an eye towards new paradigms. Using interactivity to tell stories is rarely straightforward, but the process of problem solving is what keeps me excited about each new project.
My specialty is acting as a bridge between the creative and the technical. As a former full-time digital artist, I have experience concepting and pitching. I prefer to be involved in a project from the beginning to help clients to craft concepts that are feasible but ambitious. That challenge users while also being accessible. That effectively communicate a message in a way that is only possible with immersive and interactive media.
In production I am almost always hands-on. I strongly believe in using the right tool for the job and putting the concept first, which requires flexibility and willingness to learn on the job. I also bring my eight years of experience as a creative coding teacher to the job when working with teams.
I believe in thorough prototyping and an iterative workflow. I work closely with designers, directors, animators, musicians, engineers, fabricators, and photographers to build, test, and refine interactive experiences. Over 13 years and dozens of projects, I have built up a process for just such an iterative workflow while also staying flexible enough to slot into most teams.
Let’s chat about how I can help you with:
- Immersive Experiences
- Interactive Installations
- LED Sculpture
- Kinetic Sculpture
- Custom Software
- Generative Graphics
- Creative Concepting
- Consulting


イスコン Ad
Manage ads
View test
User attribute test
You can set your
isuad
cookie here.
Current:
Set:
Female
Male
Display test
Ad will be here


Login to continue
Input your correct Email & Password
Forgot password?
Don't have an account ?
Sign Up


Bob Smith
Listed Skills: Java Programming, Databases, Web Development.
Listed Values: Lone Wolf, Creative, Problem Solver
Listed Skills: Java Programming, Databases, Web Development.
Listed Values: Lone Wolf, Creative, Problem Solver
Listed Skills: Java Programming, Project Management, Programming Scripts
Listed Values: Team Member, Punctual, People Skills


Mastering computer science so I'll know how to defend myself when the machines take over
Currently pursuing a Masters in Computer Science and here is where I experiment with programming.
My non-technical hobbies include: tennis, music, puppy-watching, video games and
contemplating existential dread.
In addition to my hobbies, some topics that I'm passionate about (and that I am likely to do work on)
are: education, technology, animals, health, and of course, anything potentially humorous.


--- layout: default --- {% include menu.html tree=site.data.instrument.toc menuImage="instrument.svg" %}
You finished! Would you like to go again?


Sanjay Raut terms RS seat change ‘humiliating’
Raut’s seating position has been changed from the third to the fifth row.
by DECCAN CHRONICLE.Mumbai: Shiv Sena’s Rajya Sabha MP, Sanjay Raut, has written to vice-president M. Venkaiah Naidu, complaining that his seating arrangement in the Rajya Sabha has been changed to “humiliate” him. He claimed that his party’s exit from the NDA has not been formally announced, yet.
Raut’s seating position has been changed from the third to the fifth row. But he has asked to be moved up to the first, second or third row so that he can “raise the voice of distress of the poor people of Maharashtra effectively” in the House.
Pointing out that he has been a member of the House since 2004, Raut wrote, “I was astonished to know that my seating position in the Rajya Sabha chamber has been changed from the 3rd to the 5th row. This decision was taken by someone deliberately to hurt the Sena’s sentiments and suppress our voice.”


Hi! I'm a front-end developer who loves responsive design and css. I recently finished learning front-end web development at Treehouse and am excited to put all my skills to use!
The project shows the front page of a marketing website meant for a specific business I'm interested in
This project searches through a specific database to find information that the user is trying to look up
This project compare travel times based on different tranportation methods and tells you the best one
This project uses mapping apis to plot point for my favorite spots in the city for a do-it-yourself walking tour
This project shows pictures from a recent trip to the viewer and allows them to easily navigate through photos
Someone can enter in the numbers they want, and press the big blue button and get the result
If your'e interested in chatting or want more information about what i've been working on i'd love to hear from you!


--- layout: post date: 2011-01-14 time: "09:00:00" authors: ["Greg Wilson"] title: Our Funding Pitch tags: ["Funding"] ---
A couple of people have recently asked, "How do you go about asking for money?" Applying for grants from NSERC, the NSF, and other agencies is something they understand (though it never actually worked for me), but cold-calling people, or emailing them out of the blue, isn't something most academics have ever done.
I'm now doing another round of this, and since this is supposed to be an open-everything project, I've posted the short pitch I use as a starting point when approaching someone new. I hope you find it useful, and of course, feedback is always welcome.


We are a registered Christian charity based in Macleod, Victoria, Australia, serving the community since 1971 with a wide range of programs and club type offerings based on a friendship model.


An ordered list of data elements, formatted in memory for transmission over a socket or writing to a data file.
More...
|
| object | __bytes__ () |
| |
| | __init__ () |
| |
| | __init__ (const Datagram copy) |
| |
| | __init__ (Datagram from) |
| |
| | __init__ (VectorUchar data) |
| | Constructs a datagram from an existing block of data. More...
|
| |
| | addBeFloat32 (PNFloat32 value) |
| | Adds a 32-bit single-precision big-endian floating-point number to the datagram. More...
|
| |
| | addBeFloat64 (PNFloat64 value) |
| | Adds a 64-bit big-endian floating-point number to the datagram. More...
|
| |
| | addBeInt16 (int16_t value) |
| |
| | addBeInt32 (int32_t value) |
| | Adds a signed 32-bit big-endian integer to the datagram. More...
|
| |
| | addBeInt64 (int64_t value) |
| | Adds a signed 64-bit big-endian integer to the datagram. More...
|
| |
| | addBeUint16 (uint16_t value) |
| | Adds an unsigned 16-bit big-endian integer to the datagram. More...
|
| |
| | addBeUint32 (uint32_t value) |
| | Adds an unsigned 32-bit big-endian integer to the datagram. More...
|
| |
| | addBeUint64 (uint64_t value) |
| | Adds an unsigned 64-bit big-endian integer to the datagram. More...
|
| |
| | addBlob (VectorUchar) |
| | Adds a variable-length binary blob to the datagram. More...
|
| |
| | addBlob32 (VectorUchar) |
| | Adds a variable-length binary blob to the datagram, using a 32-bit length field to allow very long blobs. More...
|
| |
| | addBool (bool value) |
| | Adds a boolean value to the datagram. More...
|
| |
| | addFixedString (str str, int size) |
| | Adds a fixed-length string to the datagram. More...
|
| |
| | addFloat32 (PNFloat32 value) |
| | Adds a 32-bit single-precision floating-point number to the datagram. More...
|
| |
| | addFloat64 (PNFloat64 value) |
| | Adds a 64-bit floating-point number to the datagram. More...
|
| |
| | addInt16 (int16_t value) |
| | Adds a signed 16-bit integer to the datagram. More...
|
| |
| | addInt32 (int32_t value) |
| | Adds a signed 32-bit integer to the datagram. More...
|
| |
| | addInt64 (int64_t value) |
| | Adds a signed 64-bit integer to the datagram. More...
|
| |
| | addInt8 (int8_t value) |
| | Adds a signed 8-bit integer to the datagram. More...
|
| |
| | addStdfloat (float value) |
| | Adds either a 32-bit or a 64-bit floating-point number, according to set_stdfloat_double(). More...
|
| |
| | addString (str str) |
| | Adds a variable-length string to the datagram. More...
|
| |
| | addString32 (str str) |
| | Adds a variable-length string to the datagram, using a 32-bit length field to allow very long strings. More...
|
| |
| | addUint16 (uint16_t value) |
| | Adds an unsigned 16-bit integer to the datagram. More...
|
| |
| | addUint32 (uint32_t value) |
| | Adds an unsigned 32-bit integer to the datagram. More...
|
| |
| | addUint64 (uint64_t value) |
| | Adds an unsigned 64-bit integer to the datagram. More...
|
| |
| | addUint8 (uint8_t value) |
| | Adds an unsigned 8-bit integer to the datagram. More...
|
| |
| | addWstring (str str) |
| | Adds a variable-length wstring to the datagram. More...
|
| |
| | addZString (str str) |
| | Adds a variable-length string to the datagram, as a NULL-terminated string. More...
|
| |
| | appendData (VectorUchar data) |
| | Appends some more raw data to the end of the datagram. More...
|
| |
| | clear () |
| | Resets the datagram to empty, in preparation for building up a new datagram. More...
|
| |
| | copyArray (CPTAUchar data) |
| | Replaces the data in the Datagram with a copy of the data in the indicated CPTA_uchar. More...
|
| |
| | dumpHex (Ostream out, unsigned int indent) |
| | Writes a representation of the entire datagram contents, as a sequence of hex (and ASCII) values. More...
|
| |
| CPTAUchar | getArray () |
| | Returns a const pointer to the actual data in the Datagram. More...
|
| |
| int | getLength () |
| | Returns the number of bytes in the datagram. More...
|
| |
| object | getMessage () |
| | Returns the datagram's data as a string. More...
|
| |
| bool | getStdfloatDouble () |
| | Returns the stdfloat_double flag. More...
|
| |
| PTAUchar | modifyArray () |
| | Returns a modifiable pointer to the actual data in the Datagram. More...
|
| |
| bool | operator!= (const Datagram other) |
| |
| bool | operator< (const Datagram other) |
| |
| Datagram | operator= (const Datagram copy) |
| |
| Datagram | operator= (Datagram from) |
| |
| bool | operator== (const Datagram other) |
| |
| | output (Ostream out) |
| | Write a string representation of this instance to <out>. More...
|
| |
| | padBytes (int size) |
| | Adds the indicated number of zero bytes to the datagram. More...
|
| |
| | setArray (PTAUchar data) |
| | Replaces the data in the Datagram with the data in the indicated PTA_uchar. More...
|
| |
| | setStdfloatDouble (bool stdfloat_double) |
| | Changes the stdfloat_double flag, which defines the operation performed by add_stdfloat() and DatagramIterator::get_stdfloat(). More...
|
| |
| | write (Ostream out, unsigned int indent) |
| | Write a string representation of this instance to <out>. More...
|
| |
| Public Member Functions inherited from TypedObject |
| TypeHandle | getType () |
| |
| int | getTypeIndex () |
| | Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More...
|
| |
| bool | isExactType (TypeHandle handle) |
| | Returns true if the current object is the indicated type exactly. More...
|
| |
| bool | isOfType (TypeHandle handle) |
| | Returns true if the current object is or derives from the indicated type. More...
|
| |
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a data file.
Data elements should be added one at a time, in order, to the Datagram. The nature and contents of the data elements are totally up to the user. When a Datagram has been transmitted and received, its data elements may be extracted using a DatagramIterator; it is up to the caller to know the correct type of each data element in order.
A Datagram is itself headerless; it is simply a collection of data elements.


This April, the New York City Asian American Student Conference celebrates its 10th Anniversary with Checkpoints: Communicating Consciousness.
Join us on 4/23 at the NYU Kimmel Center to discuss A/P/A issues and reflect upon our history, action and inactions.
Change in Motion intends to propel the established momentum of furthering an Asian American presence. Forces that interact with the notion of being Asian American radiate from numerous origins, and deeper analyses of these influences require deconstruction that is tenacious yet mercurial.
| All Day |
Registration & Check-InKimmel 1st Floor |
|---|---|
| 9:30 AM |
BreakfastEisner & Lubin Auditorium, 4th Floor |
| 10:30AM |
Opening Remarks + Keynote SpeechEisner & Lubin Auditorium, 4th Floor |
| 11:10AM |
Breakout Group Activity #1BOGL Location |
| 11:40AM |
Entrepreneurship: Making our OWN Opportunities
Room 903 Ramon Gil, Glenda Villajuan, Christina Seid, Ray Brijmohan, Sarah Chung
Community Expressions: Bridging Art, Literature, and Activism
Room 909 Christopher Zou, Henry Chang, Kekoa, Glenda Bautista
Being Multiracial, Multiethnic, Multilingual: Asian-descent in the Age of Obama
Room 803 Dr. Teresa Wiliams-Leon |
|---|
| 1:00 PM |
LunchEisner & Lubin Auditorium, 4th Floor |
|---|---|
| 2:10 PM |
Breakout Group Activity #2BOGL Location |
| 2:45PM |
Beyond Gaysian: Creating a Voice for the LGBT Community
Room 912 Venancio Cabel, Pauline Park, Dennis Chin, Glen Magpantay, Olympia Moy, Nadira Persaud
Crisis at South Philadelphia High: Asian American Student Leaders Enacting Change
Room 802 Helen Gym, Nancy Nguyen, Xu Lin, Wei Chen, Duong Nghe Ly, Bach Tong
Advocating Change: Asian Americans in Activism
Room 909 Gary Okihiro, Suki Ports, Assemblywoman Grace Meng, APICHA, Wayne Ho
iVow to Fight Violence Against Women
Room 803 FiRE (Filipinas for Rights and Empowerment), Zabrina Collazo |
|---|
| 4:00PM |
Snack/Breakout Group Activity #3BGOL Location |
|---|
| 4:40PM |
Breaking the Silence: Asian American Mental Health
Room 808 Mary Shen, Sel J Hwang, Tazuko Shibusawa, Niraj Dilhiwala, Kit Ho
Asian Adoption: Instersecting Identities
Room 803 Victoria Chau, Jeff Cylkowshi, Marissa Martin, Susan Becker, Barbara Lee, Marie Tae McDermott
Gender Narratives: An Exploration Through History, Media, and Culture
Room 903 Andrea Ng, Patrick Rosal, Sonjia Hyon, Chyng Sun, Fiona Ngô
Youth in Action: Foundations for Mobilization
Room 909 Zabrina Collazo, Sasha Ahuja, Nina Sharma, Kristy Nguyen, Yves Nibungco
Food in Motion: Asian Americans Changing the Culinary Landscape
Room 912 Melissa Zhang, Emery Huang, Joseph Tien, Thomas Yang, Jerome Chang, Christina Seid |
|---|
| 6:00PM |
Dinner/QuizbowlEisner & Lubin Auditorium, 4th Floor |
|---|---|
| 7:00PM |
ConcertEisner & Lubin Auditorium, 4th Floor |


Like a (good) doctor, the goal of topicdoc is to help diagnose issues with your topic models through a variety of different diagnostics and metrics. There are a lot of great R packages for fitting topic models, but not a lot that help evaluate their fit. This package seeks to fill that void with functions that easily allow you to run those diagnostics/metrics efficiently on a variety of topic models.
Currently, only topic models from the topicmodels
library are supported. However, I’m targeting those from the stm
library next.
You can install the development version of topicdoc from Github with:
This is a simple use case - using an LDA model with the Associated Press Dataset in topicmodels
which is made up of AP articles from 1988.
library(topicdoc)
library(topicmodels)
data("AssociatedPress")
lda_ap4 <- LDA(AssociatedPress,
control = list(seed = 33), k = 4)
# See the top 10 terms associated with each of the topics
terms(lda_ap4, 10)
#> Topic 1 Topic 2 Topic 3 Topic 4
#> [1,] "i" "percent" "bush" "soviet"
#> [2,] "people" "million" "i" "government"
#> [3,] "two" "year" "president" "united"
#> [4,] "police" "billion" "court" "president"
#> [5,] "years" "new" "federal" "people"
#> [6,] "new" "market" "new" "police"
#> [7,] "city" "company" "house" "military"
#> [8,] "time" "prices" "state" "states"
#> [9,] "three" "stock" "dukakis" "party"
#> [10,] "like" "last" "campaign" "two"
# Calculate all diagnostics for each topic in the topic model
diag_df <- topic_diagnostics(lda_ap4, AssociatedPress)
diag_df
#> topic_num topic_size mean_token_length dist_from_corpus tf_df_dist
#> 1 1 3476.377 4.1 0.3899012 24.08191
#> 2 2 1910.153 5.6 0.5044673 26.67523
#> 3 3 2504.622 5.4 0.3830014 26.46131
#> 4 4 2581.848 6.5 0.3988826 25.52163
#> doc_prominence topic_coherence topic_exclusivity
#> 1 1053 -81.83339 7.813034
#> 2 598 -79.50691 9.560433
#> 3<PHONE_NUMBER>2 9.162590
#> 4 775 -84.46149 9.058854
# ...or calculate them individually
topic_size(lda_ap4)
#> [1] 3476.377 1910.153 2504.622 2581.848
It’s a lot easier to interpret the output if you put it all together in a nice plot.
library(ggplot2)
library(dplyr, warn.conflicts = F)
library(tidyr)
library(stringr)
diag_df <- diag_df %>%
mutate(topic_label = terms(lda_ap4, 5) %>%
apply(2, paste, collapse = ", "),
topic_label = paste(topic_num, topic_label, sep = " - "))
diag_df %>%
gather(diagnostic, value, -topic_label, -topic_num) %>%
ggplot(aes(x = topic_num, y = value,
fill = str_wrap(topic_label, 25))) +
geom_bar(stat = "identity") +
facet_wrap(~diagnostic, scales = "free") +
labs(x = "Topic Number", y = "Diagnostic Value",
fill = "Topic Label", title = "All Topic Model Diagnostics")
These diagnostics help provide a more rigorous confirmation of our intuition about identifying “good” versus “bad” topics in a topic model.
Almost, immediately you’d deduce that Topic 1 looks odd as it contains a lot of generic words (e.g. “two”, “three”, “like”). Using the diagnostics provided, you can see that Topic 1 has the largest topic size and highest document prominence indicating that it’s incorporating many more tokens and documents than the others. The low TF/DF distance and exclusivity confirm our susipicion about the generic nature of the topic.
Alternatively, you can see that Topic 2 - the one centered around financial news - is the most coherent and exclusive topic.
| Diagnostic/Metric | Function | Description |
|---|---|---|
| topic size | topic_size |
Total (weighted) number of tokens per topic |
| mean token length | mean_token_length |
Average number of characters for the top tokens per topic |
| distance from corpus distribution | dist_from_corpus |
Distance of a topic’s token distribution from the overall corpus token distribution |
| distance between token and document frequencies | tf_df_dist |
Distance between a topic’s token and document distributions |
| document prominence | doc_prominence |
Number of unique documents where a topic appears |
| topic coherence | topic_coherence |
Measure of how often the top tokens in each topic appear together in the same document |
| topic exclusivity | topic_exclusivity |
Measure of how unique the top tokens in each topic are compared to the other topics |


My To Do List
Add
Play Cricket and excercise.
Cycling
Meet Friends
Buy fresh vegetables for salad.
Attend college.
Study Web, Pyhton, hackerrank practice, etc.


Since few days, i've an ad on the website+board...
I have a doubt that advertising was always there, or this space has been recently added or if I've an adware ?
BrainFooLong
Administrator
Ads enabled since yesterday. I need money for the server costs.


{% extends 'base.html' %} {% block title %} {{ title }} {% endblock %} {% block content%} Home Contact us Contact Us Get In Touch Contact us Address: Department of Computer Science, Karachi University, Karachi Phone: 090078601 Email<EMAIL_ADDRESS>Website: spinalscanner.com {% endblock %}
Home Contact us
Address: Department of Computer Science, Karachi University, Karachi
Phone: 090078601
Email<EMAIL_ADDRESS>Website: spinalscanner.com


You load MathJax into a web page by including its main JavaScript file into the page. That is done via a <script> tag that links to the MathJax.js file. To do that, place the following line in the <head> section of your document:
<script type="text/javascript" src="path-to-MathJax/MathJax.js"></script>
where path-to-MathJax is replaced by the URL of the copy of MathJax that you are loading. For example, if you are using the MathJax distributed network service, the tag might be
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js">
</script>
If you have installed MathJax yourself, path-to-MathJax will be the location of MathJax on your server, or (if you are using MathJax locally rather than through a server) the location of that directory on your hard disk. For example, if the MathJax directory is at the top level of your web server’s directory hierarchy, you might use
<script type="text/javascript" src="/MathJax/MathJax.js"></script>
to load MathJax.
If you install MathJax on a server in a domain that is different from the one containing the page that will load MathJax, then there are issues involved in doing so that you need to take into consideration. See the Notes About Shared Servers for more details.
When you load MathJax, it is common to request a specific configuration file as discussed in the section on Using a Configuration File below, and in more detail in the Common Configurations section. A typical invocation of MathJax would be
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
which loads MathJax with a configuration file that includes everything you need in order to enter mathematics in either TeX, LaTeX, or MathML notation, and produces output using MathML if the browser supports that, or HTML-with-CSS otherwise. If you don’t load an explicit configuration file, you will need to include an in-line configuration block in order to tell MathJax how to read and display the mathematics on your pages. See the section below on Using In-line Configuration Options for details.
It is best to load MathJax in the document’s <head> block, but it is also possible to load MathJax into the <body> section, if needed. If you do this, load it as early as possible, as MathJax will begin to load its components as soon as it is included in the page, and that will help speed up the processing of the mathematics on your page. MathJax does expect there to be a <head> section to the document, however, so be sure there is one if you are loading MathJax in the <body>.
It is also possible to load MathJax dynamically after the page has been prepared, for example, via a GreaseMonkey script, or using a specially prepared bookmarklet. This is an advanced topic, however; see Loading MathJax Dynamically for more details.
MathJax is now available as a web service from cdn.mathjax.org, so you can obtain MathJax from there without needing to install it on your own server. The CDN is part of a distributed “cloud” network, so it is handled by servers around the world. That means that you should get access to a server geographically near you, for a fast, reliable connection.
The CDN hosts the most current version of MathJax, as well as older versions, so you can either link to a version that stays up-to-date as MathJax is improved, or you can stay with one of the release versions so that your pages always use the same version of MathJax.
The URL that you use to obtain MathJax determines the version that you get. The CDN has the following directory structure:
mathjax/ # project-name
1.0-latest/
1.1-beta/ # temporary
1.1-latest/ # the 1.1 release with any ciritical patches
...
latest/ # the most current version (1.1-latest in this case)
Each directory corresponds to an official MathJax release; however, hotfixes (urgent bug fixes) will be applied in each release branch as necessary, even if new releases are not prepared. In other words, 1.1-latest will initially point to v1.1, but over time may be updated with patches that would correspond to releases that might be numbers 1.1a, 1.1b, etc., even if such releases are not actually prepared for distribution (they likely won’t be).
We may occasionally introduce directories for betas, as indicated above, but they will be temporary, and will be removed after the official release.
To load from a particular release, use the directory for that release. For example,
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/1.1-latest/MathJax.js"></script>
will load the stable v1.1 version, even if we release v1.2 or other later versions, while
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
will always be the most current stable release, so it will go from v1.1 to v1.2 automatically when that is released. Note that all the versions available on the CDN are stable versions; the development version is not hosted on the CDN. (If you wish to use the development version of MathJax, you will need to install your own copy; see Installing and Testing MathJax for information on how to do that.)
The use of cdn.mathjax.org is governed by its terms of service, so be sure to read that before linking to the MathJax CDN server.
If you wish to use the MathJax CDN but use your own configuration file rather than one of the pre-defined ones, see the information at the end of the Using a configuration file section below.
There are two ways to configure MathJax: via a configuration file, or by including configuration commands within the web page itself. These can be used independently, or in combination. For example, you can load a main pre-defined configuration file, but include in-line commands to adjust the configuration to your needs.
Note that you must use at least one of these two forms of configuration. Unlike earlier versions of MathJax, version 1.1 does not load a default configuration file. If you have been using version 1.0’s config/MathJax.js for your configuration, you will need to load that configuration file explicitly via a config parameter, as described below.
The first way to configure MathJax is to use a configuration file. MathJax comes with a number of pre-defined configuration files, which are stored in the MathJax/config directory. Among these are the following
A file that contains nearly all the configuration options with comments describing them, which you can edit to suit your needs.
Allows math to be specified in TeX, LaTeX, or MathML notation, with the AMSmath and AMSsymbols packages included, producing output using MathML if the browser supports it, and HTML-with-CSS otherwise.
Allows math to be specified in TeX or LaTeX notation, with the AMSmath and AMSsymbols packages included, and produces output using the HTML-CSS output processor.
Allows math to be specified using MathML notation, and produces MathML output if the browser supports it, or HTML-CSS output otherwise.
Essentially the same as TeX-AMS-MML_HTMLorMML, but with some settings specified to make MathJax work better with assistive technology (for the visually impaired). This includes setting the zoom trigger to be a double-click, and removing the MathMenu in Internet Explorer (which can interfere with some screen readers).
The first of these is a file that you can edit to suit your needs. It contains nearly all the configuration options that MathJax allows, and has comments explaining them. The others are what are called combined configuration files, which not only configure MathJax, but also pre-load the various files that the configuration requires. (The contents of these files are explained in more detail in the Common Configurations section.)
Usually, MathJax loads its components only when they are needed, but each component will require a separate file to be loaded, and that can cause delays before the mathematics is displayed. The combined configuration files load the majority of the needed files all as one large file, reducing the number of network requests that are needed. That means you will probably be getting the components that MathJax needs faster than you would without the combined file, but you may be loading components that are never actually used; that is the trade off.
Each of the combined configuration files comes in two flavors: the ones listed above, which only configure the output processors but don’t include the main code, and a “full” version, that also includes the complete output processors. For example, with TeX-AMS_HTML.js and TeX-AMS_HTML-full.js, the latter includes the complete HTML-CSS output processor. The “full” configuration files are substantially larger (on the order of 70KB), so you need to decide whether it is worth loading the full configuration for your pages.
If most of your pages include mathematics, then it is to your advantage to load the full version, but if you are including MathJax in a theme file for a blog or wiki that only includes mathematics occasionally, then perhaps it is better to use the standard configuration instead, in which case the output processors are only loaded when they are actually needed, saving the loading of 70KB for pages that don’t. Of course, if your server is configured to compress the files it sends, the difference between the two is considerably reduced. Furthermore, most browsers will cache the javascript they receive, so the download cost should only occur on the first page a user views, so it may be best to use the “full” version after all. Note, however, that mobile devices sometimes have limits on the size of files that they cache, so they may be forced to download the configuration on every page. You need to keep these issues in mind as you decide on which configuration to use.
To load a configuration file, use config=filename (where filename is one of the names above without the .js) as a parameter to the URL of the MathJax.js file. For example
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
loads the config/TeX-AMS-MML_HTMLorMML.js configuration file from the MathJax distributed network service.
You can include more than one configuration file by separating them with commas. For example, if you have a locally defined configuration file called MathJax/config/local/local.js that modifies the settings for the TeX-AMS_HML configuration, defines some new TeX macros, and so on, you can use
<script type="text/javascript"
src="path-to-MathJax/MathJax.js?config=TeX-AMS_HTML,local/local">
</script>
to first load the main configuration, then the local modifications.
You can also load MathJax from the MathJax CDN server but use a configuration from your own local server:
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML,http://myserver.com/MathJax/config/local/local.js">
</script>
Because the local.js file is not on the CDN server, you must give the complete URL to the local configuration file. Note that you also have to edit the loadComplete() call that is at the bottom of the configuration file to change it from [MathJax]/config/local/local.js to the complete URL as you give it in the config parameter:
MathJax.Ajax.loadComplete("http://myserver.com/MathJax/config/local/local.js");
That is because the [MathJax] in the original URL refers to the root directory where MathJax.js was loaded, which is on the CDN, not your local server, and so you need to tell MathJax the actual location of your configuration file.
The second way to configure MathJax is through in-line configuration, that puts the configuration options within the web page itself. This process has changed in version 1.1 to make it compatible with HTML5. Earlier versions of MathJax had in-line configuration included within the content of the <script> tag that loads MathJax.js, but HTML5 makes it illegal to have content for a script with a src attribute.
MathJax solves this problem by using separate <script> tags to perform configuration for MathJax. Because MathJax starts its configuration process as soon as it is loaded, the configuration script must come before the script tag that loads MathJax.js itself. You do this by including a <script> with type="text/x-mathjax-config", whose content will be run when MathJax performs its configuration. Generally, this script will include a MathJax.Hub.Config() call to perform MathJax configuration, but it can also include other MathJax commands, such as registering signal actions, or any JavaScript commands that you want. You can have as many such script tags as you want, and MathJax will process them in order as they appear in the document.
For instance,
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX", "output/HTML-CSS"],
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
processEscapes: true
},
"HTML-CSS": { availableFonts: ["TeX"] }
});
</script>
<script type="text/javascript" src="path-to-MathJax/MathJax.js">
This example includes the tex2jax preprocessor and configures it to use both the standard TeX and LaTeX math delimiters. It uses the TeX input processor and the HTML-CSS output processor, and forces the HTML-CSS processor to use the TeX fonts rather than other locally installed fonts (e.g., STIX fonts). See the configuration options section (or the comments in the config/default.js file) for more information about the configuration options that you can include in the MathJax.Hub.Config() call. Note that this configuration does not load any pre-defined configuration file.
Note that you can combine in-line configuration with file-based configuration; simply include text/x-mathjax-config scripts as above, but also include config=filename when you load the MathJax.js file. For example, the tex2jax preprocessor does not enable the TeX single-dollar in-line math delimiters by default. You can load one of the pre-defined configuration files that include the TeX preprocessor, and use an in-line configuration block to enable the single-dollar signs:
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
processEscapes: true
}
});
</script>
<script type="text/javascript" src="path-to-MathJax/MathJax.js?config=TeX-AMS_HTML">
</script>
Because MathJax begins its configuration process immediately after it is loaded (so that it can start loading files as quickly as it can), the configuration blocks for MathJax must come before MathJax.js is loaded, so they will be available to MathJax when it starts up. There are situations, however, when you might want to put off configuring MathJax until later in the page.
One such situation is when you have a site that loads MathJax as part of a theme or template, but want to be able to modify the configuration on specific pages of the site. To accomplish this, you need to ask MathJax to delay its startup configuration until some later time. MathJax uses the delayStartupUntil parameter to control the timing of the startup sequence. By default, it is set to none, meaning there is no delay and MathJax starts configuration right away.
You can set delayStartupUntil=onload in order to prevent MathJax from continuing its startup process until the page’s onLoad handler fires. This allows MathJax to find the text/x-mathjax-config blocks that occur anywhere on the page, not just the ones that appear above the <script> that loads MathJax.js. It also means that MathJax will not begin loading any of the files that it needs until then as well, which may delay the displaying of your mathematics, since the onLoad handler doesn’t execute until all the images and other media are available. (If you have used a combined configuration file, however, it already includes all the main files that MathJax needs, so there is not much loss in delaying the startup.)
You can set delayStartupUntil=configured in order to delay the startup configuration until the MathJax.Hub.Configured() method is called. This allows you to delay startup until later on the page, but then restart the MathJax configuration process as soon as possible rather than waiting for the entire page to load. For example, you could use
<script type="text/javascript"
src="path-to-MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML&delayStartupUntil=configured">
</script>
in your theme’s header file, and
<script type="text/javascript">
MathJax.Hub.Configured()
</script>
in its footer, so that MathJax will delay setting up until the footer is reached, but will not have to wait until images and other files are loaded. If you have text/x-mathjax-config script tags within the main body of the document, MathJax will read and process those before continuing its startup. In this way you can use a default configuration that can be modified on a page-by-page basis.
Since there are a number of different ways to configure MathJax, it is important to know how they interact. The configuration process is the following:
Note that text/x-mathjax-config script blocks must either precede the MathJax.js script element, or startup must be delayed. Otherwise, blocks that follow the MathJax.js script element may or may not be available when MathJax runs, and browser-dependent erratic behavior will result.


Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
CRM-M-518-2012 (O&M) -1- IN THE HIGH COURT OF PUNJAB AND HARYANA AT CHANDIGARH CRM-M-518-2012 (O&M) Date of decision: 05.12.2016 GRAM PANCHAYAT BISHANPURA AND ANR ...Petitioner(s) Versus STATE OF PUNJAB AND ANR ...Respondent(s) CORAM: HON'BLE MR.JUSTICE JITENDRA CHAUHAN Present : Mr. Kapil Aggarwal, Advocate for the petitioner (s). Mr. Luvinder Sofat, AAG, Punjab Mr. K.S. Chahal, Advocate for respondent No.2. Mr. Shekhar Kumar, Advocate for Mr. Nitin Kaushal, Advocate for Punjab Pollution Control Board. **** Jitendra Chauhan, J. (Oral)
This petition under Section 482 of the Code of Criminal Procedure has been filed for setting aside the impugned order dated 12.09.2011, passed by learned Addl. Sessions Judge, Sangrur and for confirming the order dated 18.06.2007, passed by learned Addl. District Magistrate, Sangrur in File No.2/Misc/ADC instituted on 08.06.2007.
On 07.04.2015, this Court had directed the State of Punjab to submit a report regarding the industry being complaint of the provisions of For Subsequent orders see CRM-M-521-2012, CRM-M-521-2012, -- and 1 more.
1 of 2
::: Downloaded on - 10-12-2016 02:58:33 :::
CRM-M-518-2012 (O&M) -2-
the Air (Prevention and Control of Pollution) Act, 1981 and Water (Prevention and Control of Pollution) Act, 1974. Report dated 28.01.2014 has been filed by the Punjab Pollution Control Board and the relevant part of the same reads as under:-
"It is pertinent to mention here that as per the present policy of the Board "The PPCB will continue to grant its consent to operate/authorization to all industries not having any hazardous process, existing and operating in non-designated industrial areas prior to the date of notification of Master Plan provided the industry complies with the prescribed norms for the discharge of effluent/emissions."
Therefore, no action is required to be taken against the industry in accordance with the provisions of Water (Prevention and Control of Pollution) Act, 1974 and Air (Prevention and Control of Pollution) Act, 1981 by the Board."
The learned counsel for the petitioners has failed to refer to any contrary record to contend that the grouse raised by him in the petition still persists.
In this view of the matter, no further action is warranted. Accordingly, the present petition is dismissed.
05.12.2016 (JITENDRA CHAUHAN) ashok JUDGE Whether speaking/reasoned: Yes / No Whether reportable: Yes / No
For Subsequent orders see CRM-M-521-2012, CRM-M-521-2012, -- and 1 more.
2 of 2 ::: Downloaded on - 10-12-2016 02:58:35 :::


Welcome to the Homestead High School Jewish Student Union Website!

Welcome to the Homestead High School Jewish Student Union Website!


Object oriented programming is a powerful and simple tool for the arsenal of a developer. At its core the idea of object oriented programming is that you describe your program in terms of one or more objects, self containing collections of methods and variables. It has become the most prominent methodology of programming, although Functional programming has had a resurgence of advocacy lately.
Objects in ruby are an instance of a class. The general idea behind when to use a class, as opposed to just a set of functions, is that you use a class when the program or part of a program has a logical grouping of variables and methods that act upon those variable. The reason for this is basically that when you treat different parts of the program as compartmentalized stand alone machines that act upon there own data and release it via a given method, as opposed to a big bin of data to be accessed at will there tends to be less chance of a small mistake causing huge errors. Today I will be describing a class based on real world objects to better illustrate the idea. I will be using tanks, mostly because I couldn't think of a title more clever than class warfare. The first thing we need to do in order to create a class is declare it.
class Tank
end
Congratulations you made a class kinda. The first thing we need to do in order to make an instance of our class so we can actually use it is give it a constructor method. A constructor method is responsible for establishing the initial state of the instance variables that will make up the data of our object.
class Tank
def initialize make, model, cannon_size
@make = make
@model = model
@cannon_size = cannon_size
end
end
myTank = Tank.new "Abrams", "M1A1", "120 mm", true
#=> #<Tank:0x007f8de30df278 @make="Abrams", @model="M1A1", @cannon_size="120 mm">
Okay, now we have a constructor and we can actually create an instance of our class. But as you can see from the code above you don't call the constructor with the name you gave the method in your declaration, you call the method new.
Now that we have a constructor and we know how to create an instance of our class its time to truly make it an object since a true object has both a state(instance variables) and behavior(methods), after all if we just wanted the to store the data we could simply use a hash and be able to access it without writing accessor methods. But why don't we write some accessor methods anyway since it isn't really hard and seems like a nice place to start. We'll start with a method to modify the size of the cannon.
class Tank
def modify_cannon new_size
@cannon_size = new_size
end
end
myTank.modify_cannon "130 mm"
#=> "130 mm"
myTank
#=> <Tank:0x007fb6d43473c0 @make="Abrams", @model="M1A1", @cannon_size="130 mm">
The first thing you probably noticed is that I didn't include the constructor method from earlier. There are two reasons for this the first of which is simply to clarify the new method that is being added, the second and larger reason is to illustrate that ruby allows you to extend any class you would like by simply adding or modifying methods like above. So by adding the code from above to a ruby file or irb session that already has our code with the constructor will combine into one class with both methods.
Now that we have gone over the basics of adding methods to our class the next logical step is to discuss private vs public methods. When making a public method that method can be called from outside of the class like our modify_cannon method. However when making a method private it will only be usable from other methods inside the class. To illustrate this lets give our class a new boolean value that tells if its operational and some methods to control that value
class Tank
def initialize make, model, cannon_size, operational
@make = make
@model = model
@cannon_size = cannon_size
@operational = operational
end
def is_operational?
@operational
end
def repair
set_operational true
end
def break_down
set_operational false
end
private
def set_operational bool
@operational = bool
end
end
With this code and the private designator above the set_operational method if we attempt to call the method we get an error that reads "NoMethodError: private method `set_operational' called for #<Tank:0x007fb6d43473c0>". However when calling the repair or break_down method the set_operational method performs perfectly. Granted these methods are kind of silly, but lets say this tank class was going to be part of a video game then we would definitely not want the operational variable to be accessible outside the object as it might be used as an exploit.


Web Developer Examples and Resources by Hien Nguyen
Social Media Optimization (SMO)
Social Network Optimization (SMO) is the use of social media networks to increase an organization's product awareness, brand, and online presence. Many different social media platforms can be used for digital marketing, including Facebook, Twitter, Instagram, Snapchat, YouTube, and Pinterest. In general, social optimization refers to optimization. a website and its content to encourage more users to use and share links to the website on social media and networking sites (Kenton).
Companies use SMO to strategically create interesting online content. According to Will Kenton, “Sharing tools on social media platforms allow users to share content on the Internet almost instantaneously. Because of this, many companies try to create content that users will pass along to their friends and connections. This strategy, called viral marketing, attempts to achieve a broader reach by getting engaged users of social media platforms to share content rather than relying on users to find the content on their own”. The content can be well-written text to attractive digital photos or video clips that encourages and entices people to engage with a website and then share this content, via social media (Kenton).
One of the SMO strategies is keyword research. Keyword research is about identifying the terms and topics that the target audience are using, so you can create content that's right for them. According to Dominique Jackson, “ You need to know what topics, hashtags and keywords your target audience uses so you can share content that’s relevant to their interests. Keyword research will also help you learn which hashtags and phrases to use in your social media posts so you have a higher chance of being found when people search for content relevant to your brand”(Jackson).
One of the tips for social optimization is to use hashtags. The hashtag will make the posts more accessible and make the content easier to find. Dominique noted that “ hashtags have become synonymous with social media marketing. Instagram, Twitter, Facebook and pretty much all other top social media sites integrate hashtags in some fashion. They make it easy to track trending topics, categorize social media posts and they can be entertaining”(Jackson)


Employment
2017 — Present
Northwestern UniversityWeb Content Administrator
Updates Campus Life, LDCE and FSL website. Processed and generated FSL quarterly grades. Improved the LDCE van reservation system.
2005 — 2017
CommScope, Inc.R&D Senior Project Manager
Managed Commscope R&D department, which supports and deployed new telecommunication products to the U.S. market. Designed the Dynamic Checklist that maintains and tracks of new R&D projects. Created the Systimax Labeling system.
My technical skills
- HTML/CSS85%
- Javascript65%
- JQuery75%
- Node.js65%
- React.js70%
- MySQL80%


{{action.player.name}}, {{action.player.shirtNumber}}
{{returnProstion(action.player)}}, {{action.player.club.ukrName}}
1 Автогол
{{returnProstion(action.player)}}, {{action.player.club.ukrName}}


Michael Asimow,
of UCLA Law School, is co-author with Paul Bergman of Reel Justice: The Courtroom Goes to the
Movies (1996), available at local bookstores or through amazon.com.
- "
- But "antitrusting" big
business is a well-worn movie clich�. Big business is cast as the evil
antagonist in countless films.
This, of course, is a delicious irony, since the Hollywood studios are
themselves the very
epitome of big business bullies.
-
- "
-
-
-
|
|
AntiTrust--Trashing
Big Business for Fun and Profit
by Michael Asimow
In Hollywood, big business is bad business and the recent thriller AntiTrust
is no exception. The film centers on Gary Winston (Tim Robbins), a Bill Gates
lookalike who runs NURV, a Microsoft lookalike. Winston is trying to roll out
new software called Synapse that uses satellites to broadcast simultaneous
images on every screen
(television or computer) in the world, but the product is not ready, technical
breakthroughs are desperately needed, and time is running out.
Winston entices a young computer geek named Milo Hoffman (Ryan Phillippe) to
leave a garage startup and hire on at NURV. Gradually, it dawns on Hoffman
that his apparently benign boss is actually stealing ideas from garage geeks
and killing anybody who gets in the way. Most viewers will be reminded of The
Firm--the scales fall from Hoffman's eyes, he overcomes various betrayals,
outsmarts Winston, turns Synapse against him, and ultimately slays Goliath.
Law and pop culture mavens will expect to see something about antitrust law or
some commentary on the Microsoft case, but they'll be disappointed. There is
very little about antitrust law in this film. In one scene, Winston berates
his lawyers for not thinking outside the box about his antitrust problems;
they, of course, don't know what he's talking about. In another, an Antitrust
Division investigator tries to turn Hoffman as an informer against NURV. In
typical conspiracy-theory movie style, however, the investigator is himself a
NURV spy--the government is part of the problem, not part of the solution. And
in a third scene, Winston testifies before a legislative committee and denies
that he has a monopoly; how could he, when some kid in a garage could put him
out of business tomorrow? Of course, Winston's tactics (destroying his
garage-based competitors) are the very essence of monopolization, but the film
doesn't focus on these niceties.
In another sense, though, the movie is all about antitrust. Although the
notion has become rather old-fashioned, there is an important theme in
antitrust thinking that bigness is badness--that a monopoly or even an
oligopoly should be illegal regardless of whether it employs predatory tactics
or whether it seeks to extort monopoly profits from consumers. In his famous Alcoa
opinion in 1945, Judge Learned Hand wrote:
[Congress] did not condone "good
trusts" and condemn "bad" ones; it forebade all. Moreover, in
so doing it was not necessarily actuated by economic motive alone. It is
possible, because of its indirect social or moral effect, to prefer a system
of small producers, each dependent for his success upon his own skill and
character, to one in which the great mass of those engaged must accept the
direction of a few.
 It's evil because it will not share its
source code, because
its products are inferior copies, because it is able to seduce the best minds
into the corporate maw, because it is so big and dominant. Of course, this
conclusion is a bit overdetermined, given that NURV also spies on its
competitors, steals their ideas, and kills them.
Perhaps the filmmakers titled their movie "AntiTrust" because they
couldn't resist the play on words--at first we and Milo "trust"
Winston and NURV, then when we find out the awful truth, we feel
"antitrust." But "antitrusting" big business is a
well-worn movie clich�. Big business is cast as the evil antagonist in
countless films. This, of course, is a delicious irony, since the Hollywood
studios are themselves the very epitome of big business bullies. As a thought
experiment, try to think of a movie that deals with big business that doesn't
treat it as evil incarnate.
In recent films, take The Insider, which cheerfully trashes both the
tobacco and television industries, or The Rainmaker, savaging both the
insurance industry and big law firms. Taking a step back in time, recall
such stridently anti-business films as Wall St., Network, Silkwood,
Norma Rae, or The China Syndrome. Going back a generation or so,
who could forget such terrific anti-business diatribes as The Man in the
Grey Flannel Suit, Cash McCall, The Apartment, Patterns, or Executive
Suite? During the Depression-era 1930's, anti-business films were a
staple, including Baby Face (banking), Skyscraper Souls (real
estate), The Match King (manufacturing) or Employees'
Entrance (department stores).
AntiTrust, a mildly entertaining anti-business thriller dressed up in
fancy new techno-clothes, stands on the shoulders of the anti-business film
giants of yesteryear. *
Other
Picturing Justice Articles by Michael Asimow |
|


| S No | Cource | Bord/Univercity | School/Collage | Year Of Passing | Percentage |
|---|---|---|---|---|---|
| 1 | B.Tech | University | CMR College Of Engineering & Technology | 2014-2018 | 68(%) |
| 2 | Intermediate | Bord of Intermediate | Resonance Junior college | 2012-2014 | 83(%) |
| 3 | High School | SSC | APSWR(G)School,NKpally | 2012 | 8.5(cgpa) |


HOT ADS
Avocado
As part of guacamole, in a salad or on a bun, avocados can be used in a wide variety of recipes. In many South American countries, avocados are added to milkshakes, made into juice and are a staple for many dips. Many salads also use chopped up avocados in combination with tomatoes, onions and olives.
Sold in bunches
Fruits and Vegetables
Vegetables, Fruits, Frozen Alternatives, Fresh Herbs, Salad Kits
Meat and Seafoods
Chicken, Fillets, Salmon
Chicken Breasts
850 g
$11
Lean Ground Beef
1 kg
$15.76
Pork Boneless Loin
900 g
$11.96
Beef Striploin Steak
1 Steak
$9.42
Pork Sausages
1.20 kg
$10
Tilapia Fillets
400 g
$8.35
See More


Increase precision by replacing a/b*c with a*c/b.
percent=$((count/total*100))
percent=$((count*100/total))
If integer division is performed before multiplication, the intermediate result will be truncated causing a loss of precision.
In this case, if count=1
and total=2
, then the problematic code results in percent=0
, while the correct code gives percent=50
.
If you want and expect truncation you can ignore this message.
ShellCheck doesn't warn when b
and c
are identical expressions, e.g. a/10*10
, under the assumption that the intent is to rounded to the nearest 10 rather than the no-op of multiply by 1
.


| Test Case Number |
Test Case Name |
FF3 |
| 9. Container Form Controls |
| 9.1.1.a1 |
precedence of group element |
Failed |
| 9.1.1.a2 |
group element inside case element of a switch |
Passed |
| 9.1.1.b |
label element in a group element |
Passed |
| 9.1.1.c |
focus set to group element |
Failed |
| 9.2.1.a1 |
switch element |
Passed |
| 9.2.1.a2 |
switch element receives events |
Failed |
| 9.2.1.b |
switch element example |
Passed |
| 9.2.2.a |
case element |
Passed |
| 9.2.2.b |
case element with selected attribute |
Passed |
| 9.2.2.c |
case element with multiple selected attributes |
Passed |
| 9.3.1.a |
repeat element |
Passed |
| 9.3.1.b |
startindex attribute of repeat element |
Failed |
| 9.3.1.c |
number attribute of repeat element |
Passed |
| 9.3.1.d |
unrolling the repeat element |
Passed |
| 9.3.1.e |
repeat element example |
Failed |
| 9.3.1.f |
switch element within repeat element |
Failed |
| 9.3.4.a |
switch element inside a repeat element |
Failed |
| 9.3.5.a |
repeating structures via attributes |
Failed |
| 9.3.6.a |
itemset element example |
Failed |
| 9.3.7.a |
copy element |
Failed |
| 9.3.7.b |
copy element has xforms-binding-exception event |
Failed |


Package algorithms.optimization
Class TSPChristofidesSerdyukov
- java.lang.Object
-
- algorithms.optimization.TSPChristofidesSerdyukov
-
public class TSPChristofidesSerdyukov extends java.lang.Object
An approximate solution to the Traveling Salesman Problem. It is an approximation algorithm that guarantees that its solutions will be within a factor of 3/2 of the optimal solution length, and is named after Nicos Christofides and Anatoliy I. Serdyukov, who discovered it independently in 1976. The runtime compexity is O(n^3) following the pseudocode in https://en.m.wikipedia.org/wiki/Christofides_algorithmk-approximation: for minimization problems, cost function c(): c(approxSoln)/c(OPT) .leq. k for maximimization problems: c(approxSoln)/c(OPT) .geq. k
(1) T=MST(G) where G is a complete graph with vertices v and non-negative edge weights w. (a complete graph is an undirected graph w/ edge between every pair of nodes) so can use PrimsMST (2) O = the vertices in T w/ odd degree. in the subgraph O, connect all vertices to one another. (3) M = min weight perfect matching in O so can use Hungarian algorithm or MinCostUnbalancedAssignment.java (4) H = connected multigraph from combining the edges of M and T, such that each vertex has even degree. (a multigraph may have more than 1 edge between same 2 end nodes). (5) EC = form a eulerian circuit so can use HierholzersEulerCircuit (6) Make the EC circuit into a Hamiltonian circuit by skipping repeated vertices (shortcutting).
- Author:
- nichole
-
-
Constructor Summary
Constructors Constructor Description TSPChristofidesSerdyukov()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int[]
approxTSPTour(int nVertexes, gnu.trove.map.TIntObjectMap<gnu.trove.map.TIntIntMap> adjCostMap)
find a Hamiltonian tour of the given graph (simple cycle including all vertexes once) that is 3/2 - approximate for minimum total cost.protected int[][]
bipartiteMinCostMatchingFromSubgraph(int[] oddDVertexes, gnu.trove.map.TIntObjectMap<gnu.trove.map.TIntIntMap> adjCostMap)
perfect min-cost bipartite matchings of the subgraph of G induced by the odd vertexes.protected float[][]
buildCostMatrix(int[] oddDVertexes, gnu.trove.map.TIntObjectMap<gnu.trove.map.TIntIntMap> adjCostMap)
create a cost matrix from the vertexes listed in oddDVertexes where the adjacency and costs are within adjCostMap.protected java.util.Map<java.lang.Integer,java.util.LinkedList<java.lang.Integer>>
buildMST(gnu.trove.map.TIntObjectMap<gnu.trove.map.TIntIntMap> adjCostMap)
protected int[]
calculateDegrees(java.util.Map<java.lang.Integer,java.util.LinkedList<java.lang.Integer>> mstTree, int nVertexes)
protected int[]
oddPassFilter(int[] degrees)
return an array of the indexes which have odd degrees.static long
totalCost(int[] hamiltonian, gnu.trove.map.TIntObjectMap<gnu.trove.map.TIntIntMap> adjCostMap)
protected gnu.trove.map.TIntObjectMap<gnu.trove.set.TIntSet>
unionMSTAndAssignments(java.util.Map<java.lang.Integer,java.util.LinkedList<java.lang.Integer>> mstTree, int[][] m)
-
-
-
Method Detail
-
approxTSPTour
public int[] approxTSPTour(int nVertexes, gnu.trove.map.TIntObjectMap<gnu.trove.map.TIntIntMap> adjCostMap)
find a Hamiltonian tour of the given graph (simple cycle including all vertexes once) that is 3/2 - approximate for minimum total cost.- Parameters:
nVertexes
-adjCostMap
- a graph represented as an adjacency cost map which obeys the triangle inequality.x- Returns:
- the Hamiltonian cycle within a factor of no more than 1.5 of the optimal tour's minimum cost. the array returned contains the vertex numbers from the adjacency cost map.
-
oddPassFilter
protected int[] oddPassFilter(int[] degrees)
return an array of the indexes which have odd degrees.- Parameters:
degrees
- array where indexes are the vertex number and values are the degree for the vertex.- Returns:
- array of indexes in degrees which have odd values stored in the degrees array.
-
calculateDegrees
protected int[] calculateDegrees(java.util.Map<java.lang.Integer,java.util.LinkedList<java.lang.Integer>> mstTree, int nVertexes)
- Parameters:
mstTree
-nVertexes
-- Returns:
-
buildCostMatrix
protected float[][] buildCostMatrix(int[] oddDVertexes, gnu.trove.map.TIntObjectMap<gnu.trove.map.TIntIntMap> adjCostMap)
create a cost matrix from the vertexes listed in oddDVertexes where the adjacency and costs are within adjCostMap.- Parameters:
oddDVertexes
- values are the vertex numbers with odd degreesadjCostMap
- the cost map within the original adjacency map.- Returns:
- a cost matrix whose indexes are relative to oddDVertexes. Note that non-existing connections have a cost of Float.MAX_VALUE.
-
buildMST
protected java.util.Map<java.lang.Integer,java.util.LinkedList<java.lang.Integer>> buildMST(gnu.trove.map.TIntObjectMap<gnu.trove.map.TIntIntMap> adjCostMap)
- Parameters:
adjCostMap
-- Returns:
-
bipartiteMinCostMatchingFromSubgraph
protected int[][] bipartiteMinCostMatchingFromSubgraph(int[] oddDVertexes, gnu.trove.map.TIntObjectMap<gnu.trove.map.TIntIntMap> adjCostMap)
perfect min-cost bipartite matchings of the subgraph of G induced by the odd vertexes. The results are in a double array where each row is a pair of matching vertexes in context of graph G.- Parameters:
oddDVertexes
-adjCostMap
-- Returns:
-
unionMSTAndAssignments
protected gnu.trove.map.TIntObjectMap<gnu.trove.set.TIntSet> unionMSTAndAssignments(java.util.Map<java.lang.Integer,java.util.LinkedList<java.lang.Integer>> mstTree, int[][] m)
- Parameters:
mstTree
-m
-- Returns:
-
totalCost
public static long totalCost(int[] hamiltonian, gnu.trove.map.TIntObjectMap<gnu.trove.map.TIntIntMap> adjCostMap)
- Parameters:
hamiltonian
-adjCostMap
-- Returns:
-
-


LSDinterface: Reading LSD Results (.res) Files
Interfaces R with LSD. Reads object-oriented data in results files (.res) produced by LSD and creates appropriate multi-dimensional arrays in R. Supports multiple core parallelization of multi-file data reading for increased performance. Also provides functions to extract basic information and statistics from data files. LSD (Laboratory for Simulation Development) is free software developed by Marco Valente (documentation and downloads available at <http://labsimdev.org>).
| Version: |
0.4.0 |
| Depends: |
R (≥ 3.2.0) |
| Imports: |
stats, utils, abind, parallel |
| Published: |
2018-02-09 |
| Author: |
Marcelo C. Pereira |
| Maintainer: |
Marcelo C. Pereira <marcelocpereira at uol.com.br> |
| License: |
GPL-3 |
| NeedsCompilation: |
no |
| CRAN checks: |
LSDinterface results |
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=LSDinterface
to link to this page.


{{extend 'zlayout.html'}}
{{=XML(T('There was one or more errors while processing your request, please correct the following'))}}
* - {{=XML(T('Denotes a required field'))}}
Our Apologies.
Registrations are currently disabled.
{{=XML(T('Contact the Administrator'))}}.


Who am I and why should you continue reading? Well, let me tell you a story.....
Github is a great way to save your progress as well as sharing that progress with others. Come check out my beginning Codework we all have to start somewhere.
Now Social media can be an addiction like others I tend to have the same thought. If you can beat them just tweet with them lol. Come join me and others with unique minds who love to share what's on their minds.
Social Media is typically reserved for outside work events like hanging out with friends and family. So if you wanted to make new professional friends and contacts. Linkedin is the place to go. Network with me to create new opportunities.
For many years Youtube has been the source of entertainment, education, and adventure. In recent years I to wanted to create and share my life with the YouTube community. To hope someday I can inspire those who seek a better life. So I welcome you to see, feel, and experience my life.