In this project, you'll use generative adversarial networks to generate new images of faces.
You'll be using two datasets in this project:
Since the celebA dataset is complex and you're doing GANs in a project for the first time, we want you to test your neural network on MNIST before CelebA. Running the GANs on MNIST will allow you to see how well your model trains sooner.
If you're using FloydHub, set data_dir
to "/input" and use the FloydHub data ID "R5KrjnANiKVhLWAkpXhNBe".
data_dir = './data'
# FloydHub - Use with data ID "R5KrjnANiKVhLWAkpXhNBe"
#data_dir = '/input'
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
import helper
helper.download_extract('mnist', data_dir)
helper.download_extract('celeba', data_dir)
show_n_images = 25
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
%matplotlib inline
import os
from glob import glob
from matplotlib import pyplot
mnist_images = helper.get_batch(glob(os.path.join(data_dir, 'mnist/*.jpg'))[:show_n_images], 28, 28, 'L')
pyplot.imshow(helper.images_square_grid(mnist_images, 'L'), cmap='gray')
The CelebFaces Attributes Dataset (CelebA) dataset contains over 200,000 celebrity images with annotations. Since you're going to be generating faces, you won't need the annotations. You can view the first number of examples by changing show_n_images
.
show_n_images = 25
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
mnist_images = helper.get_batch(glob(os.path.join(data_dir, 'img_align_celeba/*.jpg'))[:show_n_images], 28, 28, 'RGB')
pyplot.imshow(helper.images_square_grid(mnist_images, 'RGB'))
Since the project's main focus is on building the GANs, we'll preprocess the data for you. The values of the MNIST and CelebA dataset will be in the range of -0.5 to 0.5 of 28x28 dimensional images. The CelebA images will be cropped to remove parts of the image that don't include a face, then resized down to 28x28.

You'll build the components necessary to build a GANs by implementing the following functions below:
model_inputs
discriminator
generator
model_loss
model_opt
train
This will check to make sure you have the correct version of TensorFlow and access to a GPU
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
from distutils.version import LooseVersion
import warnings
import tensorflow as tf
# Check TensorFlow Version
assert LooseVersion(tf.__version__) >= LooseVersion('1.0'), 'Please use TensorFlow version 1.0 or newer. You are using {}'.format(tf.__version__)
print('TensorFlow Version: {}'.format(tf.__version__))
# Check for a GPU
if not tf.test.gpu_device_name():
warnings.warn('No GPU found. Please use a GPU to train your neural network.')
else:
print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
Implement the model_inputs
function to create TF Placeholders for the Neural Network. It should create the following placeholders:
image_width
, image_height
, and image_channels
.z_dim
.Return the placeholders in the following the tuple (tensor of real input images, tensor of z data)
import problem_unittests as tests
def model_inputs(image_width, image_height, image_channels, z_dim):
"""
Create the model inputs
:param image_width: The input image width
:param image_height: The input image height
:param image_channels: The number of image channels
:param z_dim: The dimension of Z
:return: Tuple of (tensor of real input images, tensor of z data, learning rate)
"""
real_input = tf.placeholder(tf.float32, [None, image_width, image_height, image_channels], name='real_input_image')
tensor_z = tf.placeholder(tf.float32, [None, z_dim], name='tensor_z')
lr = tf.placeholder(tf.float32, [], name='lr')
return real_input, tensor_z, lr
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_inputs(model_inputs)
tf.reset_default_graph()
Implement discriminator
to create a discriminator neural network that discriminates on images
. This function should be able to reuse the variabes in the neural network. Use tf.variable_scope
with a scope name of "discriminator" to allow the variables to be reused. The function should return a tuple of (tensor output of the discriminator, tensor logits of the discriminator).
def discriminator(images, reuse=False):
"""
Create the discriminator network
:param image: Tensor of input image(s)
:param reuse: Boolean if the weights should be reused
:return: Tuple of (tensor output of the discriminator, tensor logits of the discriminator)
"""
alpha = 0.2
with tf.variable_scope('discriminator', reuse=reuse):
x1 = tf.layers.conv2d(images, 64, 5, strides=2, padding='same')
relu1 = tf.maximum(alpha * x1, x1)
x2 = tf.layers.conv2d(relu1, 128, 5, strides=2, padding='same')
bn2 = tf.layers.batch_normalization(x2, training=True)
relu2 = tf.maximum(alpha * bn2, bn2)
x3 = tf.layers.conv2d(relu2, 256, 5, strides=2, padding='same')
bn3 = tf.layers.batch_normalization(x3, training=True)
relu3 = tf.maximum(alpha * bn3, bn3)
flat = tf.reshape(relu3, (-1, 4 * 4 * 256))
logits = tf.layers.dense(flat, 1)
out = tf.sigmoid(logits)
return out, logits
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_discriminator(discriminator, tf)
Implement generator
to generate an image using z
. This function should be able to reuse the variabes in the neural network. Use tf.variable_scope
with a scope name of "generator" to allow the variables to be reused. The function should return the generated 28 x 28 x out_channel_dim
images.
def generator(z, out_channel_dim, is_train=True):
"""
Create the generator network
:param z: Input z
:param out_channel_dim: The number of channels in the output image
:param is_train: Boolean if generator is being used for training
:return: The tensor output of the generator
"""
with tf.variable_scope('generator', reuse=not is_train):
# First fully connected layer
x1 = tf.layers.dense(z, 7*7*64)
# Reshape it to start the convolutional stack
x1 = tf.reshape(x1, (-1, 7, 7, 64))
x1 = tf.layers.batch_normalization(x1, training=is_train)
x1 = tf.maximum(0.1 * x1, x1)
# 7x7x64
x2 = tf.layers.conv2d_transpose(x1, 32, 5, strides=2, padding='same')
x2 = tf.layers.batch_normalization(x2, training=is_train)
x2 = tf.maximum(0.1 * x2, x2)
# 14x14x32
x3 = tf.layers.conv2d_transpose(x2, 16, 5, strides=1, padding='same')
x3 = tf.layers.batch_normalization(x3, training=is_train)
x3 = tf.maximum(0.1 * x3, x3)
# 14x14x16
x4 = tf.layers.conv2d_transpose(x3, 8, 5, strides=2, padding='same')
x4 = tf.layers.batch_normalization(x4, training=is_train)
x4 = tf.maximum(0.1 * x4, x4)
# 28x28x8
# Output layer
logits = tf.layers.conv2d_transpose(x4, out_channel_dim, 5, strides=1, padding='same')
# 28x28xout_channel_dim
out = tf.tanh(logits)
return out
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_generator(generator, tf)
Implement model_loss
to build the GANs for training and calculate the loss. The function should return a tuple of (discriminator loss, generator loss). Use the following functions you implemented:
discriminator(images, reuse=False)
generator(z, out_channel_dim, is_train=True)
def model_loss(input_real, input_z, out_channel_dim):
"""
Get the loss for the discriminator and generator
:param input_real: Images from the real dataset
:param input_z: Z input
:param out_channel_dim: The number of channels in the output image
:return: A tuple of (discriminator loss, generator loss)
"""
# TODO: Implement Function
g_model = generator(input_z, out_channel_dim)
d_model_real, d_logits_real = discriminator(input_real)
d_model_fake, d_logits_fake = discriminator(g_model, reuse=True)
# Calculate losses
d_loss_real = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=d_logits_real, labels=tf.ones_like(d_logits_real)*0.9))
d_loss_fake = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=d_logits_fake, labels=tf.zeros_like(d_logits_real)))
g_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=d_logits_fake, labels=tf.ones_like(d_logits_fake)))
d_loss = d_loss_real + d_loss_fake
return d_loss, g_loss
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_loss(model_loss)
Implement model_opt
to create the optimization operations for the GANs. Use tf.trainable_variables
to get all the trainable variables. Filter the variables with names that are in the discriminator and generator scope names. The function should return a tuple of (discriminator training operation, generator training operation).
def model_opt(d_loss, g_loss, learning_rate, beta1):
"""
Get optimization operations
:param d_loss: Discriminator loss Tensor
:param g_loss: Generator loss Tensor
:param learning_rate: Learning Rate Placeholder
:param beta1: The exponential decay rate for the 1st moment in the optimizer
:return: A tuple of (discriminator training operation, generator training operation)
"""
# TODO: Implement Function
# Get weights and bias to update
t_vars = tf.trainable_variables()
d_vars = [var for var in t_vars if var.name.startswith('discriminator')]
g_vars = [var for var in t_vars if var.name.startswith('generator')]
# Optimize
with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):
d_train_opt = tf.train.AdamOptimizer(learning_rate, beta1=beta1).minimize(d_loss, var_list=d_vars)
g_train_opt = tf.train.AdamOptimizer(learning_rate, beta1=beta1).minimize(g_loss, var_list=g_vars)
return d_train_opt, g_train_opt
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_opt(model_opt, tf)
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
import numpy as np
def show_generator_output(sess, n_images, input_z, out_channel_dim, image_mode):
"""
Show example output for the generator
:param sess: TensorFlow session
:param n_images: Number of Images to display
:param input_z: Input Z Tensor
:param out_channel_dim: The number of channels in the output image
:param image_mode: The mode to use for images ("RGB" or "L")
"""
cmap = None if image_mode == 'RGB' else 'gray'
z_dim = input_z.get_shape().as_list()[-1]
example_z = np.random.uniform(-1, 1, size=[n_images, z_dim])
samples = sess.run(
generator(input_z, out_channel_dim, False),
feed_dict={input_z: example_z})
images_grid = helper.images_square_grid(samples, image_mode)
pyplot.imshow(images_grid, cmap=cmap)
pyplot.show()
Implement train
to build and train the GANs. Use the following functions you implemented:
model_inputs(image_width, image_height, image_channels, z_dim)
model_loss(input_real, input_z, out_channel_dim)
model_opt(d_loss, g_loss, learning_rate, beta1)
Use the show_generator_output
to show generator
output while you train. Running show_generator_output
for every batch will drastically increase training time and increase the size of the notebook. It's recommended to print the generator
output every 100 batches.
def train(epoch_count, batch_size, z_dim, learning_rate, beta1, get_batches, data_shape, data_image_mode):
"""
Train the GAN
:param epoch_count: Number of epochs
:param batch_size: Batch Size
:param z_dim: Z dimension
:param learning_rate: Learning Rate
:param beta1: The exponential decay rate for the 1st moment in the optimizer
:param get_batches: Function to get batches
:param data_shape: Shape of the data
:param data_image_mode: The image mode to use for images ("RGB" or "L")
"""
# TODO: Build Model
input_real, input_z, lr = model_inputs(data_shape[1], data_shape[2], len(data_image_mode), z_dim)
d_loss, g_loss = model_loss(input_real, input_z, data_shape[3])
lr = learning_rate
d_train_opt, g_train_opt = model_opt(d_loss, g_loss, lr, beta1)
steps = 0
# Refers to NKreutz's code on Github
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch_i in range(epoch_count):
for batch_images in get_batches(batch_size):
batch_images = batch_images*2
steps += 1
batch_z = np.random.uniform(-1, 1, size=(batch_size, z_dim))
batch_z = batch_z.reshape(batch_size, z_dim)
_ = sess.run(d_train_opt, feed_dict={input_real: batch_images, input_z: batch_z})
for i in range(5): # it was not training without executing g_train multiple times
_ = sess.run(g_train_opt, feed_dict={input_z: batch_z, input_real: batch_images})
if steps % 200 == 0:
show_generator_output(sess, 16, input_z, data_shape[3], data_image_mode)
train_loss_d = sess.run(d_loss, {input_z: batch_z, input_real: batch_images})
train_loss_g = g_loss.eval({input_z: batch_z})
print("Epoch {}/{}...".format(epoch_i+1, epoch_count),
"Discriminator Loss: {:.4f}...".format(train_loss_d),
"Generator Loss: {:.4f}".format(train_loss_g))
Test your GANs architecture on MNIST. After 2 epochs, the GANs should be able to generate images that look like handwritten digits. Make sure the loss of the generator is lower than the loss of the discriminator or close to 0.
batch_size =64
z_dim = 64
learning_rate = 0.001
beta1 = 0.1
epochs = 2
mnist_dataset = helper.Dataset('mnist', glob(os.path.join(data_dir, 'mnist/*.jpg')))
with tf.Graph().as_default():
train(epochs, batch_size, z_dim, learning_rate, beta1, mnist_dataset.get_batches,
mnist_dataset.shape, mnist_dataset.image_mode)
Run your GANs on CelebA. It will take around 20 minutes on the average GPU to run one epoch. You can run the whole epoch or stop when it starts to generate realistic faces.
batch_size = 128
z_dim = 64
learning_rate = 0.001
beta1 = 0.1
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
epochs = 1
celeba_dataset = helper.Dataset('celeba', glob(os.path.join(data_dir, 'img_align_celeba/*.jpg')))
with tf.Graph().as_default():
train(epochs, batch_size, z_dim, learning_rate, beta1, celeba_dataset.get_batches,
celeba_dataset.shape, celeba_dataset.image_mode)
When submitting this project, make sure to run all the cells before saving the notebook. Save the notebook file as "dlnd_face_generation.ipynb" and save it as a HTML file under "File" -> "Download as". Include the "helper.py" and "problem_unittests.py" files in your submission.


