Using the most basic table markup, here’s how .table
based tables look in Bootstrap. All table styles are inherited in Bootstrap 4, meaning any nested tables will be styled in the same manner as the parent.
| ID | Name | Job Title | Degree | Salary |
|---|---|---|---|---|
| 1 | Adrian Monino | Front-End Engineer | Computer Science | $120,000 |
| 2 | Socrates Itumay | Software Engineer | Computer Engineering | $150,000 |
| 3 | Reynante Labares | Product Manager | Business Management | $250,000 |
| 4 | Hamza Macasindil | Software Engineer | Computer Engineering | $140,000 |
| 5 | Roven Galeon | Project Manager | Accountancy | $160,000 |
Similar to tables and dark tables, use the modifier classes .thead-primary
or .thead-dark
to make colored head.
| ID | Name | Job Title | Degree | Salary |
|---|---|---|---|---|
| 1 | Adrian Monino | Front-End Engineer | Computer Science | $120,000 |
| 2 | Socrates Itumay | Software Engineer | Computer Engineering | $150,000 |
| 3 | Reynante Labares | Product Manager | Business Management | $250,000 |
Use .table-striped
to add zebra-striping to any table row within the tbody.
| ID | Name | Job Title | Degree | Salary |
|---|---|---|---|---|
| 1 | Adrian Monino | Front-End Engineer | Computer Science | $120,000 |
| 2 | Socrates Itumay | Software Engineer | Computer Engineering | $150,000 |
| 3 | Reynante Labares | Product Manager | Business Management | $250,000 |
| 4 | Hamza Macasindil | Software Engineer | Computer Engineering | $140,000 |
| 5 | Roven Galeon | Project Manager | Accountancy | $160,000 |
Add .table-bordered
for borders on all sides of the table and cells.
| ID | Name | Job Title | Degree | Salary |
|---|---|---|---|---|
| 1 | Adrian Monino | Front-End Engineer | Computer Science | $120,000 |
| 2 | Socrates Itumay | Software Engineer | Computer Engineering | $150,000 |
| 3 | Reynante Labares | Product Manager | Business Management | $250,000 |
| 4 | Hamza Macasindil | Software Engineer | Computer Engineering | $140,000 |
| 5 | Roven Galeon | Project Manager | Accountancy | $160,000 |
Add .table-hover
to enable a hover state on table rows within a tbody.
| ID | Name | Job Title | Degree | Salary |
|---|---|---|---|---|
| 1 | Adrian Monino | Front-End Engineer | Computer Science | $120,000 |
| 2 | Socrates Itumay | Software Engineer | Computer Engineering | $150,000 |
| 3 | Reynante Labares | Product Manager | Business Management | $250,000 |
| 4 | Hamza Macasindil | Software Engineer | Computer Engineering | $140,000 |
| 5 | Roven Galeon | Project Manager | Accountancy | $160,000 |
Add .table-sm
to make tables more compact by cutting cell padding in half.
| ID | Name | Job Title | Degree | Salary |
|---|---|---|---|---|
| 1 | Adrian Monino | Front-End Engineer | Computer Science | $120,000 |
| 2 | Socrates Itumay | Software Engineer | Computer Engineering | $150,000 |
| 3 | Reynante Labares | Product Manager | Business Management | $250,000 |
| 4 | Hamza Macasindil | Software Engineer | Computer Engineering | $140,000 |
| 5 | Roven Galeon | Project Manager | Accountancy | $160,000 |
Use contextual classes to color entire table.
| ID | Name | Job Title | Degree | Salary |
|---|---|---|---|---|
| 1 | Adrian Monino | Front-End Engineer | Computer Science | $120,000 |
| 2 | Socrates Itumay | Software Engineer | Computer Engineering | $150,000 |
| 3 | Reynante Labares | Product Manager | Business Management | $250,000 |
| 4 | Hamza Macasindil | Software Engineer | Computer Engineering | $140,000 |
| 5 | Roven Galeon | Project Manager | Accountancy | $160,000 |


Seiverd on Safari
Map of the World
Counties Visited
Biodiversity Hot Spots
Upcoming Trip:
Alaska
Itinerary :
Click Here
Trip Date: August 2018


