text:
high water level alarm
Understanding Your Septic System: What Is a Septic Tank Alarm?
For homeowners with a septic system, familiarity with its components is key to preventing problems. One such component is the septic tank alarm—a device designed to alert you to potential issues within your system.
Let's delve into what a septic tank alarm is, how it works, and why it's an essential aspect of maintaining a healthy septic system.
The Purpose of a Septic Tank Alarm
A septic tank alarm is part of a modern septic system's monitoring process. It's designed to sound an alert if the water level in the pump tank rises above or falls below normal levels, signaling a potential malfunction or overflow risk.
How Septic Tank Alarms Work
- Water Level Monitoring: The alarm is connected to a float switch inside the pump chamber—the part of the septic system that pumps effluent to the drain field. If the float switch detects abnormal water levels, it triggers the alarm.
- Alarm Activation: Upon activation, the alarm typically emits a loud auditory signal and may also have a visual indicator, such as a flashing light, to warn the homeowner.
- Types of Alarms: Alarms can be wired or wireless and may even connect to home automation systems for remote monitoring.
Responding to a Septic Tank Alarm
- Immediate Action: If the alarm sounds, reduce water usage immediately and inspect the septic system or call a professional. Continued water use can lead to a backup or overflow.
- Troubleshooting: Common issues include pump failures, clogged filters, or problems with the float switch itself.
Regular Maintenance and Testing
- Scheduled Inspections: Regular inspections by a septic professional can ensure your alarm system functions properly.
- Self-Testing: Homeowners can test alarms by lifting the float switch manually to see if the alarm activates.
A septic tank alarm is an essential component of your septic system's health, providing a warning to prevent overflows and ensuring the system functions effectively. Regular testing and maintenance can help catch issues before they become serious problems.


text:
Wabi Sabi is the Japanese philosophy of finding beauty in imperfection and profundity in nature. It helps us to accept the natural cycle of growth and death. Wabi Sabi celebrates the cracks, crevices and all the other marks that time, weather, and loving use leave behind.
During this workshop you will explore the tactile world of ceramic hand-building inspired by the principles of Wabi Sabi. There will be a focus on process rather than product and although techniques will be explicitly taught, this is a place of discovery and intuitive exploration.
This 1.5 hour session will include:
- All required materials
- Direction and instruction exploring the process of joining clay and unique techniques for combining two or more colours of clay
- Discussion around philosophy and the practice of Wabi Sabi in your life
- Encouragement and facilitation of mindfulness through making • Sharing and reflecting (optional) about process and insights along the way.
This workshop is open to all adults, no art experience necessary.
Your pots will be fired and ready for pick up two weeks following the workshop.
To SIGN UP _EMAIL_ or come by the store, Tues-Sat, 12pm-430pm.
This workshop will be led by Lauren Howard-Tripp from NamARTste
Updated Highway 4 Road Closure Schedule at Kennedy Hill

source: m-a-p/FineFineWeb


Show by Label
Monday, June 13, 2016
Simple Method to Log Charging and Discharging of Li-Ion and Lipo cells
For my Raspberry Pi automatic power supply design with a UPS function (see another post), I wanted to learn more about the charging and discharging characteristics of Li-Ion and Lipo cells.
In several of my supply designs, I use the Adafruit Powerboost 1000c circuit. It uses an MCP73871 charge controller, that is set to deliver up to 1 Amp of charge current. It does not use a Thermistor to monitor the cell temperature, and I wanted to use a variation of cells.
The cells I tested were a TR 18650 with 2400mAh, a TR 14500 with 1200mAh, both are Li-Ion cells, and one small Lipo cell, model 043040 with 500mAh.
Before I modified the Powerboost circuit to limit the charge current to 500mA or a little less, I wanted to profile the charge/discharge characteristics of these three cells.
I used a RPi Model 3 powered by my automatic UPS supply, and I used another RPi, a Model (1) B, together with an A-2-D convertor circuit to monitor the current of the cells powering the Model 3.
The monitoring circuit is based on yet another post, and modified to measure the cell voltage together with the charging or discharging currents. Here is the circuit:
I used the following Python script to show the progress on the console and log the results into a file that I could upload to Excel to graph curves.
# Name: MCP3002 Measure 5V
# Purpose: Measure the voltage and current of a Li-Ion cell
# Author: paulv
# Created: 22-10-2015, Modified 10-06-2016
# Copyright: (c) paulv 2015, 2016
# Licence:
import spidev # import the SPI driver
from time import sleep, time, strftime
import subprocess
import sys
import os
# ==== constants
__author__ = 'Paul W. Versteeg'
VERSION = "1.0"
DEBUG = False
vref = 5.0 * 1000 # V-Ref in mV (Vref = VDD for the MCP3002)
resolution = 2**10 # for 10 bits of resolution
cal_CH0 = 0 # calibration in mV
cal_CH1 = 0
interval = 10 # interval between measurements in seconds
sample_interval = 2 # interval between samples in seconds
log_interval = interval - (2 * sample_interval) # log interval in seconds
# MCP3002 Control bits
# 7 6 5 4 3 2 1 0
# X 1 S O M X X X
# bit 6 = Start Bit
# S = SGL or \DIFF SGL = 1 = Single Channel, 0 = \DIFF is pseudo differential
# O = ODD or \SIGN
# in Single Ended Mode (SGL = 1)
# ODD 0 = CH0 = + GND = - (read CH0)
# 1 = CH1 = + GND = - (read CH1)
# in Pseudo Diff Mode (SGL = 0)
# ODD 0 = CH0 = IN+, CH1 = IN-
# 1 = CH0 = IN-, CH1 = IN+
# M = MSBF
# MSBF = 1 = LSB first format
# 0 = MSB first format
# SPI setup
spi_max_speed = _PHONE_ # 1 MHz (1.2MHz = max for 2V7 ref/supply)
# reason is that the ADC input cap needs time to get charged to the input level.
CE = 0 # CE0 | CE1, selection of the SPI device
spi = spidev.SpiDev(),CE) # Open up the communication to the device
spi.max_speed_hz = spi_max_speed
def read_mcp3002(channel):
 Function to read the data channels from an MCP300 A-2-D converter
 Control & Data Registers:
 See datasheet for more information
 send 8 bit control :
 X, Strt, SGL|!DIFF, ODD|!SIGN, MSBF, X, X, X
 0, 1, 1=SGL, 0 = CH0 , 0 , 0, 0, 0 = 96d
 0, 1, 1=SGL, 1 = CH1 , 0 , 0, 0, 0 = 112d
 receive 10 bit data :
 receive data range: 000..3FF (10 bits)
 MSB first: (set control bit in cmd for LSB first)
 spidata[0] = X, X, X, X, X, 0, B9, B8
 spidata[1] = B7, B6, B5, B4, B3, B2, B1, B0
 LSB: mask all but B9 & B8, shift to left and add to the MSB
 if channel == 0:
 cmd = 0b01100000
 cmd = 0b01110000
 if DEBUG : print"cmd = ", cmd
 spi_data = spi.xfer2([cmd,0]) # send hi_byte, low_byte; receive hi_byte, low_byte
 if DEBUG : print("Raw ADC (hi-byte, low_byte) = {}".format(spi_data))
 adc_data = ((spi_data[0] & 3) << 8) + spi_data[1]
 return adc_data
def write_log(msg):
 Function to create a log of the readings with a time stamp.
 The fiels are seperated by a tab, so the file can be easily imported into
 an Excel spreadsheet to graph the results.
 The log results are appended, so the log file should be deleted for every
 dstamp = strftime("%d-%m-%Y")
 tstamp = strftime("%H:%M:%S")
 # open the log file and append results
 with open("/home/pi/lipo.log", "a") as fout:
 # Tabs are used to seperate the fields so technically it's not a real CSV format.
 # MS-Excel reads it anyway.
 fout.write (str(dstamp)+"\t"+(tstamp)+"\t"+str(msg)+"\n")
 except Exception as e:
def main():
 # create and setup the log file
 if not os.path.isfile('/home/pi/lipo.log'):
 # create the file and set the access mode
 ['touch /home/pi/lipo.log'], shell=True, \
 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 ['chmod goa+w /home/pi/lipo.log'], shell=True, \
 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 write_log("\n===== Starting Log =====")
 print("Voltage and Current log from Li-Ion/Lipo cell")
 print("SPI max sampling speed = {}".format(spi_max_speed))
 print("V-Ref = {0} mV, Resolution = {1} bit".format(vref, resolution))
 print("SPI device = {0}".format(CE))
 while True:
 # average three readings to get a more stable result
 Vdata_1 = read_mcp3002(0) # get CH0 input (Volt)
 Cdata_1 = read_mcp3002(1) # get CH1 input (Current)
 Vdata_2 = read_mcp3002(0) # get CH0 input
 Cdata_2 = read_mcp3002(1) # get CH1 input
 Vdata_3 = read_mcp3002(0) # get CH0 input
 Cdata_3 = read_mcp3002(1) # get CH1 input
 Vdata = (Vdata_1+Vdata_2+Vdata_3)/3
 if DEBUG : print("V_Data (bin) {0:010b}".format(Vdata))
 v_result = round((((Vdata * vref) / resolution)+ cal_CH0),2)
 if DEBUG : print ("V_result {} mV").format(v_result)
 voltage = round(v_result/1000.0,2) # convert to mV with 2 decimals
 print("Voltage : {} V".format(voltage))
 Cdata = (Cdata_1+Cdata_2+Cdata_3)/3
 if DEBUG : print("C_Data (bin) {0:010b}".format(Cdata))
 Vcurrent = round((((Cdata * vref) / resolution)+ cal_CH1),2)
 if DEBUG : print ("Vcurrent : {} mV").format(Vcurrent)
 current = int(Vcurrent/5) # convert to mA (gain 50, R = 0.1 Ohm)
 print("Current : {} mA".format(current))
 if DEBUG : print("-----------------")


text:
Understanding the function learned by a neural network is crucial in many domains, e.g. to detect a model's adaption to concept drift in online learning. Existing global surrogate model approaches generate explanations by maximizing the fidelity between the neural network and a surrogate model on a sample-basis, which can be very time-consuming. Therefore, these approaches are not applicable in scenarios where timely or frequent explanations are required.
In this work, we introduce a real-time approach for generating a symbolic representation of the function learned by a neural network. Our idea is to generate explanations via another neural network (called Interpretation Network), which maps network parameters to a symbolic representation of the network function. This way, the complete information about the network function can be utilized for generating explanations, without access to training data and without resorting to sampling.
We show that the training of an Interpretation Network for a family of functions (e.g. a mathematical function or decision tree) can be performed up-front, and subsequent generation of an explanation only requires to query the Interpretation Network once, which is computationally very efficient and does not require training data. To the best of our knowledge, this is the first approach that attempts to learn the mapping from neural networks to symbolic representations.