Jupyter Notebooks don't currently support libraries to plot historical data, but we are working on adding the functionality. Until the functionality is added, use Python to plot composite indicators.
Follow these steps to plot the indicator values:
sma_of_rsi_plot = sma_of_rsi_dataframe[["SMA Of RSI"]]
plot
method.sma_of_rsi_plot.plot(title="SPY SMA(10) of RSI(10)", figsize=(15, 10))
plt.show()


{% include head.html %}
{% include nav.html %} {% include header.html %} {% include blog.html %} {% include call-to-action-explore.html %} {% include call-to-action-connect.html %} {% include share.html %} {% include scripts.html %} {% include ga.html %}


🔊 PODCAST | Celebrating the men in our lives
by AdminSo who is the most important man in your life? One of who says: "The only person I think about today is my dad, for he is the one thought that gives me mental strength because I know he is always there to support me."


There were no results for the query "{{ query }}". Please try again
{{ beer.breweryName }} ({{ beer.breweryLocation | getDistance }})
{{ queryDuration }}
{{ resultCount }} {{ searchIndex }}
The data in this search service is fictional. It is not intended to be used for real beers. The data in this search service is in a shared environment. There may be other individuals modifying the data while you're using it. Please be aware that you may experience unexpected results because of this. You can reset the data to its original state by clicking the button below.
[name]
[status]
[last tapped on]
A special thanks to those in the open source community. I'm thankful for the efforts involved in creating the components this app uses. This app uses the following components and I'm thankful to their contributors.