library(tidyverse)
library(cowplot)
library(viridis)
library(knitr)
library(kableExtra)
knitr::opts_chunk$set(tidy.opts=list(width.cutoff=60),tidy=TRUE, echo = TRUE, message=FALSE, warning=FALSE, fig.align="center", fig.retina = 2)
source("../../IDA/tools/plotting_tools.R")
theme_set(theme_1())
This experiment is a follow up to several other attempted experiments to perturb the DNA bound phenazines in colony biofilms. We tried to treat biofilms with DNase 1 in he underlying agar to chop up the eDNA into smaller pieces. This was somewhat successful when DNase was not incubated in its NEB buffer, which killed the cells. However, the effects were modest, so I tried repeating the experiment with DNase in PBS supplemented with Mg2+, which should further activate the enzyme. Further, I wanted to try the experiment on WT and ∆pelB colonies, since we think that Pel may be binding eDNA and blocking PYO binding sites it may also interfere with the activity of the DNase…?
I have also tried perturbing colony retained phenazines with a competitive intercalator ethidium (also tried propidium). This experiment has worked reasonably well multiple times, although it is complicated to displace WT phenazines, since the cells just seem to make more. Recently I tried exposing ∆phz* to phenazine and an etbr competitor simultaneously and it worked well. However, I only had duplicate measurements and I did not test PCA (only PYO and PCN). Therefore I wanted triplicates this time and also expose to PCA.
Colonies were grown as normal in 6 well plates on 0.2um filter membranes atop agar, incubated in the dark at room temperature. Images were taken on the keyence on days 3 and 4.
∆phz* colonies were inoculated on top of plate wells containing different concentrations of ethidium bromide (etbr) and constant concentrations of phenazines (50uM). The concentrations of etbr used were 0, 10, 100, and 500. Each well contained 500uL of liquid (in PBS 50) added to the bottom before agar was poured on top and mixed.
10mM etbr stock was prepared and filter sterilized. It was diluted 5 fold and then 10 fold to yield 3 different stock solutions of 10mM, 2mM, and 200uM. Each of those stocks was 20x the intended final concentration, so 250uL of each was added to the appropriate well (or PBS only). Then each phenazine (50uM) was added to the wells (~10 - 40uL) and the remaining volume was made up with PBS 50.
Plates were prepared and dried for 1 hr in the biosafety cabinet.
Phenazine stocks were 10mM for PCA in NaOH, 20mM for PCN in DMSO, and 6.79mM for PYO in HCl.
Six Parsek WT colonies and six ∆pelB colonies were grown as usual for three days. For 24 hours, colonies were transferred to fresh agar plate wells containing 25uL DNase or buffer only. The DNase / buffer solutions were allowed to dry for ~5 min, but were still liquid pools on the surface of the agar.
The Buffer was PBS 137mM NaCl pH 7.2 + 5mM MgSO4.
Colonies were resuspended in 800uL PBS 137 (pH 7.2) in eppendorf tubes. Tubes with filter membranes + colonies were vortexed for 1 min each at max speed. This was sufficient to resuspend most of the colonies into a cloudy haze and small bits of biofilm. However for colonies treated with 100uM or 500uM EtBr, the colonies were very tough and the vortex was not sufficient. Next all the membranes were removed from the tubes, and for the colonies that did not come off the membranes they were moved (biofilm + membrane) to a petri dish and the intact biofilm mass was removed from the membrane with tweezers and placed back in the tube.
*Note the PCA treated colonies were treated in the water bath sonicator on high for 5 min in an attempt to resuspend them better. This was not successful and was not performed on the PCN and PYO samples.
The volume of liquid in each tube was measured by pipette. The DNase colonies were easy to resuspend and a p200 was used. The etbr were more difficult to resuspend, so a p1000 was used to grind and further break up the biofilm by pipetting up and down and the volume of that slurry was measured (crudely) in the p1000 (starting from 850uL pipette volume).
Finally all of the biofilm suspensions were centrifuged at 6,000 rcf for 5 min to pellet the cells. 650uL of the supernatant was transferred to fresh tubes. The etbr treated samples had obviously red liquids at 100 and 500uM.
Extracts were defrosted and vortexed briefly before being transferred into spin-X filter columns (600uL). Filter columns were spun at max speed (~16k rcf) for 1.5min. Samples were diluted two fold in LC-MS sample vials (500uL sample + 500uL PBS 137).
Samples were run and processed using the standard method. MS channels were acquired.
First let’s look at the colony volumes to see if there are large differences in colony sizes that may skew our results. Remember these data were acquired simply by pipetting up the entire solution and measuring the volume crudely with a pipette. That means the measurements were extremely susceptible to bubbles that rise to the top of the solution and displace volume that wasn’t due to liquid.
df_vol <- read_csv("data/2019_10_22_colony_volumes.csv")
df_vol %>% kable() %>% kable_styling() %>% scroll_box(height = "300px")
| strain | treatment | phz_added | etbr_added_uM | Replicate | Measured_Volume |
|---|---|---|---|---|---|
| ∆pelB | none | NA | NA | 1 | 700 |
| ∆pelB | none | NA | NA | 2 | 719 |
| ∆pelB | none | NA | NA | 3 | 689 |
| ∆pelB | dnase | NA | NA | 1 | 725 |
| ∆pelB | dnase | NA | NA | 2 | 733 |
| ∆pelB | dnase | NA | NA | 3 | 711 |
| ParWT | none | NA | NA | 1 | 737 |
| ParWT | none | NA | NA | 2 | 771 |
| ParWT | none | NA | NA | 3 | 742 |
| ParWT | dnase | NA | NA | 1 | 735 |
| ParWT | dnase | NA | NA | 2 | 726 |
| ParWT | dnase | NA | NA | 3 | 771 |
| dPHZstar | etbr | PCA | 0uM | 1 | 766 |
| dPHZstar | etbr | PCA | 0uM | 2 | 750 |
| dPHZstar | etbr | PCA | 0uM | 3 | 774 |
| dPHZstar | etbr | PCA | 10uM | 1 | 780 |
| dPHZstar | etbr | PCA | 10uM | 2 | 780 |
| dPHZstar | etbr | PCA | 10uM | 3 | 790 |
| dPHZstar | etbr | PCA | 100uM | 1 | 795 |
| dPHZstar | etbr | PCA | 100uM | 2 | 760 |
| dPHZstar | etbr | PCA | 100uM | 3 | 790 |
| dPHZstar | etbr | PCA | 500uM | 1 | 702 |
| dPHZstar | etbr | PCA | 500uM | 2 | 718 |
| dPHZstar | etbr | PCA | 500uM | 3 | 709 |
| dPHZstar | etbr | PCN | 0uM | 1 | 765 |
| dPHZstar | etbr | PCN | 0uM | 2 | 760 |
| dPHZstar | etbr | PCN | 0uM | 3 | 810 |
| dPHZstar | etbr | PCN | 10uM | 1 | 765 |
| dPHZstar | etbr | PCN | 10uM | 2 | 752 |
| dPHZstar | etbr | PCN | 10uM | 3 | 690 |
| dPHZstar | etbr | PCN | 100uM | 1 | 774 |
| dPHZstar | etbr | PCN | 100uM | 2 | 738 |
| dPHZstar | etbr | PCN | 100uM | 3 | 760 |
| dPHZstar | etbr | PCN | 500uM | 1 | NA |
| dPHZstar | etbr | PCN | 500uM | 2 | 720 |
| dPHZstar | etbr | PCN | 500uM | 3 | 670 |
| dPHZstar | etbr | PYO | 0uM | 1 | 780 |
| dPHZstar | etbr | PYO | 0uM | 2 | 770 |
| dPHZstar | etbr | PYO | 0uM | 3 | 770 |
| dPHZstar | etbr | PYO | 10uM | 1 | 800 |
| dPHZstar | etbr | PYO | 10uM | 2 | 785 |
| dPHZstar | etbr | PYO | 10uM | 3 | 795 |
| dPHZstar | etbr | PYO | 100uM | 1 | 785 |
| dPHZstar | etbr | PYO | 100uM | 2 | 725 |
| dPHZstar | etbr | PYO | 100uM | 3 | 735 |
| dPHZstar | etbr | PYO | 500uM | 1 | 744 |
| dPHZstar | etbr | PYO | 500uM | 2 | 715 |
| dPHZstar | etbr | PYO | 500uM | 3 | 735 |
First let’s look at the DNase treated colonies:
ggplot(df_vol %>% filter(treatment != "etbr"), aes(x = strain,
y = Measured_Volume, fill = treatment)) + geom_jitter(shape = 21,
width = 0.1)
You can see that there’s a lot of overlap between the treated and untreated colonies, however, the WT colonies may be slightly larger overall. Doesn’t seem like volume will be an issue, which makes sense since the colonies look pretty identical.
Now let’s look at the ethidium treated colonies:
df_vol$etbr_added_uM = factor(df_vol$etbr_added_uM)
levels(df_vol$etbr_added_uM) = c("0uM", "10uM", "100uM", "500uM")
ggplot(df_vol %>% filter(treatment == "etbr"), aes(x = etbr_added_uM,
y = Measured_Volume, fill = etbr_added_uM)) + geom_jitter(shape = 21,
width = 0.1) + facet_wrap(~phz_added, scales = "free") +
scale_fill_viridis_d(guide = F)
Here we can see a few things.
First, the variation in the measurements between groups is pretty high compared to the DNased colonies. One thing to note is that the DNased colonies were measured with a p200, while these colonies were measured with the p1000 and there may just be an accuracy difference involved in the pipette itself or in the process of filling the tip with liquid (e.g. more bubbles?). The reason I used a different pipette was because the etbr treated colonies were relatively hard to resuspend, so I ended up sort of shearing the biofilm material by pipetting with the p1000 and I was able to suck up larger chunks using the larger tips.
Second, it looks like the 500uM etbr condition had smaller measured volumes for all three of the phenazines, although there’s some variability. This sort of makes sense based on morphology, the etbr colonies all had a compact morphology, but they did seem to be quite thick. However, I think there’s something else going on.
One other reason these colonies may have had consistently smaller volumes, is that they were so hard to get off the membrane that I ended up removing the biofilm / membrane post vortex and transferring to a petri dish. Then I physically removed the biofilm from the membrane using sterilized tweezers. When removing the biofilm and membrane I think a significant amount of liquid was lost. Now the question is - would that skew the LC-MS measurement? Possibly.
If most of the phenazine was already extracted upon vortexing and some of that liquid were lost then the measurement would not be affected. If very little of the phenazine was already extracted and most of it was still in the intact colony, then perhaps the loss of volume would actually skew the concentration slightly higher…I think that both of these effects should be pretty small, but importantly I would say it’s inconclusive whether or not the 500uM etbr colonies actually contained smaller biofilm volumes than the other colonies. As I thought before, I think we don’t really have the resolution to say. These measurements are just not very sensitive…also note that all these volumes are below the initial 800uL, because a significant volume of liquid is lost on all the membranes upon removal (even ones that come out clean). It’s unclear if that loss component is even constant…
Let’s move forward to the LC-MS measurements with this in the back of our minds, but ultimately few conclusions drawn.
Here’s the DNase treated colonies. I treated both the ∆pelB mutant and the parsek WT strain (background for mutant).
df_dnase <- read_csv("data/2019_10_22_colony_dnase_data.csv")
df_dnase %>% kable() %>% kable_styling() %>% scroll_box(height = "300px")
| measured_phenazine | strain | treatment | day | material | rep | RT | Area | Channel Name | Amount |
|---|---|---|---|---|---|---|---|---|---|
| PYO | dPEL | none | D4 | cells | 1 | 6.060 | 68442 | 313.0nm | 2.585 |
| PCA | dPEL | none | D4 | cells | 1 | 2.925 | 10657 | 364.0nm | 0.688 |
| PCN | dPEL | none | D4 | cells | 1 | 8.886 | 226830 | 364.0nm | 17.304 |
| PYO | dPEL | none | D4 | cells | 2 | 6.067 | 70378 | 313.0nm | 2.658 |
| PCA | dPEL | none | D4 | cells | 2 | 2.894 | 9822 | 364.0nm | 0.634 |
| PCN | dPEL | none | D4 | cells | 2 | 8.897 | 215873 | 364.0nm | 16.468 |
| PYO | dPEL | none | D4 | cells | 3 | 6.048 | 73642 | 313.0nm | 2.782 |
| PCA | dPEL | none | D4 | cells | 3 | 2.890 | 9854 | 364.0nm | 0.636 |
| PCN | dPEL | none | D4 | cells | 3 | 8.876 | 219029 | 364.0nm | 16.709 |
| PYO | dPEL | dnase | D4 | cells | 1 | 6.062 | 79850 | 313.0nm | 3.016 |
| PCA | dPEL | dnase | D4 | cells | 1 | 2.890 | 10384 | 364.0nm | 0.670 |
| PCN | dPEL | dnase | D4 | cells | 1 | 8.888 | 235254 | 364.0nm | 17.946 |
| PYO | dPEL | dnase | D4 | cells | 2 | 6.054 | 87142 | 313.0nm | 3.292 |
| PCA | dPEL | dnase | D4 | cells | 2 | 2.887 | 10694 | 364.0nm | 0.690 |
| PCN | dPEL | dnase | D4 | cells | 2 | 8.882 | 238178 | 364.0nm | 18.170 |
| PYO | dPEL | dnase | D4 | cells | 3 | 6.057 | 79659 | 313.0nm | 3.009 |
| PCA | dPEL | dnase | D4 | cells | 3 | 2.892 | 9559 | 364.0nm | 0.617 |
| PCN | dPEL | dnase | D4 | cells | 3 | 8.889 | 224853 | 364.0nm | 17.153 |
| PYO | parWT | none | D4 | cells | 1 | 6.058 | 112620 | 313.0nm | 4.254 |
| PCA | parWT | none | D4 | cells | 1 | 2.884 | 12221 | 364.0nm | 0.788 |
| PCN | parWT | none | D4 | cells | 1 | 8.882 | 221277 | 364.0nm | 16.880 |
| PYO | parWT | none | D4 | cells | 2 | 6.054 | 113343 | 313.0nm | 4.281 |
| PCA | parWT | none | D4 | cells | 2 | 2.890 | 11791 | 364.0nm | 0.761 |
| PCN | parWT | none | D4 | cells | 2 | 8.885 | 235562 | 364.0nm | 17.970 |
| PYO | parWT | none | D4 | cells | 3 | 6.050 | 115030 | 313.0nm | 4.345 |
| PCA | parWT | none | D4 | cells | 3 | 2.899 | 12012 | 364.0nm | 0.775 |
| PCN | parWT | none | D4 | cells | 3 | 8.884 | 220430 | 364.0nm | 16.816 |
| PYO | parWT | dnase | D4 | cells | 1 | 6.035 | 142692 | 313.0nm | 5.390 |
| PCA | parWT | dnase | D4 | cells | 1 | 2.903 | 12500 | 364.0nm | 0.807 |
| PCN | parWT | dnase | D4 | cells | 1 | 8.867 | 265215 | 364.0nm | 20.232 |
| PYO | parWT | dnase | D4 | cells | 2 | 6.033 | 139603 | 313.0nm | 5.273 |
| PCA | parWT | dnase | D4 | cells | 2 | 2.889 | 13201 | 364.0nm | 0.852 |
| PCN | parWT | dnase | D4 | cells | 2 | 8.865 | 261564 | 364.0nm | 19.954 |
| PYO | parWT | dnase | D4 | cells | 3 | 6.050 | 145352 | 313.0nm | 5.491 |
| PCA | parWT | dnase | D4 | cells | 3 | 2.912 | 12819 | 364.0nm | 0.827 |
| PCN | parWT | dnase | D4 | cells | 3 | 8.885 | 257027 | 364.0nm | 19.607 |
| PYO | PBS | blank | blank | blank | 1 | 6.068 | 351 | 313.0nm | 0.013 |
| PCA | PBS | blank | blank | blank | 1 | 2.956 | 228 | 364.0nm | 0.015 |
| PCN | PBS | blank | blank | blank | 1 | 8.879 | 997 | 364.0nm | 0.076 |
| PYO | dPEL | none | D4 | agar | 1 | 6.053 | 8584 | 313.0nm | 0.324 |
| PCA | dPEL | none | D4 | agar | 1 | 2.913 | 31484 | 364.0nm | 2.031 |
| PCN | dPEL | none | D4 | agar | 1 | 8.884 | 85982 | 364.0nm | 6.559 |
| PYO | dPEL | none | D4 | agar | 2 | 6.044 | 8962 | 313.0nm | 0.339 |
| PCA | dPEL | none | D4 | agar | 2 | 2.898 | 30886 | 364.0nm | 1.993 |
| PCN | dPEL | none | D4 | agar | 2 | 8.875 | 78309 | 364.0nm | 5.974 |
| PYO | dPEL | none | D4 | agar | 3 | 6.041 | 9625 | 313.0nm | 0.364 |
| PCA | dPEL | none | D4 | agar | 3 | 2.895 | 29918 | 364.0nm | 1.930 |
| PCN | dPEL | none | D4 | agar | 3 | 8.872 | 65806 | 364.0nm | 5.020 |
| PYO | dPEL | dnase | D4 | agar | 1 | 6.057 | 9722 | 313.0nm | 0.367 |
| PCA | dPEL | dnase | D4 | agar | 1 | 2.892 | 33419 | 364.0nm | 2.156 |
| PCN | dPEL | dnase | D4 | agar | 1 | 8.885 | 76194 | 364.0nm | 5.813 |
| PYO | dPEL | dnase | D4 | agar | 2 | 6.050 | 8473 | 313.0nm | 0.320 |
| PCA | dPEL | dnase | D4 | agar | 2 | 2.897 | 30950 | 364.0nm | 1.997 |
| PCN | dPEL | dnase | D4 | agar | 2 | 8.879 | 80942 | 364.0nm | 6.175 |
| PYO | dPEL | dnase | D4 | agar | 3 | 6.051 | 8515 | 313.0nm | 0.322 |
| PCA | dPEL | dnase | D4 | agar | 3 | 2.906 | 29703 | 364.0nm | 1.916 |
| PCN | dPEL | dnase | D4 | agar | 3 | 8.876 | 84786 | 364.0nm | 6.468 |
| PYO | parWT | none | D4 | agar | 1 | 6.045 | 15368 | 313.0nm | 0.581 |
| PCA | parWT | none | D4 | agar | 1 | 2.903 | 41544 | 364.0nm | 2.680 |
| PCN | parWT | none | D4 | agar | 1 | 8.877 | 78585 | 364.0nm | 5.995 |
| PYO | parWT | none | D4 | agar | 2 | 6.035 | 17317 | 313.0nm | 0.654 |
| PCA | parWT | none | D4 | agar | 2 | 2.894 | 43318 | 364.0nm | 2.795 |
| PCN | parWT | none | D4 | agar | 2 | 8.868 | 91483 | 364.0nm | 6.979 |
| PYO | parWT | none | D4 | agar | 3 | 6.047 | 14197 | 313.0nm | 0.536 |
| PCA | parWT | none | D4 | agar | 3 | 2.878 | 37931 | 364.0nm | 2.447 |
| PCN | parWT | none | D4 | agar | 3 | 8.880 | 77679 | 364.0nm | 5.926 |
| PYO | parWT | dnase | D4 | agar | 1 | 6.040 | 22570 | 313.0nm | 0.853 |
| PCA | parWT | dnase | D4 | agar | 1 | 2.879 | 59650 | 364.0nm | 3.849 |
| PCN | parWT | dnase | D4 | agar | 1 | 8.876 | 78661 | 364.0nm | 6.001 |
| PYO | parWT | dnase | D4 | agar | 2 | 6.048 | 20649 | 313.0nm | 0.780 |
| PCA | parWT | dnase | D4 | agar | 2 | 2.884 | 52045 | 364.0nm | 3.358 |
| PCN | parWT | dnase | D4 | agar | 2 | 8.882 | 67342 | 364.0nm | 5.137 |
| PYO | parWT | dnase | D4 | agar | 3 | 6.051 | 19935 | 313.0nm | 0.753 |
| PCA | parWT | dnase | D4 | agar | 3 | 2.883 | 51472 | 364.0nm | 3.321 |
| PCN | parWT | dnase | D4 | agar | 3 | 8.883 | 113146 | 364.0nm | 8.631 |
| PCA | PBS | blank | blank | blank | 1 | 2.926 | 220 | 364.0nm | 0.014 |
| PCN | PBS | blank | blank | blank | 1 | 8.885 | 551 | 364.0nm | 0.042 |
Let’s convert our measurements into biofilm and agar concentrations and also calculate the retention ratios.
# Convert to concentrations
df_dnase_conc <- df_dnase %>% filter(material != "blank") %>%
mutate(phz_conc = case_when(material == "cells" ~ Amount *
2 * 800/60, material == "agar" ~ Amount * 2 * 8/5))
# formatting levels for plotting
# df_dnase_conc$treatment <- factor(df_dnase_conc$treatment,
# levels = c('none','dnase') ) df_dnase_conc$strain <-
# factor(df_dnase_conc$strain, levels = c('parWT','dPEL'))
# Calculate retentions ratios
df_dnase_ratio <- left_join(df_dnase_conc %>% filter(material ==
"cells"), df_dnase_conc %>% filter(material == "agar"), by = c("measured_phenazine",
"strain", "treatment", "day", "rep"), suffix = c("_cells",
"_agar")) %>% mutate(ret_ratio = phz_conc_cells/phz_conc_agar)
And now let’s compare the treated and untreated WT biofilms:
# ggplot(df_dnase %>% filter(strain == 'parWT'), aes(x =
# treatment, y = Amount, fill = treatment)) +
# geom_jitter(shape = 21, width = 0.1) +
# facet_wrap(material~measured_phenazine, scales = 'free') +
# ylim(0,NA)
ggplot(df_dnase_conc %>% filter(strain == "parWT"), aes(x = treatment,
y = phz_conc, fill = treatment)) + geom_jitter(shape = 21,
width = 0.1) + facet_wrap(material ~ measured_phenazine,
scales = "free") + ylim(0, NA)
Interesting, looks like there might be some differences, but not in the direction we expected. Let’s look at the data in terms of the retention ratios.
ggplot(df_dnase_ratio %>% filter(strain == "parWT"), aes(x = treatment,
y = ret_ratio, fill = treatment)) + geom_jitter(shape = 21,
width = 0.1) + facet_wrap(~measured_phenazine, scales = "free") +
ylim(0, NA)
Here the retention ratios all look pretty similar…if anything there was maybe an effect on PCA, which we do not expect with DNase.
Let’s see if the pel mutant looks any different.
ggplot(df_dnase_conc %>% filter(strain == "dPEL"), aes(x = treatment,
y = phz_conc, fill = treatment)) + geom_jitter(shape = 21,
width = 0.1) + facet_wrap(material ~ measured_phenazine,
scales = "free") + ylim(0, NA)
Seems pretty similar to WT. Here’s the retention ratios:
ggplot(df_dnase_ratio %>% filter(strain == "dPEL"), aes(x = treatment,
y = ret_ratio, fill = treatment)) + geom_jitter(shape = 21,
width = 0.1) + facet_wrap(~measured_phenazine, scales = "free") +
ylim(0, NA)
Same story as the WT…basically no differences. If anything more PYO was retained in the treated colony.
This is pretty surprising, but basically the DNase either had no effect or not the same effect as before. I can think of three possible reasons:
I don’t know what the answer is, but it may be worth repeating the DNase experiment exactly as done previously.
Do our results conform to the past measurements of these strains?
ggplot(df_dnase_conc %>% filter(treatment == "none"), aes(x = strain,
y = Amount, fill = treatment)) + geom_jitter(shape = 21,
width = 0.1) + facet_wrap(material ~ measured_phenazine,
scales = "free") + ylim(0, NA)
Looks like there are some differences, let’s transform into ratios:
ggplot(df_dnase_ratio %>% filter(treatment == "none"), aes(x = strain,
y = ret_ratio, fill = treatment)) + geom_jitter(shape = 21,
width = 0.1) + facet_wrap(~measured_phenazine, scales = "free") +
ylim(0, NA)
Again, very small differences, not what we saw before when measuring these colonies. It’s unclear if this is normal variation or this is due to the spotting of DNase and the MgSO4? It may be worth repeating these WT vs. ∆pel measurements under normal conditions again.
Let’s go ahead and take a look at the ethidium bromide data:
df_etbr <- read_csv("data/2019_10_22_colony_etbr_data.csv")
<<<<<<< HEAD
df_etbr %>% kable() %>% kable_styling() %>% scroll_box(height = "300px")
| measured_phenazine | strain | phz_added_uM | phz_added | etbr_added_uM | etbr_added_int | etbr | rep | RT | Area | Channel Name | Amount |
|---|---|---|---|---|---|---|---|---|---|---|---|
| PYO | dPHZstar | 50uM | PYO | 0uM | 0 | etbr | 1 | 6.038 | 348084 | 313.0nm | 13.149 |
| PCA | dPHZstar | 50uM | PYO | 0uM | 0 | etbr | 1 | 2.846 | 31 | 364.0nm | 0.002 |
| PCN | dPHZstar | 50uM | PYO | 0uM | 0 | etbr | 1 | 8.706 | 517 | 364.0nm | 0.039 |
| PYO | dPHZstar | 50uM | PYO | 0uM | 0 | etbr | 2 | 6.034 | 332025 | 313.0nm | 12.542 |
| PCA | dPHZstar | 50uM | PYO | 0uM | 0 | etbr | 2 | 3.015 | 22 | 364.0nm | 0.001 |
| PCN | dPHZstar | 50uM | PYO | 0uM | 0 | etbr | 2 | 8.694 | 614 | 364.0nm | 0.047 |
| PYO | dPHZstar | 50uM | PYO | 0uM | 0 | etbr | 3 | 6.039 | 382146 | 313.0nm | 14.435 |
| PCA | dPHZstar | 50uM | PYO | 0uM | 0 | etbr | 3 | 2.974 | 39 | 364.0nm | 0.003 |
| PCN | dPHZstar | 50uM | PYO | 0uM | 0 | etbr | 3 | 8.701 | 436 | 364.0nm | 0.033 |
| PYO | dPHZstar | 50uM | PYO | 10uM | 10 | etbr | 1 | 6.042 | 450658 | 313.0nm | 17.023 |
| PCA | dPHZstar | 50uM | PYO | 10uM | 10 | etbr | 1 | 3.088 | 32 | 364.0nm | 0.002 |
| PCN | dPHZstar | 50uM | PYO | 10uM | 10 | etbr | 1 | 8.776 | 319 | 364.0nm | 0.024 |
| PYO | dPHZstar | 50uM | PYO | 10uM | 10 | etbr | 2 | 6.045 | 371913 | 313.0nm | 14.049 |
| PCA | dPHZstar | 50uM | PYO | 10uM | 10 | etbr | 2 | 3.118 | 20 | 364.0nm | 0.001 |
| PCN | dPHZstar | 50uM | PYO | 10uM | 10 | etbr | 2 | 8.705 | 309 | 364.0nm | 0.024 |
| PYO | dPHZstar | 50uM | PYO | 10uM | 10 | etbr | 3 | 6.048 | 452176 | 313.0nm | 17.081 |
| PCA | dPHZstar | 50uM | PYO | 10uM | 10 | etbr | 3 | 2.947 | 77 | 364.0nm | 0.005 |
| PCN | dPHZstar | 50uM | PYO | 10uM | 10 | etbr | 3 | 8.792 | 361 | 364.0nm | 0.028 |
| PYO | dPHZstar | 50uM | PYO | 100uM | 100 | etbr | 1 | 6.046 | 356788 | 313.0nm | 13.477 |
| PCA | dPHZstar | 50uM | PYO | 100uM | 100 | etbr | 1 | 3.100 | 48 | 364.0nm | 0.003 |
| PCN | dPHZstar | 50uM | PYO | 100uM | 100 | etbr | 1 | 8.793 | 493 | 364.0nm | 0.038 |
| PYO | dPHZstar | 50uM | PYO | 100uM | 100 | etbr | 2 | 6.024 | 209776 | 313.0nm | 7.924 |
| PCA | dPHZstar | 50uM | PYO | 100uM | 100 | etbr | 2 | 3.079 | 55 | 364.0nm | 0.004 |
| PCN | dPHZstar | 50uM | PYO | 100uM | 100 | etbr | 2 | 8.781 | 610 | 364.0nm | 0.047 |
| PYO | dPHZstar | 50uM | PYO | 100uM | 100 | etbr | 3 | 6.054 | 376108 | 313.0nm | 14.207 |
| PCA | dPHZstar | 50uM | PYO | 100uM | 100 | etbr | 3 | 2.715 | 54 | 364.0nm | 0.003 |
| PCN | dPHZstar | 50uM | PYO | 100uM | 100 | etbr | 3 | 8.802 | 582 | 364.0nm | 0.044 |
| PYO | dPHZstar | 50uM | PYO | 500uM | 500 | etbr | 1 | 6.048 | 243798 | 313.0nm | 9.209 |
| PCA | dPHZstar | 50uM | PYO | 500uM | 500 | etbr | 1 | 2.780 | 79 | 364.0nm | 0.005 |
| PCN | dPHZstar | 50uM | PYO | 500uM | 500 | etbr | 1 | 8.802 | 1009 | 364.0nm | 0.077 |
| PYO | dPHZstar | 50uM | PYO | 500uM | 500 | etbr | 2 | 6.057 | 243376 | 313.0nm | 9.193 |
| PCA | dPHZstar | 50uM | PYO | 500uM | 500 | etbr | 2 | 2.914 | 83 | 364.0nm | 0.005 |
| PCN | dPHZstar | 50uM | PYO | 500uM | 500 | etbr | 2 | 8.812 | 590 | 364.0nm | 0.045 |
| PYO | dPHZstar | 50uM | PYO | 500uM | 500 | etbr | 3 | 6.035 | 260997 | 313.0nm | 9.859 |
| PCA | dPHZstar | 50uM | PYO | 500uM | 500 | etbr | 3 | 2.654 | 34 | 364.0nm | 0.002 |
| PCN | dPHZstar | 50uM | PYO | 500uM | 500 | etbr | 3 | 8.795 | 1608 | 364.0nm | 0.123 |
| PYO | PBS | blank | blank | blank | NA | blank | 1 | 6.037 | 353 | 313.0nm | 0.013 |
| PCA | PBS | blank | blank | blank | NA | blank | 1 | 2.942 | 218 | 364.0nm | 0.014 |
| PCN | PBS | blank | blank | blank | NA | blank | 1 | 8.792 | 808 | 364.0nm | 0.062 |
| PYO | dPHZstar | 50uM | PCN | 0uM | 0 | etbr | 1 | 6.045 | 45 | 313.0nm | 0.002 |
| PCA | dPHZstar | 50uM | PCN | 0uM | 0 | etbr | 1 | 3.085 | 45 | 364.0nm | 0.003 |
| PCN | dPHZstar | 50uM | PCN | 0uM | 0 | etbr | 1 | 8.869 | 33920 | 364.0nm | 2.588 |
| PCA | dPHZstar | 50uM | PCN | 0uM | 0 | etbr | 2 | 3.091 | 40 | 364.0nm | 0.003 |
| PCN | dPHZstar | 50uM | PCN | 0uM | 0 | etbr | 2 | 8.872 | 34694 | 364.0nm | 2.647 |
| PCA | dPHZstar | 50uM | PCN | 0uM | 0 | etbr | 3 | 3.141 | 46 | 364.0nm | 0.003 |
| PCN | dPHZstar | 50uM | PCN | 0uM | 0 | etbr | 3 | 8.862 | 36553 | 364.0nm | 2.788 |
| PCA | dPHZstar | 50uM | PCN | 10uM | 10 | etbr | 1 | 2.784 | 34 | 364.0nm | 0.002 |
| PCN | dPHZstar | 50uM | PCN | 10uM | 10 | etbr | 1 | 8.867 | 32268 | 364.0nm | 2.462 |
| PCA | dPHZstar | 50uM | PCN | 10uM | 10 | etbr | 2 | 2.654 | 28 | 364.0nm | 0.002 |
| PCN | dPHZstar | 50uM | PCN | 10uM | 10 | etbr | 2 | 8.872 | 33605 | 364.0nm | 2.564 |
| PCA | dPHZstar | 50uM | PCN | 10uM | 10 | etbr | 3 | 2.663 | 49 | 364.0nm | 0.003 |
| PCN | dPHZstar | 50uM | PCN | 10uM | 10 | etbr | 3 | 8.869 | 33102 | 364.0nm | 2.525 |
| PYO | dPHZstar | 50uM | PCN | 100uM | 100 | etbr | 1 | 6.010 | 21 | 313.0nm | 0.001 |
| PCA | dPHZstar | 50uM | PCN | 100uM | 100 | etbr | 1 | 2.776 | 48 | 364.0nm | 0.003 |
| PCN | dPHZstar | 50uM | PCN | 100uM | 100 | etbr | 1 | 8.859 | 24916 | 364.0nm | 1.901 |
| PYO | dPHZstar | 50uM | PCN | 100uM | 100 | etbr | 2 | 6.133 | 17 | 313.0nm | 0.001 |
| PCA | dPHZstar | 50uM | PCN | 100uM | 100 | etbr | 2 | 2.795 | 54 | 364.0nm | 0.003 |
| PCN | dPHZstar | 50uM | PCN | 100uM | 100 | etbr | 2 | 8.870 | 27055 | 364.0nm | 2.064 |
| PCA | dPHZstar | 50uM | PCN | 100uM | 100 | etbr | 3 | 2.917 | 39 | 364.0nm | 0.003 |
| PCN | dPHZstar | 50uM | PCN | 100uM | 100 | etbr | 3 | 8.864 | 24836 | 364.0nm | 1.895 |
| PCA | dPHZstar | 50uM | PCN | 500uM | 500 | etbr | 1 | 2.913 | 35 | 364.0nm | 0.002 |
| PCN | dPHZstar | 50uM | PCN | 500uM | 500 | etbr | 1 | 8.874 | 35586 | 364.0nm | 2.715 |
| PYO | dPHZstar | 50uM | PCN | 500uM | 500 | etbr | 2 | 5.973 | 15 | 313.0nm | 0.001 |
| PCA | dPHZstar | 50uM | PCN | 500uM | 500 | etbr | 2 | 2.696 | 42 | 364.0nm | 0.003 |
| PCN | dPHZstar | 50uM | PCN | 500uM | 500 | etbr | 2 | 8.872 | 35579 | 364.0nm | 2.714 |
| PCA | dPHZstar | 50uM | PCN | 500uM | 500 | etbr | 3 | 2.984 | 43 | 364.0nm | 0.003 |
| PCN | dPHZstar | 50uM | PCN | 500uM | 500 | etbr | 3 | 8.870 | 36594 | 364.0nm | 2.792 |
| PYO | PBS | blank | blank | blank | NA | blank | 1 | 6.156 | 147 | 313.0nm | 0.006 |
| PCA | PBS | blank | blank | blank | NA | blank | 1 | 2.701 | 143 | 364.0nm | 0.009 |
| PCN | PBS | blank | blank | blank | NA | blank | 1 | 8.765 | 759 | 364.0nm | 0.058 |
| PYO | dPHZstar | 50uM | PCA | 0uM | 0 | etbr | 1 | 5.986 | 14 | 313.0nm | 0.001 |
| PCA | dPHZstar | 50uM | PCA | 0uM | 0 | etbr | 1 | 2.930 | 7042 | 364.0nm | 0.454 |
| PCN | dPHZstar | 50uM | PCA | 0uM | 0 | etbr | 1 | 8.698 | 996 | 364.0nm | 0.076 |
| PYO | dPHZstar | 50uM | PCA | 0uM | 0 | etbr | 2 | 5.916 | 19 | 313.0nm | 0.001 |
| PCA | dPHZstar | 50uM | PCA | 0uM | 0 | etbr | 2 | 2.902 | 6512 | 364.0nm | 0.420 |
| PCN | dPHZstar | 50uM | PCA | 0uM | 0 | etbr | 2 | 8.707 | 1068 | 364.0nm | 0.081 |
| PCA | dPHZstar | 50uM | PCA | 0uM | 0 | etbr | 3 | 2.907 | 6579 | 364.0nm | 0.424 |
| PCN | dPHZstar | 50uM | PCA | 0uM | 0 | etbr | 3 | 8.697 | 1102 | 364.0nm | 0.084 |
| PCA | dPHZstar | 50uM | PCA | 10uM | 10 | etbr | 1 | 2.915 | 6397 | 364.0nm | 0.413 |
| PCN | dPHZstar | 50uM | PCA | 10uM | 10 | etbr | 1 | 8.690 | 899 | 364.0nm | 0.069 |
| PCA | dPHZstar | 50uM | PCA | 10uM | 10 | etbr | 2 | 2.914 | 6321 | 364.0nm | 0.408 |
| PCN | dPHZstar | 50uM | PCA | 10uM | 10 | etbr | 2 | 8.711 | 980 | 364.0nm | 0.075 |
| PCA | dPHZstar | 50uM | PCA | 10uM | 10 | etbr | 3 | 2.912 | 6623 | 364.0nm | 0.427 |
| PCN | dPHZstar | 50uM | PCA | 10uM | 10 | etbr | 3 | 8.706 | 1076 | 364.0nm | 0.082 |
| PYO | dPHZstar | 50uM | PCA | 100uM | 100 | etbr | 1 | 6.090 | 26 | 313.0nm | 0.001 |
| PCA | dPHZstar | 50uM | PCA | 100uM | 100 | etbr | 1 | 2.909 | 6223 | 364.0nm | 0.402 |
| PCN | dPHZstar | 50uM | PCA | 100uM | 100 | etbr | 1 | 8.896 | 574 | 364.0nm | 0.044 |
| PYO | dPHZstar | 50uM | PCA | 100uM | 100 | etbr | 2 | 6.039 | 16 | 313.0nm | 0.001 |
| PCA | dPHZstar | 50uM | PCA | 100uM | 100 | etbr | 2 | 2.910 | 6658 | 364.0nm | 0.430 |
| PCN | dPHZstar | 50uM | PCA | 100uM | 100 | etbr | 2 | 8.716 | 491 | 364.0nm | 0.037 |
| PCA | dPHZstar | 50uM | PCA | 100uM | 100 | etbr | 3 | 2.911 | 6127 | 364.0nm | 0.395 |
| PCN | dPHZstar | 50uM | PCA | 100uM | 100 | etbr | 3 | 8.911 | 526 | 364.0nm | 0.040 |
| PCA | dPHZstar | 50uM | PCA | 500uM | 500 | etbr | 1 | 2.910 | 8754 | 364.0nm | 0.565 |
| PCN | dPHZstar | 50uM | PCA | 500uM | 500 | etbr | 1 | 8.919 | 616 | 364.0nm | 0.047 |
| PCA | dPHZstar | 50uM | PCA | 500uM | 500 | etbr | 2 | 2.934 | 9064 | 364.0nm | 0.585 |
| PCN | dPHZstar | 50uM | PCA | 500uM | 500 | etbr | 2 | 8.932 | 540 | 364.0nm | 0.041 |
| PCA | dPHZstar | 50uM | PCA | 500uM | 500 | etbr | 3 | 2.939 | 7969 | 364.0nm | 0.514 |
| PCN | dPHZstar | 50uM | PCA | 500uM | 500 | etbr | 3 | 8.930 | 570 | 364.0nm | 0.043 |
| PYO | PBS | blank | blank | blank | NA | blank | 1 | 6.132 | 146 | 313.0nm | 0.006 |
| PCA | PBS | blank | blank | blank | NA | blank | 1 | 3.000 | 79 | 364.0nm | 0.005 |
| PCN | PBS | blank | blank | blank | NA | blank | 1 | 8.781 | 678 | 364.0nm | 0.052 |
Here’s a first plot of the data:
ggplot(df_etbr, aes(x = factor(etbr_added_int), y = Amount, fill = factor(etbr_added_int))) +
geom_jitter(shape = 21, width = 0.1) + facet_wrap(~phz_added,
scales = "free") + scale_fill_viridis_d()
Everything looks pretty good, there are three points detected for each condition, any other time a phenazine was falsely detected its basically at zero. The values for the blanks are also near zero.
Now let’s convert into biofilm concentrations and make our final plot:
======= ggplot(df_etbr, aes(x = factor(etbr_added_int), y = Amount, fill = factor(etbr_added_int))) + geom_jitter(shape = 21, width = 0.1) + facet_wrap(~phz_added, scales = "free") + scale_fill_viridis_d() >>>>>>> 2dc5af45939f130d8a389a2be60f03ef33d678cedf_etbr_conc <- df_etbr %>% filter(phz_added != "blank") %>%
filter(measured_phenazine == phz_added) %>% mutate(phz_conc = Amount *
2 * 800/60) %>% group_by(measured_phenazine, phz_added, etbr_added_uM) %>%
mutate(mean = mean(phz_conc))
ggplot(df_etbr_conc, aes(x = factor(etbr_added_int), y = phz_conc,
fill = factor(etbr_added_int))) + geom_col(data = . %>% filter(rep ==
<<<<<<< HEAD
"1"), aes(y = mean), fill = "light gray") + geom_jitter(shape = 21,
width = 0.1) + facet_wrap(~phz_added, scales = "free") +
scale_fill_viridis_d() + ylim(0, NA)
First let’s look at the PCA. The only thing that jumps out is that the 500uM EtBr colony seems to have more PCA than the other conditions. This is not expected, but it may indecate that we are actually biasing that last sample by the way we are extracting, by resuspending the same amount of PCA in a smaller volume. However, a back of the envelope estimate is that the volume changed by ~ 15% and it looks more like a 30% difference here, so I don’t think that explains all of it.
Anyway, it looks like the PCN colonies lose a little PCN as the etbr reaches 100, but then 500 shows no difference. PYO shows a pattern more similar to past data, but it’s still not perfect.
======= 1), aes(y = mean), fill = "light gray") + geom_jitter(shape = 21, width = 0.1) + facet_wrap(~phz_added, scales = "free") + scale_fill_viridis_d() + ylim(0, NA) >>>>>>> 2dc5af45939f130d8a389a2be60f03ef33d678ceVery little about these experimental results conformed to my expectations. It’s unclear whether this was due to changes in experimental setup or true variability in the results. It may be worth repeating these experiments again the way that they were done previously.
Specific to the EtBr experiment, it may also be worth trying etbr concentrations lower than 500 or even 100. It’s not ideal that the colonies have a dramatically different morphology / texture…could suggest the etbr is doing something unintended.
If you repeat the etbr experiment, perhaps try to resuspend the tough etbr colonies using the p1000, while the colony is still on the membrane in the tube. This would prevent any difference in processing involved in taking the colony / membrane out of the tube.
sessionInfo()
## R version 3.5.2 (2018-12-20)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Mojave 10.14.6
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] kableExtra_1.0.1 knitr_1.23 viridis_0.5.1
## [4] viridisLite_0.3.0 cowplot_0.9.4 forcats_0.3.0
## [7] stringr_1.3.1 dplyr_0.8.1 purrr_0.2.5
## [10] readr_1.3.1 tidyr_0.8.2 tibble_2.1.3
## [13] ggplot2_3.2.0 tidyverse_1.2.1
##
## loaded via a namespace (and not attached):
## [1] tidyselect_0.2.5 xfun_0.7 haven_2.0.0 lattice_0.20-38
## [5] colorspace_1.4-0 generics_0.0.2 htmltools_0.3.6 yaml_2.2.0
## [9] rlang_0.4.0 pillar_1.3.1 glue_1.3.1 withr_2.1.2
## [13] modelr_0.1.2 readxl_1.2.0 munsell_0.5.0 gtable_0.2.0
## [17] cellranger_1.1.0 rvest_0.3.2 evaluate_0.14 labeling_0.3
## [21] highr_0.7 broom_0.5.1 Rcpp_1.0.1 scales_1.0.0
## [25] backports_1.1.3 formatR_1.5 webshot_0.5.1 jsonlite_1.6
## [29] gridExtra_2.3 hms_0.4.2 digest_0.6.18 stringi_1.2.4
## [33] grid_3.5.2 cli_1.1.0 tools_3.5.2 magrittr_1.5
## [37] lazyeval_0.2.1 crayon_1.3.4 pkgconfig_2.0.2 xml2_1.2.0
## [41] lubridate_1.7.4 assertthat_0.2.1 rmarkdown_1.13 httr_1.4.0
## [45] rstudioapi_0.9.0 R6_2.4.0 nlme_3.1-140 compiler_3.5.2