text:
Dynamic Scheduling for Autonomous Robotics
MetadataShow full item record
This project report describes a hybrid genetic algorithm that works as a schedule generator for a complex robotic harvesting task. The task is set to a dynamic environment with a robotic opponent, making responsiveness of the planning algorithm particularly important. To solve this task, many previous scheduling algorithms were studied. Genetic algorithms have successfully been used in many dynamic scheduling tasks, due to their ability to incrementally adapt and optimize solutions when changes are made to the environment. Many of the previous approaches also used a separate heuristic to quicly adapt solutions to the new environment, making the algorithm more responsive. In addition, the study of previous work revealed the importance of population diversity when making a responsive genetic algorithm. Implementation was based on a genetic algorithm made as the author's fifth year specialization project for solving a static version of the same task. This algorithm was hybridized with a powerful local search technique that proved essential in generating good solutions for the complex harvesting task. When extending the algorithm to also work in a dynamically changing environment, several adaptations and extensions needed to be made, to make it more responsive. The extensions and adaptations include a fast-response heuristic for immediate adaptation to environmental changes, a decrease in genotype size to speed up local searches and a contingency planning module intending to solve problems before they arise. Experiments proved that the implemented dynamic planner successfully adapted its plans to a changing environment, clearly showing improvements compared to running a static plan. Further experiments also proved that the dynamic planner was able to deal with erroneous time estimates in its simulator module in a good way. Experiments on contingency planning gave no clear results, but indicated that using computational resources for planning ahead may be a good choice, if the contingency to plan for is carefully selected. As no unequivocal results were obtained, further studies of combining genetic algorithms and contingency planning may be an interesting task for future efforts.


Libraries
First, we need to import the following libraries:
import seaborn as sns
import matplotlib.pyplot as plt
Dataset
We'll use the iris dataset that is available using the load_dataset() function from seaborn
df = sns.load_dataset("iris")
Flipped histogram
Flipping a histogram with seaborn is easy: you just have to specify that you want to display it on the y axis.

sns.set_theme(style="darkgrid")
# Create the plot
sns.histplot(data=df, y="sepal_length")
plt.show()
Flipped histogram with density estimation
If you want to add the density estimation, you have to add kde=True in the histplot function

sns.set_theme(style="darkgrid")
# Create the plot
sns.histplot(data=df, y="sepal_length", kde=True)
plt.show()
Going further
This post explains how to create a flipped histogram with seaborn.
You might be interested in creating histogram with multiple groups or controlling the bins.
Contact & Edit
👋 This document is a work by Yan Holtz. You can contribute on github, send me a feedback on twitter or subscribe to the newsletter to know when new examples are published! 🔥
This page is just a jupyter notebook, you can edit it here. Please help me making this website better 🙏!


text:
Modelling acidosis and the cell cycle in multicellular tumour spheroids.
Tindall MJ., Dyson L., Smallbone K., Maini PK.
A partial differential equation model is developed to understand the effect that nutrient and acidosis have on the distribution of proliferating and quiescent cells and dead cell material (necrotic and apoptotic) within a multicellular tumour spheroid. The rates of cell quiescence and necrosis depend upon the local nutrient and acid concentrations and quiescent cells are assumed to consume less nutrient and produce less acid than proliferating cells. Analysis of the differences in nutrient consumption and acid production by quiescent and proliferating cells shows low nutrient levels do not necessarily lead to increased acid concentration via anaerobic metabolism. Rather, it is the balance between proliferating and quiescent cells within the tumour which is important; decreased nutrient levels lead to more quiescent cells, which produce less acid than proliferating cells. We examine this effect via a sensitivity analysis which also includes a quantification of the effect that nutrient and acid concentrations have on the rates of cell quiescence and necrosis.


Pyramidal Inversion
A compound that has the general structural formula 1 is expected to exist as a pair of enantiomers.
For example, ethylmethylamine (2a) is expected to exist as a pair of enantiomers.
2a and 2b, however, have no independent existence because they rapidly interconvert. The process by which 2a and 2b interconvert is called pyramidal inversion.
Print Friendly


text: Acoustic reflectance measurement techniques have been investigated that are calibrated using pressure responses measured in one or more cylindrical tubes and viscothermal models of wall loss. Of clinical interest as a test of hearing is a single-microphone technique to measure the inherently nonlinear ear-canal reflectance at various stimulus levels. Calibration of the probe containing the sound source/receiver consists of measuring the source reflectance of the probe and the incident pressure response at each stimulus level. A single-tube technique relies on separability of the tube response into incident and reflected signals, while multi-tube techniques rely on solving an overdetermined matrix equation of responses. The matrix includes weighting factors that differ across tubes by reflectance or SPL to control for inadequate signal-to-noise ratios at isolated frequencies, and a regularized matrix inverse solution is compared to the pseudoinverse solution. The single-tube technique functions as well as the best performing multi-tube technique, and requires fewer calibration steps. However, there is an ambiguity between the tube length chosen in the tube response model and the measured phase of the source reflectance. This ambiguity is addressed by a priori knowledge of the phase response of the probe averaged across frequency.

source: openbmb/Ultra-FineWeb


close menu
Stanford Biologist Explains the Science of Cap's Strength and Hulk's Muscles
Stanford Biologist Explains the Science of Cap's Strength and Hulk's Muscles
Stanford biologist Sebastian Alvarado wants to make you an agent of S.H.I.E.L.D. — at least a part of their science division.
Working in tandem with Marvel to bring the science of its superheroes to the people in a new Times Square exhibit, Alvarado now has two videos covering his work trying to figure out how to make a regular human into a Captain America or The Incredible Hulk. For Captain Steve Rodgers, the secret is in the serum, as Alvarado explains:
Though there's no way to tell what was in that fictional injection, we have a good idea of what it did for Cap: he had his genes tweaked. For example, we know the genes responsible for the amount of oxygen that is ferried around your blood and that increase muscle mass. These were likely altered for Rodgers. And as the science of genetics advances, being able to turn these genes on and off will plausibly lead to physical enhancements that Captain America enjoys. Epigenetics then — the study of how the environment regulates and changes the expression of genes within our DNA — could get us closer to Cap.
And the "Vita-Rays" that activated all the serum's potential in Rodgers aren't far-fetched either. We are developing drug capsules that can release their contents when hit with ultraviolet light. It's not clear how this delayed reaction would enhance any super serum we come up with, but maybe that is the only way to deliver the drugs safely. Maybe.
Next up is the ion-smashed genome of the Hulk:
The Incredible Hulk is an incredible genetic anomaly. Bruce Banner got his super-powered rage when he was blasted with lethal amounts of gamma radiation. Gamma radiation is dangerous because it has enough energy to be ionizing radiation — electromagnetic radiation (like radio waves or visible light) strong enough knock electrons off of atoms and molecules. So when Banner was exposed to his fateful gamma ray burst, the ionizing radiation ripped atoms and molecules and electrons from his DNA, nearly destroying it. But somehow his body and his DNA rebuilt itself, allowing him to Hulk-out.
Alvarado speculates that what allows the Hulk to transition from Banner to the Big Green Guy also happens to be some kind of epigenetics. Because Banner can transition between the two so easily, it would seem as though certain genetic light switches are being flipped on and then off again. This process is different from something like genetic mutations, which aren't reversible.
My favorite bit of superhero science that Alvarado explains is why the Hulk is green. He muses that because the process of becoming the Hulk is so violent — muscles stretching and tearing, veins popping — the result of the transformation is a lot of cellular damage. Normally, when these damaged cells are recycled by your body, the chemical byproducts can produce a greenish color in the skin, much like how a bad bruise sometimes has a tinge of green. The Hulk is green because he is one big bruise. That would make me angry too.
Alvarado's efforts to bring superheroes closer to science is a part of the interactive Avengers-based exhibition, Marvel's Avengers S.T.A.T.I.O.N., in Times Square in New York City. He and his fellow scientists actually had a panel based entirely on Marvel superhero science at Comic-Con this year, which you can read about here.
Of course, one thing science still can't solve is how Bruce Banner's pants stay on.
IMAGE: © Marvel
 1. Titus says:
 I dont think there is a "d" in Captain Rogers' name


Answers » Categories » Language & Reference
What does GCWOK stand for?
What does GCWOK mean in texting? What's the meaning of the acronym GCWOK in online chat slang?
1 Answer
GCWOK in a text message means "Gay Couple Without Kids".
Answer this question
by Anonymous - Already have an account? Login now!
Your Name:
Your Answer:
Source(s): (optional)
Enter the text you see in the image below
What do you see?
Can't read the image? View a new one.
Your answer will appear after being approved.
Ask your own question


Powershell HTML Reports
From time to time, you will be asked to create a web report with data that can only be easily obtained by PowerShell. There are hundreds of modules out there that can do this, which is very nice. This blog isn't about those modules, but instead some tricks I have learned over the years. When it comes to custom HTML reports, these are very customized from data sources like Azure, Active Directory, even SLQlite services. If all possible I like to use the Universal dashboard. But the UD doesn't translate to emails or IIS pages very well. Let's get started with the here string.
Here-String
$HereString =@"
Information
"@
A here-string is used to create a block of text. In the example above you see the variable HereString is equal to @""@. This is very important. The @ symbol indicates the start and stops of a here-string. You can place variables inside the here-string as well. This means you can build variables outside of the here-string and plump them into the string. Here is an example of our base for the website.
$HTML = @"

<title>Employee List</title>

"@
From this template, we can add CSS coding, powershell tables, lists and much more. The next important item we need to talk about is the convertto-html commandlet.
Convertto-html
This command is the heart of creating tables out of PowerShell information. For example, you want to pull all enabled users from the employees OU and display their displaynames, samaccountnames, department, and title in order. That's a simple get-aduser command.
$users = Get-ADUser -Filter {enabled -eq $true} '
-SearchBase "OU=hospice Users,DC=Hospice,DC=Local" '
-Properties displayname,samaccountname,title,department '
| Select-Object Displayname,Samaccountname,Title,Department '
| sort-object Displayname
Now we need to convert this array of data into a useable table. This is where convertto-html comes into place. We can tell the command to create a full website just for the tabled information or we can tell it to produce a single table using the as flag and the fragment flag.
$UsersToHTML = $users | ConvertTo-Html -as Table -Fragment
Now we have a user table that we can drop into our Here-string from above. The Here-string is the last thing you will create during this custom process.
$HTML = @"