| About Dailyrotten |
|
Feedback
If you like this page, hate it, or would like to suggest changes,
<EMAIL_ADDRESS>is listening. This page
is experimental and somewhat different from what we usually offer, so please
do send your feedback.
Adding Stories
If you are a rotten newshound and you would like to suggest a story,
visit our submit page to
send us the URL. Stories that are accepted will have your name credited.
Posting Comments
In order to post comments to stories, you will have to
create an account.
Accounts will generally be validated within 24 hours, and of
course will be disabled if there is abuse.
Viewership
On the first full day this page went live, 100,000 people visited this Rotten
News page. Of course that was the day after the WTC attacks, so that number is
somewhat distorted. Right now this page gets between 50,000 and 75,000 people
every day.
Linking
We encourage everyone to link to this page; if you like it, others probably
will as well.
Other Rotten
Rotten
Gaping Maw
Celebrity Morgue
Mugshots
Rotten Store
Rate My Poo
Rate My Kitten
Rate My Finger
Penny Postcards
Phallic
Boners
Home
Make Dailyrotten your start page
|
|
|
November 01, 2002
Chechen terrorists to be buried in pigskin
Arutz Sheva | Submitted by: JON BLAST
"According to the Moskovski Komsomol newspaper, Russian security
forces have decided to bury the terrorists from last's week's hostage
siege wrapped in pig's skin. The aim is to deter potential Islamic
terrorists from future attacks [by denying them access to heaven]."
This is of course, a secondhand report from a rather biased source.
|
|
Read article...
|
|
This police beatdown brought to you by...
Wire Services | Submitted by: Dirty Sammy
"To cash-strapped cities across the nation, the offer seems too good
to pass up. New police cars for $1 each in exchange for allowing NASCAR
style advertisements all over the cruisers... more than 20 cities have
signed contracts for the cars, and more than 200 others are interested...
And Biggs, Calif., population 1,793, is mulling an offer from the
California Milk Processor Board to change its name to Got Milk?, Calif.,
for a meaningful contribution."
|
|
Read article...
|
|
Canadian convicts got the power
Canadian Broadcasting | Submitted by: Dirty Sammy
"The Supreme Court of Canada says federal inmates do have the
right to vote in federal elections. The ruling said that 1993 federal
legislation that took the vote away violates fundamental rights."
What is not written in that article, is this may be a way to take some
of the unwarranted power from prison lobby groups in the United States,
who are intent upon incarcerating an ever-increasing percentage
of the American population.
|
|
Read article...
|
|
School guard shoots student
CNN | Submitted by: anonymous
It's totally a great idea to have armed Pinkerton's on
high school campuses:
"Shortly before 3 p.m., as classes were letting out for the day, the
student and the guard crossed paths and, after a discussion, the boy
reached for his pocket, Allen said. Thinking the boy was planning to
pull a gun, the guard pulled his own weapon and fired, Allen said."
|
|
Read article...
|
|
Hell's Angels goes mainstream?
Canadian Press | Submitted by: Gorg
"Manitoba's Conservative Party leader thinks tough talk by the province's
justice minister on the Hells Angels has come back to haunt him. Stuart
Murray says Gord Mackintosh should be embarrassed because the outlaw biker
gang is opening a clothing store down the street from his constituency office."
|
|
Read article...
|
|
Junior high girls selling freshly soiled panties
Mainichi Daily News | Submitted by: LucrezaBorgia
"Police said other retailers had in the past sold used women's underwear,
but in the store that the 43-year-old effectively operated, girls were made
to wait while customers chose one of them to remove their underwear so
they could buy it. Lee reportedly formed a list of over 1,800 junior high
school and high school girls who would sell their underwear, and gathered
girls and customers through an Internet home page. In addition to selling
underwear at the store, he reportedly sold items through mail order."
|
|
Read article...
|
|
Franco: Science proved Marxists retards
Guardian | Submitted by: Fool Mudamos
"Little surprise, then, that he classified almost a third of the English
prisoners as "mental retards". Another third were deemed to be suffering
degenerative mental illnesses that were turning them into schizoids, paranoids
or psychopaths. Their fall into Marxism was, in turn, exacerbated by the fact
that 29% were also considered "social imbeciles".
|
|
Read article...
|
|
Namibia rejects deal with the devil
The Register | Submitted by: Spookbabe
"Komen says he has no desire to turn his organization into a platform for
Microsoft publicity, especially when the networking deal would cost the
organization something like $22,000 by his reckoning, in addition to the
$9,000 he would need to accept Redmond's incredibly 'generous' $2,000 offer
regarding the laptops."
|
|
Read article...
|
|
Boner loses pants in scuffle
NBC 4 | Submitted by: Muad'Dib
"The incident happened when Boner pulled his car into the parking lot of
a 7 Eleven. Reed, who had been surveilling Boner's car in a high drug area
of Stafford County, walked up to the car to talk to its occupants, according
to Roderick. That's when Reed says Boner bolted out of the car and ran.
Another occupant in the car remained in the vehicle."
One correction, a true Boner wouldn't "bolt out", he would "pull out".
|
|
Read article...
|
|
George Bush's ram roast massacred
Crossville Chronicle | Submitted by: meatload
"A tractor trailer rig loaded with over 500 goats and sheep, including
50 that the driver said were headed for a ram roast being thrown by the
President, overturned on I-40 Wednesday morning. An estimated 200 sheep
and goats were killed in the crash. Carcasses of the dead animals were
taken to a Scott County landfill which is permitted to handle
such a large number."
|
|
Read article...
|
|
Information wants to be fabricated
Wired | Submitted by: meatload
"The journal Science retracted eight of Hendrik Schon's research
papers on Thursday, but his erroneous scientific discoveries still lurk on
the Internet. In September, an investigative committee found that 17 papers
authored by Schon that had been considered major breakthroughs in physics
were mostly fabrications."
|
|
Read article...
|
|
Students had contract on teacher
Borneo Bulletin | Submitted by: meatload
"Bangladeshi police have detained two 14 year olds who allegedly hired
a hitman to gun down their teacher at his home, police said Thursday. Police
said the grade-seven students confessed they had plotted the murder of
teacher Swapan Goshwami, who they contended was rude to them in class
and an unfairly tough grader."
|
|
Read article...
|
|
Holywar complex pervades U.S. relations
Asia Times | Submitted by: meatload
"While reading American history, a clear impression arises that the
US-style strategic mentality is distinctly branded with religious marks.
The Truman-style holy-war mentality, "either with the USA or with the
USSR", has found echoes in George W Bush more than 50 years later.
Politically, they tend to think that the social and political events
are wars between God and Satan... with anyone who refuses America's
"kindness" becoming the target of American "morality".
|
|
Read article...
|
|
Howard Stern to remake Porky's
CNN | Submitted by: kade
"Radio humorist Howard Stern is developing modern-day remakes of the
classic teen pictures Porky's and Rock 'n' Roll High School,
Variety reports. The titles will be presented under the banner
"Howard Stern Presents", with the New York-based shock-jock serving as
executive producer on both." Umm, why tamper with perfection? Fuck.
|
|
Read article...
|
|
Holiday Inn nightmare: $33,000 a night
Ottawa Citizen | Submitted by: Jiboo
"More than 30,000 people who stayed at Holiday Inns across the United
States on Saturday night were unknowingly billed 100 times the true cost
of their stay, and many had credit cards suspended or bank accounts
emptied as a result. The computer glitch, caused by the clearing house
that handles the giant hotel chain's U.S. business, added hundreds of
millions in phantom charges."
|
|
Read article...
|
|
Politics makes strange bedfellows
Philadelphia Inquirer | Submitted by: Rev. Soror Lucy Cannon
It sounds like the plot of a ghastly star-vehicle high-concept movie:
She's a Japanese abducted years ago by the Koreans. He's a US military
deserter. Together they found love and raised a family. Now, the
Japanese government wants her back, husband and all. But the US
government has decided it wants a little talk with the guy who took off
across the DMZ all those years ago. If he leaves North Korea,
his next stop may not be Japan but Leavenworth.
|
|
Read article...
|
|
Cafeteria prank gets teen arrested
Arizona Daily Star | Submitted by: Omniphage
"A Marana High School sophomore was arrested Thursday after he jumped
on a cafeteria table and declared he'd kill everybody. He wore a fake
bomb belt and held a broken BB handgun and defended his actions as a
Halloween prank, police said... Students in the cafeteria at the time
were "shocked" and the entire room was silenced, Vidaurri said."
|
|
Read article...
|
|
Guy shoots them damn trick or treaters
KOCO-TV 5 Oklahoma City | Submitted by: Milk Bone
"An Illinois man was taken into police custody early Friday morning,
for allegedly shooting through his apartment door at trick or treaters
who knocked on it. Police said five children were with three adult
women when they knocked on an apartment door, and someone inside the
apartment fired five shots through the door. The incident happened
at 135 Walnut Dr., around 8:30 p.m., police said."
|
|
Read article...
|
|
|
|
|


| mydas |
| Short Name | Full Name | Version | Mapmaster | Description |
|---|---|---|---|---|
| ipi-tryptic | International Protein Index Predicted Tryptic Peptides | 0.1 | http://www.ebi.ac.uk/tc-test/das-srv/uniprot/das/ipi | Theoretical tryptic peptides based upon a complete and successful digest of the requested proteins with trypsin. |
| uniprot-tryptic | UniProt Predicted Tryptic Peptides | 0.1 | http://www.ebi.ac.uk/tc-test/das-srv/uniprot/das/uniprot | Theoretical tryptic peptides based upon a complete and successful digest of the requested proteins with trypsin. |


| Eclipse 3.6.1, CDT 6 | bake | |
|---|---|---|
| Build whole workspace | 13:01 min | 7:19 min |
| Build again without clean | 3:05 min | 0:50 min |
| Clean whole workspace | 0:41 min | 0:08 min |
| Clean the cleaned workspace again | 0:35 min | 0:02 min |
| Memory consumption of build environment (exclusive compiler, etc.) | Eclipse needs additional 300MB, stays in memory | 35MB peak,freed after build |
| ruby 1.8.6p398 | ruby 1.8.7p352 | ruby 1.9.2p180 | ruby 1.9.3p0 | |
|---|---|---|---|---|
| Build whole workspace | 13:58 min | 8:07 min | 7:19 min | 7:28 min |
| Build single file | 1,20 sec | 1,87 sec | 2,38 sec | 1,29 sec |
More details will follow.


Sound Transfer
Sound Transfer is a system to send a message from your computer to a friend's with speaker and mic. It uses a melodic pitch-based protocol, which means you can hear your message converted into a musical ditty in the process!
Check out the source code on GitHub: Sound Transfer.
Method: The outgoing message is converted into its binary ASCII representation, then converted to pitches with the melodic protocol. The receiver picks up the pitches with Fourier transforms and decodes from binary to ASCII text.
Here's the protocol.
Pitch Symbol Meaning
---------------------------------------
1976 Hz '!' Begin transmission.
1174 Hz '0' Send a binary 0.
784 Hz '1' Send a binary 1.
988 Hz '*' Used as a separator between repeated digits.
1568 Hz '.' End transmission.
Wow! So musical!
Create your own message melodies.


|
iDreamSky Game Engine
v1.0.0
|
公開方法(Public Methods) | |
| Polynomial1 (int iDegree=-1) | |
| Polynomial1 (const Polynomial1 &rkPoly) | |
| void | SetDegree (int iDegree) |
| int | GetDegree () const |
| operator const float * () const | |
| operator float * () | |
| float | operator[] (int i) const |
| float & | operator[] (int i) |
| Polynomial1 & | operator= (const Polynomial1 &rkPoly) |
| float | operator() (float fT) const |
| Polynomial1 | operator+ (const Polynomial1 &rkPoly) const |
| Polynomial1 | operator- (const Polynomial1 &rkPoly) const |
| Polynomial1 | operator* (const Polynomial1 &rkPoly) const |
| Polynomial1 | operator+ (float fScalar) const |
| Polynomial1 | operator- (float fScalar) const |
| Polynomial1 | operator* (float fScalar) const |
| Polynomial1 | operator/ (float fScalar) const |
| Polynomial1 | operator- () const |
| Polynomial1 & | operator+= (const Polynomial1 &rkPoly) |
| Polynomial1 & | operator-= (const Polynomial1 &rkPoly) |
| Polynomial1 & | operator*= (const Polynomial1 &rkPoly) |
| Polynomial1 & | operator+= (float fScalar) |
| Polynomial1 & | operator-= (float fScalar) |
| Polynomial1 & | operator*= (float fScalar) |
| Polynomial1 & | operator/= (float fScalar) |
| Polynomial1 | GetDerivative () const |
| Polynomial1 | GetInversion () const |
| void | Compress (float fEpsilon) |
| void | Divide (const Polynomial1 &rkDiv, Polynomial1 &rkQuot, Polynomial1 &rkRem, float fEpsilon) const |
保護屬性 | |
| int | m_iDegree |
| float * | m_afCoeff |


About
All about {{ .Author.FName }}My name is Aaron Bieber (no relation!). I am a OpenBSD developer (abieber@), ham radio nerd (KD0WKW) and husband.
I love Open Source and try to contribute where ever possible. I also run the Colorado BSD Users Group
A list of internet-related things I own can be found on KeyBase.
All posts are signed and can be verified using the following hash set and signature:
http://deftly.net/posts/SHA256 http://deftly.net/posts/SHA256.sig
-----BEGIN GEEK CODE BLOCK----- Version: 3.12 GCS dpu s++:- a C++++ UB++++ P++++ L- E+++ W N-- o-- K- w O M- V PS+++ PE- Y++ PGP++ t+ 5 X++ R+ tv+ b+ DI++ D++ G e* h--- r+++ y+++ ------END GEEK CODE BLOCK------


MODERN SPACE
HOME
ABOUT US
PROJECTS
SERVICES
CONTACT US
CONTACT US
Contact Info
Address
SF - M 48, Lucky Colony,
Anbu Nagar, Tirunelveli - 7.
Phone
Ph: 0462 - 2534228
Cell: 98945 30060
Email
<EMAIL_ADDRESS>Route Map