This snac used by client to request/update various information (request user info,
update user info, people search, send sms, request parameters, request
offline messages, unregistration). ICQ server should reply using
SNAC(15,03).
| 00 15 |
|
word |
|
SNAC family |
| 00 02 |
|
word |
|
SNAC subtype |
| 00 00 |
|
word |
|
SNAC flags |
| xx xx xx xx |
|
dword |
|
SNAC request-id |
|
|
| |
| 00 01 |
|
word |
|
TLV.Type(1) - encapsulated META_DATA |
| xx xx |
|
word |
|
TLV.Length |
|
|
| |
| xx xx |
|
word (LE) |
|
data chunk size (TLV.Length-2) |
| xx xx xx xx |
|
dword (LE) |
|
request owner uin |
| xx xx |
|
word (LE) |
|
request type (see table below) |
| xx xx |
|
word (LE) |
|
request sequence number |
| |
| ...... |
|
...... |
|
data (depending on request type) |
|
|
| |
| |
|
|
| |
| |
|
|
|


|
Upload Picture |
Name: BobAge: 22Major: Computer ScienceInterests: Basketball, CS:GO, and lifting.Bio: Hi, my name is Bob and I am a graduate student. I am a chill dude who gets along with everyone and am very clean and quiet. I am also looking for other graduate students to live with.Edit Information |
|---|