<title>Employee List</title>

$UsersToHTML

"@
This is pretty much the basics of how you would create a site of all users and their user names. You export that site using the >> command. So it would look like this:
$HTML >> <Pathtohtml>.html
Going Deeper – Employee Directory With Images
Let's go a little deeper by making an employee Directory with pictures. In this scenario, we will assume that the active directory has thumbnail photos inside of it. This Scenario is going to be based on an IIS server and everything is set up for a basic HTML page. I will as
Requirements:
 - If a property is not present in the AD account, null or blank, do not display that property.
 - All users must have a photo or a placeholder.
 - The table must be in alphbetical order by the displayname.
 - Required Properities:
 - Photo
 - Display Name
 - Username
 - Job Title
 - Department
 - Mobile Phone
 - Office Phone
 - Fax
 - Manager
The first thing we need to do is grab the data that we need from the active directory. We do that with the get-aduser command.
$users = Get-ADUser -filter {enabled -eq $true} '
-Properties thumbnailPhoto,Displayname,SamAccountName,Title,Department,MobilePhone,OfficePhone,Fax,Manager
There will be two tables that we will be working with. The first table will be two columns and however many rows we will need. The first column will contain the 128×128 active directory thumbnail photo. The second column will contain the Users information. The second column will contain a table with two columns and 8 rows. The first column will be the name of the value and the second column will be the value itself.
I can do this in two ways. I can start the first table inside the here-string or I can create the table before the here-string. I'm going to create the table before the here-string. This way I have a clear image in my head of the table that I am inputting into the here-string. Notice the UserTable is a here-string as well. So we will refer to the Main HTML here-string as the HTML string from here on out.
$UserTable = @"

"@
Now we have a basic HTML table built. From here on out, we will be creating the rows for this table. Inside each row will be the two columns. The photo column and the data column. The data column will contain the table with the employee data on it. It's time to start looping through that user's object we created a while ago. We start off with a simple foreach loop. Inside the loop the logic will go as follows:
 - Grab the photo from the thumbnail property and save it to the image repo using the username.
 - Start the new row. Inside the first column of the new row, we check to see if that photo exists. If it does, then we we create an img tag of the file, if it doesn't then we target the general image file.
 - The second column we blank out the values for each item.
 - Then we create the table.
 - Then we create if statements that creates each row in table 2. if the users object has the property in question for that user, we set the value and create the
 accordingly.
 - Finally we close off the second table and the row.
 - Then after all of the rows on table 1 is created, we close off the table.
Phew. This is going to be crazy.
The first part is to download the photo in question. If the user's profile has a thumbnail photo we will download it from AD using the set-content command. (PS5)
foreach ($User in $Users) {
 $PhotoPath = "<path>/images/$($user.samaccountname).jpg"
 if ($Null -ne $user.thumbnailPhoto) {
 $user.thumbnailPhoto | Set-Content $PhotoPath -Encoding byte
 }
}
The next step is to determine if the file exists. If it does, we want to create the Image URL towards the new user's image. If not, we want it to go to the placeholder image. All of this is still within the Loop in question.
if (Test-Path $PhotoPath) {
 $ImageURL = "Images/$($user.UserPrincipalName).jpg"
} else {
 $ImageURL = "Images/Placeholder.png"
}
Now we need to make a placeholder for each property that we will be using. We do this so the next time the loop processes, we have fresh variables.
$DisplayName = ""
$Username = ""
$JobTitle = ""
$Department = ""
$MobilePhone = ""
$OfficePhone = ""
$Fax = ""
$Manager = ""
Now we need to test these variables and fill them up with HTML code. Each one of these will be a row on the table2. The code below is the same for each of these. All you need to do is replace the <value> with the value in question. The one on the left is what you will replace. The one on the right is an example.
if ($Null -ne $User.<Value>) {
 $<value>= @"

 <value>:

 $($User.<value>)

"@
 }
if ($Null -ne $User.OfficePhone) {
 $OfficePhone= @"

 Office Phone:

 $($User.OfficePhone)

"@
 }


Installation Overview
Corzan pipes and fittings are joined using a fast and easy two-step solvent-welding process. Local codes determine which method is acceptable in your area, but the two-step method is more commonly used in the U.S. These directions are an overview of the instructions created by the Plastic Pipe and Fittings Association. Before any installation, please confirm the correct instructions from the manufacturer and any local codes.
Solvent Welding Demonstration
Pipe and fittings must be at the same temperature prior to start of installation. For proper solvent welding of Corzan pipe and fittings, the primer and cement dauber should be no less than half the size of the pipe for sizes 3" and below. Larger sizes require the use of a swab.
Step-by-Step Instructions
1. Cut the pipe
Corzan piping systems can be cut using ratchet cutters, wheel cutters or a fine-tooth saw. When cutting into previously installed Corzan pipes and fittings, avoid use of ratchet cutters as these may compromise the integrity of the repair. If any indication of damage to the pipe is visible at the piping end, cut back at least 2" beyond the visible damage.
2. Prepare the Pipe and Fittings
Remove any burrs or filings and bevel the end of the pipe using a chamfering tool. If a chamfering tool is not available, a sharp knife or file is suitable, but not preferred.
Using a clean, dry rag, wipe away any dirt and moisture from the joint surfaces.
Check the fit of the pipe and fitting; the pipe should make contact with the socket wall 1/3 to 2/3 of the way into the fitting socket. If the pipe goes all of the way into the fitting at this stage, discard the fitting.
3. Apply Corzan Solvent Primer
Apply a heavy, even coat inside the fitting socket, keeping the surface and applicator wet until the surface has been softened. Then, drain any puddles of primer from the fitting socket. Next, apply the primer onto the end of the pipe 1/2″ beyond the depth of the fitting socket. Then for a second time, work a second coat of primer into the fitting socket.
Ensure proper coverage of cement on the pipe and fitting. Too little solvent cement can result in gaps and leak paths, and too much solvent cement may puddle in the fittings and/or pipe, softening the material.
4. Apply Corzan Solvent Cement
Apply a heavy, even layer of solvent cement on the pipe end, then apply a medium layer of solvent cement into the fitting socket. Apply a second, heavy layer of solvent cement to the pipe end.
5. Assemble the joint
Immediately after applying solvent cement, insert the Corzan pipe into the fitting in one smooth action, until the pipe is completely to the fitting stop. On sizes 2″ and below, rotate the pipe ¼ to ½ turn while inserting to ensure even distribution of cement. Properly align the fitting and hold the assembly for approximately 30 seconds, allowing the joint to set.
6. Verify proper installation
An even bead of cement should be visible around the joint. If this bead is not visible it may indicate that solvent cement was not properly applied. In this case, disassemble and remake the joint to ensure system integrity.
Dry-fits are extremely rare and completely avoidable with proper installation practices. Verifying the presence of a continuous solvent cement bead at the fitting is a critical step to ensure system integrity.
A reminder that these directions are a generalization of the instructions created by the Plastic Pipe and Fittings Association. Before any installation, please confirm the correct instructions from the manufacturer and any local codes.
Corzan Manufacturer Approved Instructions
Always refer to local codes and the manufacturer's instructions for the specific Corzan piping systems manufacturer you are using:
Other Resources
For more information on installation, consult these resources:
Science of Solvent Weld
Solvent welding is a form of welding that uses chemistry and geometry rather than heat to produce a permanent molecular bond. When the right mixture of solvents and radial pressure are applied, the pipe and fitting become permanently bonded, functioning as a single component.
Solvent welding is not gluing. Glues work by providing a sticky layer between two components to create a bond; if the two parts were actually in direct contact they wouldn't stick because there would be no glue between them. Solvent welding requires the two components to come into contact as the solvent cements allow the parts to molecularly bond with each other.
Factors Affecting Weld Strength
 - Interference Fit: the inside of a Corzan piping system is specially tapered to create a "fusion area." In a properly assembled system, 80% of the joint strength comes from this fusion area. Because of this it is important to ensure that installers avoid angled pipe cuts, clear away burrs and filings, and check the fit of the pipe and fitting prior to solvent welding.
 - Corzan piping systems are supported by a team of consultants; to learn more about solvent welding and proper installation practices, contact us today.
Contact Corzan
Field sales reps are stationed regionally throughout the country and are available to help you find products and resources in your area. Questions? Connect with a sales rep by completing the form below.


text:
Monster Control Structures
Surveyors ventured back into Wales this month to survey some monster control structures that regulate water entering the River Vyrnwy. Critical levels and dimensions were captured on structures to improve the integrity of the river models in the area.
Other teams mobilised throughout Cumbria to survey rivers in six different villages. The surveys will be used to create river models through the populated areas and itentify properties at risk. The model will then be used to design schemes that could alleviate the threat of flooding.