SpotMe is a free platform that connects you with Spotters that can help you find a parking space for your vehicle hourly, daily, weekly, or monthly for an affordable price. With SpotMe, you can avoid expensive parking provided by the university that is not even close to where you live! Need help finding a parking space for the Sunday night football game or the super awesome concert next weekend? SpotMe can help you.
Get started with SpotMe and find Spotters now
Do you have an empty driveway or an empty garage that is not being utilized? With SpotMe, you can become a Spotter and utilize that space to earn passive income while you're at work, at school, or on vacation. Here's the extra plus, SpotMe will not take commission and you take 100% of the earnings. That's right, time to fill up your wallet and become a Spotter.
Get started with SpotMe and began spotting now
Currently, SpotMe is only available in the beautiful state of Colorado and specifically the city of Boulder. More soon!


THE LOST WORLD [Spoilers] A film review by Tracy W. Bush Copyright 1997 Tracy W. Bush
I went to a screening of The Lost World this weekend, and admittedly what I saw was not the final cut of the movie. Those of you who know me know that I generally appreciate a movie for its entertainment value, and am not hypercritical of plot holes or sometimes even the absence of plot. However, I have to say that without a doubt, this movie SUCKED.
I mean, the BOOK was better than this movie, and the book wasn't all that great. In this movie we have like 5 minutes of exposition at the beginning and then BOOM we're back on a different island where all the dinosaurs are roaming free without cages.  Naturally, the dinosaurs overwhelm them and everyone is getting eaten and blah blah blah, and they have to escape and it's tense and blah blah blah. We've seen it all before.
I will say that the special effects are much much better this time around, the interaction between the CGI dinosaurs and the filmed actors is really breathtaking, I mean forget that LA Times ad with the guy in the mineshaft, this is infinitely more believable, but during the whole movie, and this thing is LONG, we're talking two and a half hours, I just kept thinking "I just don't care. All these people could be killed in this movie, and I just don't care."
Implausible escapes, one after the other. NO plot. Little morality plays about how mankind is so exploitative and murderous.  One amusing moment when a guy gets eaten by a T Rex in front of a Blockbuster Video in San Diego.
 Most of his scenes are shot exactly the same way - all the characters freeze, and we have reaction shots for a minute and a half. One high overhead shot panning down to just above head level, of people looking at something. One crotch level shop, panning up to eye level, of people looking at something. Then we go to POV and we see the effect. This goes on for the whole movie.
Oh, yeah, and he makes fun of fat people in this movie again.
Anyway, if you want to see the special effects, go ahead and see the movie, but JEEZ this is a bad film. It'll make bank simply because the people who saw the first one will want to see the second one, but hopefully we won't be subjected to a third.
To put things in perspective, this is the most disappointing sequel I've seen since "Highlander 2: The Quickening".
Tracy W. Bush<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Please compare this to the react/redux todo list example:
The React/Redux example has more than twice the code. That's actually fine. When you use the same great structure for this as was used for the React/Redux example, you end up with pretty much the same code size. However, the conviction that mixing template and code is much more expressive than writing imperative components does not stand up. Not at all!
Then there's performance ... native web components are a lot faster, the footprint is negligible compare to using React.
Finally there's readability. The React approach may be debatable. Let's concede that maintainability trumps being able to directly tell how template and code interact. Still React creates a language of its own while ShadowQuery uses just vanilla JavaScript - which virtually every developer should be able to read without ever having seen ShadowQuery. That's because it's just a relatively simple and small library of a few shorthands for web component boilerplate.


Shexkell
RDF Validation with Shape Expressions
RDF Graph
ShEx Schema
Nodes to validate
Node
Shape
Result
Satisfies
Not satisfies
Validate
Results
{{result.node}}
{{result.shape.shape}} - {{result.shape.result}}


- ElasticsearchController - Class in com.c301t3.c301t3app
-
Created by Kvongaza and Jquist on 2018-03-23.
- ElasticsearchController() - Constructor for class com.c301t3.c301t3app.ElasticsearchController
-
- ElasticsearchController.AddTask - Class in com.c301t3.c301t3app
-
Task methods for Elasticsearch
- ElasticsearchController.AddUser - Class in com.c301t3.c301t3app
-
User methods for Elasticsearch
- ElasticsearchController.DeleteTask - Class in com.c301t3.c301t3app
-
- ElasticsearchController.DeleteUser - Class in com.c301t3.c301t3app
-
Deletes a user from elasticsearch server
- ElasticsearchController.GetAllTask - Class in com.c301t3.c301t3app
-
- ElasticsearchController.GetTask - Class in com.c301t3.c301t3app
-
- ElasticsearchController.GetTaskByAssignee - Class in com.c301t3.c301t3app
-
- ElasticsearchController.GetTaskByOwner - Class in com.c301t3.c301t3app
-
- ElasticsearchController.GetUserByID - Class in com.c301t3.c301t3app
-
Class that queries the server for a user by ID.
- ElasticsearchController.GetUserByUsername - Class in com.c301t3.c301t3app
-
Class that queries the server for a user by username.
- ElasticsearchController.UpdateTask - Class in com.c301t3.c301t3app
-
Sync a task to elasticsearch server
- ElasticsearchController.UpdateUser - Class in com.c301t3.c301t3app
-
Sync a user to elasticsearch server
- ElasticsearchControllerTest - Class in com.c301t3.c301t3app
-
Created by Kvongaza on 2018-03-23.
- ElasticsearchControllerTest() - Constructor for class com.c301t3.c301t3app.ElasticsearchControllerTest
-
- ES_NUM_OF_RESULTS - Static variable in class com.c301t3.c301t3app.ApplicationController
-
- ExampleInstrumentedTest - Class in com.c301t3.c301t3app
-
Instrumented test, which will execute on an Android device.
- ExampleInstrumentedTest() - Constructor for class com.c301t3.c301t3app.ExampleInstrumentedTest
-
- ExampleUnitTest - Class in com.c301t3.c301t3app
-
Example local unit test, which will execute on the development machine (host).
- ExampleUnitTest() - Constructor for class com.c301t3.c301t3app.ExampleUnitTest
-


--- layout: post title: I'm teaching Git Essentials again, this time for PyLadies on July 30th. Enrollment filled within an hour... date: type: post published: false status: draft categories: [] tags: [] meta: google_plus_activity_id: z12aejqjbkj0ivyyy04cglshilm2ehc4tbw author: login: admin email<EMAIL_ADDRESS>display_name: admin first_name: Carina C. last_name: Zon ---
I'm teaching Git Essentials again, this time for PyLadies on July 30th. Enrollment filled within an hour of the PyLadies announcement going out today. So get on the wait list soon if you're interested. No Python or Git experience necessary.
Get Good with Git! Intro to Git Workshop!
The Git Essentials: You're using Git. But do you feel like you understand Git? And what the heck is the difference between Git and GitHub anyway? This intro workshop is for women, and those that i...


Connection Lost
Trying to reconnect...
Home
Topics
Friends
History
Messages
Discussions
Achievements
Store
Settings


She knew HTML. She knew CSS. But did she know love? Read this destined-to-be-remaindered novel that the new york times boos reviewdescribes as "reasonably grammatical" and the times literary supplement called "bathroom-worthy." Pre-order your paperwork copy now for just $14.99.
“I’ve never seen a novel with so much HTML and CSS code. I mean there is a lot of code in this book! So much code. Code, code, code.” —T. J. Murphy, Nowhere, OK
“I particularly loved the scenes where Daisy is by herself in her room writing HTML and CSS. It’s hard to make writing tags and properties interesting, and the author almost does it.” —M. Dash, Tightwad, MO
“I couldn’t put it down. No, really, I could not physically put this book down. Thanks to the cheap cover stock, the book was literally glued to my hands. I had to go to the emergency room to get the thing off me.” —A. Pendergast, Walla Walla, WA


Generating functions for both optimal and ordinary difference sequences, and the difference-based estimation functions.
| Version: | 1.0.0 |
| Depends: | R (≥ 3.3.0) |
| Published: | 2017-03-05 |
| Author: | Wenlin Dai, Tiejun Tong. |
| Maintainer: | Wenlin Dai <wenlin.dai at kaust.edu.sa> |
| License: | GPL-2 |
| NeedsCompilation: | no |
| CRAN checks: | VarED results |
| Reference manual: | VarED.pdf |
| Package source: | VarED_1.0.0.tar.gz |
| Windows binaries: | r-devel: VarED_1.0.0.zip, r-release: VarED_1.0.0.zip, r-oldrel: VarED_1.0.0.zip |
| OS X binaries: | r-release: VarED_1.0.0.tgz, r-oldrel: VarED_1.0.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=VarED to link to this page.


July 9, 2019
Contract Executed
- Univision: Assigned Programs - Infinity War
July 8, 2019
Payment Completed
- Netflix: Completed payment - 2000 USD
Approved Contract
- Netflix: Approved Contract
July 8, 2019
Contract viewed
- Dealmaker: Viewed Contract
July 8, 2019
Contract created
- Univision: Created Contract


Serialized Form
serialVersionUID: -8443994795704361590L
apiKey
String apiKey
- developer key. One has to obtain this from Zemanta by creating an account
online
outputASName
String outputASName
- Name of the annotation set where new annotations should be created.
inputASName
String inputASName
- The PR requires Sentence annotations as input. This parameter tells PR
where it can find the Sentence annotations
numberOfSentencesInBatch
Integer numberOfSentencesInBatch
- Number of sentences to be sent to Zemanta to process in one batch Default
is 10 sentences.
numberOfSentencesInContext
Integer numberOfSentencesInContext
- This is the number of sentences that are used as sentences in context both
on left and right side and not annotated when sent as part of a batch
unless there's no more sentence to be considered as part of the context.
SERVICE_URL
String SERVICE_URL
- Service URL
zemanta
com.zemanta.api.Zemanta zemanta
- Zemanta service