CheckBox - Custom Appearance
This example shows how to customize the appearance of CheckBox directive.
By using the controlStyle attribute you can change every control part: general appearance, its check box and title. In case of our example we are changing the appearance of check box by replacing the default appearance with custom images.
By choosing a different option from panel on right side, you can see how the box of CheckBox control changes. You can apply a different image for each state: checked, indeterminate and unchecked.


--indexedit
Summaryedit
This flag only functions within the scope of index selection
Add an index (or indices) by name at the command-line. Indices added with the
--index
flag will not be filtered by any of the other index selection flags.
The index must exist. This flag can be used in lieu of filtering from the list
of all indices. This flag can be invoked multiple times.
Flagsedit
-
--index
Include the named index in the list. Can be invoked multiple times.
Examplesedit
Include index_name
as one of the indices to be shown in addition to the
provided criteria:
curator show indices --prefix logstash --index index_name
Delete only indices index1
and index2
:
curator delete indices --index index1 --index index2


Masters of Orion is a comprehensive strategy game involving many variables which impact the many paths to victory. While some paths to victory may seem subjective and hard to measure, all aspects of the game involve some mathematics. Some mathematics are much easier and important to discern than others. In the case of Masters of Orion IV diplomacy and espionage are shrouded in unknown equations and probabilities whereas production, population, finances, and science are much more observable, controllable, and in many respects more important. That isn't to say that ignoring espionage and diplomacy goes without consequence, but it is the economy of your empire that dirves it's success. Because of this my website will focus on the mathematical and relational aspects of these elements where they originate, colony management. Once the corresponding mathematical relationships are fully examined a marginal benefit vs marginal cost framework can be established to help determine which actions arrive at better outcomes. Once that is established then a framework that allows for patronization of certain factors (industry, population growth, science, ships, etc.) can be more fully extrapolated. The outcomes expressed here should be taken as advice and measures for decision making rather than a substitute for it as there are various factors colony management that drive an empire forward.
Colonies are the centerpiece to Masters of Orion. They drive the economical, industrial and scientific capabilities of every empire. Indeed no player can win the game without having effective colonies to finance, build and progress their empire. Colonies have various aspects to them which interrelate in various ways. A break down into each of these aspects and how they relate to one another shown in the lists below.
These describe the attributes that come with each colony.
One other element that can play a factor in almost all of these colony attributes is the successful carrying out of foreign espionage. I.e. sabotaging research, poisoning water supplies, manufacturing dissent etc.
| A |
|---|
| a |