"C:\\temp\\JpgVideoCSharp.mp4";
 RenderJPG frameRenderer = new RenderJPG();
 H264Writer writer = new H264Writer(musicFile, videoFile, VideoCodec.H264,
 640, 480, 30, 10000, frameRenderer, 40000000);
 if (writer.IsValid())
 {
 if (writer.Process())
 {
 Console.WriteLine("Video written successfully!\n");
 return;
 }
 }
 Console.WriteLine("Video write failed!\n");
}
RenderJPG is straightforward to those developers familiar with GDI+. It initialize and destroy GDI+ with GdiplusStartup() and GdiplusShutdown respectively. It loads the "yes.jpg" with the Bitmap class. bmp is the Bitmap with the same dimension as the video. We fill bmp with black color using FillRectangle(). Then we calculate the aspect ratio of the jpeg file and video frame. If w_ratio_jpg is greater than w_ratio_bmp, it means image is wider than video so you will see 2 horizontal black bars at the top and bottom of the video, otherwise you shall see 2 vertical black bars on the 2 sides of the video. In other words, we try to render the image as much as to cover the video while maintaining its original aspect ratio. To get bmp pixel pointer, we must call LockBits() and UnlockBits() afterwards after use. You notice in the double for loop, the image is rendered vertically upside down, so that it appears correctly in the video output.
// render a jpg once!
class RenderJPG : public FrameRenderer
{
public:
 RenderJPG()
 {
 // Initialize GDI+ so that we can load the JPG
 Gdiplus::GdiplusStartup(&m_gdiplusToken, &m_gdiplusStartupInput, NULL);
 }
 ~RenderJPG()
 {
 Gdiplus::GdiplusShutdown(m_gdiplusToken);
 }
 // render a jpg once!
 bool Render(int width, int height, int fps, int frame_cnt, UINT32* pixels) override
 {
 using namespace Gdiplus;
 if (frame_cnt == 0)
 {
 Bitmap bmp(width, height, PixelFormat32bppARGB);
 Bitmap jpg(L"image\\yes.jpg", TRUE);
 Graphics g(&bmp);
 float w_ratio_bmp = bmp.GetWidth() / (float)bmp.GetHeight();
 float w_ratio_jpg = jpg.GetWidth() / (float)jpg.GetHeight();
 SolidBrush brush(Color::Black);
 g.FillRectangle(&brush, 0, 0, bmp.GetWidth(), bmp.GetHeight());
 if (w_ratio_jpg >= w_ratio_bmp)
 {
 int width2 = bmp.GetWidth();
 int height2 = (int)((bmp.GetWidth() /
 (float)jpg.GetWidth()) * jpg.GetHeight());
 g.DrawImage(&jpg, 0, (bmp.GetHeight() - height2) / 2, width2, height2);
 }
 else
 {
 int width2 = (int)((bmp.GetHeight() /
 (float)jpg.GetHeight()) * jpg.GetWidth());
 int height2 = bmp.GetHeight();
 g.DrawImage(&jpg, (bmp.GetWidth() - width2) / 2, 0, width2, height2);
 }
 BitmapData bitmapData;
 Rect rect(0, 0, bmp.GetWidth(), bmp.GetHeight());
 bmp.LockBits(
 &rect,
 ImageLockModeRead,
 PixelFormat32bppARGB,
 &bitmapData);
 UINT* pixelsSrc = (UINT*)bitmapData.Scan0;
 if (!pixelsSrc)
 return false;
 int stride = bitmapData.Stride >> 2;
 for (int col = 0; col < width; ++col)
 {
 for (int row = 0; row < height; ++row)
 {
 int indexSrc = (height - 1 - row) * stride + col;
 int index = row * width + col;
 pixels[index] = pixelsSrc[indexSrc];
 }
 }
 bmp.UnlockBits(&bitmapData);
 }
 return true;
 }
private:
 Gdiplus::GdiplusStartupInput m_gdiplusStartupInput;
 ULONG_PTR m_gdiplusToken;
};
This is C# version of RenderJPG class. You see there is no need to initialize and deinitialize GDI+ in the constructor and destructor as with the C++ version because it is being taken care of for developer when System.Drawing library is referenced.
// render a jpeg once!
public class RenderJPG : FrameRenderer
{
 public bool Render(int width, int height, int fps, int frame_cnt, UInt32[] pixels)
 {
 if (frame_cnt == 0)
 {
 Bitmap bmp = new Bitmap(width, height, PixelFormat.Format32bppArgb);
 Bitmap jpg = new Bitmap("image\\yes.jpg", true);
 Graphics g = Graphics.FromImage(bmp);
 float w_ratio_bmp = bmp.Width / (float)bmp.Height;
 float w_ratio_jpg = jpg.Width / (float)jpg.Height;
 SolidBrush brush = new SolidBrush(Color.Black);
 g.FillRectangle(brush, 0, 0, bmp.Width, bmp.Height);
 if (w_ratio_jpg >= w_ratio_bmp)
 {
 int width2 = bmp.Width;
 int height2 = (int)((bmp.Width / (float)jpg.Width) * jpg.Height);
 g.DrawImage(jpg, 0, (bmp.Height - height2) / 2, width2, height2);
 }
 else
 {
 int width2 = (int)((bmp.Height / (float)jpg.Height) * jpg.Width);
 int height2 = bmp.Height;
 g.DrawImage(jpg, (bmp.Width - width2) / 2, 0, width2, height2);
 }
 BitmapData bitmapData = new BitmapData();
 Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
 bmp.LockBits(
 rect,
 ImageLockMode.ReadOnly,
 PixelFormat.Format32bppArgb,
 bitmapData);
 unsafe
 {
 uint* pixelsSrc = (uint*)bitmapData.Scan0;
 if (pixelsSrc==null)
 return false;
 int stride = bitmapData.Stride >> 2;
 for (int col = 0; col < width; ++col)
 {
 for (int row = 0; row < height; ++row)
 {
 int indexSrc = (height - 1 - row) * stride + col;
 int index = row * width + col;
 pixels[index] = pixelsSrc[indexSrc];
 }
 }
 }
 bmp.UnlockBits(bitmapData);
 bmp.Dispose();
 jpg.Dispose();
 brush.Dispose();
 g.Dispose();
 }
 return true;
 }
}
Two JPEG Video
For the third example, we display first image and slowly alphablend with the second image until it appears. You can see the effect by looking at the video.
Since main function is exactly the same as previous except frameRenderer is set to Render2JPG, we skip showing it.
Render2JPG is almost similar to RenderJPG, except it loads 2 jpeg with the Bitmap class. The transparency stored in alpha variable is zero(total transparent) and 255(total opaque) when the duration is less or equal to 1000 milliseconds and is more or equal to 2000 milliseconds respectively. Between duration of 1000 and 2000 milliseconds, the alpha is calculated. A little note about the frame_duration = 1000 / fps: it is imprecise because it is in integer. For example, when the fps is 30