Tracker blocked by
TrackerFW
{% if redirect_url %}
Redirecting to url..
{% else %}
Unknown URL:
{{ url }}
{% endif %}


MinPhoto
Upload
Album
Public Album
Private Album
{$vo.title}
Create New Album
Create New Album
Logout


Weakened Indiana Pacers still too good for Chicago Bulls
The Chicago Bulls slipped to a 2-5 record after losing 108-95 to the Indiana Pacers.
For the Pacers, who had three starters sidelined by injury, it was a third straight win after opening the season with three consecutive losses.
TJ Warren scored a season-high 26 points for the Pacers as the Bulls failed to take advantage of Indiana’s makeshift team.
The Pacers have moved up to seventh on the Eastern Conference table, while the Bulls are third from bottom.
In New York, the Sacramento Kings beat the Knicks 113-92, with De’Aaron Fox (24) and Buddy Hield (22) top scoring for the visitors.
Harrison Barnes added 19 points for the Kings and Richaun Holmes finished with 14 points and 10 rebounds to make a fine start to a three-game road trip.
The win moves the Kings (2-5) up to 12th in the Western Conference, while the Knicks (1-6) remain rooted to the bottom of the Eastern.
In Miami, the Heat beat the Houston Rockets 129-100, fuelled by an astonishing first quarter which ended with the home side leading 46-14.
The only bigger leads after one quarter since the shot clock was started in 1954 were when the Los Angeles Lakers led the Kings 40-4 after one quarter on February 4, 1987, and the Baltimore Bullets leading the Kansas City-Omaha Kings 45-12 after one quarter on December 9, 1972.
The Heat’s third win in a row leaves them on 5-1 and second in the Eastern Conference, while the Rockets (3-3) are ninth in the Western.
Elsewhere, the Lakers won away to the San Antonio Spurs 103-96, the Dallas Mavericks beat the Cleveland Cavaliers 131-111, and the LA Clippers beat the Utah Jazz 105-94.


From Wikipedia: In cryptography, the one-time pad (OTP) is an encryption technique that cannot be cracked if used correctly. In this technique, a plaintext is paired with a random secret key (also referred to as a one-time pad). Then, each bit or character of the plaintext is encrypted by combining it with the corresponding bit or character from the pad using modular addition. If the key is truly random, is at least as long as the plaintext, is never reused in whole or in part, and is kept completely secret, then the resulting ciphertext will be impossible to decrypt or break.
We need to generate a "pad" or key for encrypting and decrypting a message. The part that makes this unbreakable is that it is completely random (vs the +13 paradigm of the simple Caeser cipher) and it isn't unique (the letter a could map to more than a single number!). We could make a manual letter-number mapping for our key using a message- length secret, but we'll generate a simple one using a secret plaintext seed for a pseudorandom number generator.
From here we can finally encrypt a plaintext message into ciphertext
using the key we generated. The function is simple: message + key mod 52
We can also decrpyt a message using the same modulo operation, but
this time we subtract the key value and add 52 if the number is negative. ciphertext - key mod 52
Made by Charles Lai


Disclaimer: JSA is not responsible for the content of linked third party websites. JSA is not an agent for these third parties nor does it endorse or guarantee their products. JSA makes no representation or warranty regarding the accuracy of the information contained in the linked sites. JSA suggests that you always verify the information obtained from linked websites before acting upon this information.