Scheherazade is an Arabic font with a design inspired by traditional typefaces such as Monotype Naskh, extended to cover the full Unicode Arabic repertoire. It is named after the heroine of the classic Arabian Nights tale.
This font was developed by SIL, and you can learn more about it at scripts.sil.org/Scheherazade
Updated August 2015: Update to v2.100 with addition of a Bold style, Unicode 8 characters, and various fixes.


Category: Computers 2010 Is the iPad just a new BeIA? Feb 10 2010 Chrome OS is not more multitasking than the iPad Feb 03 2010 2009 What Google Chrome OS really means Dec 02 2009 Wolfram Alpha not for average joe Mar 09 2009 2008 Does RSS Help the Internet Economy Dec 15 2008 The Swimming Data Center Jan 18 2008 2007 Amazon AWS SLA and Unique IP Oct 09 2007 Moved Server to x|encon pro series Oct 06 2007 100mbit in Cologne Sep 13 2007 Review: Wacom Bamboo as mouse replacement Jul 27 2007 iPhone Questions and Answers Jun 28 2007 OS X Terminal Internationalization Jun 05 2007 HP and HALO and real Teleconferencing May 15 2007 My Firefox Extensions Apr 21 2007 AWS Monitoring Service Mar 29 2007 Get a First Life Jan 26 2007 Google Hosted Review Jan 07 2007 2006 Google for your Domain Please Nov 13 2006 Project Blackbox Oct 18 2006 Google AdSense Down Oct 14 2006 Second Life goes offline for a bit Oct 14 2006 Apple Teleportation Sep 22 2006 Potentially interesting search results Sep 07 2006 Private Surfing Aug 17 2006 Video Permalinks Jul 21 2006 Call the world for free Jul 21 2006 Understanding Net Neutrality and online gambling Jul 14 2006 FON moving forward May 30 2006 MacBooks have landed May 16 2006 Skype Free US to US May 15 2006 FON Router Software Version 0.6.5 out May 13 2006 The Web is Vast Mar 14 2006 Amazon Changes the Game again Mar 14 2006 Google Earth 2012 Mar 13 2006 WebhostingDay 2006 Mar 08 2006 My FON Router Experience Mar 07 2006 ZoneTag US Online Feb 28 2006 Foneros Frappr Map Feb 28 2006 Selling my Palm Tungsten Feb 20 2006 Stikipad: Your Personal Wiki Feb 19 2006 Dual Booting XP and OS X Jan 30 2006 Windows Vista aka OS X Jan 10 2006 2005 Google's Shipping Container Nov 18 2005 Artificial Artificial Intelligence Nov 05 2005 Porn on your iPod Video Nov 03 2005 Gmail problems in different server pools Oct 28 2005 TypePad Growth Problems Oct 27 2005 Google Base almost landed Oct 26 2005 Made Rollyo Site Search Oct 24 2005 Personalized Ringtone Oct 21 2005 Thijs nailed it Oct 20 2005 iTunes Series Videos US Only? Oct 13 2005 Skype Voice Services Sep 12 2005 Customize Your Outgoing eMail in GMail Aug 24 2005 Engadget 1985 Aug 23 2005 Google Wins Machine Translation Contest Aug 23 2005 Akamai Web Traffic Barometer Aug 22 2005 Skype Zones? Jul 14 2005 Cancel the Phone Jul 12 2005 Dell Monitor Promotion Jul 07 2005 Macally SlimLine Icekey Jul 04 2005 Looking at Ruby Jun 29 2005 Geeking Out Jun 27 2005 Mail Act-On kicks Jun 24 2005 Intel buys Apple Jun 09 2005 Thinking Machines May 28 2005 OSX Online : FlyakiteOSX May 12 2005 Googlenet and The ultimate Spyware May 08 2005 Care for more speed? May 05 2005 VentureBlog praises Mac Mini May 05 2005 Rotate your Screen in Tiger May 05 2005 iTalk no Mini Apr 14 2005 Craigslist GoogleMapped Apr 09 2005 Webshots versus Flickr Apr 06 2005 Memory Maps Apr 06 2005 1995: 10 Technologies to blow your mind Apr 03 2005 Tricky Error Message Mar 29 2005 My Mac just got better Mar 21 2005 Tao reviews Pages Feb 10 2005 The Future is out of Beta Feb 02 2005 A9 Yellow Pages Jan 27 2005 Apple Store Bestsellers Jan 14 2005 Yahoo! Finance RSS Feeds Jan 13 2005 Introducing: Mac Shuffle Jan 12 2005 CNN has RSS Feeds Jan 10 2005 20 Year Usenet Timeline Jan 10 2005 2004 Unlimited eMail Storage Dec 14 2004 Google Site-Flavored Search Dec 10 2004 Amazing iPod Mini Ad Dec 09 2004 The Power of Froogle Dec 06 2004 The economics of casinos Dec 01 2004 PayPal Phishing Nov 30 2004 Anti-Spam Screensaver Nov 30 2004 Blog Torrent and Bittorrent Nov 26 2004 The Day of Search Nov 11 2004 New Google Bot? Nov 02 2004 Bild.de has an RSS Feed Oct 29 2004 Gadgeteria kicking in Oct 27 2004 Stats Gallore Oct 26 2004 Jeremy feels the energy Oct 26 2004 Joi made me sign up for last.fm Oct 18 2004 The Google Cluster Architecture Oct 17 2004 New Gmail Features Oct 04 2004 Skype and VoIP Sep 27 2004 "You Don't Know Jack About VoIP" Sep 24 2004 Apple's Future View Sep 19 2004 The new Apple iMac G5 Aug 31 2004 GmailFS - The new filesystem Aug 30 2004 RSSCalender for your scheduling Aug 18 2004 SkypeOut kicks! Jul 27 2004 The RSS Bandwagon Jul 25 2004 Restart ... Jul 15 2004 Apple's Spotlight Jul 13 2004 mod_log_sql 2.0 Documentation Jul 13 2004 Traffic Guessing Jul 05 2004 Walking out on Apple Jun 29 2004 The iPod Slider Jun 25 2004 How Microsoft Lost the API War Jun 17 2004 Amazement: Freecache.org Jun 08 2004 ExpressLink your Home Jun 08 2004 Bluetooth Keyboard for 6600 Jun 08 2004 Frustration at TaoSpace Jun 07 2004 10 Year BeOS Anniversary Jun 06 2004 The Microsoft Challenge Jun 03 2004 Me too Jun 03 2004 The Bush Game May 28 2004 How hard computers still are to use May 25 2004 Popup Blocker Blocker Apr 28 2004 Who developed the iPod? Apr 28 2004 Locate your kids at Legoland Apr 27 2004 Spam Free eMail Apr 26 2004 The Future of eMail Apr 24 2004 Slowly Rot the Internet Apr 20 2004 Apple Store Opening Mar 01 2004 XBox Dev Kit on the Mac Mar 01 2004 GarageBand Loops Feb 09 2004 Using Macs can be creepy Feb 07 2004 Data Recovery Feb 03 2004 Wireless Broadband Week Jan 30 2004 An IKEA walk-thru Jan 26 2004 GarageBand getting rave reviews Jan 15 2004 Where are you? Jan 06 2004 Fast Internet Jan 06 2004 Apple iBox Jan 02 2004 2003 Good Job Advert for Coders Dec 16 2003 <IP_ADDRESS> Dec 15 2003 Corporations Movnig to Macs ... Not Dec 04 2003 We now have spamassassin Nov 27 2003 Where IM is going Nov 27 2003 OS X User Created Nov 04 2003 Switching to Panther Nov 01 2003 Apple's Expose Oct 28 2003 Microsoft Longhorn Oct 28 2003 The price of TabletPCs Oct 24 2003 Hotspots rock Oct 18 2003 iTunes for Windows is out Oct 17 2003 Maya Free for personal use Oct 17 2003 Google and cheap servers Oct 11 2003 Webfoundtain Oct 10 2003 Power Key in Software Oct 07 2003 The Grid Sep 30 2003 Where is the Any Key? Sep 21 2003 The World's Fastest Personal Computer Jun 24 2003 BeNews Getting Hits Jun 02 2003 Zoe - Your E-Mail Librarian May 25 2003 So much for using iTunes 4 Music Store May 01 2003 MacStumbler Apr 25 2003 CERN openlab Apr 02 2003 The History of Windows Mar 21 2003 Grand Theft Auto for free! Mar 08 2003 HelloWorld Mar 08 2003 ManyOne available for download Mar 08 2003 Kasparov about computer chess Feb 18 2003 BeOS: Sequel Feb 17 2003 2002 Tricking Carnivore Apr 20 2002 Synced Apr 13 2002 Palm Syncing coming to Office v.X Apr 12 2002 The iBook is getting there Apr 11 2002 my iBook is here! Apr 09 2002 OSX on AMD? Apr 07 2002 Ordered an iBook Apr 02 2002 OS X Rocks Mar 10 2002 iBook or not Mar 03 2002 2001 The Mac Idea is off Dec 13 2001


Forces of Nature (1999) 2 stars out of 4. Starring Ben Affleck and Sandra Bullock.
Sometimes we film critics can be a bit too smart for our own good.
We watch a few minutes of a movie, size up the characters and situations and automatically assume we know what's going to transpire.
But then something strange and frightening happens, something that makes going to the movies worthwhile - the filmmaker surprises us. He pulls the cinematic rug out from under our feet and sends us sprawling on our collective behinds.
Thus it is with "Forces of Nature," a comedy-road picture starring Ben Affleck and Sandra Bullock.
He's the straight-arrow guy with the dull job - writing blurbs for book covers.
She's the free spirit who has held every kind of job except rodeo clown.
They meet cute - he rescues her after their plane skids off the runway during takeoff.
And they are forced to take a long journey together even though they are incompatable opposites.
With all that, you literally connect the dots to the conclusion. Or can you?
Screenwriter Marc Lawrence and director Bronwen Hughes lead you down that garden path - with a few bumps - and then ...
Well, no more. You're going to have to see "Forces of Nature" to find out the rest.
True, the characters are cliched and predictable, the situations familiar. You know what is going to happen 10 minutes before it does.
The acting is simply by-the-numbers, for-the-paycheck. They don't seem to be putting any effort into trying to breathe any credibility into their characters.
Plus there's no chemistry. Affleck and Bullock merely seem to be spouting lines at each other. Both have done better.
So, do yourself a favor. See the first 10 minutes of "Forces of Nature," then hang around the lobby for about an hour and a few minutes. Return to see the last 10 minutes, go home and be satisfied.
Bob Bloom is the film critic at the Journal and Courier in Lafayette, IN. He can be reached by e-mail at<EMAIL_ADDRESS>or at<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


namebench
Find the fastest DNS server, tuned just for you.
Browser
Google Chrome
Country
United States of America
Start!


