class: center, middle, title-slide count: false # Lesson 6 ## Unsupervised learning ## Autoencoders and generative adversarial networks
.bold[Marc Lelarge] --- # Overview of the course: 1- .grey[Course overview: machine learning pipeline] 2- .grey[PyTorch tensors and automatic differentiation] 3- .grey[Classification with deep learning] 4- .grey[Convolutional neural networks] 5- .grey[Embedding layers and dataloaders] 6- Unsupervised learning: auto-encoders and generative adversarial networks * .red[Deep learning architectures] - in PyTorch: recap! --- # Autoencoders (AE) ## practicals: denoising with AE # Generative Adversarial Networks (GAN) ## practicals: implementing conditional GAN and (simplified) InfoGAN --- # Autoencoders Autoencoders are used to learn compressed data representation in an .red[unsupervised manner]. Autoencoders can be seen as a simple example of .red[self-supervised learning]: the data provides the supervision! An autoencoder maps a space to itself and is [close to] the identity on the data. -- count: false .center[
] Dimension reduction can be achieved with an autoencoder composed of an encoder $F$ from the original space to a latent space, and a decoder $G$ to map back to the original space. If the latent space is of lower dimension, the autoencoder has to capture a "good" representation of the data. --- # Autoencoders in PyTorch The simplest possible autoencoder with a single fully-connected neural layer as encoder and as decoder: ``` class AutoEncoder(nn.Module): def __init__(self, input_dim, encoding_dim): super(AutoEncoder, self).__init__() self.encoder = nn.Linear(input_dim, encoding_dim) self.decoder = nn.Linear(encoding_dim, input_dim) def forward(self, x): encoded = F.relu(self.encoder(x)) decoded = self.decoder(encoded) return decoded ``` -- count: false After training, we obtain: .center[
] --- # Representation learning with autoencoders To get an intuition of the latent representation, we can pick two samples $x$ and $x'$ and interpolate samples along the line in the latent space: the line bewteen the codes obtained by the encoder $F$ for $x$ and $x'$ is defined by: for $\alpha\in [0,1]$ $$ (1-\alpha)F(x) + \alpha F(x'). $$ We use the decoder $G$ in order to get back in the original space from this embeddding in the latent space: $$ G((1-\alpha)F(x) + \alpha F(x')) $$ -- count: false Interpolating between digits two and nine: .center[
] --- # .grey[Autoencoders (AE)] ## [practicals: denoising with AE](https://colab.research.google.com/github/mlelarge/dataflowr/blob/master/PlutonAI/06_AE_NoisyAE_colab.ipynb) # Generative Adversarial Networks (GAN) ## practicals: implementing conditional GAN and (simplified) InfoGAN --- # Generative Adversarial Networks (GAN) ## Learning high-dimension generative models The idea behing GANS is to train two networks jointly: * a discriminator $\mathbf{D}$ to classify samples as "real" or "fake" * a generator $\mathbf{G}$ to map a fixed distribution to samples that fool $\mathbf{D}$ .center[
] .credit[ Goodfellow et al. [Generative adversarial nets](https://arxiv.org/abs/1406.2661). 2014. ] --- # GAN learning The discriminator $\mathbf{D}$ is a classifier and $\mathbf{D}(x)$ is interpreted as the probability for $x$ to be a real sample. The generator $\mathbf{G}$ takes as input a Gaussian random variable $z$ and produces a fake sample $\mathbf{G}(z)$. The discriminator and the generator are learned alternatively, i.e. when parameters of $\mathbf{D}$ are learned $\mathbf{G}$ is fixed and vice versa. -- When $\mathbf{G}$ is fixed, the learning of $\mathbf{D}$ is the standard learning process of a binary classifier (Sigmoid layer + BCE loss). -- count: false The learning of $\mathbf{G}$ is more subtle. The performance of $\mathbf{G}$ is evaluated thanks to the discriminator $\mathbf{D}$, i.e. the generator .red[maximizes] the loss of the discriminator. --- # Learning of $\mathbf{D}$ The task of $\mathbf{D}$ is to distinguish real points $x_1,\dots, x_N$ from generated points $\mathbf{G}(z_1),\dots, \mathbf{G}(z_N)$. The last layer of $\mathbf{D}$ is a Sigmoid layer, then learning of $\mathbf{D}$ is done thanks to the binary cross-entropy loss: $$ \mathcal{L}(\mathbf{D},\mathbf{G}) = -\sum_{n=1}^N \log \mathbf{D}(x_n)+\log \left( 1-\mathbf{D}(\mathbf{G}(z_n))\right). $$ -- count: false For a fixed generator $\mathbf{G}$, the optimal discriminator is $$ \mathbf{D}^* = \arg\min\mathcal{L}(\mathbf{D},\mathbf{G}). $$ --- # Learning of $\mathbf{G}$ The task of $\mathbf{G}$ is to fool the discriminator. For a fixed discriminator $\mathbf{D}$, the optimal generator is $$ \mathbf{G}^* = \color{red}{\arg\max} \mathcal{L}(\mathbf{D},\mathbf{G})= \arg\max -\sum_{n=1}^N \log \left( 1-\mathbf{D}(\mathbf{G}(z_n))\right). $$ In practice, the loss for $\mathbf{G}$ is often replaced by: $$ \mathbf{G}^* = \arg\max \sum_{n=1}^N \log \left(\mathbf{D}(\mathbf{G}(z_n))\right). $$ --- # Loss function for $\mathbf{G}$ .center[
] When the generator is weak compared to the discriminator, i.e. when $\mathbf{D}(\mathbf{G}(z)<<1$, the modified loss boosts the learning of the generator thanks to the high slope of $\log$ around zero. --- # GAN for 2-d point cloud Creating the generator and discriminator. ``` import torch import torch.nn as nn z_dim = 32 hidden_dim = 128 net_G = nn.Sequential(nn.Linear(z_dim,hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, 2)) net_D = nn.Sequential(nn.Linear(2,hidden_dim), nn.ReLU(), nn.Linear(hidden_dim,1), nn.Sigmoid()) ``` The point cloud will be given as a numpy array X. .center[
] --- ``` batch_size, lr = 50, 1e-3 nb_epochs = 500 optimizer_G = torch.optim.Adam(net_G.parameters(),lr=lr) optimizer_D = torch.optim.Adam(net_D.parameters(),lr=lr) for e in range(nb_epochs): np.random.shuffle(X) real_samples = torch.from_numpy(X).type(torch.FloatTensor) for real_batch in real_samples.split(batch_size): #improving D z = torch.empty(batch_size,z_dim).normal_() fake_batch = net_G(z) D_scores_on_real = net_D(real_batch) D_scores_on_fake = net_D(fake_batch) loss = -torch.mean(torch.log(1-D_scores_on_fake) + torch.log(D_scores_on_real)) optimizer_D.zero_grad() loss.backward() optimizer_D.step() # improving G z = torch.empty(batch_size,z_dim).normal_() fake_batch = net_G(z) D_scores_on_fake = net_D(fake_batch) loss = -torch.mean(torch.log(D_scores_on_fake)) optimizer_G.zero_grad() loss.backward() optimizer_G.step() ``` --- # Loss curves .center[
] Contrary to standard loss minimization, we have no guarantee here that the network will stabilize. It can very well oscillate without convergence. --- #GAN in action .center[
] A GAN fitting double moons. --- # Mode collapse The goal of a GAN is to find the best generator against any discriminator, i.e. $ \mathbf{G}^* = \arg\max \min_D \mathcal{L}(\mathbf{D},\mathbf{G}). $ But optimization alternates between finding the best generator against the current discriminator and finding the best discriminator against the current generator. In particular, we do not solve the $\max\min$ problem but alternate between the two problems. -- As a result, a possible equilibrium of the game observed in practice, is for the generator to generates only 'easy' samples, i.e. those most difficult to classify for the discriminator. --- # Mode collapse on MNIST .center[
] Those generated digits are clearly not following the origninal distribution of MNIST dataset and ones for example seems over-represented. --- # Conditional GAN .center[
] When labels are available, mode collapse can be mitigated (more details in practicals). .footnote[Mirza et al. [Conditional Generative Adversarial Nets](https://arxiv.org/abs/1411.1784). 2014.] --- # InfoGAN .center[
] Even when labels are not available, mode collapse can be mitigated (more details in practicals). .footnote[Chen et al. [InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets](https://arxiv.org/abs/1606.03657). 2016.] --- #IGAN in action .center[
] An InfoGAN fitting double moons. --- # Deep Convolutional GAN "Historical attempts to scale up GANs using CNNs to model images have been unsuccessful. (...) We also encountered difficulties attempting to scale GANs using CNN architectures commonly used in the supervised literature. However, after extensive model exploration we identified a family of architectures that resulted in stable training across a range of datasets and allowed for training higher resolution and deeper generative models." .footnote[Radford et al. [Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks](https://arxiv.org/abs/1511.06434). 2015.] --- # DC-GAN rules - replace pooling layers with strided convolutions in $\mathbf{D}$ and strided transposed convolution in $\mathbf{G}$. - use batchnorm in both $\mathbf{D}$ and $\mathbf{G}$. - remove fully connected hidden layers. - use `ReLU` in $\mathbf{G}$ except for the output using `Tanh`. - use `LeakyReLU` in $\mathbf{D}$ for all layers. --- # .grey[Autoencoders (AE)] ## [practicals: denoising with AE](https://colab.research.google.com/github/mlelarge/dataflowr/blob/master/PlutonAI/06_AE_NoisyAE_colab.ipynb) # .grey[Generative Adversarial Networks (GAN)] ## [practicals: implementing conditional GAN and (simplified) InfoGAN](https://colab.research.google.com/github/mlelarge/dataflowr/blob/master/PlutonAI/06_GAN_double_moon_colab.ipynb) --- class: end-slide, center count: false The end.


Nice!! Looks like somebody's not trying to beat the heat this summer. Based on your answers, a nice house in Hawaii we have available would be the perfect option for you!
Enjoy the snow and want to get away from it all? We have the perfect cabin destination for you. Even better, this cabin in the woods is refreshing and cozy... not scary!
Looks like Mexico is where it's at for you! One of the most popular and fun places to be. Enjoy the many activities we have onsite and a pool with swim-up bar. See you there!
Based on your responses, our fancy Aspen Lodge would be the best fit for you! Have fun on the slops or feel free to sit back and enjoy the many gorgeous views.
You have a couple different options to choose from - how exciting! We have a place in Hawaii and Mexico that would be a good fit from your profile.
You have a couple different options to choose from - how exciting! Check out our cabin and also the resort in Aspen. While both are cold, the experience is very different in these locations


-
$1520
favorite this post
Townhouse! With heat included! CALL TODAY!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
FREE Security Deposit! Move in NOW!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Townhouse! With heat included! CALL TODAY!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
NO Security Deposit!? Call NOW!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
FREE Security Deposit! Call and find out NOW!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
It's cold outside! Heat included will be sure to warm you up!!!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Move in special-Beat the cold and rent C35 heat included!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
LARGE 2 Bedroom Townhome Available! Heat/Hot Water Included!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Townhouse minutes from Providence! With HEAT included!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
Spacious 1 BD at a great price with HEAT included! Call NOW!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
Spacious 1 BD at a great price with HEAT included! Call NOW!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
2 Walk-in closets!! Heat Included!! Call NOW!!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
2 Bedrooms with Hardwood Floors! Call today!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Townhouse! With heat included! CALL TODAY!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
Heat included in this spacious one bed! CALL TODAY!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
👉Ask how you can get a PAID SECURITY DEPOSIT! 👈
$1520
2br -
990ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
🏠 ✴Rent Your New Home Today! ✴ 🏠
$1130
1br -
640ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Large 2bd Available NOW! FREE SEC DEPOSIT SPECIAL! Ask for details!
$1425
2br -
930ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Open floor plan 2bd with Free Security Deposit. Call for details!
$1425
1br -
930ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
Move in this month! 1bd with Free Security Deposit!
$1130
1br -
640ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Spacious Townhouse Available NOW! Ask about our Winter Special!
$1520
2br -
990ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Free Security Deposit! Move in Immediatly! 🙌
$1520
2br -
990ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
Ask about our Move in Special! Available in January!
$1130
1br -
640ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Large 2bd Available Now! Ask How you can get a free security deposit!
$1425
2br -
930ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
No security deposit! Move in ASAP! Call Now!
$1425
2br -
930ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
New Year - New Place - FREE SECURITY DEPOSIT!
$1130
1br -
640ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Move in ASAP & Get a Free Security Deposit!
$1520
2br -
990ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
2 Bedroom with Plenty of Closet Space! Spacious floor plan!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
Large One Bedroom, Top Floor! Walk in Closet!
$1230
2br -
740ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
One Bedroom! Call and Reserve NOW!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
2 Bedroom with Plenty of Closet Space! Spacious floor plan!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
One bed available NOW!!! CALL TODAY!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
LARGE 1 Bedroom Available! Heat/Hot Water Included!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
One Bed with HEAT Included! CALL TODAY!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
LARGE 2 Bedroom Townhome Available! Heat/Hot Water Included!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Townhouse! With heat included! CALL NOW!!!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
One Bedroom with HEAT included!!!!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Two bedrooms, two walk in closets, what's not to love?
$1425
2br -
932ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
LARGE 2 Bedroom Townhome Available! Heat/Hot Water Included!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Two bedrooms, two walk in closets. Call Today!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
One Bedroom with HEAT included!!!!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Townhouse! With heat included! CALL NOW!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Two Bed Apartment, Top Floor, HEAT Included!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
1 Bed with Heat and HW Included! CALL NOW!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Townhouse available for ASAP move in! Call today!!!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Two Bedroom apartment with HEAT Included! CALL TODAY!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Townhouse! With heat included! CALL TODAY!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
One Bed! HEAT Included! Call NOW!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Two Bedroom apartment with HEAT Included! CALL TODAY!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Townhouse! With heat included! CALL NOW!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Two Bedroom Town Home with HEAT Included! CALL TODAY!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Townhouse minutes from Providence! With HEAT included!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Two Bed with TWO Walk In Closets and Most Utilities! Call Today!
$1425
2br -
740ft2 -
(145 Essex Rd Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Granite Counters, Maple Cabinets! Heat Included! & we do snow removal!
$1520
2br -
990ft2 -
(900 Post Rd)
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
LARGE 1 Bedroom Available! Heat/Hot Water Included!
$1230
1br -
740ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Two Bedroom apartment with HEAT Included! CALL TODAY!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Townhouse! With heat included! CALL NOW!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
One Bed Top Floor! HEAT Included! Call NOW!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
Top Floor, One Bedroom! With HEAT included!!!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
Large One Bedroom, Top Floor! Call and Reserve NOW!
$1230
1br -
740ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Two Bed Apartment, Top Floor, HEAT Included!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Townhouse Waitlist for the New Year! Call Today!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
New Year - New Apartment! 👉🏠🌟
$1520
2br -
990ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
1 Bed Available NOW! Call Right Away! Tour on Saturday!
$1130
1br -
640ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
One Bed with Upgraded Kitchen and Most Utilities! Call Today!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
One Bed with HEAT Included! CALL TODAY!
$1230
1br -
740ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Two bedrooms, two walk in closets. Call Today!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
LARGE 1 Bedroom Available! Heat/Hot Water Included!
$1230
1br -
740ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Two Bed Apartment, Top Floor, HEAT Included!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
One Bed Top Floor! HEAT Included! Call NOW!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
One Bed Top Floor! HEAT Included! Call NOW!
$1130
1br -
640ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Two Bedroom apartment with HEAT Included! CALL TODAY!
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Townhouse minutes from Providence! With HEAT included!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
🔥 Warm up this winter with Heat & HW included! 🔥
$1520
2br -
990ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1130
favorite this post
1bedroom available before the Holidays! ⛄
$1130
1br -
640ft2 -
(Warwick)
pic
hide this posting
restore
restore this posting
-
$1230
favorite this post
One Bed Top Floor! HEAT Included! Call NOW!
$1230
1br -
740ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1425
favorite this post
Two bedrooms, two walk in closets, what's not to love?
$1425
2br -
932ft2 -
(145 Essex Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting
-
$1520
favorite this post
Townhouse! With HEAT included! CALL NOW!
$1520
2br -
990ft2 -
(900 Post Rd. Warwick, RI)
pic
hide this posting
restore
restore this posting


IRONWEED A film review by Mike Trout Copyright 1988 Mike Trout
Well, it's here. I finally saw IRONWEED last night, in a sneak preview in Albany for cast and extras. It opens nationwide today (12 February).
First, a warning. Film reviews are subjective by definition. This one will be worse than usual, as I have a personal interest in the film. It's the biggest thing to happen to Albany in years. However, I will do my best to be as objective as possible. I saw the film with three other people, two of whom were in the movie just as I was, and I tried to listen carefully to their comments and integrate them with my thoughts.
IRONWEED is a good film. It's not great, but I think it's better than the general reviews indicate. I found it to be well-written, brilliantly acted, and powerfully moving. The general story flow was surprisingly smooth.
The biggest problem is with editing. The movie is too long--2 hours 16 minutes--and there are obvious segments that should have been deleted. However, other scenes show signs of excess editing, causing some confusion in the story line and many dangling subplots. We finished filming in early summer and the film was released in mid-December. To me, that seemed like not enough time to do a careful editing job. Perhaps it was rushed to completion in time to be eligible for the 1987 Academy Awards.
IRONWEED is the story of Francis Phelan's return to Albany, New York. In 1901, Phelan was a trolley car worker for the Albany Traction Company. During a strike, Phelan throws a rock and kills a scab conductor. To escape prosecution, he leaves Albany for a year. After he returns, he attempts to build a life with his wife and children. But he drops his 13-day-old son Gerald on the floor, killing him. Phelan splits for good. For the next several years, Phelan wanders all over the US and Canada, playing minor league baseball--his rock-throwing at the trolley strike was a preview of his throwing skills. But the Great Depression hits and Phelan becomes just another of the millions of hungry, boozing bums. During these dreary years he takes up with Helen Archer, a sickly but lovable homeless woman with a musical background. Finally, in 1938, Phelan returns to Albany to confront his past, his family, and the ghosts that populate his memories.
I think IRONWEED the movie is considerably superior to IRONWEED the book. Although I'm a big fan of William Kennedy's books, I was quite disappointed with IRONWEED as a novel. To me, it was self-indulgent, overly experimental, and difficult to wade through. Most Albany readers seemed to enjoy it (probably due to all the local references), but a lot of non-Albanians I've talk to hate it. I even know two people who took it back to bookstores and demanded their money back.
But Kennedy has done an excellent job with the screenplay. The movie doesn't deserve the nickname "Ironweird" like the novel does. Excising all the bizarreness of the novel, Kennedy has managed to concentrate focus upon the main character Francis Phelan. Despite numerous flashbacks, Francis' story flows from scene to scene with sparkling logic. His character is strong and understandable. Jack Nicholson's superb acting lifts Francis into a memorable film character.
Kennedy's handling of the "ghosts from the past" subplot is extremely clear in the film, unlike Kennedy's rhetoric in his novel. Hector Babenco's direction shows considerable understanding of this subject as well, as it is not difficult to share the feelings of this powerful theme. I originally felt that this subject should probably be dropped from the film, but Kennedy showed how it can be done with clarity and conciseness. Too bad he didn't take the same approach with his novel.
The best part of the novel was Phelan's confrontation with his family, and the same can be said for the film. In the novel's emotional climax, Phelan accepts his wife's offer to move back home. This is not as clearly or powerfully handled in the film, but it is replaced with a scene of equal intensity. Phelan reads a letter he received many years ago from his loving nine-year-old daughter, who is now a grown woman filled with bitterness at Phelan's desertion of his family. Phelan has kept the letter all these years, and the quiet strength in Nicholson's voice as he reads the letter is an awesome performance that brought up the tears for me.
Kennedy has also lifted Helen Archer, Francis' girlfriend, into a major character role. I was concerned about this, as Archer plays only a minor role in the novel. But again, Kennedy has changed the novel into the screenplay with amazing skill and taste. And Meryl Streep, as Archer, shows the stuff that pros are made of. You won't forget her performance for a long time. When she belts out a tune in "The Gilded Cage" nightclub, the audience on the screen and in the theater are both moved.
A couple of other outstanding performances were displayed by Tom Waits, as Phelan's friend Rudy the Kraut, and Carol Baker, as Phelan's wife. Both showed unusual skills in wide-ranging roles, and after the film I heard some comments that they'd stolen the show. A galaxy of other minor but colorful characters keeps flowing through IRONWEED, making it a "fun" movie as well as a skillful look at life. I think this is what makes the movie flow well despite its length. IRONWEED doesn't seem long and doesn't really drag.
Still, several subplots should have been removed. Others needed to be expanded or better explained. Parts of the story seem to have been nearly removed anyway and are left dangling--such as the near-seduction of Phelan as a teenager. Throughout IRONWEED, we see three ghosts, but only two of them are ever explained. I had no trouble following the story, but I suspect that people unfamiliar with the novel might have difficulty, due to the sometimes choppy editing. Some audience members expressed confusion with several scenes and subplots.
Another subplot that begged for expansion was the one I was in. Seriously. Local residents and American Legion members, the "Raiders," attack and burn down the shantytown where Phelan and Rudy are visiting friends. In the six nights I worked on the film, we produced an enormous number of spectacular and fascinating scenes. Unfortunately, they all seem to have been left on the cutting room floor. As portrayed in the film, the attack is confusing. While working on the movie, I watched a powerful Nicholson performance of Phelan's loyalty to his fellow bum Rudy. That does not appear in the IRONWEED final product. On screen the whole thing lasts about 60 seconds and is over before you can figure out what it is. Some audience members asked me afterward what the heck was going on there. The motivation for the Raiders' attack simply was not there. Incidentally, I think I saw myself in one or two quick shots, but I couldn't be sure since it went by so fast. I'll have to watch it again a few more times and study it frame-by-frame when it comes out on video.
I can certainly see how movies go way over budget. Babenco spent tremendous amounts of money on scenes that were barely used or cut out entirely. A dead steam locomotive was shipped up from Mexico and altered at great expense, yet appears only in a couple of non-vital quick shots. And of course, I personally made several hundred dollars working on this movie, yet my efforts ended up in the waste can along with that of hundreds of other Albany residents.
This film does an exceptional job with set decoration. Albany area folks will have lots of fun spotting area localities, as well as many Albany "inside jokes" in props, signs, and such. It can get a little confusing for us at times, though. In one scene Phelan and Archer are examining a friend's body in Albany's South End. They take a few steps and are suddenly in Troy, about five miles away and across the Hudson River. Phelan points back to Albany and mutters something about the body "over there," as if it's still a few steps away. Troy, Hudson, and other local cities served as substitutions for various Albany neighborhoods in IRONWEED.
For now, I'll give IRONWEED three stars. I must admit that while watching the movie, I spent too much energy trying to spot myself, my friends, and Albany landmarks. After I see the film a few more times, I may change my opinion--but I suspect I may like IRONWEED even more.
Michael Trout (miket@brspyr1) =-=-=-=-=-=-= UUCP:brspyr1!miket BRS Information Technologies, 1200 Rt. 7, Latham, N.Y. 12110<PHONE_NUMBER>
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


4
1 The gold has become completely tarnished; the purest gold has changed.
The holy stones have been poured out at the head of every street.
2 The sons of Zion were precious, valued greater than pure gold.
But now they are regarded as nothing but clay jars made by potter's hands.
3 Even the jackals reveal the breast to nurse their cubs, but
the daughter of my people is as cruel as the ostrich in the desert.
4 The tongue of the nursing baby sticks to the roof of his mouth with thirst;
children ask for bread, but there is nothing for them.
5 The ones who used to eat expensive food are now abandoned, starving in the streets;
those who wore scarlet clothing are now on top of garbage heaps.
6 The iniquity of the daughter of my people is greater than the sin of Sodom,
who was overthrown in a moment, though no hands seized her.
7 Her leaders used to shine like snow and were as white as milk.
Their bodies were more ruddy than coral; their form like sapphire.
8 Now darkness blackens their appearance, and they are unrecognizable in the streets,
for their skin clings to their withered bones. It has become as dry as wood!
9 Those who have been killed by the sword are better off than those killed by hunger;
they are better off than those who waste away, pierced by hunger for the lack of any crops from fields.
10 The hands of compassionate women boiled their own children; these children
became their food during the crushing of the daughter of my people.
11 Yahweh has satisfied his rage. He has poured out his burning anger; he has kindled a fire
in Zion, and it has devoured her foundations.
12 Neither the kings of the earth nor any of the world's inhabitants would believe
that an adversary and enemy could enter the gates of Jerusalem.
13 But they did, because of the sins of her prophets, and the iniquities of her priests
who have shed the blood of the righteous in her midst.
14 Those prophets and priests now wander like blind men in the streets. They are defiled by that blood
so no one is able to even touch their clothes.
15 "Flee! Unclean," these prophets and priests cry out. "Flee, flee! Do not touch us!"
So they wander to other lands, but even the Gentiles say, "They can no longer live here as foreigners."
16 Yahweh has scattered them from his presence; he does not look on them with favor any longer.
No one receives the priests with any respect any more, and they show no concern for the elders.
17 Our eyes constantly failed to find even worthless help,
though they eagerly watched for a nation that would not save us.
18 They hunted our steps going through our streets.
Our end was near and our days were finished, for our end had come.
19 Our pursuers were swifter than the eagles in the sky.
They chased us to the mountains and lay in wait for us in the wilderness.
20 The breath in our nostrils, Yahweh's anointed one—our king, was captured in their pits;
it was our king of whom we said, "We will live under his protection among the nations."
21 Rejoice and be glad, daughter of Edom living in the land of Uz,
for the cup will also pass to you. You will become drunk and strip yourself naked.
22 Your guilt is ended, daughter of Zion. He will no longer keep you in exile.
But he will punish your guilt, daughter of Edom. He will yet uncover your sins.


So we have sailed to Guadeloupe and anchored at the north end as
well as the south end and now checking out "Les Saintes Island".
Guadeloupe is French and very very little English is spoken.
We have gotten by with pointing and smiling and so far
everything has worked out. Lots of rugged mountains and
usually some rain at some point in the day.
Our message is about Bs, the first B to talk about is Backpacking.
While we were anchored at Deshaies we happened to take the walk
up the creek to see the water falls. We did take a
backpack because the walk up was a two hour hike so we needed
lunch and some water. Maybe we could have done without the
water since we were hiking in the creek but you never know what
was in the water so we were safe and took our own. The
hike was in the water, along the creek, on the side of the bank,
and then though the brush as well. No really clear trail
to follow other than the stream but we did get to the end where
the waterfall was at and disappeared into a "cave" like opening.
The trip back was much quicker because there was a paved road we could
walk on back to the dingy. Not sure I would rate the total
trip over a 5 but we did get some exercise and Sam was
tuckered out. It was a good way to spend 4 hours of the
day.
Since we are in a French country you can not go anywhere with out a
Baguette: a loaf of bread maybe 2 to 3 inches in diameter and about 2 feet
long. You can slice them thin for dinner and make garlic
bread. You can slice a six inch piece and then cut it
length wise for a sandwich. You find then in every
grocery store or bakery and everyone is usually buying them in
the morning and carrying several home.
We made it down to the south end and anchored off Basse Terre
for an evening. Since this is the second largest city on the
island we thought it would be a good spot to get some of our
difficult food items to find. We stopped at a local restaurant
to see if we could find a taxi ride. One lady at the
restaurant spoke a little English, so after much talking in
French and a few English words, we figured out that one of the
waitresses would give us a ride to the big grocery store when
she had a work break at 3:00, but could not bring us back.
We were confident that we could find a way back somehow, so off
we went. After buying our items at the grocery store,
which was a challenge in itself, as everything was in French,
and some things took some deciphering to decide if it was really
what we wanted, we tried to have the help desk get us a
taxi but to no avail. The nice lady at the help desk
called about five places, but for some reason, no taxi was to be
had. Again this is all done with little
English/French being spoken but lots of nods and smiles.
Since no taxis were going to come the option of a bus ride was
next. We happened to get to the bus stop five minutes
prior to the bus arriving and in our limited vocabulary asked
the bus driver if the bus went towards where we wanted. We made it down to the bus depot with
out issue. At the bus depot we had to find the next bus
and then wait 30 minutes for it to arrive but we we made it back to
the boat warm and dry. It is amazing what you can do with
a vocabulary of about 5 French words and lots of pantomiming and
smiles.
The beach off of our anchorage is made of of sand that is
black/dark. We have seen the "normal" beach color and a
pink beach so now a black beach seems like the next logical
step. Not sure if the sand has any health benefits but it
seems like there are people swimming along the shore all the
time.
Our last B is for the boat race we saw as we
left Basse Terre and headed for Les Saintes Island. In the
pictures of the black sand beach you can see some of the boats
on the beach getting ready for the race. These boats look
like the ones we watched in the Bahamas but on these they do not
use a board to sit out over the water. The boats are about
25' long, with a huge mainsail as you can see in the pictures.
The race was 10 miles, with 9 miles of open ocean into the wind
all the way. These guys take their sailing seriously.
When we left the anchorage the boats were not in the water but
we did see them sail through the anchorage at Les Saintes later
in the day.
We will spend a few days here in Les Saintes, before heading off
to Dominica for more adventures. At least they speak
English in Dominica - we think???
05/25/13; Backpack, Baguettes, Bus Rides, Black Sand, Boat race
|
|
Anchorage at Deshaies |
the hike, note the Backpack |
Scrambling up the stream over rocks
|
The end of the hike
|
The famous Baguettes
|
Weather around Basse Terre
|
Buses around Basse Terre |
Yes, Black sand |
Black sand and boat prep |
Finishing of the Boat race |


 Want to quickly adjust house members' hours without having to document each and every past shift? You can use this form to add hours that have not been tracked by past shifts on the site.
Below, Hour Requirement modifies the number of hours a workshifter is required to owe over each repeated period (i.e. 5 hours a week, 2 hours every 6 weeks, etc).
Hour Adjustment adds the given hours to the workshifter's current standing. This allows the workshift manager to quickly carry over the workshift hours that were already completed, but tracked elsewhere.
No workshifters can been created for this semester.


"""Audio output interface."""
import subprocess
import tempfile
from pathlib import Path
from typing import TYPE_CHECKING, Union
import numpy as np
from numpy import ndarray
from ..external import get_musescore_soundfont_path
from .midi import write_midi
if TYPE_CHECKING:
from ..music import Music
def _check_soundfont(soundfont_path):
if soundfont_path is None:
soundfont_path = get_musescore_soundfont_path()
else:
soundfont_path = Path(soundfont_path)
if not soundfont_path.exists():
raise RuntimeError(
"Soundfont not found. Please download it by "
"`muspy.download_musescore_soundfont()`."
)
return soundfont_path
[docs]def synthesize(
music: "Music",
soundfont_path: Union[str, Path] = None,
rate: int = 44100,
gain: float = None,
) -> ndarray:
"""Synthesize a Music object to raw audio.
Parameters
----------
music : :class:`muspy.Music`
Music object to write.
soundfont_path : str or Path, optional
Path to the soundfount file. Defaults to the path to the
downloaded MuseScore General soundfont.
rate : int, default: 44100
Sample rate (in samples per sec).
gain : float, optional
Master gain (`-g` option) for Fluidsynth. Defaults to 1/n,
where n is the number of tracks. This can be used to prevent
distortions caused by clipping.
Returns
-------
ndarray, dtype=int16, shape=(?, 2)
Synthesized waveform.
"""
if gain is None:
gain = 1 / len(music)
# Check soundfont
soundfont_path = _check_soundfont(soundfont_path)
# Create a temporary directory
with tempfile.TemporaryDirectory() as temp_dir:
# Write the Music object to a temporary MIDI file
midi_path = Path(temp_dir) / "temp.mid"
write_midi(midi_path, music)
# Synthesize the MIDI file using fluidsynth
result = subprocess.run(
[
"fluidsynth",
"-T",
"raw",
"-F-",
"-r",
str(rate),
"-g",
str(gain),
"-i",
str(soundfont_path),
str(midi_path),
],
check=True,
stdout=subprocess.PIPE,
)
# Decode bytes to waveform
waveform = np.frombuffer(result.stdout, np.int16).reshape(-1, 2)
return waveform
[docs]def write_audio(
path: Union[str, Path],
music: "Music",
audio_format: str = None,
soundfont_path: Union[str, Path] = None,
rate: int = 44100,
gain: float = None,
):
"""Write a Music object to an audio file.
Supported formats include WAV, AIFF, FLAC and OGA.
Parameters
----------
path : str or Path
Path to write the audio file.
music : :class:`muspy.Music`
Music object to write.
audio_format : str, {'wav', 'aiff', 'flac', 'oga'}, optional
File format to write. Defaults to infer from the extension.
soundfont_path : str or Path, optional
Path to the soundfount file. Defaults to the path to the
downloaded MuseScore General soundfont.
rate : int, default: 44100
Sample rate (in samples per sec).
gain : float, optional
Master gain (`-g` option) for Fluidsynth. Defaults to 1/n,
where n is the number of tracks. This can be used to prevent
distortions caused by clipping.
"""
if audio_format is None:
audio_format = "auto"
if gain is None:
gain = 1 / len(music)
# Check soundfont
soundfont_path = _check_soundfont(soundfont_path)
# Create a temporary directory
with tempfile.TemporaryDirectory() as temp_dir:
# Write the Music object to a temporary MIDI file
midi_path = Path(temp_dir) / "temp.mid"
write_midi(midi_path, music)
# Synthesize the MIDI file using fluidsynth
subprocess.run(
[
"fluidsynth",
"-ni",
"-F",
str(path),
"-T",
audio_format,
"-r",
str(rate),
"-g",
str(gain),
str(soundfont_path),
str(midi_path),
],
check=True,
stdout=subprocess.DEVNULL,
)


How To Display The Number Of Unread Gmail Messages You Have On The Tab Header
by Emily PriceWhen you have a lot of unread email messages, there’s pretty much no point to seeing exactly how many of those messages you technically have to get through.
If you’ve recently reached Inbox Zero; however, then seeing the number of new emails that have come in can be pretty helpful. For those folks, Gmail actually has a relatively underused feature built-in that will display your unread message number right in the tab header. It looks like this:
With it, you can see that you have three new messages (or 100) to tend to at a glance without having to physically click over to the tab to see them.
To enable it, go to the Settings menu within your Gmail account by clicking the gear icon in the top right corner. From there, click Settings and then select “Advanced” from the list of available options at the top of the next page.
Toward the bottom of the Advanced settings, you’ll see the option for “Unread message icon.” Enable that to have your unread number appear on the tab header for Gmail going forward.
And if you end up back at “Inbox 1 Million” and no longer want to use the feature, you can disable it whenever you want by following the same instructions and selecting “Disable” instead.


Introduction to Jekyll Crisp Theme
July 24, 2017
Jekyll is a simple, blog-aware, static site generator. Jekyll Crisp Theme is a minimalism theme for Jekyll.
This is a sample post. You’ll find this post in your _posts
directory. Go ahead and edit it and re-build the site to see your changes.
To create new post, simply add a file in the _posts
directory that follows the convention YYYY-MM-DD-name-of-post.ext
and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.
Jekyll also offers powerful support for code snippets:
def print_hi(name)
puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.


Last chance to get tickets to the 2019 Hurling Classic, competition winners revealed
by IrishCentral StaffThe 2019 Hurling Classic in Citi Field is TOMORROW!
Today is your last chance to get tickets for the GAA event of the year.
This weekend, the popular Irish sport of hurling is coming to Citi Field for the “New York Hurling Classic,” a four-team, three-game tournament, and to accompany the hurling action, a lively Irish festival will take place leading up to the first game of the tournament, complete with Irish music, dancing and more.
During the week, we ran a competition for free tickets and we're glad to announce the winners, below. If you were not lucky this time, you still have a few hours to pick up tickets yourself here.
A massive congratulations to the winners of our competition:
- Brian Redmond (VIP)
- April Coady (VIP)
- Trish Slattery
- James and Margaret Bennett
- Kevin Murphy
- Leanne McIlwee
- Niall O'Hagan
- James Gildea
- Alec Olson-Foley
- Carmel Costello
- Susan Lord
- Niall Farrell
- Kelly Horton
- Patrick Byrne
- Jill Harnett
- Eileen McHugh
- Michael Moloney
- J. F. Mulligan
Competition winners have been emailed but if they have further questions about their tickets, please email<EMAIL_ADDRESS>Gates will open at 11:00 a.m. with the three-game tournament beginning at 12:30 p.m. ET. For more information about the New York Hurling Classic and to purchase tickets, please visit www.mets.com/hurling.


Expedition Leader Sobling:
I can't reward you for rumors or worthless trinkets. You must bring back authentic relics of real value!


| DOSE: |
20 mg |
oral |
2C-C |
(powder / crystals) |
| |
30 mg |
oral |
2C-C |
(powder / crystals) |
I wanted to compare the structural activity of the lesser-known phenethylamine 2C-C to that of it’s closely-related neighbor, 2C-B, a compound that I personally have always enjoyed. I placed an order and when my sample arrived, it appeared more or less identical to 2C-B: a fluffy, finely-textured white powder. 2C-C has been described by some people as having sedating traits, or even being a ‘sedative-psychedelic’. As a person who suffers from insomnia and social anxiety, I have little, if any, prejudice towards sedatives. I was eager to see if that was one of the qualities I would detect. Of course, with ‘2C’ in the name of the substance, I expected these experiences to be primarily psychedelic in nature.
-Trial 1: 20 mg (June 2008)-
3:15: A capsule containing 20 milligrams of 2C-C powder is swallowed.
3:40: There is nothing yet. Maybe a tiny bit of tingling in my skin but it is barely distinguishable from placebo effects.
4:00: I get a phone call from a family member. She is watching a bizarre television show about a steroid-using bodybuilder whose arms literally exploded. They got so big the skin couldn’t contain the muscle. She tells me I should turn on the television and check it out. As I hang up the telephone, something starts to feel strange. I can tell my trip will be starting soon.
4:08: There is a very alert feeling in my face. I can feel my pupils slowly expanding, and as they do my vision sharpens and becomes more focused. My field of vision seems to get stretched back, tightened, and become glossy. Objects seem like their exteriors are tightly pressed against their internal structures- like a table where the wood grain is attached too tightly and has a glossy appearance to it. It’s almost like everything got laminated.
4:15: The visions slowly become clearer and easier to define. The onset of symptoms seems to be comparable in speed to 2C-B, beginning less than an hour in but deepening very gradually. The visuals are somewhat similar to 2C-B, but resemble DOC more closely than anything. There is color amplification, a cartoonish look to the world, and wiggling movements with eyes opened. Not particularly strong visuals, but noticeable. My body is shivering, but there is no nausea. The feeling of the C is very sensual… I think I'd prefer to be naked. I don’t feel sedated, not even slightly.
4:22: I feel calm, yet under the surface there is a current of unrestrained hedonistic delight. The feelings coursing through my skin are powerfully pleasurable. There is a desire for sensual input of all kinds. Let's put on some music, and get out some food and drink! The senses must be fed!
4:35: No more shivers... things are evening out. I feel that I’m almost done coming up and starting to reach a plateau. The visuals are still somewhat subtle, but definitely noticeable. This is a ++.
4:42: I have music and television playing right now. There is also an air conditioner humming in the background that produces a lot of static. The ambient noises are emphasized and almost more significant than the music. The sounds all blend together, and the more sensory input my body receives the more comfortable I am. Give me things to hear and feel, and just don't make me think too much. I smoke a tiny bit of pot, which makes me feel even more calm and self-assured.
4:50: Open and closed-eye visuals are very mild now... they were more noticeable during the come-up. But there is an altered state of thought, mentally psychedelic effects that continue very steadily even when the visuals die down. This is really not particularly stimulating or sedating, but there are strong physical sensations to it. It is lightly visual, but fairly strong emotionally and mentally.
5:00: I smoke a little more pot, a moderate-strength strain called Blue Dream. It livens the visuals back up a bit, and gives me a very airy feeling. When walking I feel unnaturally light on my feet.
5:20: I feel like a hyperactive little kid, constantly getting lost in little sidelines. Trains of thought change readily. I often get distracted, but I still believe I’m enjoying myself.
5:30: My wandering thoughts turn towards sex, and I find myself looking at pornography and pleasuring myself. The tactile enhancement provided by the drug makes my job both easy and extremely enjoyable. A huge smile is plastered across my face.
5:40: I’m unable to focus on any one fantasy for too very long, so I keep switching from one thing to the next. My heartbeat slowly accelerates, signaling my increasing excitement.
5:50: I reach a truly lovely psychedelic orgasm, obsessing about one of my many private fantasies. The feeling of tension releasing is wonderful, and there is a burst of closed-eye visuals at the moment of climax.
6:10: I hop into a shower. As with 2C-B, the feeling of showering is extremely involving, and it is very easy to lose track of time as the feelings wash over me. It’s very easy to get lost in thought.
6:20: I have long since washed the shampoo from my hair and finished cleaning my body with soap and water, but I still need some time to fantasize and imagine living the lives of other people in other worlds while the water drops dance across my skull.
6:30: I finally get out. I do a little picking up around my bedroom, then lay down in bed for a few minutes and read a chapter from a book.
6:55: The substance is beginning a slow decline; it has no more tricks to show me, and dies down from time to time, but it will continue to invigorate me for another couple of hours still. I decide to play my Wii for a couple of hours.
7:30: Mario is jumping around a planet made out of cake and cookies, stomping on reptilian creatures and collecting stars. This game really doesn’t need any outside circumstance to make it look and feel trippy, but then I’ve always been a fan of excess.
9:15: I return to baseline. The total duration was six hours. I would be comfortable dosing higher next time.
-Trial 2: 30 mg (July 2008)-
1:24PM: I swallow 30 milligrams of 2C-C in two separate gel capsules, a large capsule containing 20 milligrams and a smaller capsule containing 10 milligrams. My stomach is not entirely empty; I ate a bowl of cereal earlier. I ingested a tryptamine two days previously so it is possible that there is some cross-tolerance. Nothing is planned for the day but to stay home and recreate- I’m really just aiming for some great relaxation.
1:38: No visuals yet, but I can begin to feel it processing- the energy is starting to circulate. I’m very relaxed right now.
1:45: Listening to music. A little bit of stomach tightness, perhaps feeling a bit gassy, but not nauseous.  My eyes are wide-opened and alive. I’m hyper-focused yet relaxed, and I know visuals will descend upon me very soon.
2:15: It’s starting to become visual. Objects with a lot of curvature seem to flow, their shapes becoming manipulated. Bright colors pop out and become ultra-emphasized. Especially white.  The room is alive. I breath slowly. I feel relaxed, but also very wide awake. There is not much with eyes closed, just a flashing display of white against black. I keep my eyes open, and feel like I don’t even need to blink.
2:25: My girlfriend just stopped in to check on me. We talked for a few minutes, then she headed out to do some shopping. We’re thinking of seeing a movie later in the evening.
2:40: The visuals have died down a bit. But the underlying feeling of the substance is deepening still. I think it comes and goes in waves.
2:45: It’s very strong now in my face. There’s a tingling, floating feeling all around my head. I’m mildly nauseous. Occasionally I’ll burp and taste the substance.
3:00: Empathogenic effects… I feel self-conscious as I look at myself in the mirror. I realize my emotions are flip-flopping back and forth, from positivity to negativity. Intense self-reflection strikes suddenly, then dissipates just as quickly into other thoughts.
3:15: Moderate pupil dilation. Nausea and dizziness, but not severe enough to lead to vomiting. The substance is mildly visual, but intensely emotional as well as physically quite powerfully.
3:20: Visuals just got strong again… the whole room reverberates with energy. It looks like barely visible wires hidden under the surface are carrying electric pulses through everything in the room. Closed eye visuals are becoming increasingly complex and noteworthy. Lots of color, spontaneity, and geometric complexity. An hour ago the closed eye visuals were boring.
3:25: It just moved partially out of my head and now the energy is very strong in my heart, and all around my chest. I measure my pulse and it is slightly accelerated: Up to 90 beats per minute from a resting rate of 75.
3:30: Pupils are really quite dilated. There are a couple of yawns; I’m not feeling particularly sedated, but somehow yawning helps work out the excess energy in my body, the same way that shivering works out the energy from 2C-B. Bright, flowering patterns emerge when I close my eyes. There is a bit of body load. I think I’m going to take a shower.
3:45: It is in the shower that I reach a peak. The feeling of the water splashing, the self-reflection coming back again, the visuals rising to the surface and bursting with new complexity… it all comes together at once. I close my eyes and I’m lost in a trance.
3:55: From the flowing patterns and play of colors there begins to emerge a scene… something solid, unchanging and meaningful. The longer I keep my eyes closed the clearer it develops. Is that a gateway? Are those eyes looking back at me? They are…. Watch them blinking. They see me. What do they want?
4:05: There is a wall inlaid with very ancient designs, complex and perfect and mysterious. Like hieroglyphics inlaid with circuitry. The walls are pieced together from interlocking blocks, with deep cracks, and they are alive. Eyes and parts of faces are embedded, and it’s more than an image… it seems to be meaningful. I look closer, and it isn’t just a wall, but two doors pressed firmly together… a gate. With eyes on either side. What is this place? Where would this doorway lead if I could open it?
4:15: The image starts to fade just as I start to think about turning off the shower water and stepping out… but the feeling of having glimpsed a foreign realm is inspiring. The thrill of discovery stays with me. As I step out of the shower, I find myself speaking in spontaneous poetry.
“In that chamber there, with water pouring, I closed my eyes
And saw a wall of ancient patterns, pieces of a puzzle, glimpses beyond where the veil unfolds
And in their green eyes winking, winking, I saw them waiting… waiting there to greet me, whenever I might die
But now I wake and they just pass me by… what else will I do with this strange day, before it fades away into yesterday again?”
4:25: The spirit has passed; it is time to be quiet again. I sit by my computer and put on a stand-up comedy performance. I just listen to it for a few minutes, then I leave it running while I boot up an online video game. I want sensory input now, as much as possible.
4:35: I just shot a guy in the face with a rocket launcher. The 2C-C is still going quite strong. The sensory overload is delightful.
4:50: I leave the game for a bit and go make myself something to eat. I’m in the mood for something sweet. I try eating a couple of freshly picked strawberries from the local market, but the texture of the fuzzy bumps on the outside is just too strange. Instead I make myself some chocolate ice cream.
5:00: I alternate between scooping ice cream into my mouth, and killing enemy spies with a flamethrower. There are some mild tracers on people’s characters as they run around the online fortress, and the colors are vivid. Yet the intensity of the substance is starting to die down. It’s not very visual right now, through my mood and concentration are still effected.
6:00: The substance is still going a little bit. No visuals, but my teeth feel like they’re vibrating. Energy still courses through my face.
6:40: I have quit my game. The substance is still there, in my face, traces slowly moving towards the back of my head as it slowly fades away.
7:30: I eat a dinner of roasted chicken with my girlfriend. My appetite is great, and talking is easy now. Then I pack up and prepare to go see a movie with her, something both of us had really wanted to see.
We drove to the theater and the movie started at 8:15. The last of that prickly face-buzz was still noticeable as the previews and opening credits rolled. It quickly faded into nothing as the actual movie began, and had no effect on the viewing of the movie. The final ending time was 8:25, making the duration 7 hours. I finished up the rest of my evening in peace.
-Conclusions-
2C-C is a psychedelic empathogen similar in nature to 2C-B. I would say 30 milligrams of 2C-C was roughly equivalent to 20 milligrams of 2C-B HBr, while 20 milligrams of 2C-C was roughly equivalent to 14 milligrams of 2C-B HBr, making this roughly two thirds the potency of 2C-B. The visuals from 2C-C are very similar to DOC: bright, cartoonish, flowing… unreal, but in a pleasant way. This could be seen as a short, trial version of DOC, and free of the speedy traits and longer duration of the substituted amphetamines.
Like 2C-B, the effects of 2C-C are a combination of skin tingling and touch sensitivity, emotional sensitivity and spontaneity of thought, and visual hallucinations, all of which come and go in waves, varying in intensity and complexity over time. 2C-C produces hallucinogenic effects within an hour but takes up to two hours to deepen to a full peak. Like 2C-B, at low doses it is an excellent social and recreational psychedelic, pleasurable with no really concerning side-effects. And like 2C-B, it can be powerfully emotional and possibly even spiritual at a high enough dose. The overall feeling of the drug is pretty relaxed, certainly much more so than 2C-I or 2C-E. I got quite a bit of reward out of relaxing indoors, doing very day-to-day sorts of activities on it, but it would also be fine for going out to parties, or really just about anything.
When the visual and emotional aspects of 2C-C come together and begin to interact, the substance is at its best. C is another worthy letter in the 2-C-Alphabet.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


The following function may be used to initialize MPI, and initialize the MPI thread environment, instead of MPI_INIT.
| MPI_INIT_THREAD(required, provided) | |
| IN required | desired level of thread support (integer) |
| OUT provided | provided level of thread support (integer) |
int MPI_Init_thread(int *argc, char *((*argv)[]), int required, int *provided)
MPI_INIT_THREAD(REQUIRED, PROVIDED, IERROR)
INTEGER REQUIRED, PROVIDED, IERROR
int MPI::Init_thread(int& argc, char**& argv, int required)
int MPI::Init_thread(int required)
Advice to users.
In C and C++, the passing of argc and argv is
optional.
In C, this is accomplished by passing the appropriate null pointer.
In C++, this is accomplished with two separate bindings to
cover these two cases.
This is as with MPI_INIT as discussed in
Section Startup
.
( End of advice to users.)
This call initializes MPI in the same way that a call to MPI_INIT would. In addition, it initializes the thread environment. The argument required is used to specify the desired level of thread support. The possible values are listed in increasing order of thread support.
Different processes in MPI_COMM_WORLD may require different levels of thread support.
The call returns in provided information about the actual level of thread support that will be provided by MPI. It can be one of the four values listed above.
The level(s) of thread support that can be provided by MPI_INIT_THREAD will depend on the implementation, and may depend on information provided by the user before the program started to execute (e.g., with arguments to mpiexec). If possible, the call will return provided = required. Failing this, the call will return the least supported level such that provided > required (thus providing a stronger level of support than required by the user). Finally, if the user requirement cannot be satisfied, then the call will return in provided the highest supported level.
A thread compliant MPI implementation will be able to return
provided
= MPI_THREAD_MULTIPLE.
Such an implementation may always return
provided
= MPI_THREAD_MULTIPLE, irrespective of the value
of required.
At the other extreme, an MPI library that is not thread compliant
may always return provided = MPI_THREAD_SINGLE,
irrespective of the value of required.
A call to MPI_INIT has the same effect as a call to MPI_INIT_THREAD with a required = MPI_THREAD_SINGLE.
Vendors may provide (implementation dependent) means to specify the level(s) of thread support available when the MPI program is started, e.g., with arguments to mpiexec. This will affect the outcome of calls to MPI_INIT and MPI_INIT_THREAD. Suppose, for example, that an MPI program has been started so that only MPI_THREAD_MULTIPLE is available. Then MPI_INIT_THREAD will return provided = MPI_THREAD_MULTIPLE, irrespective of the value of required; a call to MPI_INIT will also initialize the MPI thread support level to MPI_THREAD_MULTIPLE. Suppose, on the other hand, that an MPI program has been started so that all four levels of thread support are available. Then, a call to MPI_INIT_THREAD will return provided = required; on the other hand, a call to MPI_INIT will initialize the MPI thread support level to MPI_THREAD_SINGLE.
Rationale.
Various optimizations are possible when MPI code is executed single-threaded, or is executed on multiple threads, but not concurrently: mutual exclusion code may be omitted. Furthermore, if only one thread executes, then the MPI library can use library functions that are not thread safe, without risking conflicts with user threads. Also, the model of one communication thread, multiple computation threads fits many applications well, e.g., if the process code is a sequential Fortran/C/C++ program with MPI calls that has been parallelized by a compiler for execution on an SMP node, in a cluster of SMPs, then the process computation is multi-threaded, but MPI calls will likely execute on a single thread.
The design accommodates a static specification of the thread support
level, for environments that require static binding of libraries, and
for compatibility for current multi-threaded MPI codes.
( End of rationale.)
Advice
to implementors.
If provided is not MPI_THREAD_SINGLE then the MPI library should not invoke C/ C++/Fortran library calls that are not thread safe, e.g., in an environment where malloc is not thread safe, then malloc should not be used by the MPI library.
Some implementors may want to use different MPI libraries for
different levels of thread support. They can do so using dynamic
linking and selecting which library will be linked when
MPI_INIT_THREAD is invoked.
If this is not possible, then optimizations for lower levels
of thread support will occur only when the level of thread support required
is specified at link time.
( End of advice to implementors.)
The following function can be used to query the current level of thread
support.
| MPI_QUERY_THREAD(provided) | |
| OUT provided | provided level of thread support (integer) |
int MPI_Query_thread(int *provided)
MPI_QUERY_THREAD(PROVIDED, IERROR)
INTEGER PROVIDED, IERROR
int MPI::Query_thread()
The call returns in provided the current level of thread support. This will be the value returned in provided by MPI_INIT_THREAD, if MPI was initialized by a call to MPI_INIT_THREAD().
| MPI_IS_THREAD_MAIN(flag) | |
| OUT flag | true if calling thread is main thread, false otherwise (logical) |
int MPI_Is_thread_main(int *flag)
MPI_IS_THREAD_MAIN(FLAG, IERROR)
LOGICAL FLAG
INTEGER IERROR
bool MPI::Is_thread_main()
This function can be called by a thread to find out whether it is the main thread (the thread that called MPI_INIT or MPI_INIT_THREAD).
All routines listed in this section must be supported by all MPI implementations.
Rationale.
MPI libraries are required to provide these calls even if they do
not support threads, so that portable code that contains invocations
to these functions be able to link correctly. MPI_INIT
continues to be
supported so as to provide compatibility with current MPI codes.
( End of rationale.)
Advice to users.
It is possible to spawn threads before MPI is initialized, but no MPI call other than MPI_INITIALIZED should be executed by these threads, until MPI_INIT_THREAD is invoked by one thread (which, thereby, becomes the main thread). In particular, it is possible to enter the MPI execution with a multi-threaded process.
The level of thread support provided is a global property of the MPI
process that can be specified only once, when MPI is initialized on
that process (or before). Portable third party libraries have to be written so as to
accommodate any provided level of thread support.
Otherwise, their usage will be restricted to specific level(s) of thread support.
If such a library can run only with specific level(s) of thread support, e.g.,
only with MPI_THREAD_MULTIPLE, then
MPI_QUERY_THREAD can be used to check whether the
user initialized MPI to the correct level of thread support and,
if not, raise an exception.
( End of advice to users.)


Greetings! Hope you all are doing good. Want to develop new skills and build the right tech stack but don't know where to learn from? Welcome to our website, we provide the best resources for you to choose, find the one that suits you. Details such as the links to their videos, documentation, pages have been made available for your comfort. It will be super easy for you to know about any resource. Hope you like our services. Cheers.
Find the domain you want to explore
Choose from plethora of topics to start with
Clear and concise for anyone to understand
Have fun while learning from the best resources we provide
In case a query pops up in your head or you are looking for a collaboration, feel free to reach out to us. Just drop in a mail, call us up or join us at our office for a nice coffee.
P.S.-We really make some delicious ones!


Here are the questions that you just answered
- Do you like to travel?
- Do you like to eat sushi?
- Do you like dogs?
- Do you like to drink wine?
- Do you like camping?
It's time for you to know about my education experience
- 2016 - 2017 University of Sussex Master's degree
- 2012 - 2016 Shenzhen University Bachelor's degree
About my work experience
- 2018 - 2019 Denise Louie Education Center Teacher Assistant
- 2016 - 2016 Education First Teacher Assistant
- 2013 - 2014 I Am Here Cafe Waitress
As it mentioned in the question, I love traveling and these are the top 10 places saved in my bucket list
- Spain
- Belgium
- Sri Lanka
- Bazil
- German
- Vietnam
- Singapore
- Laos
- Zimbabwe
- Indonesia


{{define "head"}}
Or sign up using... {{if .oauthMessageExist}}
Really, you will love it inside. It's super great!


Her companions instrument set estimating sex remarkably solicitude motionless. Property men the why smallest graceful day insisted required. Inquiry justice country old placing sitting any ten age. Looking venture justice in evident in totally he do ability. Be is lose girl long of up give. Trifling wondered unpacked ye at he. In household certainty an on tolerably smallness difficult. Many no each like up be is next neat. Put not enjoyment behaviour her supposing. At he pulled object other


{% extends "baselayout.html" %} {% block content %}
An email has been sent to your address with a new password.


- captureHeader(CSVReader) - Method in class au.com.bytecode.opencsv.bean.ColumnPositionMappingStrategy
-
- captureHeader(CSVReader) - Method in class au.com.bytecode.opencsv.bean.HeaderColumnNameMappingStrategy
-
- captureHeader(CSVReader) - Method in interface au.com.bytecode.opencsv.bean.MappingStrategy
-
Implementation of this method can grab the header line before parsing begins to use to map columns
to bean properties.
- checkError() - Method in class au.com.bytecode.opencsv.CSVWriter
-
Checks to see if the there has been an error in the printstream.
- CLOBBUFFERSIZE - Static variable in class au.com.bytecode.opencsv.ResultSetHelperService
-
- close() - Method in class au.com.bytecode.opencsv.CSVReader
-
Closes the underlying reader.
- close() - Method in class au.com.bytecode.opencsv.CSVWriter
-
Close the underlying stream writer flushing any buffered content.
- ColumnPositionMappingStrategy<T> - Class in au.com.bytecode.opencsv.bean
-
Copyright 2007 Kyle Miller.
- ColumnPositionMappingStrategy() - Constructor for class au.com.bytecode.opencsv.bean.ColumnPositionMappingStrategy
-
- convertValue(String, PropertyDescriptor) - Method in class au.com.bytecode.opencsv.bean.CsvToBean
-
- createBean() - Method in class au.com.bytecode.opencsv.bean.HeaderColumnNameMappingStrategy
-
- createBean() - Method in interface au.com.bytecode.opencsv.bean.MappingStrategy
-
- CSVIterator - Class in au.com.bytecode.opencsv
-
- CSVIterator(CSVReader) - Constructor for class au.com.bytecode.opencsv.CSVIterator
-
- CSVParser - Class in au.com.bytecode.opencsv
-
A very simple CSV parser released under a commercial-friendly license.
- CSVParser() - Constructor for class au.com.bytecode.opencsv.CSVParser
-
Constructs CSVParser using a comma for the separator.
- CSVParser(char) - Constructor for class au.com.bytecode.opencsv.CSVParser
-
Constructs CSVParser with supplied separator.
- CSVParser(char, char) - Constructor for class au.com.bytecode.opencsv.CSVParser
-
Constructs CSVParser with supplied separator and quote char.
- CSVParser(char, char, char) - Constructor for class au.com.bytecode.opencsv.CSVParser
-
Constructs CSVReader with supplied separator and quote char.
- CSVParser(char, char, char, boolean) - Constructor for class au.com.bytecode.opencsv.CSVParser
-
Constructs CSVParser with supplied separator and quote char.
- CSVParser(char, char, char, boolean, boolean) - Constructor for class au.com.bytecode.opencsv.CSVParser
-
Constructs CSVParser with supplied separator and quote char.
- CSVParser(char, char, char, boolean, boolean, boolean) - Constructor for class au.com.bytecode.opencsv.CSVParser
-
Constructs CSVParser with supplied separator and quote char.
- CSVParserBuilder - Class in au.com.bytecode.opencsv
-
Builder for creating a CSVParser.
- CSVParserBuilder() - Constructor for class au.com.bytecode.opencsv.CSVParserBuilder
-
- CSVReader - Class in au.com.bytecode.opencsv
-
A very simple CSV reader released under a commercial-friendly license.
- CSVReader(Reader) - Constructor for class au.com.bytecode.opencsv.CSVReader
-
Constructs CSVReader using a comma for the separator.
- CSVReader(Reader, char) - Constructor for class au.com.bytecode.opencsv.CSVReader
-
Constructs CSVReader with supplied separator.
- CSVReader(Reader, char, char) - Constructor for class au.com.bytecode.opencsv.CSVReader
-
Constructs CSVReader with supplied separator and quote char.
- CSVReader(Reader, char, char, boolean) - Constructor for class au.com.bytecode.opencsv.CSVReader
-
Constructs CSVReader with supplied separator, quote char and quote handling
behavior.
- CSVReader(Reader, char, char, char) - Constructor for class au.com.bytecode.opencsv.CSVReader
-
Constructs CSVReader with supplied separator and quote char.
- CSVReader(Reader, char, char, int) - Constructor for class au.com.bytecode.opencsv.CSVReader
-
Constructs CSVReader with supplied separator and quote char.
- CSVReader(Reader, char, char, char, int) - Constructor for class au.com.bytecode.opencsv.CSVReader
-
Constructs CSVReader with supplied separator and quote char.
- CSVReader(Reader, char, char, char, int, boolean) - Constructor for class au.com.bytecode.opencsv.CSVReader
-
Constructs CSVReader with supplied separator and quote char.
- CSVReader(Reader, char, char, char, int, boolean, boolean) - Constructor for class au.com.bytecode.opencsv.CSVReader
-
Constructs CSVReader with supplied separator and quote char.
- CSVReader(Reader, char, char, char, int, boolean, boolean, boolean) - Constructor for class au.com.bytecode.opencsv.CSVReader
-
Constructs CSVReader with supplied separator and quote char.
- CSVReader(Reader, int, CSVParser) - Constructor for class au.com.bytecode.opencsv.CSVReader
-
Constructs CSVReader with supplied separator and quote char.
- CSVReaderBuilder - Class in au.com.bytecode.opencsv
-
Builder for creating a CSVReader.
- CsvToBean<T> - Class in au.com.bytecode.opencsv.bean
-
- CsvToBean() - Constructor for class au.com.bytecode.opencsv.bean.CsvToBean
-
- CSVWriter - Class in au.com.bytecode.opencsv
-
A very simple CSV writer released under a commercial-friendly license.
- CSVWriter(Writer) - Constructor for class au.com.bytecode.opencsv.CSVWriter
-
Constructs CSVWriter using a comma for the separator.
- CSVWriter(Writer, char) - Constructor for class au.com.bytecode.opencsv.CSVWriter
-
Constructs CSVWriter with supplied separator.
- CSVWriter(Writer, char, char) - Constructor for class au.com.bytecode.opencsv.CSVWriter
-
Constructs CSVWriter with supplied separator and quote char.
- CSVWriter(Writer, char, char, char) - Constructor for class au.com.bytecode.opencsv.CSVWriter
-
Constructs CSVWriter with supplied separator and quote char.
- CSVWriter(Writer, char, char, String) - Constructor for class au.com.bytecode.opencsv.CSVWriter
-
Constructs CSVWriter with supplied separator and quote char.
- CSVWriter(Writer, char, char, char, String) - Constructor for class au.com.bytecode.opencsv.CSVWriter
-
Constructs CSVWriter with supplied separator, quote char, escape char and line ending.


Seattle Bad Date List
Home
View Reports
Make A Report
Resources
Neighborhood:
Place:
Incident:
Contacted:
Gender:
Ethnicity:
Hair Color:
Hair Style:
Date:
Incident Details:
Name:
Car:
Phone:
Email:


Implementation of the family of generalised age-period-cohort stochastic mortality models. This family of models encompasses many models proposed in the actuarial and demographic literature including the Lee-Carter (1992) <doi:10.2307/2290201> and the Cairns-Blake-Dowd (2006) <doi:10.1111/j.1539-6975.2006.00195.x> models. It includes functions for fitting mortality models, analysing their goodness-of-fit and performing mortality projections and simulations.
| Version: | 0.4.1 |
| Depends: | R (≥ 3.2.0), gnm (≥ 1.0), forecast (≥ 6.1) |
| Imports: | MASS, rootSolve (≥ <IP_ADDRESS>), fanplot (≥ 3.4), reshape2 (≥ 1.4.1), fields (≥ 8.2), RColorBrewer |
| Suggests: | demography, knitr, xtable, MTS |
| Published: | 2018-04-13 |
| Author: | Andres Villegas, Pietro Millossovich, Vladimir Kaishev |
| Maintainer: | Andres Villegas <andresmauriciovillegas at gmail.com> |
| BugReports: | http://github.com/amvillegas/StMoMo/issues |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| URL: | http://github.com/amvillegas/StMoMo |
| NeedsCompilation: | no |
| Citation: | StMoMo citation info |
| Materials: | README NEWS |
| CRAN checks: | StMoMo results |
| Reference manual: | StMoMo.pdf |
| Vignettes: |
StMoMo: An R Package for Stochastic Mortality Modelling |
| Package source: | StMoMo_0.4.1.tar.gz |
| Windows binaries: | r-devel: StMoMo_0.4.1.zip, r-release: StMoMo_0.4.1.zip, r-oldrel: StMoMo_0.4.1.zip |
| OS X binaries: | r-release: StMoMo_0.4.1.tgz, r-oldrel: StMoMo_0.4.1.tgz |
| Old sources: | StMoMo archive |
Please use the canonical form https://CRAN.R-project.org/package=StMoMo to link to this page.


For reasons I might explain in another post, I was reading about Bézier curves on wikipedia the other day. Especially the paragraph on “Constructing Bézier curves” made me understand intuitively how these curves are constructed. I wondered if clojure
could help me easily visualise some of these curves so I fired up a REPL (Read-Eval-Print-Loop) to investigate.
I assume you have a working leiningen setup with the lein-try plugin installed.
clojure
right away from your shellLet’s first start a repl, and specify the library we want to try:
lein try incanter "1.5.7"
Incanter is a clojure
-based, R-like platform for statistical computing and graphics. We’ll use it to visualise the Bézier curves.
Since the repl is already fired up, let’s immediately require the dependencies we’ll need:
(require '[incanter.core :as incanter])
(require '[incanter.charts :as charts])
Nothing fancy going on here. Simply ‘import’ statements the clojure
way.
I decided to hand-roll my own pow
function, because we’ll need it later in the creation of bézier curves:
(defn pow [base exponent]
(reduce *' (repeat exponent base)))
This function basically says:
pow
base
and exponent
be its argumentsrepeat
the base
exponent
timesreduce
that result with the *'
multiply function;; so:
(pow 2 3)
;; will lead to
(reduce *' [2 2 2])
;; which results in
8
I’m using the *'
multiply function instead of the normal *
multiply function, because according to the docs *'
supports arbitrary precision. You can see for yourself by typing (doc *')
in your repl, or study the code by typing (source *')
in your repl.
Bézier functions work with control points. The minimum number of control points is 2 and Bézier curves with 2 control points are straight lines (although you can also create straight lines with more than 2 control points).
For the moment I only need Bézier curves with 3 control points: a start point, an end point and one point controlling the curve of the line between start and end.
Quoting the Wikipedia page: “A quadratic Bézier curve is the path traced by the function B(t), given points P0, P1, and P2”:
So given 3 points (P0, P1 and P2) I should be able to describe the curve with this math function. Conceptually a pen is drawing the curve by starting on P0 on moment t = 0
and following the curve described by this formula and the position of the 3 points until it hits the end point at t = 1
. The only thing this resulting B(t)
function needs is the moment t
and it will calculate the X or Y coördinate at that particular moment.
Let’s convert the math function to clojure
:
(defn bezier-3 [P0 P1 P2]
(fn [t]
(+
(* (pow (- 1 t) 2) P0)
(* 2 (- 1 t) t P1)
(* (pow t 2) P2))))
As you can see, you’ll have to translate the infix notation to clojure
’s prefix notation. The advantage is there are no precedence rules to remember anymore. These are all just lists where the first element of the list is interpreted as a function to call and the brackets are used to put them into context. (If you can’t live with that: you can also use infix notation in clojure. For instance incanter can also be fed with infix notation. However, you’ll lose the power of the 𝝺)
This function basically states:
bezier-3
P0
, P1
and P2
This anonymous function:
t
as an argumentP0
, P1
and P2
already ‘injected’Excellent. Let’s try it:
(def test-b3 (bezier-3 1 1 0))
(test-b3 0)
=> 1
Here I’m defining a variable test-b3
which holds the anonymous function returned by the bezier-3
function call. The 3 points are either all x or all y coordinates of the points P0, P1 and P2.
With the (test-b3 0)
function call I’m calling the anonymous function with a t
value of 0
. This nicely returns an answer representing the x coordinates at moment t
if you provided the (P0, P1 and P2) x coordinates when calling the bezier-3
function or the y coordinate at moment t
if you provided the (P0, P1 and P2) y coordinates.
Since this test didn’t blow the stack or throw a NullPointerException or anything, let’s map this function over a range of t
’s [0 0.25 0.5 0.75 1]
:
(map test-b3 [0 0.25 0.5 0.75 1])
=> (1 0.9375 0.75 0.4375 0)
Instead of typing these t
’s to map
over, we could also use the range
function:
(range 0 10)
=> (0 1 2 3 4 5 6 7 8 9)
(range 0 10 2)
=> (0 2 4 6 8)
As you can see, range
allows you to specify a start (inclusive), an end (exclusive) and a step size (optional).
(map test-b3 (range 0 1 0.1))
=> (1 0.9900000000000001 0.9600000000000002 0.9099999999999999 0.84 0.75 0.64 0.51 0.3600000000000001 0.19000000000000014 2.220446049250313E-16)
Although a certain pattern is already visible in these numbers, now might be the right time to start visualising the curves.
Let’s be brave and go right to the essence:
(defn view-bezier-plot [[x1 y1] [x2 y2] [x3 y3] plot-title]
(let [b3x (bezier-3 x1 x2 x3)
xs (map b3x (range 0 1.0 0.01))
b3y (bezier-3 y1 y2 y3)
ys (map b3y (range 0 1.0 0.01))
dataset (incanter/conj-cols xs ys)
xy-plot (charts/xy-plot "col-0" "col-1" :data dataset :points true :title plot-title)]
(incanter/view xy-plot)))
The let
form is clojure
’s way of defining local variables. So b3x
, xs
, b3y
, etc. can be seen as local variables with their values specified in the functions directly after their declaration.
This function basically states:
view-bezier-plot
let
it have some local variables:
b3x
takes all x coordinates of the 3 pointsb3y
takes the y coordinatesxs
are the all x values resulting from applying the b3x
anonymous function with all the range valuesys
are the all y values resulting from applying the b3y
anonymous function with all the range valuesdataset
is an incanter dataset where 2 columns are ‘brought together’, or in lisp terms conj
[oined]. By default, these columns are called col-0
, col-1
, … , col-n
dataset
provides the data, the x-axis - and y-axis values are found in columns col-0
and col-1
respectively and viewing the points is set to true
xy-plot
(view-bezier-plot [0 0] [1 0] [1 1] "increasing ascending")
(view-bezier-plot [0 0] [0 -1] [1 1] "swoosh")
(view-bezier-plot [-2 4] [0 -4] [2 4] "y = x^2 ?")
(view-bezier-plot [-1 0] [0 0] [1 0] "my pulse after a useless meeting")
The generated charts will be opened in external java windows. Sometimes they stay hidden behind other windows on your screen, so you might have to bring your java windows to the foreground in order to see them.
In a relatively short repl session I was able to get a better understanding of (3 point) Bézier curves. Although the blogpost is long, not much code or time was needed to create the curves:
(require '[incanter.core :as incanter])
(require '[incanter.charts :as charts])
(defn pow [base exponent]
(reduce *' (repeat exponent base)))
(defn bezier-3 [P0 P1 P2]
(fn [t]
(+
(* (pow (- 1 t) 2) P0)
(* 2 (- 1 t) t P1)
(* (pow t 2) P2))))
(defn view-bezier-plot [[x1 y1] [x2 y2] [x3 y3] plot-title]
(let [b3x (bezier-3 x1 x2 x3)
xs (map b3x (range 0 1.0 0.01))
b3y (bezier-3 y1 y2 y3)
ys (map b3y (range 0 1.0 0.01))
dataset (incanter/conj-cols xs ys)
xy-plot (charts/xy-plot "col-0" "col-1" :data dataset :points true :title plot-title)]
(incanter/view xy-plot)))
Actually, the hand-rolled pow
function isn’t really needed. I could have used clojure
’s java interop: (Math/pow 2 3)
. In that case I would have been calling the pow
method directly on java’s Math
class. I weighted the option of hand-rolling the pow
function, showing some functional code and explaining how functions are defined in clojure
versus explaining java interop.
Explaining in text what the code does took me 5 times as long as writing the code itself. That’s a great thing about lisps in general and clojure
in particular: no fluff, just stuff!
Thanks Niek for posting my guest blog. Please share your comments, suggestions and thoughts about this blog with me on twitter.com/mmz_. Thanks for reading and Happy Coding!
clojure
itself. With proper specs, you’ll get even more than generative testing; you’ll get validation, better error reporting, destructuring and type- and range checking in one go - without losing the power & pleasure of a dynamic programming language!


HEAD ======= >>>>>>> origin/master
Test, which is a new approach to have all solutions astrology under one roof.
Test, which is a new approach to have all solutions astrology under one roof.
Test, which is a new approach to have all solutions astrology under one roof.
Test, which is a new approach to have all solutions astrology under one roof.
Test, which is a new approach to have all solutions astrology under one roof.
Test, which is a new approach to have all solutions astrology under one roof.
Test, which is a new approach to have all solutions astrology under one roof.
Test which is a new approach to have all solutions
11:01 AM | June 9Test which is a new approach to have all solutions
11:01 AM | June 9Test, which is a new approach to have
11:01 AM | YesterdayApollo University, Delhi, India Test
11:01 AM | TodayWe work directly with our designers and suppliers, and sell direct to you, which means quality, exclusive products, at a price anyone can afford.
11:01 AM | Today


Dear {firstname lastname},
Thank you for being a Linkedin premium subscriber.
We recently attempted to charge your subscription fee to the credit card on file, however we were unable to do so because the card issuer declined the transaction.
To avoid losing access to premium account features, please click the button bellow to update your credit card information or enter a new credit card.
Please note that your subscription will expire in 30 days if you do not update this information and you may be subject to declined account.
If you have any questions about your account, please contact Linkedin's Customer Service.
Thank you for using Linkedin!
-The Linkedin Team
© 2019 LinkedIn Ireland Limited. LinkedIn, the LinkedIn logo, and InMail are registered trademarks of LinkedIn Corporation in the United States and/or other countries. All rights reserved.
This email was intended for {firstname} {lastname}. Learn why we included this.
If you need assistance or have questions, please contact LinkedIn Customer Service.
LinkedIn is a registered business name of LinkedIn Ireland Limited. Registered in Ireland as a private limited company, Company Number 477441 Registered Office: Wilton Plaza, Wilton Place, Dublin 2, Ireland


| Jacob | Jacob | Harry |
| Reece | Rhys | Charlie |
| Thomas | George |
| Oscar | James |
| William | Rhys |
| Registered users | ||
| Jhon | Wesker | Lilly |
| Sarah | Justin | Tim |
| Registered users | ||
| Jhon | Wesker | Lilly |
| Sarah | Justin | Tim |
| Registered users | ||
| Jhon | Wesker | Lilly |
| Sarah | Justin | Tim |
| Registered users | |
| Jhon | Wesker |
| Lilly | Tim |
| Sarah | Justin |
| Registered users | Evelyn | Lilly | ||
| Jhon | Wesker | William | James | Harper |
| Tim | Ella | Avery | ||
| Sarah | Justin | Jackson | ||
| Sarah | Joe |


About
Work
Contact
Hey! I'm Raj
- a developer
Welcome to my portfolio
Some of my work
Tribute Page
Survey Form
Product Landing Page
Technical Documentation Page
Connect with me on
GitHub
Twitter
Linkedin
Mail Me


Dawn of Dominion is similar in design to Battleship. Two players place units down on their side of the game board at the beginning of the game.
The objective of the game is to destroy all of the other player's units.
Key Mechanics
Units have their own health bars and ATK/DEF stats
Attacks made onto units will lower their health points until they reach zero, at which point they are destoyed.
Enemy units are hidden until you land your first attack onto them, after which they are exposed


--- layout: post status: publish published: true title: G*Power 3 - Phần mềm tính cỡ mẫu và năng lực author: display_name: Admin login: admin email<EMAIL_ADDRESS>url: '' author_login: admin author_email<EMAIL_ADDRESS>wordpress_id: 896 wordpress_url: http://www.ytecongcong.com/?post_type=topic&p=896 date: '2013-03-05 07:37:33 +0100' date_gmt: '2013-03-05 00:37:33 +0100' categories: [] tags: [] comments: [] ---
G*Power 3 is a major extension of, and improvement over, G*Power 2. It covers statistical power analyses for many different statistical tests of the
G*Power 3 offers five different types of statistical power analysis:
G*Power 3 provides improved effect size calculators and graphics options. It supports both a distribution-based and a design-based input mode.
G*Power 3 is available for Mac OS X 10.4 and Windows XP/Vista. G*Power 3 is free.
Download G*Power
... 3.1.6 for Windows XP, Vista, or 7 (32 and 64 bit) (10 MB) [download]
Windows users:
Please make sure to choose "unpack with folders" in your unzip tool.
... 3.1.6 for Mac OS X 10.6 to 10.8 (2 MB) [download]
Mac OS X 10.4 or 10.5 users:
Please note that Apple’s new Xcode (which we used for G*Power 3.1.4 and up) only supports Mac OS X 10.6 or later. Thus, if you have Mac OS X 10.4 or 10.5, you need to use G*Power 3.1.3 (2 MB) [download].
Macintosh Power-PC users:
Please note that the development of the Power-PC version of G*Power has been discontinued. However, Power-PC users can still download G*Power 3.1.3 for Power-PC. [download PPC version]


Main Page
Namespaces
Classes
Files
Related Pages
Examples
Namespace List
Namespace Members
boost
::
logging
::
scenario
::
usage
::
logger_
boost::logging::scenario::usage::logger_ Namespace Reference
Logger usage settings :
logger_::change
and
logger_::favor
.
More...
Namespaces
namespace
change
When does the
logger
change
, that is, how
often
do you manipulate it?
namespace
favor
When
logging
, what should we favor?
namespace
gather
How do you
gather
the message?
Detailed Description
Logger usage settings :
logger_::change
and
logger_::favor
.
Copyright
John Torjo
© 2007
Have a question/ suggestion/ comment? Send me
feedback


First, you'll need to register your app on LinkedIn. Follow these steps:
-
Visit https://www.linkedin.com/secure/developer?newapp=
-
Click "Create Application".
-
Fill the form.
-
Get Client ID and Client Secret.
-
Set default permissions : r_emailaddress and r_basicprofile.
-
Add Authorized Redirect URLs: {{siteUrl}}/_oauth/linkedin?close


{% extends 'base.html' %} {% load bootstrap4 %} {% block content %}
Add one or more categories to track your overall progress in this aspect of your life.
What actions will you take to achieve your goal?


So when last we spoke, I was making noises about private methods in Objective-C - I’ll get back to the regularly scheduled nerdery and instructional coding shortly, but I wanted to post a little bit about things that have happened over the last few months.
For the better part of this year, I’ve been dealing with some completely non-double-rainbow health problems (oh, I went there). It’s not over yet, but I’m on the mend and hopefully this is the end of it for a while. This has taken a large toll on my ability to work on my own apps, while continuing to pay the bills by working on other people’s apps - this is why Hyperspaces 1.1 isn’t out yet. I’m on Doctor’s orders to take it slowly for a while - I spent this morning sitting in the sun for the first time in what seems like years. Why didn’t I make more time for this before? Sunshine most definitely is double rainbow!
It’s necessary for me to thank my little family now, with the most awesome photo of Leah and Scout ever:
Excitingly, I recently came into possession of a fairly recent model Mazda 6 which I love to bits. Not because it’s a nice car to drive (it is), or because I think it’s a handsome devil (yes, again) but because for the last 13 years I have struggled with the inability to put anything of real size into my car. The Lancer has been a noble steed, but it was well past time for me to upgrade to a so-called “grown up” car:
It was dutifully christened with a trip to Ikea where Leah and I struggled to fill even the remotest part of the space in the back. Despite the loss of sanity from actually entering Ikea on a weekend, I grinned for most of the trip home, and have washed the new car far too much since we bought it.
Next week, Web Directions South 2010 is on and I’m going to be there as a free agent for the first time. I’ve armed myself with the essential dump’n’burn personal marketing tool - some very stylish new business cards put together by none other than my own Leah:
I’m super excited to see what Maxine and John have in store for us this year - the calibre of last year’s sessions was impressive, and I met some fantastic people. If you’re going to be there and want to say ‘Hi!’ or have a drink, message me on the Twitters.


Overview
This package offers a set of nodes to establish and manage a multimaster network. This requires no or minimal configuration. The changes are automatically detected and synchronized.
Packages:
-
Master Discovery -- discovery using multicast or zeroconf
Master Synchronization -- Synchronize local ROS master to remote ROS masters
Node Manager -- A GUI to manage the configuration on local and remote ROS masters
Node Manager Daemon -- Helper node allows an easy launch file management and (auto)start of {remote}nodes
- The master_discovery node connects to the ROS-Master, gets changes by polling (1.) and publish the changes (multicast or/and unicast) over the network (2.). The received changes of the remote ROS-Master are published to the local ROS topics (3.).
- The master_sync node connects to the discovered master_discovery nodes (4.), requests the actual ROS state and registers the remote topics/service by local ROS master (5.).
- The node_manager simplifies launching and managing the ROS multi-master system. It also offers options for managing nodes, topics, services, parameters and launch files through node_manager_daemon. Can also be used in a single ROS master system!


This one is emphasized with *
. This one is strongly emphasized with __
.
This one has its delimiter e*s*c*a*p*e*d as content. This is a free *
asterisk and a free _ underscore. This is a strong one.
Use Google and Yahoo for search and read News for Nerds and Hacker News. Watch videos at Youtube. News for Nerds.
Unknown ref: [bla][foo]
An XML declaration looks like this: <?xml version="1.0" encoding="utf-8"?>
.
The printf()
function is used for printing to the screen. Show a single
`
.
Here comes an inline graphic . Here comes a reference .
Here is a copyright symbol: ©. AT&T operator talk. 4 < 5 or 5 > 4.
Write to<EMAIL_ADDRESS>and visit http://www.example.com. This is an auto-link with ampersand: http://example.com/?foo=1&bar=2.
Here is some text in bold. An image tag . And here comes a table:
| Column A | Column B |
Here comes some text. Here comes some text. Here comes some text. Here comes some text. Here comes some text. Here comes some text. Here comes some text.
Here is an inline email link with mailto<EMAIL_ADDRESS>And here is an inline email link without mailto<EMAIL_ADDRESS>This is not a valid email link <something@> neither is this <@example.com>.


I'm currently a developer at Galavantier. Previously, I was slinging code freelancing for various start ups and established businesses across the country. Before creating digital products for a living, I built trails on the Oregon Coast as a Park Ranger.
Some buzzwords I like playing with are nodejs, react / redux, and functional programming. I'm always looking for an excuse to play with new toys.


---
layout: splash
author_profile: false
header:
overlay_color: "#3c91f4"
overlay_filter: "0.2"
overlay_image: /assets/images/background-map.png
actions:
- label: "Try Columbus BOT"
url: "/about/"
excerpt: "Create Personalised Travel Itineraries."
---