Class: 'NMR probe'
http://nmrML.org/nmrCV#NMR:1400014
Annotations (2)
-
comment "def: Part of an NMR instrument that detects the signals emitted from a sample. No single probe can perform the full range of experiments, and probes that are designed to perform more than one type of measurement usually suffer from performance compromises. The probe represents a rather fragile “single point of failure” that can render an NMR system completely unusable if the probe is dropped or otherwise damaged. Probes are usually characterised by Sample diameter and Frequency.
altdef: The instrument that transmits and recieves radiofrequency to and from the NMR sample." (string)
-
label "NMR probe" (string)
Superclasses (1)
Usage (1)


]
---
## 2. Interactive plotting with .red[*bokeh*], a Python package
### Metal-organic frameworks as drug encapsulators
.col31[
]
--
.col32[
]
--
.col33[
]
Pyrazinamide is a medication used to treat tuberculosis
--
### Objective
- Collaborators want to see which MOF they can synthesize
- Make an interactive plot to show PZA uptake and properties of each MOF
---
### .red[Start Jupyter Notebook]
- Windows: Start Anaconda prompt
- Mac/Linux: Start terminal
```python
jupyter notebook
```
--
### .red[Read data (csv)]
#### .gray[Make sure to copy downloaded data folder to current directory]
```python
import os, csv
rows = []
csvfile = os.path.join('data', 'pza-uptake.csv')
with open(csvfile) as fileobj:
reader = csv.reader(fileobj)
for row in reader:
rows.append(row)
```
---
### .red[Arrange data]
```python
# Headers in the same order as the csv file
headers = ['mof', 'metal', 'pza', 'err', 'vp', 'vf', 'ro', 'sa', 'dia']
# Create a dictionary where each header is assigned to all column values
# This syntax uses dictionary and list comprehensions
data = {h: [i[idx] for i in rows[1:]] for idx, h in enumerate(headers)}
# Convert numerical values to float (csvreader reads as string by default)
keys = ['pza', 'err', 'vp', 'vf', 'ro', 'sa', 'dia']
for k in keys:
data[k] = [float(i) for i in data[k]]
```
--
### .red[Plot data]
```python
from bokeh.plotting import figure, show
from bokeh.plotting import output_notebook
p = figure()
p.circle(data['vp'], data['pza'])
show(p)
output_notebook()
```
---
### .red[Customize figure]
#### .gray[Labels and size]
```python
p = figure(plot_width=1000, plot_height=600,
title='Pyrazinamide Uptake (g PZA/ g MOF)')
p.xaxis.axis_label = 'Pore Volume (cm³/g)'
p.yaxis.axis_label = 'Pyrazinamide uptake (g PZA/ g MOF)'
```
--
#### .gray[Markers]
```python
p.circle(data['vp'], data['pza'],
size=18,
fill_color='salmon',
fill_alpha=0.5,
line_color="darkred")
```
-
See available colors here
---
### .red[Hover tool]
#### .gray[Collect image files]
```python
import os
# For viewing the plot locally on your computer
img_dir = os.path.join('data', 'mofs')
data['images'] = [os.path.join(img_dir, '%s.svg' % i) for i in data['mof']]
# For viewing plot in the webpage
img_dir = 'assets/img/mofs'
data['images'] = ['%s/%s.svg' % (img_dir, i) for i in data['mof']]
```
---
### .red[Hover tool]
#### .gray[Create hover tool]
```python
from bokeh.models import HoverTool
hover = HoverTool(
tooltips="""
@mof
"""
)
```
---
#### .gray[Customize toolbar]
```python
p = figure(plot_width=1000, plot_height=600,
title='Pyrazinamide Uptake (g PZA/ g MOF)',
tools=[hover, "pan", "wheel_zoom", "box_zoom", "reset", "tap"],
toolbar_location='right')
```
--
#### .gray[Add data source, hover tool and plot]
```python
from bokeh.plotting import ColumnDataSource
source = ColumnDataSource(data=data)
p.circle('vp', 'pza',
source=source,
size=18,
fill_color='salmon',
fill_alpha=0.5,
line_color="darkred")
# We need to save to html file to make the images visible
output_file('pza.html')
```
---
#### .gray[Add more info to hover html]
```python
hover = HoverTool(
tooltips="""
@mof
Metal:
@metal
Vf:
@vf
Surface Area:
@sa
Pore diameter:
@dia
"""
)
```
---
#### .gray[Highlight selection]
```python
p.circle('vp', 'pza',
source=source,
size=18,
fill_color='salmon',
fill_alpha=0.5,
line_color="darkred",
nonselection_fill_color="salmon",
nonselection_line_color="darkred",
nonselection_fill_alpha=0.5,
nonselection_line_alpha=1.0,
selection_fill_alpha=0.5,
selection_fill_color="blue",
selection_line_color="darkred")
p.ygrid.grid_line_alpha = 0.2
p.xgrid.grid_line_color = None
# We need to save to html file to make the images visible
output_file('pza.html')
```
--
#### .red[Embed html]
```python
from bokeh.resources import CDN
from bokeh.embed import file_html
html = file_html(p, CDN, "PZA uptake")
with open('pza.html', 'w') as html_file:
html_file.write(html)
```
---
class: center, middle
# .center[
Amazing!
]
---
## 3. Adding the plot to the webpage
- Go to your GitHub page repository.
- Add the html file using `Upload files` button.
- Add the MOF images to `assets/img` folder again using `Upload files` button.
- Edit `_config.yml` file and add your file to the navigation bar. The url should be the same as your html file name. Ex: url for `plot.html` should be `plot`.
- The plot should be available by clicking the link in the sidebar or through `
.github.io/`.
#### .red[It should look something like this: [click here](pza-uptake)]
---
## 4. Adding an interactive molecule to the webpage
- Go to molview: [http://molview.org/](http://molview.org/)
.center[]
- Draw any molecule you like or just use the default caffeine
- If you draw your own molecule click on `2D to 3D` after you are done
- Click `Tools -> Embed`
- Copy the HTML code
- Paste the code to any markdown or html file
---
class: center, middle
# .center[Caffeine
]
More information on adding interactive molecules: [click here](https://kbsezginel.github.io/research/web-molecules/)
---
class: center, middle
#


Welcome to RedRP, . You need to register an account, please enter your details.
Your account is only YOURS, do not share your details with anyone.
Username
Email
Password
Repeat password
Sign in
Error message
Welcome to RedRP, . Please, enter your username and password.
Remember that you have 4 attempts. After those the account will be locked for security reasons.
Username or Email
Password
Recover password
Error message
Enter your Email and click 'Send code'. You'll receive an email message containing an activation code. Then you'll need to paste it below and enter your new password.
Get a code
Recover password
Character selection
Error message
Select one of your characters or create a new one.


Vehicle telematics systems integrate multiple telecommunication and information processing functions in an automobile, such as navigation, driving assistance, emergency and warning systems, hands-free phone, and entertainment functions, and present them to the driver and passengers via multimedia displays.
A concrete telematics system can support either a single or two channels; two channels afford independent programming for the driver and the passengers. The choice is represented as the xor-group channel. By default, each channel has one associated display; however, we can add one extra display per channel, as indicated by the optional feature extraDisplay. Finally, we can choose large or small displays (displaySize).
There are two types of components: ECUs (electronic control units) and displays. Each display has exactly one ECU as its server. All components have a version. Components themselves may have options, like the display size or cache. We can also specify the cache size and decide whether it is fixed or can be updated dynamically. Thus, the solution space model consists of a class model of component types and a feature model of component options.
The architectural meta-model is very generic: the meta-model describes infinitely many different products, each corresponding to its particular instance. We would like to specialize and extend the meta-model to create a particular template. A template makes most of the architectural structure fixed, but leaves some points of variability.
a concrete product must have at least one ECU and thus we create ECU1 to represent the mandatory instance. Then, optional instances are represented using classes with cardinality 0..1. Our product line can optionally have another ECU, represented by ECU2. Similarly, each ECU has either one display or two displays, but none of the displays has cache. Besides, we need to constrain the server reference in each display in plaECU, so that it points to its associated ECU - this constraint is nested under display. The reference parent points to the current instance of plaECU, which is either ECU1 or ECU2.Also, ECU2 extends the base type with master,pointing to ECU1 as the main control unit.
Having defined the architectural template, we are ready to expose the remaining variability points as a product-line feature model. A set of constraints coupling its features to the variability points of the template. Note that the template allowed the number of displays (ECU1.display and ECU2.display) and the size of every display to vary independently; however, we further restrict the variability in the feature model, requiring either all present ECUs to have two displays or all to have no extra display and either all present displays to be small or all to be large. Also note that we opted to explain the meaning of each feature in terms of the model elements to be selected rather than defining the presence condition of each element in terms of the features. Both approaches are available in Clafer, however. Constraints allow us restricting a model to a single instance. The following code block shows a top-level constraint specifying a single product, with two ECUs, two large displays per ECU, and all components in version 1.


#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# progressbar - Text progress bar library for Python.
# Copyright (c) 2005 Nilton Volpato
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
"""Main ProgressBar class."""
from __future__ import division
import math
import os
import signal
import sys
import time
try:
from fcntl import ioctl
from array import array
import termios
except ImportError:
pass
from compat import * # for: any, next
import widgets
[docs]class UnknownLength: pass
[docs]class ProgressBar(object):
"""The ProgressBar class which updates and prints the bar.
A common way of using it is like:
>>> pbar = ProgressBar().start()
>>> for i in range(100):
... # do something
... pbar.update(i+1)
...
>>> pbar.finish()
You can also use a ProgressBar as an iterator:
>>> progress = ProgressBar()
>>> for i in progress(some_iterable):
... # do something
...
Since the progress bar is incredibly customizable you can specify
different widgets of any type in any order. You can even write your own
widgets! However, since there are already a good number of widgets you
should probably play around with them before moving on to create your own
widgets.
The term_width parameter represents the current terminal width. If the
parameter is set to an integer then the progress bar will use that,
otherwise it will attempt to determine the terminal width falling back to
80 columns if the width cannot be determined.
When implementing a widget's update method you are passed a reference to
the current progress bar. As a result, you have access to the
ProgressBar's methods and attributes. Although there is nothing preventing
you from changing the ProgressBar you should treat it as read only.
Useful methods and attributes include (Public API):
- currval: current progress (0 <= currval <= maxval)
- maxval: maximum (and final) value
- finished: True if the bar has finished (reached 100%)
- start_time: the time when start() method of ProgressBar was called
- seconds_elapsed: seconds elapsed since start_time and last call to
update
- percentage(): progress in percent [0..100]
"""
__slots__ = ('currval', 'fd', 'finished', 'last_update_time',
'left_justify', 'maxval', 'next_update', 'num_intervals',
'poll', 'seconds_elapsed', 'signal_set', 'start_time',
'term_width', 'update_interval', 'widgets', '_time_sensitive',
'__iterable')
_DEFAULT_MAXVAL = 100
_DEFAULT_TERMSIZE = 80
_DEFAULT_WIDGETS = [widgets.Percentage(), ' ', widgets.Bar()]
def __init__(self, maxval=None, widgets=None, term_width=None, poll=1,
left_justify=True, fd=sys.stderr):
"""Initializes a progress bar with sane defaults."""
# Don't share a reference with any other progress bars
if widgets is None:
widgets = list(self._DEFAULT_WIDGETS)
self.maxval = maxval
self.widgets = widgets
self.fd = fd
self.left_justify = left_justify
self.signal_set = False
if term_width is not None:
self.term_width = term_width
else:
try:
self._handle_resize()
signal.signal(signal.SIGWINCH, self._handle_resize)
self.signal_set = True
except (SystemExit, KeyboardInterrupt): raise
except:
self.term_width = self._env_size()
self.__iterable = None
self._update_widgets()
self.currval = 0
self.finished = False
self.last_update_time = None
self.poll = poll
self.seconds_elapsed = 0
self.start_time = None
self.update_interval = 1
self.next_update = 0
def __call__(self, iterable):
"""Use a ProgressBar to iterate through an iterable."""
try:
self.maxval = len(iterable)
except:
if self.maxval is None:
self.maxval = UnknownLength
self.__iterable = iter(iterable)
return self
def __iter__(self):
return self
def __next__(self):
try:
value = next(self.__iterable)
if self.start_time is None:
self.start()
else:
self.update(self.currval + 1)
return value
except StopIteration:
if self.start_time is None:
self.start()
self.finish()
raise
# Create an alias so that Python 2.x won't complain about not being
# an iterator.
next = __next__
def _env_size(self):
"""Tries to find the term_width from the environment."""
return int(os.environ.get('COLUMNS', self._DEFAULT_TERMSIZE)) - 1
def _handle_resize(self, signum=None, frame=None):
"""Tries to catch resize signals sent from the terminal."""
h, w = array('h', ioctl(self.fd, termios.TIOCGWINSZ, '\0' * 8))[:2]
self.term_width = w
[docs] def percentage(self):
"""Returns the progress as a percentage."""
if self.currval >= self.maxval:
return 100.0
return self.currval * 100.0 / self.maxval
percent = property(percentage)
def _format_widgets(self):
result = []
expanding = []
width = self.term_width
for index, widget in enumerate(self.widgets):
if isinstance(widget, widgets.WidgetHFill):
result.append(widget)
expanding.insert(0, index)
else:
widget = widgets.format_updatable(widget, self)
result.append(widget)
width -= len(widget)
count = len(expanding)
while count:
portion = max(int(math.ceil(width * 1. / count)), 0)
index = expanding.pop()
count -= 1
widget = result[index].update(self, portion)
width -= len(widget)
result[index] = widget
return result
def _format_line(self):
"""Joins the widgets and justifies the line."""
widgets = ''.join(self._format_widgets())
if self.left_justify: return widgets.ljust(self.term_width)
else: return widgets.rjust(self.term_width)
def _need_update(self):
"""Returns whether the ProgressBar should redraw the line."""
if self.currval >= self.next_update or self.finished: return True
delta = time.time() - self.last_update_time
return self._time_sensitive and delta > self.poll
def _update_widgets(self):
"""Checks all widgets for the time sensitive bit."""
self._time_sensitive = any(getattr(w, 'TIME_SENSITIVE', False)
for w in self.widgets)
[docs] def update(self, value=None):
"""Updates the ProgressBar to a new value."""
if value is not None and value is not UnknownLength:
if (self.maxval is not UnknownLength
and not 0 <= value <= self.maxval):
raise ValueError('Value out of range')
self.currval = value
if not self._need_update(): return
if self.start_time is None:
raise RuntimeError('You must call "start" before calling "update"')
now = time.time()
self.seconds_elapsed = now - self.start_time
self.next_update = self.currval + self.update_interval
self.fd.write(self._format_line() + '\r')
self.last_update_time = now
[docs] def start(self):
"""Starts measuring time, and prints the bar at 0%.
It returns self so you can use it like this:
>>> pbar = ProgressBar().start()
>>> for i in range(100):
... # do something
... pbar.update(i+1)
...
>>> pbar.finish()
"""
if self.maxval is None:
self.maxval = self._DEFAULT_MAXVAL
self.num_intervals = max(100, self.term_width)
self.next_update = 0
if self.maxval is not UnknownLength:
if self.maxval < 0: raise ValueError('Value out of range')
self.update_interval = self.maxval / self.num_intervals
self.start_time = self.last_update_time = time.time()
self.update(0)
return self
[docs] def finish(self):
"""Puts the ProgressBar bar in the finished state."""
if self.finished:
return
self.finished = True
self.update(self.maxval)
self.fd.write('\n')
if self.signal_set:
signal.signal(signal.SIGWINCH, signal.SIG_DFL)


{% extends "personal/slayout.html" %} {% block title %}Index{% endblock %} {% block content %}
I am Milo Gertjejansen, a graduate from Michigan Technological University with a Bachelors of Science in Computer Science.
I am currently working at MediaBeacon, Inc.
If you want to contact me, you can...
If you would like to see my resume, you have a few options:
If you have any questions about my resume feel free to contact me.
If you are interested in the source for this site, I am working on getting it up on GitHub, as I didn't start it there. In the interim, email me specific questions and I will answer them to the best of my ability.


You have entered all necessary information per Human Cell Atlas standards. That’s awesome!
If everything looks correct, feel free to Submit your project data. Once you hit “Submit”, your data is going to make its way to the Human Cell Atlas pipelines for immediate analysis and release.


HIGH FIDELITY
Reviewed by Harvey Karten Touchstone Pictures Director: Stephen Frears Writer: D.V. Devincentis & Steve Pink & John Cusack and Scott Rosenberg, book by Nick Hornby Cast: John Cusack, Iben Hjejle, Todd Louiso, Jack Black, Lisa Bonet, Catherine Zeta-Jones, Joan Cusack, Tim Robbins, Chris Rehmann, Ben Carr, Lili Taylor
Go to movies like "Boiler Room," "American Psycho," and "Keeping the Faith" and you get the impression that all twenty-somethings in America have taken jobs with important corporate firms or have become leaders in fields like religion and law. But walk the streets of any city and you'll see a landscape dotted with hundreds, maybe thousands of small stores, each catering to specific needs of the citizens who patronize them and who may never see the inside chambers of huge establishments. Because these stores are operated by people who are either too independent to work for others, or who lacking specific types of education, or who are fairly new to the country, you are likely to fund proprietors and their associates who are quirky, who have personalities different from those who wear pin-striped suits, are addicted to cell phones, and may not give much of a damn about the concerns of their supervisors.
"High Fidelity" is a whimsical film that captures the temperament of some of these small retail people, knowledgeable about their product, often so passionate about what they sell that they may prefer discussing their commodity with their customers to taking their money. The movie is helmed by British director Stephen Frears with loving attention to its principal character and is based on a popular cult novel published in the UK in 1995 by Nick Hornby. The story focuses on an attractive fellow, Rob Gordon (John Cusack), who frequently breaks away from his exchanges with lovers, customers, and fellow workers to talk directly to the camera, as though he were performing in a Shakespearean play. You may get impression--as I did--that Rob's role could not have been better cast; that no one other than John Cusack could have pulled off Rob's idiosyncratic nature as a man of about thirty who obsesses so regularly about his past loves that he fails to pay sufficient concern for the women who rightfully demand his attention. =
Effectively, with quiet humor and restrained command, director Frears guides Cusack into a series delicate recollections from the times he tries to make out at school parties through his more grounded affairs with a succession of good-looking women. The film opens on Rob and his current live-in woman, Laura (Iben Hjejle), just as Laura is packed up, moving out, and ending her liaison with Rob.
In a meandering way that could alienate a young audience accustomed to MTV, action pictures, and broad comedy, "High Fidelity" takes us inside Rob's failing record business in one of Chicago's scruffy, arty neighborhoods, Seamus McGarvey's camera content to spend a good deal of time among the retro product found in abundance throughout the store. Rob specializes in vinyl records of pop music exclusively, his two workers, Dick (Todd Louiso) and Barry (Jack Black) happy to spend twice the time therein than they were hired to do. Frears milks a good deal of the comedy from these two characters who are so opposite in temperament (Dick is a scholarly introvert while Barry is feisty and opinionated) that we wonder how they get along so well. =
While Dick quietly discusses the music with the relatively few customers--including a band of hip, neighborhood skateboarders who occasionally shovel material surreptitiously under the shirts and pants--Barry elects to insult the squares. In the movie's most mirthful exchange, Barry tells a middle-aged guy who wants to buy "I Just Called to Say I Love You" where to get off with such sugary pap, suggesting, "Do you even know your daughter?"
This lovely comedy never overstays its welcome, getting blustery on only one occasion as Rob fantasies beating the hell out of his lost love's current beau, Ian (Tim Robbins), an unctuous, pony-tailed professional in the field of conflict resolution whose ears are pierced and decorated with three rings. As Rob's parade of lovers and near-liaisons, Frears parades a group of attractive women such as Marie DeSalle (Lisa Bonet), who delivers in the vocal department, and Penny (Joelle Carter). Most refreshing of all is Rob's favorite, the conflicted Laura, played by a woman known to aficionados of foreign films for her role as a hooker in the Danish movie "Mifune" of Soren Kragh-Jacobsen. The relationship between Laura and Rob is not entirely resolved by the story's conclusion, but we wish them the best.
Rated R. Running time: 120 minutes. (C) 2000 by Harvey Karten<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


File Upload and Download
The Materials Commons API supports uploading files. If you have a large number of files, or individual files that are bigger than 250MB it is recommended that you use Globus to perform your uploads and downloads. Showing how to use the Globus API is outside the scope of this documentation.
# Create directory off of project root directory
dir = c.create_directory(project.id, "d1", project.root_dir.id)
# Upload file in /tmp to newly created directory
file = c.upload_file(project.id, dir.id, "/tmp/file-to-upload.txt")
# Download newly uploaded file and write it to a different name in /tmp
c.download_file(project.id, file.id, "/tmp/newly-downloaded-file.txt")
# Download file by path on server. Project file paths start with / as their root, so
# to download the file we uploaded into d1 named file-to-upload.txt it will be located
# on the server at /d1/file-to-upload.txt.
c.download_file_by_path(project.id, "/d1/file-to-upload.txt", "/tmp/download-again.txt")
# Rename the file we previously uploaded from file-to-upload.txt to file.txt
file = c.rename_file(project.id, file.id, "file.txt")
# Move the file from the d1 directory to the root directory
file = c.move_file(project.id, file.id, project.root_dir.id)
# Delete the uploaded file
c.delete_file(project.id, file.id)


Hamaliuk feasts on T-birds
by Wayne MooreDillon Hamaliuk continued to remind the Seattle Thunderbirds, and their fans, what they lost when he was dealt to the Kelowna Rockets in the summer.
Hamaliuk, who came to Kelowna in a four-player deal during the WHL bantam draft, scored twice Friday, including the game winner, as the Rockets edged Seattle 3-2 in the Washington city.
In two games against the T-Birds, both in Seattle, Hamaliuk has scored three times and added an assist.
He has 11 points 5g, 6a) in the other 20 games.
Dallon Wilton, who got into just his fifth game of the season, also scored for the Rockets.
Wilson, who replaced Kyle Crosbie in the ,lineup Friday, opened the scoring 12 minutes in. Seattle goaltender Roddy Ross gave the puck away to Ethan Ernst behind the net.
Ernst threw it in front, where Wilton was waiting to bang it into the net as Ross tried to dive back in time.
Hamaliuk hammered home a wrist shot on a power play four minutes later to double the lead.
But, the T-Birds battled back.
Former Rocket Connor Bruggen-Cate with his fourth of the year and Payton Mount on a power play scored 32 seconds apart near the midway point of the second to tie it.
Hamaliuk secured the win when he deflected Liam Kindree's centering pass past Ross.
Cole Schwebius, also involved in the trade with Hamaliuk, turned away 37 shots to earn the victory.
The other former T-Bird involved in the deal to Kelowna, Jake Lee, was involved in a late third period fight with rookie Lucas Ciona.
The Rockets, winners of three in a row, wrap up this brief two-game road swing Saturday in Tri-City.