class: left, name:opening ## Data Intensive Brain Science Joshua T. Vogelstein
Kavli Neuroscience Discovery Institute
questions: [jovo@jhu.edu](mailto:jovo at jhu dot edu)
slides:
funding: DARPA I2O {GRAPHS, XDATA, D3M, L2M} .center[
] --- class: center, middle .h1[#
Motivation
] --- class: center, middle
--- class: left ## The Human Condition
--- class: left ## The Grazing Goat Starves
--- class: left ## Our Social Cage
--- # Goal Give each individual the tools she needs to move herself in the desired direction by the desired amount in our high-dimensional experience --- class: center, middle .h1[#
Challenges
] --- class: center, middle
--- class: center, middle
--- class: center, middle
--- class: left, middle # Enter NeuroData
--- class: left ## Our Idea Multiple measurements from same subject should be more similar to one another than they are to any measurement of any other subject -- $P[|| x\_{ij} - x\_{ij'}|| < || x\_{ij} - x\_{i'j''}||]$ --
Without that, how can we trust biomarkers? -- (we prove a bunch of stuff about our estimator) --- class: top, left ## Our model
--- class: top, left ## Our Pipeline
--- class: center, middle
--- class: top, left ## Our Result Within a study, subjects are "discriminable" .pull-left[ - 25+ studies - 6000+ scans - largest "meganalysis" - largest open repo ] .pull-right[
] -- (we tried 200+ pipelines ⇒ 1M+ compute hours) --- class: top, left ### But... - Across studies, populations are significantly different - Conditioning on Phenotype Fails
--
☹
--- class: top, left ### Our Proposed Solutions - better pipelines - better data (eg, quantitative MRI) - deep phenotyping - data acquisition harmonization --- class: top, left ## Acknowledgements
--- ### Questions? - dimensionality reduction: [LOL](https://github.com/neurodata/LOL) - classification & regression: [RerF](https://github.com/neurodata/R-RerF/) - hypothesis testing: [MGC](https://github.com/neurodata/mgc) - clustering: [knor](https://github.com/neurodata/knorr) - email: [jovo<EMAIL_ADDRESS>- lab: [neurodata](http://neurodata.io/) - startup: [gigantum](http://gigantum.com/)
♥, 🦁, 👪, 🌎, 🌌


PCBSCalc Labs Changelog - v20210507
Warning: Starting from PCBSCalc v1.11.1 and PCBSCalc Labs v20210506, the HEM part is no longer available due to their frequent update. Thank you for understanding.
Warning: PCBSCalc Labs includes new features, but might include bugs. It is recommended for people who wish to have new features and contribute by reporting any issue.
Howdy! Welcome to changelog for PCBSCalc Labs v20210506. Starting from version v20210411 and PCBSCalc v1.11.0 "Bellona", changelog will be displayed through modal. (This message will be displayed until v1.11.5 "Circe" release)
If you prefer seeing the release information on GitHub Repository, Release info still can be accessed through here.
Additions
✨ Changes/Overhaul
- • Seperated several js system to reduce complexity


|
gbmath
v0.051
c++ math library
|
This data perspective projection. More...
#include <perspective_projection_data.h>
Public Member Functions | |
| perspective_projection_data () | |
| perspective_projection_data (float _fovy, float _aspect, float _zn, float _zf) | |
| perspective_projection_data (const perspective_projection_data &a) | |
| mat44 | makePerspectiveMatrixLH () const |
| mat44 | makePerspectiveMatrixRH () const |
| void | extractProjPerspectLH (const mat44 &mPerspectProjLH) |
| Extract the projection data of left-sided perspective of the matrix. More... | |
| void | extractProjPerspectRH (const mat44 &mPerspectProjLH) |
| operator std::string () const | |
| void | operator= (const std::string &str) throw (std::invalid_argument) |
Public Attributes | |
| float | fovy |
| float | aspect |
| float | zn |
| float | zf |
Friends | |
| std::ostream & | operator<< (std::ostream &stream, const perspective_projection_data &a) |
| std::istream & | operator>> (std::istream &stream, perspective_projection_data &a) |
| std::istringstream & | operator>> (std::istringstream &ss, perspective_projection_data &a) |
This data perspective projection.
Definition at line 22 of file perspective_projection_data.h.
|
inline |
Definition at line 30 of file perspective_projection_data.h.
|
inline |
Definition at line 35 of file perspective_projection_data.h.
|
inline |
Definition at line 43 of file perspective_projection_data.h.
|
inline |
Extract the projection data of left-sided perspective of the matrix.
Definition at line 70 of file perspective_projection_data.h.
|
inline |
Definition at line 78 of file perspective_projection_data.h.
|
inline |
Definition at line 53 of file perspective_projection_data.h.
|
inline |
Definition at line 60 of file perspective_projection_data.h.
|
inline |
Definition at line 92 of file perspective_projection_data.h.
|
inline |
Definition at line 99 of file perspective_projection_data.h.
|
friend |
Definition at line 86 of file perspective_projection_data.h.
|
friend |
Definition at line 111 of file perspective_projection_data.h.
|
friend |
Definition at line 121 of file perspective_projection_data.h.
| float gbmath::perspective_projection_data::aspect |
Definition at line 25 of file perspective_projection_data.h.
| float gbmath::perspective_projection_data::fovy |
Definition at line 24 of file perspective_projection_data.h.
| float gbmath::perspective_projection_data::zf |
Definition at line 27 of file perspective_projection_data.h.
| float gbmath::perspective_projection_data::zn |
Definition at line 26 of file perspective_projection_data.h.


How to create with the software
A heatmap can be added on both indoor and outdoor maps. To create a heatmap, first initialize the Wrld map:

Once the Wrld map has been created, initialise wrld.time.js with the heatmap option set to true:
wrldTime(map, data, {
heatmap: true
});
Heatmaps may be used in a variety of situations. For example, if you have a sparse data set, you may wish that each point in your data set is displayed more intensely. Another example is that you should have different intensities when displaying a heatmap of cities compared to displaying a heatmap of countries.
You can also set an indoor intensity factor which is applied to indoor data points. By default the global intensity is set to 50 and the indoor heatmap intensity is set to 1. This can be overriden when constructing the wrldTime object:
wrldTime(map, data, {
heatmap: true,
heatmapIntensity: 80,
indoorHeatmapIntensity: 0.6
});
You can also apply intensities to specific data points, for example if you are visualising the population of cities, each city would have an associated intensity (in this case the number of inhabitants).
This can be set in the GeoJSON feature, under the intensity property. In the below example, we set the intensity of this feature to 31:
{
"geometry": {
"type": "Point",
"coordinates": [ -2.988967373895398, 56.45511052483176 ]
},
"type": "Feature",
"id": 0,
"properties": {
"date": "2018-07-06",
"intensity": 31
}
}


{% extends "base.html" %} {% block content %}
Football
Find the match, check static of a team or compare two teams.


RealTimeEngine
public class RealTimeEngine : NSObject
A class to perform real-time optical character recognition
-
The region within the AVCaptureVideoPreviewLayer that OCR is to be performed. If using a UIView to define the region of interest this must be assigned as the UIView’s frame and be a subview of the the AVCaptureVideoPreviewLayer’s parent view.
Declaration
Swift
public var regionOfInterest: CGRect?
-
Sets recognition to be running or not. Default is true. Setting the value to false will allow the preview to be active without processing incoming video frames. If it is not desired for recognition to be active after initialization, set this value to false immediately after creating an instance of SwiftyTesseractRTE
Declaration
Swift
public var recognitionIsActive: Bool
-
The quality of the previewLayer video session. The default is set to .medium. Changing this setting will only affect how the video is displayed to the user and will not affect the results of OCR if set above
.medium
. Setting the quality higher will result in decreased performance.Declaration
Swift
public var cameraQuality: AVCaptureSession.Preset { get set }
-
Action to be performed after successful recognition
Declaration
Swift
public var onRecognitionComplete: ((String) -> ())?
-
Primary Initializer - Uses SwiftyTesseractRTE defaults
Declaration
Swift
public convenience init(swiftyTesseract: SwiftyTesseract, desiredReliability: RecognitionReliability, cameraQuality: AVCaptureSession.Preset = .medium, onRecognitionComplete: ((String) -> ())? = nil)
Parameters
swiftyTesseract
Instance of SwiftyTesseract
desiredReliability
The desired reliability of the recognition results.
cameraQuality
The desired camera quality output to be seen by the end user. The default is
.medium
. Anything higher than.medium
has no impact on recognition reliabilityonRecognitionComplete
Action to be performed after successful recognition
-
Declaration
Swift
public convenience init(swiftyTesseract: SwiftyTesseract, desiredReliability: RecognitionReliability, imageProcessor: AVSampleProcessor, cameraQuality: AVCaptureSession.Preset = .medium, onRecognitionComplete: ((String) -> ())? = nil)
Parameters
swiftyTesseract
Instance of SwiftyTesseract
desiredReliability
The desired reliability of the recognition results.
imageProcessor
Performs conversion and processing from
CMSampleBuffer
toUIImage
cameraQuality
The desired camera quality output to be seen by the end user. The default is .medium. Anything higher than .medium has no impact on recognition reliability
onRecognitionComplete
Action to be performed after successful recognition
-
Declaration
Swift
public convenience init(swiftyTesseract: SwiftyTesseract, desiredReliability: RecognitionReliability, avManager: AVManager, onRecognitionComplete: ((String) -> ())? = nil)
Parameters
swiftyTesseract
Instance of SwiftyTesseract
desiredReliability
The desired reliability of the recognition results.
avManager
Manages the AVCaptureSession
onRecognitionComplete
Action to be performed after successful recognition
-
Declaration
Swift
public convenience init(swiftyTesseract: SwiftyTesseract, desiredReliability: RecognitionReliability, imageProcessor: AVSampleProcessor, avManager: AVManager, onRecognitionComplete: ((String) -> ())? = nil)
Parameters
swiftyTesseract
Instance of SwiftyTesseract
desiredReliability
The desired reliability of the recognition results.
imageProcessor
Performs conversion and processing from
CMSampleBuffer
toUIImage
avManager
Manages the AVCaptureSession
onRecognitionComplete
Action to be performed after successful recognition
-
Stops the camera preview
Declaration
Swift
public func stopPreview()
-
Restarts the camera preview
Declaration
Swift
public func startPreview()
-
Binds SwiftyTesseractRTE AVCaptureVideoPreviewLayer to UIView.
Declaration
Swift
public func bindPreviewLayer(to view: UIView)
Parameters
view
The view to present the live preview
-
Provides conformance to
AVCaptureVideoDataOutputSampleBufferDelegate
Declaration
Swift
public func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection)
Parameters
output
AVCaptureOutput
sampleBuffer
CMSampleBuffer
connection
AVCaptureConnection


Multi Wallet
Connection Status
Connect
Portfolio
Wallet
Backup
Settings
Help
Adjust Your Settings
Click Here for a Tutorial
×
Warning!
Better check your settings, looks like you're not connected.


{% extends "base.html" %} {% block content %} Add a New Project ID: Name: Date Issued: Address: Coordinates: Status: New In the Field In Permitting Completed Type: Metro E SMB CWS SFU MDU Node Split Relo (All) Sub-Type: N/A Span Replacement Markup Relo Drop Shorten Permit Required: Yes No Comcast Engineer: Field Engineer: File Location: Comments: {% endblock %}
ID:
Name:
Date Issued:
Address:
Coordinates:
Status: New In the Field In Permitting Completed
Type: Metro E SMB CWS SFU MDU Node Split Relo (All)
Sub-Type: N/A Span Replacement Markup Relo Drop Shorten
Permit Required: Yes No
Comcast Engineer:
Field Engineer:
File Location:
Comments:


The challenge in using wmic.exe to perform WMI persistence is that when creating an instance of a __FilterToConsumerBinding class, it requires references to an existing __EventFilter and __EventConsumer. It turns out that you can reference existing WMI objects in wmic.exe using the syntax provided in a WMI object’s __RELPATH property! Okay. Enough theory. Let’s dive into an example.
See UsefulCommands > Windows > WMI > Events


Google Glass, Hands On and a very quick review
Google Glass, Google Glass, Google Glass, Google Glass, Google Glass, Google Glass, Google Glass, Google Glass...
It became my favourite tech gadget the moment it announced to public.
Anyway, I managed to borrow that awesome Google Glass from Yap Wen Jiun.
Google Glass is awesome, it’s light and it’s amazing.
You probably know how it works and how it look like. But it is hard to know the feeling when you are wearing it.
So, I got the chance to borrow it after the MMU Android Meetup in 31 October 2014. I was so excited when that Google Glass is really in front of me. I took out my glasses, and put the Google Glass on my face. Something happens! I saw a blur screen in front of me. Kay, I immediately knew the reason and finally, I ‘force’ to wear double glasses (my perspective glasses + Google Glass).
Double glasses on my face. It’s weird. But whatever, just ignore it.
The speaker of Google Glass. It’s awesome. It uses the Bone Conduction Transducer (BCT), so the sound is pretty amazing, it’s loud and crystal clear. Microphone? Awesome. I was using that Google Glass in a hall (quite noisy there), but Google Glass was still listening to what I am talking about.
Screen? Amazing.  And it’s ‘floating’. That is quite a weird experience. And it’s also looks semi-transparent, so the screen will not bother you.
Ok Glass, take a picture. Ok Glass, record a video. Ok Glass, Google, what is Google Glass? I was so busy with trying that piece of technology. That is the real technology. The future is here.
Google Glass is expensive. It costs you USD1500 or it’s around MYR5000. IT IS VERY VERY EXPENSIVE! I am just waiting for one day (and I believe it’s coming), a cheaper version of Google Glass is going to release to the consumer, or maybe less than USD300?
It’s coming soon to us because “Google Glass is graduating from Google[x] labs” . I hope Google Glass Consumer Edition will announce during Google I/O this year, maybe?
Hello Glass, Hello Google, Hello World.