text: We assess the potential of using otolith chemistry to differentiate quillback rockfish (Sebastes maliger) within Puget Sound, Washington, where two distinct population segments (DPS) have been identified. Using opportunistic collections (1993–2003) of quillback rockfish (n=77; age range of 2–65 yrs.) we first sought to determine whether fish from different sites and regions could be differentiated based on the trace elemental concentrations at the edge of their otoliths (i.e., the chemical record of the fish's recent history). Results of our quadratic discriminant function analysis (QDFA) indicated significant spatial variability for fish collected at relatively large (regions) and small (sites) spatial scales. Specifically, fish collected from regions in 2002 (San Juan Islands and southern Puget Sound) and 2003 (eastern and western Strait of Juan de Fuca) were correctly classified with 100% and 65% accuracy (based on jack-knife classification), respectively, while fish collected from sites in 1998 (Mukilteo and Foulweather) were classified with 100% accuracy. We also investigated whether we could differentiate fish that were collected from different DPS and regions by using elemental concentrations from their whole otolith (which represents environmental information over the lifetime of a fish). Results from the QDFAs indicated relatively high classification success (80%) when comparing fish collected from either different DPS (i.e., Northern Puget Sound and Puget Sound Proper DPS) or regions (i.e., western and eastern Strait of Juan de Fuca). Findings from this study highlight the value of otolith chemistry in the study of population structure of quillback rockfish in Puget Sound.


CNN Student News - December 12, 2013
CNN Student News - 12/12/13
CNN Student News - 12/12/13
 CNN Student News - 12/12/13
CNN Student News - 12/12/13 09:59
Story highlights
December 12, 2013
On Thursday, CNN Student News gives viewers a ground-level view of the tension on the streets of Ukraine's capital, and we explain why many Ukrainians are not protesting. After following up on some recent stories, we reveal the 2013 TIME Person of the Year, and we discuss why some people preferred the runner-up. Plus, we meet a young entrepreneur and a homeless man who teamed up to develop an environmental app.
Media Literacy Question of the Day:
Why might other news organizations cover TIME's Person of the Year? Should they? Explain.
1. Pope Francis
2. mobile app
3. vaccine
Fast Facts: How well were you listening to today's program?
1. According to the report, why is Ukraine politically divided? What is the capital of Ukraine? What happened during recent protests there?
2. What did three New York courts decide regarding an effort to get chimpanzees some of the same rights as humans? What action does the Nonhuman Rights Project say it will take next?
3. Describe the rapport between software engineer Patrick McConlogue and software developer Leo Grand. What is the purpose of the app he developed?
Discussion Questions:
1. What are your thoughts on TIME's Person of the Year for 2013? What benefits and risks might come with choosing a "person of the year"? What would be your criteria for your person of the year? Whom would you select?
2. What is your opinion of what Merrill Newman said about a statement he gave in North Korea?
3. What characteristics of homeless coder Leo Grand stand out to you? Why do you think he chose to develop an app aimed at helping the environment? If you could develop a mobile app, what would it do?
Download PDF maps related to today's show:
Thank you for using CNN Student News!
Click here to submit your Roll Call request.


Influencing factors and improvement methods of powder coating fluidity
Update:22 Oct,2021
1. The activity of powder coating and its detection
The mobility of the powder refers to the level of the powder coating being fluidized by air in the fluidized bed, and it is an important basis for evaluating the construction performance of the powder coating. The mobility of powder coatings can usually be weighed by the angle of repose or fluidity coefficient. The angle of repose is a direct detection method for powder activity. The smaller the angle of repose, the better the activity. There are currently two commonly used detection methods for activity:

1.1 Normative funnel method
This method is mainly used to detect the mobility of metal powder. It measures the time required for 50g of metal powder to flow through a funnel hole of a standard size, in s/50g. The longer it takes, the worse the mobility, and vice versa.
1.2 Natural accumulation angle
Let the powder flow down naturally through a set of screens and pile up on a flat circular plate with a diameter of 1 inch. When the powder is piled up on the circular plate, the bottom angle of the powder cone is called the angle of repose or pile powder angle. The larger the pile powder angle, the worse the mobility of the powder, and vice versa, the better the mobility.

2. Factors affecting activity performance
Powder mobility is the fundamental characteristic of powder, which refers to the difficulty level of powder movement. Powder activity performance is related to many factors, such as powder particle size, shape, roughness, dry humidity and so on. Generally speaking, increasing the coefficient of friction between particles will make it difficult for the powder to move. Generally, spherical particles have the best mobility, while powders with irregular shape, small size and rough appearance have poor mobility.

In addition, the mobility of the powder is affected by the adhesion between the particles. If the surface of the particles absorbs moisture, gas or participates in the forming agent, the mobility of the powder will be reduced. The mobility of the powder directly affects the average mixing performance. The mobility is too poor and it is easy to mix. Adhesion and clumping cannot be mixed evenly.

The glass transition temperature of the powder coating resin determines the activity and storage stability of the powder coating. The glass transition temperature of T polymer is improved, the stability of the powder is improved, the agglomeration is reduced, and the mobility of the powder coating is improved. The glass transition temperature increases with the increase of molecular weight. When the molecular weight increases to a certain level, the glass transition temperature of the polymer does not change significantly. The glass transition temperature is too high, the number average molecular weight of the resin is large, the melt viscosity is large, the mobility is poor, and the mechanical properties of the powder coating film decrease. The molecular weight of the commonly selected resin in consumption is 2000-5000, and it is more suitable to control the glass transition temperature in the range of 50-65°C.

3. The influence of activity performance on powder coatings
3.1 Impact on painting construction
In the process of electrostatic spraying of powder coatings, the mobile powder, like water boiling, appears very loose and has the effect of flowing water. From the powder supply barrel to the spray gun, the powder is transported and heavy, and the powder is atomized well from the nozzle, and the powder is restrained. Agglomeration of paint results in abnormal consumption such as spraying gun blocking or "powder spitting". The opposite is true for the powder with poor mobility in the powder tank, which leads to poor powder coating efficiency.
3.2 The impact on the consumption of stored procedures
The mobility of powder coatings directly affects the storage stability of the product. During the product packaging process, the powder begins to agglomerate. As time progresses and squeezed during storage, the powder begins to harden and agglomerate. The texture powder loses its texture effect after spraying, and the flat powder also shows a metamorphosis phenomenon.

4. Improvement of powder coating activity performance
The mobility of powder coatings is closely related to storage stability. The storage stability of powders is mainly determined by the glass transition temperature of the resin and curing agent. They occupy a large proportion in the formulation design, so they play a more important role. Although the amount of curing agent is small, it has a significant impact on the storage properties of powder coatings. Under the condition of ensuring the appearance of the coating film, try to choose a resin and curing agent with a high glass transition temperature.

In powder coating formulations, the mass fraction of pigments and fillers has a significant impact on mobility. The pigments and fillers of powder coatings are mainly used for coloring and improving rigidity. If the mass fraction of pigments and fillers is too high, the resin is relatively less, powder coatings The performance of the activity is worse. At the same time, in the formulation design process, try to add as little or no additives as possible that affect the glass transition temperature and storage stability, such as adding less leveling agents, wax-type matting agents and accelerators, etc.

Adding a loosening agent to improve the looseness of powder coatings by internal addition can reduce the angle of repose of powder coatings and make the powder less likely to agglomerate. After addition, it can adjust the affinity and cohesion between the film-forming substances in the powder coating and improve the anti-caking of the powder coating. Temperature, improve the storage stability of powder coatings, and improve the performance of dry powder; in addition, when electrostatic powder spraying, the powder coating is not easy to block the spray gun, preventing agglomeration and sticking to the wall. Hubei Laisi Chemical New Materials Co., Ltd. dry powder active agent 445 belongs to this category of additives.

In addition, additives such as fumed white carbon black and alumina, which are larger than the surface area and have strong moisture absorption ability, are added in an external way to form a barrier between the powder coating particles, reduce the collision and agglomeration of the powder coating particles, and reduce the space between the powder coating particles. Absorb and rub each other to avoid contact between particles, so that the powder coating is not easy to agglomerate. Hubei Laisi anti-caking agent 466 is made of inorganic minerals as the main body and auxiliary organic surface active agent. It is processed by air jet pulverization. The particle and density of the anti-caking agent are similar to powder coatings. The addition amount is 0.4%, which can be directly added to the waste powder, and can also be crushed and sieved together with the flakes.

5 Conclusion
The mobility of powder coatings is the result of the comprehensive use of multiple elements. In addition to the main elements discussed above, it is also related to other elements, such as commonly used pigments, filler properties and amount of participation, spraying operation process conditions, angle of repose detection methods, etc., which require scientific and technical personnel to explore from time to time during consumption. Discussing the mobility of powder coatings, improving powder coating formulations and spraying consumption process control parameters are of great significance to guiding consumption theory.


What's the difference between a bathhouse and a sauna – Brief and simple Regarding the Gaps
Classic Variations
Among the most crucial differences is the steam. Russian bathing entails wet steam, but in the Finnish it's dry. What is it for? Steam, packed with moisture, permits you to utilize non-metallic atmosphere. Since the humidity is almost maximum, then from the body almost does not evaporate sweat. As a result, the body warms up considerably more efficiently, and the degree of dehydration is practically minimal.
Dry steam won't allow sudden overheating. Since perspiration is the major method of cooling the human body, the reduction of its evaporation in high humidity nearly entirely eliminates the chance of normal thermoregulation. In saunas, this hazard is greatly reduced. Historical outline
It's mistaken to think that the ancestor of the bath is historical Russia. History proves that in the remote past steam rooms have been among different peoples. Each nationality modified, additional new elements in the creation of their steam rooms.
By Turkey was inherited the bath called"Hamam", which in Arabic means heat supply. The forefathers of the eastern"hot" places are considered to be the Roman thermae. Muslims believed that in the steam rooms sinners are washed in the evil that consumes the entire body, mind and soul.
The Finnish sauna has been famous for many decades. Since its roots, the steam space has undergone few changes. The key characteristics and characteristics have been maintained to the day. In Finland, visiting the steam space is regarded as an obligatory ritual, a centuries-old tradition that can not be ignored.
In Russia, the building of the house long started with the building of the sweat lodge. In most European towns there were cases when seeing the baths was put under a ban, however the Russian sweat lodge was in honour and people didn't stop seeing it.
Features of this steam space
Frequently the structure is located individually. Usually, the bathhouse is erected from wood, more frequently coniferous species. Obligatorily the Russian bathroom includes two rooms. These are steam room and pre-bath, and it is also an anteroom, dressing room and rest room. All rooms always have a window. It is essential for greater ventilation.
From the pre-bath there is a sauna stove, which can be heated with wood. The principal element that generates heat are the stones – hence the title of the furnace, which is normally built in the partition between the rooms. The most important portion of it, in addition to the stones are from the steam space.
Stoves can be open and shut. Open solutions are considered practical, especially when the sauna is currently used as planned several times a day. Such a stove warms up the room faster. But because of the frequent watering of the rocks, it melts fast. Stones for all these structures are placed within the firebox. The furnace is able to heat up to 300 degrees.
Closed-type apparatus for improved heat transfer has a unique steam doorway. After the wood is burned and the door is closed, no more smoke enters the steam room. The furnace can heat the rocks to very severe temperatures. Before visiting the steam space, the door is ajar and the space is warmed up. Closed furnace has to be heated in advance – approximately two to five hours before the beginning of the procedure. As a result of properties of the stones, such a style can maintain heat for 2 days.
The gap between the bath and sauna will be from the design attributes, and more exactly in the arrangement of these stones. In the first case, they are put inside the furnace, so they're heated more sturdy and cool down very slowly. In the sauna that the stones are placed on the top layer of the furnace.
The warmth in Russian baths is prohibitive. In a temperature of 50-70 ° C humidity reaches 80%. Russians believe a broom to be the main accessory for the steam space. Just take into consideration the steam procedures, as immediately remembered twig patting physically. Someone utilizes tied bars for immediate use, others cooked the product and revel in the pleasant odor that spreads round the room.
In the Russian bathhouse you can not just lie on a plate and rest peacefully. Each steam session means walking behind the gangplank, raising up to distribute the air accumulation, and jumping sharply into the icy ice-hole. Russian bathhouse attendants are noteworthy for the fact that they like to shock their own bodies harshly. Besides high air temperature, which increases stress on the heart and blood vessels, and continuous motion forces the heart to work at an accelerated rate.
High humidity can help normalize the respiratory system. Many doctors prescribe a course of treatment in the steam room. The use of aromatic oils enhances the effect of hot steam in the body, reducing the chance of gout, osteochondrosis.


text:
Instruction selection is the part in a compiler that transforms IR code into machine code. Instruction selectors build on a library of hundreds if not thousands of rules. Creating and maintaining these rules is a tedious and error-prone manual process.
In this paper, we present a fully automatic approach to create provably correct rule libraries from formal specifications of the instruction set architecture and the compiler IR using template-based counter-example guided synthesis (CEGIS). Thereby, we overcome several shortcomings of an existing SMT-based CEGIS approach, which was not applicable to our setting in the first place.We propose a novel way of handling memory operations and show how the search space can be iteratively explored to synthesize rules that are relevant for instruction selection.
Our approach synthesized a large part of the integer arithmetic rules for the x86 architecture within a few days where existing techniques could not deliver a substantial rule library within weeks. With respect to the runtime of the compiled programs, we show that the synthesized rules are close to a manually-tuned instruction selecto... mehrr.


text:
Client: Tallinna Linnatranspordi AS
The quality of transport infrastructure between the city centre and its major transport hubs is very important. Tallinn has a plan to extend its tram network to the Tallinn Lennart Meri airport. The analysis focussed on the financial and socio-economic returns from this project, using the EU Guide to Cost Benefit Analysis of Investment Projects as methodical cornerstone.
Two scenarios were compared:
- The demand for public transport is met by using mainly the already established public bus network;
- Substantial part of the demand for public transport is met by extended tram network.
The financial analysis was done from two perspectives: Tallinna Linnatranspordi Aktsiaselts (TLT), and City of Tallinn. In addition to the financial analysis, the socio-economic analysis dwelled more thoroughly on the monetarized time-savings from faster connections, environmental costs and benefits (impacts on the climate, pollution, noise pollution), and accidents.


text:
The Lowry Schools Appeal
This July we are running 'The Lowry Schools Appeal'. We want to raise £5,000 that will be matched up to a further £5,000 by Alison and Noel Copley, founders of The Copley Prize.
Hear from Jenny - our director of Learning and Engagement
Help us to raise £5000
This year more than ever, primary school children need to benefit from creativity to develop their imagination, spark creativity and bring curriculum subjects to life.
Funds will support The Lowry's schools outreach programme to visit 10 schools in areas of Salford that have had limited or no previous engagement with the arts and The Lowry. Our experienced artists will go in and deliver workshops for over 700 pupils, leave the school with a hamper of free art materials, and resource packs to enable teachers to roll out similar workshops throughout the school. This activity will run from September 2021.
or send a cheque made payable to 'The Lowry Centre Trust' to FAO Kate Rice, Lowry Schools Appeal, The Lowry, Pier 8, Salford M50 3AZ.
All participating pupils can also submit an entry to The Copley Prize, our prestigious art competition for children aged 4-11, with the winner seeing their work professionally exhibited for a year in The Lowry Galleries next to LS Lowry's most celebrated works of art.
"Did you know you can use dirty rubbers to draw like LS Lowry? Did you know you can draw with the side of your pencil? We worked with a real artist. Michelle asked us questions and they were easy because we were learning about Lowry in class. Next, we made a looking log and a cross for the street. I didn't believe my eyes! After that we drew a cat and a dog and factories."
– Ania (Year 2 pupil)


text:
Reducing Costs and Energy in Aerospace Manufacturing
Conventional manufacturing processes for aircraft engine parts is very costly and requires a significant amount of energy, but new technologies are being researched in order to find ways to reduce the environmental impact of aerospace manufacturing.
In partnership with Pratt & Whitney Canada, Dr. Corbin, a researcher from Dalhousie University, will investigate two metallurgical processes (brazing and sintering) capable of developing a net shape manufacturing method using less material. Advanced thermal analysis tools will be used to gain detailed insight into the brazing and sintering processes to optimize these methods.
"We want to develop new ways to make these super alloy engine parts at lower costs through the use of less material and less energy and therefore making less of an environmental impact," says Dr. Stephen Corbin.
This research into advanced materials processing will lead to better manufacturing methods that will revolutionize how aircraft engine parts are made. These new processes are expected to reduce the cost of manufacturing, reduce the industry's environmental footprint, and become beneficial to Canada's economy.
One goal of the Chair is to further develop highly qualified personnel, which is essential to keeping the industry healthy in Canada. The Chair will provide graduate students with a unique opportunity to work closely with Pratt & Whitney Canada to better understand the relationship between basic science and application in an engineering manufacturing environment.
"The state-of-the-art facilities accessible through this research program provide a unique training experience for Dr. Corbin's students, as they work to address challenges currently being faced by aerospace companies," says Suzanne Fortier, president of NSERC (Natural Sciences and Engineering Research Council).
The NSERC-IRC is a five-year renewable program that promotes the advancement of emerging or established engineering research fields that benefit Canadian industry.

source: HuggingFaceFW/fineweb-edu


text:
Inclusion problems for one-counter systems
MetadataShow full item record
We study the decidability and complexity of verification problems for infinite-state systems. A fundamental question in formal verification is if the behaviour of one process is reproducible by another. This inclusion problem can be studied for various models of computation and behavioural preorders. It is generally intractable or even undecidable already for very limited computational models. The aim of this work is to clarify the status of the decidability and complexity of some well-known inclusion problems for suitably restricted computational models. In particular, we address the problems of checking strong and weak simulation and trace inclusion for processes definable by one-counter automata (OCA), that consist of a finite control and a single counter ranging over the non-negative integers. We take special interest of the subclass of one-counter nets (OCNs), that cannot fully test the counter for zero and which is subsumed both by pushdown automata and Petri nets / vector addition systems. Our new results include the PSPACE-completeness of strong and weak simulation, and the undecidability of trace inclusion for OCNs. Moreover, we consider semantic preorders between OCA/OCN and finite systems and close some gaps regarding their complexity. Finally, we study deterministic processes, for which simulation and trace inclusion coincide.


text:
FRUIT BEHAVIOROLOGY IN SWITZERLAND - DESIGNING URBAN RURAL COMMONS
The notion of Urban Rural Commons is understood as the possibility to consider both rural and urban commons, as well as a possible interaction between the two. Students will examine the existing livelihood with ethnographic approach and visualize them by actor network drawings. Then, through drawings and models, the students will propose an architectural project to intervene in the network and establish Urban Rural Commons to define a possible future for the study area.
This year, we focus on designing architecture for livelihoods focused on permanent fruit crops, such as vineyards, apple orchards or chestnut forests. We are aiming to design Urban Rural Commons within the small rural communities and the larger urbanised area and forester a better connection within and between village and urban life. Fruit crops are in many ways important for Switzerland. For example, a typical person in Switzerland consumes more than 15 kilograms of apples and about 40 bottles of wine per year. Besides the nutritional value, fruit has a highly symbolic value in our culture, spanning from ancient stories to modern day politics and everyday rituals. And lastly fruit and the producers, which can be gained by certain processes have a great economic value and massive impact on the areas, where fruit plantations are possible and will usually change entire landscapes.
One of the biggest and most important fruit growing areas and our field of study in the autumn semester will be the lower Valais. There, plantations, retaining walls, irrigation system and other infrastructure have shaped the valley for centuries and fruit plantations reach even within the most urbanised centers.


Go to Product Detail Page
Mary, How Could You Have Known?
By Sally K. Albrecht
Look Mary, How Could You Have Known?
Detailed Description
Mary, How Could You Have Known? by Sally K. Albrecht and Jay Althouse. Choir Sacred. SATB choir. Choral (Sacred); Choral Octavo; Worship Resources. Alfred Archive Edition. Advent; Christmas; Sacred; Winter. Grade 3. Choral Octavo. 8 pages. Published by Alfred Music (AP.18381).
"Mary, how could you have known that your child would be a Savior?" Compelling text images,flowing lyricism and haunting clarinet (opt., part included in the score) combine to create an unforgettable Advent original. The ideal choice for hard-to-find text focus on the annunciation of Mary, wonderful throughout Advent and for Christmas.
For more details go to Product Detail Page
* = required
Music List Name
To create a music list, please sign in.
Existing Accounts
Sign In and Add to My Music List
New Accounts
Create Account and Add to My Music List


text:
Chesapeake Bay Model Study for Calvert Cliffsby Lawrence C. Neale, (F.ASCE), Dir.; Alden Res. Labs. of Worcester Polytechnic Inst., Worcester, MA,
Serial Information: Journal of the Power Division, 1971, Vol. 97, Issue 4, Pg. 827-839
Document Type: Journal Paper
A hydraulic model study was conducted to study the warm water effluent from the proposed nuclear power plant at Calvert Cliffs on Chesapeake Bay. The intake structure and discharge structure configurations were developed in part through the model study. Basically, a deep water intake and a subsurface jet discharge was the result of all studies. Results of the studies were displayed as a series of plots showing plan view isotherms at several depths including the water surface. Plots of temperatures on various vertical sections were also presented to indicate the depth distribution of temperature. The maximum observed surface temperature was a 4°F increase outside of a small local area near the plant outlet, while differential temperatures of less than 0.5°F were observed at considerable distance from the plant site.
Subject Headings: Model analysis | Bays | Cliffs | Hydraulic models | Temperature distribution | Power plants | Water surface | Water intakes | Water discharge | Hydro power
Services: Buy this book/Buy this article
Return to search


Debugging Memory Issues with Open vSwitch DPDK
Debugging Memory Issues with Open vSwitch DPDK
This article is about debugging out-of-memory issues with Open vSwitch with the Data Plane Development Kit (OvS-DPDK). It explains the situations in which you can run out of memory when using OvS-DPDK and it shows the log entries that are produced in those circumstances. It also shows some other log entries and commands for further debugging.
When you finish reading this article, you will be able to identify that you have an out-of-memory issue and you'll know how to fix it. Spoiler: Usually having some more memory on the relevant NUMA node works. It is based on OvS 2.9.
As is normal with DPDK-type applications, it is expected that hugepage memory has been set up and mounted. For further information see set up huge pages.
The next step is to specify the amount of memory pre-allocated for OvS-DPDK. This is done using the Open vSwitch Database (OVSDB). In the case below, 4GB of huge-page memory is pre-allocated on NUMA node 0 and NUMA node 1.
# ovs-vsctl --no-wait set Open_vSwitch. other_config:dpdk-socket-mem=4096,4096
The default is 1GB for NUMA 0 if dpdk-socket-mem is not specified.
Now, let's look at the times when we can run out of memory.
You can run out of memory when DPDK is initialized, which happens when ovs-vswitchd is running and the OVSDB entry dpdk-init is set to true.
A useful log entry to watch for during initialization is this:
|dpdk|INFO|EAL ARGS: ovs-vswitchd -c 0x1 --socket-mem 4096,4096
This will confirm that the dpdk-socket-mem you thought you were setting was actually set and passed to DPDK (thus avoiding the embarrassment of someone else pointing out that your scripts were wrong).
The most likely way to run out of memory during initialization is that huge page memory was not set up correctly:
|dpdk|INFO|EAL: 32 hugepages of size _PHONE_ reserved, but no mounted hugetlbfs found for that size
Another way is that you are requesting too much memory:
|dpdk|ERR|EAL: Not enough memory available on socket 0! Requested: 32768MB, available: 16384MB
Or you request none at all:
|dpdk|ERR|EAL: invalid parameters for --socket-mem
All these issues can be fixed by correctly setting up huge pages and requesting to pre-allocate an appropriate amount.
Adding a Port or Changing the MTU
These situations are grouped together because they can both result in a new pool of buffers being requested for a port. Where possible, these pools of buffers will be shared and reused, but that is not always possible due to differing port NUMA nodes or MTUs.
For new requests, the size of each buffer is fixed (MTU-based) but the number of buffers can be variable and OvS-DPDK will retry for a lower number of buffers if there is not enough memory for initial requests.
When DPDK cannot provide the requested memory to any one of the requests, it reports the following:
|dpdk|ERR|RING: Cannot reserve memory
While that may look serious, it's nothing to worry about because OvS handles this and simply retries for a lower amount. If however, the retries do not work then the following will be in the log:
|netdev_dpdk|ERR|Failed to create memory pool for netdev dpdk0, with MTU 9000 on socket 0: Cannot allocate memory
This case is an issue for functionality.
 - If you were adding a port, it will not be usable.
 - If you were changing the MTU, the MTU change fails but the port will continue to operate with the previous MTU.
How can you fix these errors? The general guide would be just to give OvS-DPDK more memory on the relevant NUMA node, or stick with a lower MTU.
Starting a VM
It doesn't seem obvious why you would run out of memory when starting a VM, as opposed to when you are adding a vhost port for it (previous section). The key is vhost NUMA reallocation.
When a VM is started, DPDK checks the NUMA node of the memory shared from the guest. This may result in requesting a new pool of buffers from the same NUMA node. But of course, there might be no memory pre-allocated with dpdk-socket-mem on that NUMA node, or else there might be insufficient memory left.
The log entry would be similar to the add port/change MTU cases:
|netdev_dpdk|ERR|Failed to create memory pool for netdev vhost0, with MTU 1500 on socket 1: Cannot allocate memory
The fix for this is having enough memory on the relevant NUMA node, or changing the libvirt/QEMU settings so VM memory is from a different NUMA node.
Runtime, Adding a Port, or Adding Queues
Didn't we already cover adding a port? Yes, we did; however, this section is for when we get a requested pool of buffers, but some time later that proves to be insufficient.
This might be because there are many ports and queues sharing a pool of buffers and by the time some buffers are reserved for Rx queues, some are in flight processing and some are waiting to be returned from Tx queues, so there just aren't enough buffers to go around.
For example, the log entries when this occurs while using a physical NIC could look like this:
|dpdk|ERR|PMD: ixgbe_alloc_rx_queue_mbufs(): RX mbuf alloc failed queue_id=0
|dpdk|ERR|PMD: ixgbe_dev_rx_queue_start(): Could not alloc mbuf for queue:0
|dpdk|ERR|PMD: ixgbe_dev_start(): Unable to start rxtx queues
|dpdk|ERR|PMD: ixgbe_dev_start(): failure in ixgbe_dev_start(): -1
|netdev_dpdk|ERR|Interface dpdk0 start error: Input/output error
For vhost ports, buffers are not reserved but you could see at runtime that you cannot get a new buffer while polling vhost ports. The log entry could look like this:
|dpdk(pmd91)|ERR|VHOST_DATA: Failed to allocate memory for mbuf.
If all the ports are needed, the easiest way to resolve this is to reduce the numbers of Rx queues or reserved buffers for the physical NICs. This can be done with the following command:
# ovs-vsctl set Interface dpdk0 options:n_rxq=4
or with this command:
# ovs-vsctl set Interface dpdk0 options:n_rxq_desc=1024
Alternatively, memory could be increased to ensure that a large pool of buffers will be available (that is, avoiding retries for lower amounts) but that approach scales only so far.
Further Debugging
If you run out of memory, there will be an error message in the log. If you want further details about the pools of memory being allocated, reused, and freed, you can turn on debug mode:
# ovs-appctl vlog/set netdev_dpdk:console:dbg
# ovs-appctl vlog/set netdev_dpdk:syslog:dbg
# ovs-appctl vlog/set netdev_dpdk:file:dbg
Allocated, reused, and freed messages will look like this:
|netdev_dpdk|DBG|Allocated "ovs_mp_2030_0_262144" mempool with 262144 mbufs
|netdev_dpdk|DBG|Reusing mempool "ovs_mp_2030_0_262144"
|netdev_dpdk|DBG|Freeing mempool "ovs_mp_2030_0_262144"
The name of the pool of buffers (that is, mempool) gives us some information:
2030 : Padded size of the buffer (derived from MTU)
0 : NUMA node the memory is allocated from
262144 : Number of buffers in the pool
There is also a command to show which mempool a port is using, as well as lots of other details (not shown):
# ovs-appctl netdev-dpdk/get-mempool-info dpdk0
mempool _USER_
If you have read to here, it probably means you've hit an issue with OvS-DPDK. Sorry to hear that. Hopefully, after reading the above guide you'll be able to identify if the issue was due to running out of memory and you'll know how to fix it.
Some guidance on how much memory is required and how to configure OvS-DPDK for multi-NUMA (including dpdk-socket-mem) can be found in the OVS-DPDK: How much memory and OVS-DPDK: Multi-NUMA articles on this blog.


text:
The Hermetic Wild West
In nineteenth century America, the Order of Hermes is recovering from the trauma of the Civil War, where wizards stretched or even broke the Code on both sides. With the war over, House Guernicus is recruiting Hoplites to pursue lawbreakers into the untamed west where the Order as a whole struggles with the challenges of native magic, abundant magical resources, and the "Vis Rush" it precipitated.
This is an Ars Magica 5th ed. game set in the American west. The Order of Hermes is a publicly known institution which struggles to find its place in a young country.


text:
St. Albert of Magdeburg
Feastday: June 20
A monk of St. Maximin Benedictine monastery in Treves, Albert was sent by Emperor Otto the Great to convert the Russian subjects of Princess Olga at her request after she became a Christian in Constantinople at 70 years of age. When Olga's son Svyatoslav, a pagan, took the crown from her in 961, the missionaries were forced to flee, and some were killed near Kiev. Albert escaped, spent four years at the imperial court in Mainz, and then was made abbot of Weissenburg Abbey, where he became known as a patron of learning. In 962, at Otto's insistence, he was named first archbishop of Magdeburg, Saxony, with jurisdiction over the Slavs. He spent the rest of his life trying to spread Christianity among the Wends and reforming religious groups in his diocese. He died on a visit to Merseburg.


atomic-write: Atomically write to a file
[ library, mit, system ] [ Propose Tags ]
Atomically write to a file on POSIX-compliant systems while preserving permissions.
On most Unix systems, mv is an atomic operation. This makes it simple to write to a file atomically just by using the mv operation. However, this will destroy the permissions on the original file. This library does the following to preserve permissions while atomically writing to a file:
This way, when the file is mv'ed into place, the permissions will be the ones held by the original file.
This library is based on similar implementations found in common libraries in Ruby and Python:
To use atomic-write, import the module corresponding to the type you wish to write atomically, e.g., to write a (strict) ByteString atomically:
import System.AtomicWrite.Writer.ByteString
Then you can use the atomicWrite function that accepts a FilePath and a ByteString, e.g.:
atomicWrite myFilePath myByteString
Versions [faq] 0.1.0.0, 0.1.0.1, 0.2.0.0, 0.2.0.1, 0.2.0.2, 0.2.0.3, 0.2.0.4, 0.2.0.5, 0.2.0.6, 0.2.0.7
Dependencies base (>=4.5 && <4.8), bytestring (>=0.10.4), directory, filepath, temporary, text, unix-compat [details]
License MIT
Copyright 2015 Stack Builders Inc.
Author Justin Leitgeb
Maintainer _EMAIL_
Category System
Bug tracker _URL_
Source repo head: git clone _EMAIL_:stackbuilders/atomic-write.git
Uploaded by jsl at Mon Mar 23 23:02:52 UTC 2015
Distributions LTSHaskell:0.2.0.6, NixOS:0.2.0.7, Stackage:0.2.0.6
Downloads 5369 total (464 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
 - λ
 - λ
 - λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2015-03-23 [all 1 reports]
Modules
[Index]
Downloads
Maintainer's Corner
For package maintainers and hackage trustees


text:
A process audit team is responsible for evaluating and improving the processes within an organization. The functions and advantages of a process audit team include:
- Identify areas for improvement: A process audit team can identify areas where processes are not working efficiently or effectively, and suggest changes to improve the overall performance of the organization.
- Ensure compliance: The team can ensure that processes are being followed according to established standards and procedures, which can help the organization avoid costly mistakes or legal issues.
- Evaluate risks: The team can evaluate potential risks associated with processes and suggest ways to mitigate or eliminate those risks.
- Increase efficiency: The team can identify ways to streamline processes, reduce waste, and improve productivity, which can help the organization save time and resources.
- Foster a culture of continuous improvement: By regularly conducting process audits and making recommendations for improvement, the team can help the organization develop a culture of continuous improvement.
- Provide feedback: The team can provide feedback to employees and management about how processes are working, which can help identify training needs, highlight best practices, and address any issues that arise.
- Enhance customer satisfaction: By improving processes, the organization can provide better products and services to its customers, leading to increased customer satisfaction and loyalty.
Overall, a process audit team can help an organization improve its performance, reduce risk, and achieve its strategic objectives.


text:
[Product Name] Evodia Extract, Evodia P.E.
[ About Evodiamine Extract ]
[Active ingredient] evodiamine, dehydroevodiamine limonin, berberine.
1. Evodia P. E. is used to treat symptoms of abdominal distress. These include nausea, vomiting, and diarrhea. It is said to be especially effective in treating morning diarrhea. Evodia is used to stimulate the appetite and to treat abdominal symptoms associated with lack of interest in food.
2. Evodia is also used as a painkiller. It is a remedy for headaches, especially headaches associated with nausea and vomiting. Traditional Chinese herbalists also use it to treat pain in the upper abdomen and pain associated with abdominal hernias. According to Chinese herbalism, the warm nature of the evodia fruit counteracts cold conditions in the stomach.
3.Evodia P. E. also has anti-inflammatory, anti-tumor, anti-viral,
astringent, and diuretic properties. Studies shows taht extracts of evodia
fruit strongly inhibit the growth of one specific bacteria (Helicobacter
pylori, a bacteria usually treated in mainstream medicine with
antibiotics). Unlike conventional antibiotics, the extract did not alter
the growth patterns of any other intestinal bacteria. This finding
supports the traditional use of evodia fruit in digestive disorders.


text:
Your laptop is running out of storage space, or you want to store the data from your phone on your computer, so you want to use a microSD card to store some of your files, but you don't want to spend the money on a new Micro SD card adapter. So, what's the solution? Can you insert a micro SD card into your laptop without an adapter?
Yes, you can. There are some simple and easy-to-follow ways that you can try to connect your micro SD card to your laptop without an adapter. But many people are not aware of these methods.
So, we have decided to write an article on how to insert micro SD card in laptop without an adapter using some easy methods.
Before we get into the main topic, let us first understand what a micro SD card is. If you are not interested in the technical details, you can skip this section and jump directly to the methods.
An SD (Secure Digital) card is a small removable memory card used to store data. SD cards are mostly used in digital cameras, camcorders, handheld computers, and mobile phones. They are also used in some video game consoles.
Micro SD cards are even smaller versions of the SD card. They are about the size of a fingernail. Micro SD cards are mainly used in mobile phones and other small electronic devices.
However, one of the main problems with micro SD cards is that they are very delicate and can be easily damaged if not handled properly. Moreover, most laptops do not have a built-in micro SD card reader; thus, an adapter is required to connect the micro SD card to the laptop.
Methods to insert micro sd card in laptop without an adapter
There are two simple yet effective ways of connecting a micro SD card to your laptop without an adapter. These methods are:
1. Use the micro SD card slot on your laptop
If your laptop has a built-in micro SD card slot, then you can directly insert the micro SD card into the slot and start using it without an adapter. This is the simplest way of connecting a micro SD card to your laptop. Follow the steps given below to insert the micro SD card into the slot:
Step 1: First of all, make sure that your laptop is turned off.
Step 2: Now, take out the micro SD card from your mobile phone or any other device.
Step 3: Look for the micro SD card slot on your laptop. It is generally located on the side of the laptop.
Step 4: Now, gently insert the micro SD card into the slot. Make sure that you insert it in the correct orientation.
Step 5: Once the micro SD card is inserted, turn on your laptop and wait for it to boot up.
Step 6: Now, go to "My Computer" or "This PC", and you will see the micro SD card appearing as a separate drive.
Step 7: You can now access the files stored on the micro SD card and copy or move them to your laptop's hard drive.
2. Use your smartphone as a micro SD card reader
If your laptop doesn't have a built-in micro SD card slot, you can use your smartphone as a micro SD card reader. This might sound surprising, but it is actually very simple and easy to do.
Almost all smartphones come with a built-in micro SD card slot which can be used to connect the micro SD card to the laptop. For this process, all you need is a smartphone and a USB cable.
Follow the steps given below to use your smartphone as a micro SD card reader:
Step 1: First of all, insert the micro SD card into the slot on your smartphone.
Step 2: Now, connect your smartphone to your laptop using a USB cable.
Step 3: You will see a pop-up message on your smartphone asking you to select the USB connection type. Select "File Transfer" or "PTP" as the connection type.
Step 4: Now, go to "My Computer" or "This PC" on your laptop, and you will see your smartphone appearing as a separate drive.
Step 5: Double-click on the smartphone drive, and you will see the contents of your micro SD card.
Step 6: You can now access the files stored on the micro SD card and copy or move them to your laptop's hard drive.
Laptop users often need to use a micro SD card reader in order to access the files stored on a micro SD card. However, not all have the adapter required to connect the micro SD card to the laptop.
Like so many other users, if you are also in a similar situation and wondering how to insert micro SD card in laptop without an adapter, you can use the methods given in this article. These methods are very simple and easy to follow. Try them out and see which one works best for you.
Hopefully, this article was helpful and informative. If you have any questions or suggestions, feel free to leave them in the comments below.
Thanks for being with us 🙂


Skip to main content
Intents operator
The Otterize intents operator is an open source Kubernetes operator for easily managing service-to-service authorization by declaring the calls each service needs to make, using client intents files. The intents operator uses these files to configure network policies, Kafka ACLs, and other enforcement points (in the future) to allow just the intended calls.
If credentials such as X.509 certificates are needed for authentication for example, to connect to Kafka using mTLS the Otterize intents operator works with SPIRE via the credentials operator to automatically:
 - Establish pod service identities.
 - Generate trusted credentials for each client service.
 - Deliver the credentials to the pod's containers within a locally-mounted volume.
Deploying the intents operator
To deploy the operator, use the Helm chart.
Controlling access using the intents operator
To learn how to use the intents operator to control access, consult the guides for managing network policies using intents, Kafka ACLs using intents and Istio AuthorizationPolicy using intents.
Pod annotations
You can override the service name the intents operator uses when it computes network policies and Kafka ACLs with a pod annotation.
AnnotationDescription
_URL_-nameUsed for service identity resolution.
Supported enforcement types
Network policies
The intents operator automatically creates, updates and deletes network policies, and automatically labels client and server pods, to reflect precisely the client-to-server calls declared in client intents files.
The intents operator can also be configured to process client intents without creating and managing network policies, to provide visibility on what would happen once enforcement via network policies is activated. More information can be found in the shadow vs active enforcement documentation.
In the example above, the checkoutservice intends to call the shippingservice. When the CRD is applied through kubectl apply, the intents operator labels the checkoutservice and shippingservice pods, and creates a network policy for the ingress of the shippingservice that references these labels and allows calls to the shippingservice from the checkoutservice.
See service identities and resolution to learn how service names are resolved for pods.
The intents operator uses the resolved identity as the service name, and combines it with the namespace of the pod and hashed to form the value of the label _URL_. This label is used as a selector for network policies. Another label, _URL_-server-<servicename>-<servicehash>, is applied to client pods which have declared their intent to access the server. This label is used as the selector to determine which client pods are allowed to access the server pod.
Learn more: Network policies deep dive
Handling external traffic
The intents operator has automatic behavior for allowing external traffic for pods which have indicated that they are supposed to accept external traffic, such as by creating a Service of type NodePort or LoadBalancer, or an Ingress resource.
As the intents operator creates network policies, and the semantics of network policies dictate that:
 1. if no network policies apply to a pod, then all traffic is allowed.
 2. once any network policy applies to a pod, only the traffic explicitly allowed in the policy is allowed
This meant that if you had no network policies on a pod, and created ClientIntents for that pod, then external traffic would be blocked. To make it easy to enable pod-to-pod traffic without affecting expected external traffic, the intents operator automatically detects resources of kind Service of type NodePort or LoadBalancer, or an Ingress resource, and if it creates the first network policy to affect those pods, it also creates a network policy that allows external traffic to those pods, as specified by the external Service/Ingress - for example, it only allows traffic to the specified ports, not all traffic.
This behavior can be disabled using the Helm chart's values.
Kafka mTLS & ACLs
The intents operator automatically creates, updates, and deletes ACLs in Kafka clusters running within your Kubernetes cluster according to the declared intents. It does not modify other ACLs. It works together with the Otterize credentials operator to easily enable secure access to Kafka from client pods, all in your Kubernetes cluster.
The intents operator can also be configured to process client intents without creating and managing Kafka ACLs, to provide visibility on what would happen once enforcement via Kafka ACLs is activated. More information can be found in the shadow vs active enforcement documentation.
The Otterize credentials operator automatically registers client pods with the credentials service either a SPIRE server, or the Otterize Cloud-managed credentials service and writes the trusted credentials generated by that service into Kubernetes secrets for use by those pods. The intents operator takes ClientIntents with type: kafka and creates Kafka ACLs that grant the requested access to the cryptographic identities (SVIDs) created by the credentials operator.
ACL creation and consumer groups
A Kafka client may specify a consumer group ID when consuming a topic. When it does so, it requires DESCRIBE and READ access to the consumer group resource. To enable this, the intents operator creates an ACL enabling all consumers to read and describe all consumer groups. The permission check performed by the AclAuthorizer for a consumer group also takes into account whether the consumer has the appropriate access to the topic it is attempting to read, so the end result is that the topic ACLs determine actual access.
Istio AuthorizationPolicy
The intents operator automatically creates, updates and deletes Istio authorization policies, automatically looks up service accounts for client pods and labels server pods, to reflect precisely the client-to-server calls declared in client intents files.
The intents operator can also be configured to process client intents without creating and managing Istio authorization policies, to provide visibility on what would happen once enforcement via Istio authorization policy is activated. More information can be found in the shadow vs active enforcement documentation.
In the example above, the checkoutservice intends to call the shippingservice. When the CRD is applied through kubectl apply, the intents operator labels the shippingservice pod, looks up checkoutservice's service account, and creates an authorization policy for the ingress of the shippingservice that references the service account and allows calls to the shippingservice from the checkoutservice.
See service identities and resolution to learn how service names are resolved for pods.
The intents operator uses the resolved identity as the service name, and combines it with the namespace of the pod and hashed to form the value of the label _URL_. This label is used as a selector for servers in Istio authorization policies. The same algorithm is used to look up the client from the service name in the client intents, for whom the service account is looked up.
Finally, an Istio authorization policy is created that allows communication between the client's service account and the server. If the service account covers clients other than the one requested, an event is generated on the ClientIntents to warn about this, and this appears as a warning on Otterize Cloud.
Handling external traffic
Coming soon: automated handling of external traffic based on the presence of an Ingress, Service of type LoadBalancer, IstioGateway or Gateway API, like in network policies.
When an Istio authorization policy is created for a server, it will only allow incoming traffic that matches the policy.
To allow external traffic from outside the cluster to a server, create an AuthorizationPolicy that allows all traffic, traffic that does not come from within the cluster by IP range, or traffic from ingress pods. Create this AuthorizationPolicy alongside the Ingress, Service or Gateway resource, such as in the same Helm chart.


text:
Lake Assal, located 150 meters below sea level, is the lowest point in Africa. It has extremely high salinity, supposedly higher than the Dead Sea in Israel/Jordan, and is only a few km. from the Red Sea along the opening of the East African Rift. The lake is raked by very strong winds every afternoon as the heat of the Danakil Depression draws cooler air from the sea inland, and the wind and sun combine to produce rapid evaporation. The lake level appears to be dropping as old lake shore levels and associated sediments are visible around the lake, like rings in a bathtub, approximately 70 meters above the current shoreline.
The salt at Lake Assal is still exploited by local Afaris who transport it by camel for human consumption. A large modern salt extraction facility was recently constructed here by an American firm (Salt Investment S.A.), but the facilities have not been completed and are largely abandoned except for a security guard/caretaker.
The animal skull was placed on the lake shore so that it would become coated in salt and sold as a souvenir to visitors who come here from the capital.
- ©2011 George Steinmetz
- Image Size
- 5616x3744 / 60.2MB
- Contained in galleries
- Afar Depression


What is contractualSugar?
An easy way to manage contracts
Why was contractualSugar created?
For lack of a decent free software alternative to the commercial
contract management behemoths.
On whose shoulders was contractualSugar based?
As a contract management facility, it is necessary to store the
metadata associated with executed contracts somewhere safe and efficient.
The obvious choice is a database. Rather than hardcoding a particular
database as the storage base, contractualSugar uses an ORM (Object
Relational Mapper) called SQLAlchemy to talk to various databases.


text:
A Revolutionary War veteran, Joseph Collard was killed at Woods Fort (now Troy), Lincoln County, MO in 1812 at the start of the Indian wars and War of 1812.
Children of Joseph and Margaret (Lewis?) Collard are Abigail, Elijah, Charles, John, Margaret (Peggy), Joseph, James and Mary. There is another possible son, Isaac Newton Collard, who is believed to have been the second husband of his brother John's widow, Lydia Cannon Collard.
Elijah Simmons Collard (1778 - 1846)*
John Collard (1784 - 1818)*
Isaac Newton Collard (1791 - 1822)*
Joseph Collard (1794 - 1835)*
Mary Collard Cannon (1799 - 1872)*
Specifically: Killed at Woods Fort in Indian wars in 1812. Assume he was buried on the site.
Created by: Phyllis Mitchell Sway
Record added: Aug 11, 2012
Find A Grave Memorial# 95158177