by Wallace Baine Film Writer Santa Cruz Sentinel
Most of us are determined to get through this life without witnessing a man nailing his johnson to a board. So it is with extreme caution and deep respect for the public's gag reflex that I recommend `Sick: The Life and Death of Bob Flanagan, Supermasochist.'
Certainly, this startling documentary will be one of the most unpleasant experiences you're likely to have in a movie house not involving Walter Matthau and Jack Lemmon. But at the same time, it is a luminous statement about art's ability to trump death. In the end, it's hard to determine what's more difficult to watch: a man mutilating his own body or the same man facing the very real specter of death.
Bob Flanagan is the kind of man who would give Jesse Helms a stroke. One of the longest known survivors of cystic fibrosis -- a fatal disease of the lungs that usually takes its victims in childhood or early adulthood -- Flanagan discovered the joys of sado-masochism in his teens. By the time he reached 40, he had become an icon of the perverse, an artist locked into a weird one-upmanship with the disease that was destroying his body.
Filmmaker Kirby Dick does not flinch from Flanagan's excesses. That nifty demonstration of Flanagan's carpentry skills mentioned earlier is deeply revolting, but it is only one in a long list of Stupid Human Tricks he performs. He is spanked, cut with blades, burned, pinched, buggered, bound, strangled, humiliated, mostly at the hands of dominatrix Sheree Rose, his long-time lover and torturer. If Rose treats Bob like a giant steak in need of tenderizing, she does so with an skewed sense of gratitude and motherly devotion.
As an artist, Flanagan used a deadpan, at times morbid wit to express his day-to-day misery, evoking the horror of his disease by illustrating its principal by-product, i.e. the fluids that filled his lungs and gave him an everpresent menacing cough (Wait till you see `The Visible Man'). One of the film's more twisted visuals is taken from the opening of one of Flanagan's New York art shows. While most artists would be sitting in the corner in a nice sweater sipping chardonnay, Bob is hanging aloft, naked, by his feet from the ceiling like some prized marlin. Whatever turns you on, guy.
As a jarring and sad contrast, Flanagan's aging parents, the picture of cozy middle American domesticity, are also interviewed. Despite living with the dread disease through their children (Bob's two sisters also died of CF), they seem perplexed about Bob's, uh, unusual lifestyle. `Where was I?' asks Mom, shaking her head in sorrow.
`Sick' takes an astonishing turn when Flanagan's disease finally seizes the upper hand. Director Dick was given full access to Flanagan's life even when both knew that he wouldn't survive much longer. It is mesmerizing and profoundly moving to see this S&M exhibitionist turn into a bewildered child at death's doorstep. Flanagan's death is recorded with a tenderness and dignity you wouldn't expect after seeing him utterly destroy the mystique of physical pain.
An important collaborator was Flanagan's tormentor/lover Sheree Rose who, as Bob's Yoko, had originally decided not to allow Kirby Dick to make the movie. Eventually, she came around and made available many of her own private videos of Bob, including some astounding footage in which Bob painfully tries to persuade her that he is simply not up to taking her punishment anymore.
Rose, it should be noted, does not come off like a monster, despite her severe attitude toward Flanagan. In the end, she is genuinely grief-stricken and, at this point it becomes apparent that the harsh language of S&M they used between them was indeed a lovers' dialogue. `Sick' is full of agony, disease, pain and more than enough stomach-turning scenes of mutilation. To watch it is a small act of courage, which is fitting considering the monstrous courage Bob Flanagan was able to summon to live like he did. Only, don't ever expect to be able to hammer a nail again without a flutter of fear in your belly. That you would be your Inner Bob speaking.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Duration-based
Event-based
Enable length limit:
1 s
5 s
10 s
15 s
30 s
1 min
5 min
10 min
1 hr
Maximum file length:
Generate silent files:
Enable length limit:
1 s
5 s
10 s
15 s
30 s
1 min
5 min
10 min
1 hr
Maximum file length:
Align files to second transition:
Expand each T.WAV file into a single WAV file.
Expansion restores silent periods between trigger events.
File
Folder
Selection type:
Select Files
No AudioMoth T.WAV files selected.
Expand Files


Performance data for Pay tax on a vehicle
55m
transactions
Services with the most transactions
- 46.9m Tax your vehicle
- 2.8m Amend vehicle tax details
- 632k Vehicle Tax refund
- 499k Check if a vehicle is taxed
- 98,997 Make a SORN
Services with the least transactions
How is this data calculated?
77%
transactions online
13% phone
7% paper
3% other
Services with the highest percentage of online transactions
- 93% Tax a vehicle
- 91% Amend vehicle tax details
- 84% Vehicle Tax refund
- 83% Check if a vehicle is taxed
- 78% Apply for a Vehicle Identity Check (VIC) online
Services with the highest percentage of offline transactions
How is this data calculated?
10
services
- Financial help if you're disabled
- Tax a vehicle
- Amend vehicle tax details
- Apply for an HGV vehicle licence (Tax) - form V85
- Make a SORN
- V890 - Statutory Off Road Notification (SORN)
- Vehicle Tax refund
- Check if a vehicle is taxed
- Report an untaxed vehicle (Notify DVLA of a non-compliance with Vehicle legislation)
- Apply for a Vehicle Identity Check (VIC) online


STRANGE DAYS A film review by Allan Toombs Copyright 1996 Allan Toombs
THE TIME: It's the end of 1999, just under 4 years in the future and a few days before the end of the century. Producer James Cameron really has produced a realistic projection of the millenial celebrations and the fevered craziness that goes along with it. From the opening sequence with a radio call-in christian squawking about 'the last days' to the climactic '2K' party, the atmosphere is right. This movie makes you feel the weird buzz of the century passing into a new millenium. The only feeling that'll come close will be the real thing, which gets nearer every day.
THE PLACE: Los Angeles, the wrong side of the tracks; now coming from Britain I don't know what it's like in the sleazier districts of LA but that's where this film is based, there isn't much of the suburbs and mall-culture on display, I guess you'd call it the street. Prostitutes, bar-flies, pushers; society's flotsam clinging onto that one last dream, none more so than the film's protagonist - Lenny Nero.
THE HARDWARE: It's called Playback or doing The Wire, officially the acronym is SQUID, sub-quantum something but all you really need to know is it can record human experience. No attempt is made to truly provide a technical explanation for the Playback devices, it's deus-ex-machina take it or leave it, indeed whatever leap in current research is posited it can fit 20 minutes of 'being there' onto an ordinary Sony Mini-Disc. Stronger than Crack. An electronic drug made real.
THE CRIMES: Somebody has murdered Jeriko One, controversial rapper and firebrand activist for the black community. Glen Plummer plays this character cross between Snoop Doggy Dog and Louis Farrakhan with conviction. The rap and the rhetoric are just right.  I'm tempted to condemn Cameron's sadistic narrative here but I can't, the scene is filmed with terrifying clarity by Director Kathryn Bigelow, I have to trust her judgement that the footage included is necessary to establish the prescence of a sick-killer in the plot. Certainly I felt repulsed and disgusted by the act and it's voyeurism; nuff said.
 He's strung out, making an easy living with a hot, contraband product but unable to get his life together. He's still in love with his ex-girlfriend Faith, but she now despises him, a love made no easier by his shoe-box full of recordings of their moments together. He is pitiably addicted to a Playback past. You may remember that in my review of JOHNNY MNEMONIC (http://www.cityscape.co.uk/users/bt18/johnnym.htm) I criticised the reversal of the classic Gibson 'screwed-up man/strong woman' formula. Well here it is executed perfectly by James Cameron's skillfull storyline. Making this film more Cyberpunk than the definate article itself. Which brings me round to Lornette 'Mace' Mason.
THE WOMAN: Angela Bassett is as beautiful and hard as ebony in the role of Mace. She's a black woman holding down a job driving businessmen round LA 1999's wreck-strewn streets. Lenny is supposed to be a friend; he was good to her kids the day the LAPD arrested their father.  Maybe once he got her set up in the security car line but now he's a leech bumming one too many free-rides. Angela Bassett is a wonderful new talent in a great part. She's stunningly cool under pressure yet pulls off all the fight scenes with a sharp grace and calculating intelligence. With her hair in thin braids she's as sassy as a younger Whoopi Goldberg, as physical as Grace Jones but with warmth and humanity.  A star.
THE ISSUES: At this movies heart are concerns about emotional truth, delusion and race. Cameron has obviously been thinking long and hard about the Rodney King beating and LA's riots. The key question is 'What have we to celebrate if armed police are necessary for a public celebration?'. Certainly it's hard to imagine how the millenium parties will take place without incident in an America which is 'browning' rapidly yet clinging to a white 'apple-pie' vision of life. Lenny Nero is that rare thing a white-guy who's at home in the racial mix of the inner-city. Yet he's blind to Macey's unselfish devotion. Instead of seeing her love he sits in a squalid pad fast-forwarding a tape of Faith making love to him in a beach hut. Fiennes plays a fool dazzled by the smoke and mirrors of a new technology. Like the men in SEX, LIES & VIDEOTAPE or FLATLINERS he's getting off on a recording and not confronting the truth that it's just a more-detailed, personalised form of pornography.
THE VERDICT: This is a James Cameron hollywood blockbuster first and foremost. High on action, adventure and adrenaline. Cameron knows just how to work a storyline chock full of twists and surprises. Added to this Kathryn Bigelow brings a sharp focus, quick-cut sophisticated direction that avoids cliche then uses it to just the right effect. I was left exhausted by the sheer pace and relentless punch of STRANGE DAYS. It's just a hairs-breadth on the right side of OTT but then this is a *BIG* movie dealing with the big issues of today. It takes the personal, the political, the sexual, the spiritual and makes them all hang on one split-second bullet. Maybe this is the last big action movie; I can't see how more is possible without lapsing into the tongue-in-cheek of TRUE LIES or Bond. However it deserves support for it's bravery in tackling drugs and race head on. Movie of the year, so far.
"Tonight we're going to party like it's 1999"<EMAIL_ADDRESS>http://www.cityscape.co.uk/users/bt18/atoombs.html Allan Toombs
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


The proof of the converse was quite harder, since palindromes are
built by adding items at both ends of a list, and the lisp-like definition
of lists considers only insertion at the beginning (constructor cons).
The way we proceeded was to prove first an induction principle for lists,
considering insertions at both ends :
Lemma list_new_ind :
forall P:list A -> Prop,
P nil ->
(forall a:A, P (a :: nil)) ->
(forall (a b:A) (l:list A), P l -> P (a :: l ++ b :: nil)) ->
forall l:list A, P l.
The proof of this induction principle uses the "Fibonacci induction scheme" :
Lemma fib_ind :
forall P:nat -> Prop,
P 0 ->
P 1 ->
(forall n:nat, P n -> P (S n) -> P (S (S n))) ->
forall n:nat, P n.


Reflection Blog
- What's your take on the DBC/EDA experience?
Really enjoying the EDA experience so far.
- What are your impressions?
Seems like EDA has a great community of teachers and students and enjoying the whole learning process.
- How do you see yourself engaging with this type of culture?
Getting involved and asking lots of questions. Also making sure I comply with the three pillars of Dev Academy.
- Have your expectations of EDA changed? If so, how?
Not really, apart from there's a lot more too learn in Phase 0 than I thought.
- Are you excited to participate in this kind of learning environment? Does it make you nervous?
Excited to join this type of learning environment, as said in the video above it will be like being in a restaurant kitchen. A little nervous to how much I need too learn before Bootcamp.