Train your Password!
Enter password:
Password
Check!
Correct!
You got it right!
Almost correct!
You've got just
character
s
wrong.
You've made some errors!
character
s
are wrong.
Wrong password!
character
s
are wrong.
Reveal (press Enter)
123456


Welcome to InfraGard Houston!
The Houston Chapter of InfraGard provides members of the Critical Infrastructure community a means to share information to prevent, protect, and defend against hostile acts against Critical Infrastructure and Key Resources (CIKR).
Members will find access to a number of resources that are used on a day to day basis, and find a number of communication portals to assist in protecting critical infrastructure.
Learn more about the InfraGard
Our local mission
InfraGard is designed to address the need for private and public-sector information-sharing mechanisms at both the national and local levels. Its objectives are:
- Provide members a forum for education and training on infrastructure vulnerabilities and protection measures
- Provide members prompt, value-added threat advisories, alerts, and warnings
- Insure the protection of computer intrusion/threat data shared among InfraGard members, FBI Field Offices, and the National Infrastructure Coordinating Center (NICC) through compliance with proprietary, legal, and security requirements
- Increase the quantity and quality of infrastructure intrusion/threat reports provided to local FBI Field Offices (for investigation and follow-up) and the NICC (for national-level analysis)
- Increase interaction and information sharing among InfraGard members, their associated local FBI Field Offices, and the NICC, on infrastructure threats, vulnerabilities, and interdependencies.
Membership
InfraGard is an organization dedicated to the protection of the United States and the American people. In order to maintain a level of trust within the membership, all applicants undergo a background check performed by the FBI (for this reason InfraGard membership is currently limited to United States citizens). Applications are then screened according to a defined criteria and then passed to the local chapter for final acceptance (individual chapters may have more strict criteria).
Along with your InfraGard membership comes great responsibility. We value active members who are willing to devote their time, effort and talent to help build this organization and achieve our goals of protecting the American people. You will be a representative of the nation's largest volunteer organization dedicated to critical infrastructure protection.
Benefits
- Opportunities to network with other companies that help maintain our national infrastructure.
- Gain access to an FBI secure communication network complete with VPN encrypted website, webmail, listservs, message boards and much more.
- Learn time-sensitive, infrastructure related security information from government sources such as DHS and the FBI.
- Get invitations and discounts to important training seminars and conferences.
- Best of all, there is no cost to join InfraGard


Emily Shardlow
Last Updated: Dec 1, 2010
Select a subject, and you can pretty much guarantee that someone, somewhere, is blogging about it. One of the most popular worldwide topics is food, and here in the UAE, we have our own burgeoning community of food bloggers — people of different ages and nationalities who share an ardent dedication to all things foodie, from tried and tested recipes to local restaurant reviews and essays on memorable gourmet experiences.
Sally Prosser mycustardpie.com
“I’ve always liked writing, and find my style and rhythm when writing about things I adore: food, eating and cooking for friends and family,” says Sally Prosser, whose blog My Custard Pie offers a peek into the kitchen of a food-loving Dubai family. Prosser cooks attractive, inviting food, and peppers her posts with interesting observations in an open and conversational tone. The blog is updated regularly, with Prosser selecting recipes from her extensive collection of cookbooks, then adjusting them slightly to suit the demands of her family or the produce available in Dubai. She often accompanies the recipes with an anecdote, explaining why she has chosen them.
Prosser also has a quest to find “food with good provenance” in the UAE, sharing little nuggets of information about local food developments and detailed information on restaurants (not so much reviews, more descriptions).
Despite saying that she is still pinching herself over the positive response, it’s easy to see why this blog has garnered numerous local and international fans. It is for good reason, after all, that Prosser is regarded as something of a local food guru by her fellow UAE bloggers.
Dalia Soubra daliaskitchen.com
When you are already the co-founder and head baker at a successful bakery (Kitsch Cupcakes), writing a food blog in your spare time shows real passion. Yet Dalia Soubra adds to her site frequently and says she was inspired to start blogging when customers began making requests for her recipes.
Now Dalia’s Kitchen, which she describes as her “own little online food journal”, is filled with simple, achievable recipes that have a fresh, modern feel to them. Soubra draws on her Syrian roots and her time spent in New York and Paris for inspiration, and the dishes featured range from healthy dinners to interesting breakfasts, with some seriously indulgent cakes in between. Each recipe is accompanied by a few lines of text and it seems that Soubra is something of a home food stylist; many of the photographs are stunning — clean, appetising shots, with a hint of Donna Hay about them. This blog is well worth a browse, even if you don’t end up making a dish from it (although I suspect you might).
Laila el Baghdadi lailablogs.com
Spurred on by the belief that people underestimate Arab food, or simply don’t look beyond the hummus and tabbouleh staples, Laila el Baghdadi started lailablogs.com two years ago. Originally from Pakistan, but born and raised in the UAE, el Baghdadi has a wealth of knowledge to draw on, and her blog features recipes that have been passed down through the generations. The really impressive thing about this blog is its comprehensive nature. El Baghdadi posts pictures of each step of the cooking process, which is very helpful if you are making an unfamiliar dish for the first time. In a nice interactive touch, she also has a “recipe requests” section, which allows readers to suggest dishes that they would like her to experiment with and provide recipes for.
El Baghdadi has big plans for the future of the blog: “I’d like to translate everything into Arabic so that my site is fully bilingual,” she says. “Over time, I’d like to make it possible for users to create a personal profile so that the site can predict their tastes and make recipe suggestions”.
Arva Ahmed I Live in a Frying Pan foodonymph.com
The header on this blog reads: “Turning up the heat on my crazy obsession with the world of food” and Ahmed is certainly true to her theme. I Live in a Frying Pan reads like a diary of culinary experiences, featuring tried and tested recipes, restaurant reviews and details of the food sampled on her travels.
Having previously lived in New York, Ahmed says the experience opened her eyes to the multitude of ways in which food can be experienced: “not just eating and appreciating it, but reviewing, discussing, describing, debating, visualising, photographing”. As a result, when she moved back to Dubai, she decided a blog was the best way to keep these conversations alive — “to chronicle them over time and share them with others”.
She seems to have achieved her aim because her personality and dedication shine through. Her detailed posts are fascinating to delve into.
Rajani Mani eatwritethink.com
Rajani Mani describes her exclusively vegetarian blog as a means of sharing “food that tells you stories, food that’s handed down by generations of grandmothers, happy food that revolves around conversations and laughter”.
Although it does feature a fair few recipes (from a variety of different cultures), this blog is about far more than that. There are links to food-related articles written by Mani, photo essays and contributions from different culinary enthusiasts currently travelling the globe.
The blog has an intimate style: “With the food and the recipes came slices of my life laid out to be picked bare by people I don’t know,” she says. You learn about her reasons for being a vegetarian, or how a certain dish made its way into the family repertoire, and it is precisely these opinionated, personal snippets that make the blog so absorbing.
Anja Schwerin anjasfood4thought.com
If you are in search of interesting, inventive recipes, with the emphasis on health, then Schwerin’s blog, Anja’s Food for Thought, is a great place to visit.  She began scouting the internet for nutritious, wholesome recipes and was inspired by the food blogs she discovered. With an increased desire to experiment with natural ingredients, Schwerin started her own “personal food journal and cookbook” and began posting recipes and pictures, often experimenting with vegan, vegetarian, low-sugar or raw food.
Her 15 years’ experience as a picture editor are certainly reflected in the quality of her photography; dishes are beautifully presented and many of the photos are striking. She tends to add to the blog two or three recipes a week (estimating that each post takes around two hours, plus cooking time) and says that it is “a hobby that I really love”. The blog has around 10,000 visitors per month, and Schwerin puts its success down to “posting healthy and tasty recipes regularly, together with mouth-watering pictures”. It’s certainly worth browsing through if you want to cook up some restorative, nutritious and unusual fare.
via thenational.ae


<
General Settings
MQTT ClientID
MQTT User Name
MQTT Password
MQTT Topic
MQTT Host
MQTT Port
Reading Interval
MQTT Publish Interval
Min Max Interval
Filter


Putting record straight and Matheus Pereira doing it on a cold night in Stoke - West Brom talking points
West Brom won 2-0 at the bet365 Stadium last night to go back to the top of the Championship table
by Paul Suart, https://www.facebook.com/West-Brom-reporter-Paul-Suart-1706553162899720/?fref=tsWest Brom head to Hull on Saturday top of the Championship after a 2-0 victory at Stoke on Monday night.
An early Matt Phillips strike, coupled with a second-half Hal Robson-Kanu penalty, put Stoke to the sword.
Sports writer Paul Suart took home these findings from a win that could hardly have been more rudimentary.
Kings of the road
In beating Stoke, Albion established something we probably already knew. They ARE the best away team in the division. Certainly on current form.
The Baggies have now amassed 17 points on the road, two more than Swansea, despite having played one more away game than the Welsh club.
It’s not as if it’s been an easy start. They’ve already ticked off trips to Leeds, Fulham, Nottingham Forest and QPR - four of the present top nine.
Under Slaven Bilic , Albion exhibit a blend of qualities that make them very unwelcome guests.
They can sit in, retain a solid defensive structure and frustrate the hosts, who carry the onus to attack. But they also have players in midfield to dictate the tempo and in the final third they pose real problems, either on the break or from patient build-up.
Albion can hammer home these points when they travel to a Hull team bristling with confidence after three straight wins.
Men from the boys
Slaven Bilic revealed in his pre-match press briefing just how much homework went into the signing of Matheus Pereira over the summer.
He watched countless videos of the Brazilian playing for Nuremberg last season, on loan from Sporting Lisbon, and formed the view he had the skill-set and personality to succeed in the rough and tumble of the Championship.
“I remember watching him in games in February when there is snow around, so it’s not like Brazil, and he looked great,” Bilic said.
“They were losing, it was 2-0 for the opponent, and then it became 2-1, and he was the one saying ‘come on guys’. So not only the quality, but his attitude and mentality was correct as well.”
But can he do it on a cold Monday night in Stoke? The ‘ultimate test’ for any foreign import. He sure didn’t go missing, a criticism levelled at some overseas players in the past, but was well below par.
Bigger (and colder) challenges await, and although he flunked his first examination you’d back Pereira to be a man for all seasons and all comers.
West Brom latest
This is your round up of all things West Brom; the one-stop shop that will keep you updated on the latest goings on at the club and beyond.
Transfers, injuries, match-days and managers, we’ve got you covered.
We’ll be bringing the very latest on the Baggies throughout the week and around the clock.
Make sure you keep yourself updated with our handy daily catch up...
Must reads...
- 'It wasn’t like we were living on the edge' - every word from Slaven Bilic after Stoke City victory
- 'Gutless, spineless, pathetic ' - Stoke City fans not holding back after defeat to West Brom
- 'Better than Messi' - West Brom fans calling for same thing from Slaven Bilic after Stoke City win
- 'Taunting' - The Stoke City verdict as West Brom increase Potters' relegation worries
- 'Greedy' - what Slaven Bilic said after West Brom's victory over Stoke City
- '12th man' - the verdict West Brom fans will absolutely love
- West Brom hero reveals what he's done since retiring and rates Slaven Bilic's start
- West Brom move back to the top of the Championship with comfortable Stoke City win
For all your latest WBA news, opinion, analysis and transfer gossip, click here
You can follow our West Brom reporter Joseph Chapman on Twitter, and his email address is<EMAIL_ADDRESS>Turning tables
There was a time, not all that long ago, when the Britannia ruled the waves in this fixture.
It didn’t matter how well the Baggies played, home or away, they just couldn’t find a result against Stoke. West Brom suffered a torrid sequence where they won only one of 34 meetings. And then it all changed.
Somewhat ironically - given the cheeky chants of ‘Tony Pulis, he’s coming for you’ from the away end in reference to Stoke’s need for a new manager able to fight what is fast becoming an inferno in the Potteries - it was the Welshman who got the ball rolling.
Under Pulis, who just loves beating his former clubs, the Baggies began to even the score with a 1-0 win in March 2015.
Albion have now won seven of their last 10 against the Potters, losing only one. Little surprise the defeat came under the wretched reign of Alan Pardew.
Darren Moore did the double over Stoke last season and Bilic has started as he means to go on against a club that has developed into a genuine rival in recent times.
Get yourself warm
Gareth Barry finally signed on the dotted line for Albion a few hours before kick-off after a financial issue with Everton was resolved.
Bilic wants him to play two or three Under-23s games before he can be considered for selection for the first team.
He’d better hurry up and get those match minutes in his legs because Albion’s first-choice central midfield pairing are on the brink of a one-game ban.
Jake Livermore picked up his fourth booking in five games to equal Romaine Sawyers’ tally of cautions.
One more for either player before the 19th league fixture, against Preston on December 2, and they’ll be sitting a game out.


A report from the course Websoft
S01
I have used Git, Github and Markdown in the past. Tools I really like to use. However Github pages is new to me and most say amazing tool that github provides to us. I have created and is currently working on a website. I hope that I can continue to work on it in this course. I am using tools like React-JS and redux to develop it. It's a music exploration website tool. It works together with Facebook and Spotify I have been hobby creating website last 10 years, never created somethine serious since in the past I have not really been structured. However after 3 years at this school I have started to developt the most serious project so far. Where everything is up and running on gitlab. I have seen Markdown before and I'm trying to add it more to all my projects. More projects I read online, the more I see the importance of documentations. Today I learned: Git tag and what it can be used for. That git pages existed and that you can host website through git for free.
S02
I've had a lot of experience with HTML, CSS and JS. However it's only been personal project and requests from family and friends. I have also made a website with HTML, CSS, PHP and MySQL for the gaming community. I have never used frameworks or libraries, since I wasn't aware that was thing. I learned all of this from www.w3schools.com. Recently I started to learn ReactJS which is a framework for JS recently. I can never get anything to look in the way I picture it in my head. HTML is the structure of how the text snippet should be represented. CSS is position and looks of the HTML structure. JS is there to manipulate everything in a web document.
Client user interact with their browser and enter a path to get access to resource. Browser communicate between clients and server with HTTP protocol. Server translate the HTTP protocol and sends back response with or without resource from web server. So because of my earlier experience I can't say I learned a lot in this section. However looking forward for future work.
S03
I have in past experienced coded with client side JavaScript. I learned this while learning ReactJS framework. I have also in my past copy paste JS without really understanding what it did. I'm working on a music concert advertising website with ReactJS. I relate Javascript with Java, it's very similar. I would also say it reminds me of Python. What I enjoy with JS is that it can manipulate everything. Which gives it a lot of control. This exercise I aimed for grade 5. When I worked with ReactJS I also worked with nodeJS. Which makes me really think about code once, and then implement where I want to implement the code. I learned that what I enjoyed most with ReactJS was NodeJS which I wasn't aware that I worked with. In ReactJS it's called components, which gives you the option to code once and then implement everywhere. I also learned how effiecient JS is that it can also manipulate the CSS code. I also learned the fun working with animation.
S04
I have worked with Node/NPM when I worked with ReactJS. This is a tool I find very powerful where you can create complete component that you can just import. So if you do all the HTML, CSS and JS code inside the Node component, this can then be important everywhere you want to include it. I used these tools when working with my music concert advertising website project, with ReacTJS. I enjoy the combination with JS and Node. I still struggle a bit with express but I start to like it as well. I see the usage of express and it's listen ability. I keep forgetting to read the whole assignement first and just start to code each step at the time. So I always get punished in the end because I need to change my code because you and me have thought differently. So this will be last assignement where I don't read whole text before coding. However I always solved the problem but had to redo something I already have done. I aimed for grade 5. It always takes time to do assignement 3 but is not hard. Assignement 4 and 5 is always tricky but doesn't take long time, which I think is a great solution. Today I learned what express was and how it can be used. In my music concert advertsing website I skipped it because I didn't see any use for it. However I will include it in my application in the future.
S05
My first website was made entirely with HTML, CSS and PHP. In that time I enjoyed it the best. I thought JS was complicated. However later years I enjoy JS more and I start to see the power using JS more. I feel that PHP is less interactive and interaction is to much if statement. I would say PHP is similar to C and Java. I read through all the text and planned to code towards Read/Delete and organising the code a bit. This helped me when solving the assignement. I aimed for grade 5. I'm very satisfied with what has been done. But would change front end more which I will do in the future. Last time I worked with PHP it was through a webhost interface and I had no idea you needed XAMPP to host PHP. It was also nice to refresh my memory of my past experience with PHP. It was around 8 years ago since I worked with it last time and I started to learn prepared statement back then.
S06
I find popular language annoying. It's as if people don't understand when it's good or bad using certain language but only use it because of popularity. However I would say how ReactJS design their code is towards the correct way. Which is empowered with NodeJS strength. It's creating one component that can be imported everywhere and all the code is inside of it. I also like what Flutter introduce of code once and apply it everywhere. It will improve the speed of development and remove the native feelings. Only people who code in certain platforms get the native feeling anyway. However I'm not saying that these languages is the best, it's just they develop language towards the correct direction. Code once and apply everywhere is what made Java huge. Same goes with code one component and apply it everywhere. If I use trends.google it depends on my search term when it comes to react or reactJS. if I search for reactjs it was very low interest but if I searched react it's growing in size. Also it's difficult to compare with giant old language so you need to make fair comparison depending on the growth of search and not only total size. It really depends on the project. However if it was mobile application it would be Flutter and my argument would be it cost less to develop instead of having two teams of developers that develop same thing you only have one develop team. My argument of React JS for web application would be the strength of components building, which makes it easier to divide the project.
S07
.NET with ASP is a powerful tool. It is a OOP language similar to java. However compared to java it's not as good in my opinion. Reason is because Java can be coded once and apply on all operating systems. .NET only works on various Windows operating systems. .Net is in general a compiled language but with Jscript abilities from ASP. These tools together is powerful and was a necessary in the past to improve speed. But over time since scripting language have become more powerful it has been less necessary. However in back end scenario it's still relevent since compiled language will always be more powerful than scripting language on the back end side. I aimed for grade 4. I knew I didn't have as much time developing .NET because of other school work. However I attemted reading and understanding code and implement it in different scenario and manipulate. But after 2 days of work I realised that the code you had and the help I got on the web was different versions and applied it differently. Which really shows that .NET different version compatibility is bad, which made it a lot harder to solve certain problems. Reminds me a bit of javascript that there is 100 different ways to solve a certain problem, which makes it complicated to solve a problem. However in the end after redoing your whole example and apply a different standard I solved the problems to grade 4 which I'm very pleased with.
S08
Members: Isak Zayane, Oscar Odelstav, Simon Westerdahl and Fredrik Lémon Larsson.
The pages compared are GitLab, which is hosted on Fredrik's server, Androids Developer page, and Wikipedia. Overall Wikipedia has the best time on each time measure. If you compare AndroidDev and Wikipedia, which both is for documentation but AndroidDev finished 100 times slower than Wikipedia. One could argue that AndroidDev should apply a wiki instead of their layout, to get better overall speed time. The AndroidDev is also about 10 times slower on first CPU idle time, so their page will not be as quickly responsive as wikipedia either. We chose Fredrik’s GitLab page just to see its response time for curiosity. Since it’s hosted on a server in Fredriks garage its surprising that it finishes 10 times faster than AndroidDev. Since AndroidDev got established business servers in comparison to Fredriks server. However measuring GitLab we only measured the first login page and not further into the site. When logged in you might see slower speed since there is more security as you log in. The GitLab and Android Devs First Input Delay (FID) are 1.78 and 0.59 seconds respectively. Going above 2-3 seconds can be too long for a user to have a pleasant experience, whilst Wikipedia's FID is 0.05, which is splendid! An important metric in the performance section is Time to Interactive. Wikipedia, having the best time at 0.7 seconds while GitLab and AndroidDe have 8.4 and 14.5 seconds respectively. Having 14.5 seconds on TTI is not good at all and users might end up using other sources than AndroidDev while for example looking up guides for Android Studio.
Data collectedS09
My three security concerns are people, Bot force attacks, data collection.  I worked for the hospital in Oslo and they told their passwords to each other. people also interact with weird links without fully comprehend what it's doing. Unless there is no routine or people take security serious all the time this will not be fixed. To prevent this you would have to force people to act in a certain way or disconnect them completely from the routine. I had my own web server and it was daily attacked by bots. I realised it all came from Russia or China, so I ended up banning all ip addresses from Russia and China since my product had no concerns with them. I also disabled the admin account and created 2 new accounts that would have access to enable it if it was necessary. In that way they could not force access my server through forcing in. There are techniques to deal with this like two-way authentication, add the text you see in the image, etc... Data collection is a subject people is aware of but don't know the damage it can do in the right hands. They can find patterns in your life and because of that they can get your password, know exactly where you are, and where you going, know what you going to do before you actually do it. I don't mind them gather data about all of us. My concerns is that they do it without letting us know what they using it for. If they had anonymous data sets that was public we could then analyze to know what they use the data they collected about me in their advantage and not be manipulated by them because of it. For example McDonalds have it incredible bright and loud in their resturaunts because it makes people eat faster. This is not something everyone knows and is aware of. If we knew we as a customer could tell McDonalds to stop with this because we don't want to stress to eat there but to have a calm time. But only because they manipulate us through science we're not aware of it makes it incredible dangerous and we only become consumers.
My best tips to a new web programmer would be have different advanced password for each system. See how larger company does with their security. Understand what is dangerous data that you're collecting and take extra measure to protect it because that is what they will want to steal. Create routines when a breach happens so you and your team is prepared and can act quick. This is where general approach and I say it with a purpose, because there will always be new techniques to breach the security but these tips will always be true.
Today I learned that OWASP existed, which had some interesting new security problems that I wasn't aware of. I also got an insight of how incredible large all security problems is, and you would have an incredible interest in the field to be able to deal with all problems that exist out there. That the only way to deal with all of these problems is putting your trust in other people or company to solve different issues for you.
S10
We first talked together as a group and divided who should do frontend work and who should do backend work. We then talked about the front stack and back stack. As a front stack we decided to go with React and with it's techniques like Context and Router. We considered using Redux, portals, fragments but decided it was not necessary. React is built up in a very similar way like a tree. I will use tree references and how it's built up to get a better understanding of React framework. The roots in React tree is redux or context. Context is a technique to get global variables to multiple components without the need to pass the data between components. Redux is very much like Context, except Context should be used for global values that doesn't affect the compoents but is just information. While Redux could affect other components. For a large project I would argue it's necessary to seperate these two but for a small project like this we decided Context was enough. The tree is React framework and the index.js file where everything is built and set up from. Router decide which path is necessar to access which branch. Branches is the pages wich adds values to the website. Inside a page more pages could exist, they can be built up as fragments. Fragments is a technique to build a smaller parts inside a larger page. However all these page and fragment is built up from components which is similar to the leafs. While the pages/fragments/branches decides where all the components/leafs should be, it's the components that put value to the website. Component could handle sign up and handle taking in or produce data dynamically. To send data from redux or context to one of the components it's best practice to do it from the index.js file and then pass it down from page > fragment > component. Difference between Redux and Context is that context is not visible in the code when it's passing data while Redux you have to send it between each branch since it could affect the branch if a state is changing. Portals is where the tree reference breaks. A portal can pass data from one leaf to another and ignoring the branches. This speeds up the passing of data if you have a very large tree. The backend was built up with the techniuqe AMP, which is Apache, MySQL and PHP. This part is where Fredrik has been working on in the team and is the backend. I would say the project was a perfect size for two people like me and Fredrik. Fredrik is excellent when it comes backend work and I have built with react before and learned form my experiences. We could have just done enough and be done a lot faster but it has given us to go more indepth and use fun techniques that React has to offer and use them. Hardest part was how to make my own right click menu component and apply it inside another component. I will solve it in my own time, but for this project I decided it was not worth attempt to make. I think making a project with documentation is an excellent way to grade our competence in web development. I would like to see an even larger project and remove the exams. Me and Fredrik have been working in a team in the past, and we already work great as a team. All development is a practical skill, which should be practiced by using different types of tools / techniques and get understanding when it's good to use what. This course has been great when it comes teaching the basic of different techniques, even though it might be older techniques in some scenarios I would still argue it's better to learn the older part just to get a better understanding why the web development have developed in the way it has. I wish that the teacher talked more in general terms more about the newer techniques that exist out there. I also wished that the teacher went a bit quicker on some aspect or skipped part that wasn't really necessary. Overall I'm very pleased with the lectures and I have big respect for Mikael Roos, and I know if I have questions I could ask him and we would know or try and help me find the answer. I would grade this course a solid 8. To reach higher grades would be put more energy in the lectures and maybe even do reversed lecture, where he ask the students to learn a technique or aspect of web development and next lecture gives us a task where we attempt to solve it with the technique we learned from home. I would also argue not to have written exam about a practical subject. Today I learned for this project would be the understanding the difference between Context and Redux, which I has already talked a bit about. How portals and fragments works and it's different usages. I also learned that there is limit if you don't install a react project but just use the script versions. Examples like you can only implement one react component which has to contain a lot of components, this makes the readability of the code incredible bad.