Chapter 3 Model specification
This chapter details the mrgsolve
model specification format.
3.1 How / where to write a model
There are two ways to write your model:
3.1.1 Separate file
Open a text editor and type the model into a file with name that has the format <model-name>.cpp
. This filename format identifies a “name” for your model (<model-name>
, the “stem” of the file name). The extension MUST be .cpp
(mrgsolve
curently assumes the extension). Note: this whole file will be read and parsed, so everything in it must be valid mrgsolve
model specification elements.
Use the mread()
function to read and parse this file. For the model called mymodel
saved in mymodel.cpp
(in the current working directory), issue the command:
mod <- mread("mymodel")
mread()
returns a model object from which you can simulate.
3.1.2 Inline / code
Often it is more convenient to write a model right in your R
script. The model might look something like this:
code <- '
$PARAM CL = 1, VC = 20
$PKMODEL ncmt=1
'
Here, we created a character vector of length 1 and saved it to the R
object called code
. The name of this object is irrelevant. But code
will be passed into mrgsolve
as the model definition. When mrgsolve
gets a model like this along with a “name” for the model, mrgsolve will write the code to a file called <model-name>.cpp
and read it right back in as if you had typed the code into this file (section 3.1.1).
To parse and load this model, use the mcode()
command:
mod <- mcode("mymodel", code)
mcode()
is a convenience wrapper for mread()
. mcode
writes the code to mymodel.cpp
in tempdir()
, reads it back in, compiles and loads.
The mcode
call is equivalent to:
mod <- mread("mymodel", tempdir(), code)
For help, see ?mread
, ?mcode
in the R
help system after loading mrgsolve
.
3.2 Code blocks
3.2.1 $PARAM
Define the parameter list in the current model.
Example:
$PARAM CL = 1, VC = 20, KA = 1.2
KM = 25, VMAX = 400, FLAG = 1, WT = 80
SEX = 0, N = sqrt(25)
Notes:
- Multiple blocks are allowed
- Values are evaluated by the
R
interperter
See also: section 3.2.13 and 3.2.2.
See ?param
in the R
help system after loading mrgsolve
.
3.2.2 $FIXED
Like $PARAM
, $FIXED
is used to specify name=value
pairs. Unlike $PARAM
, however, the values associated with names in $FIXED
are not able to be updated.
By default, names in $FIXED
are associated with their value through a C++
preprocessor #define
statement.
Usually, $FIXED
is only used when there are a very large number of parameters (\(>\) 100 or 200). When some of these parameters never need to be updated, you can move them to a $FIXED
block to get a modest gain in efficiency of the simulation.
Items in $FIXED
will not be shown when parameters are queried.
Example:
$PARAM CL = 2, VC = 20
$FIXED
g = 9.8
See also: section 3.2.1 and 3.2.13.
Notes:
- Multiple blocks are allowed
- Values are evaluated by the
R
interpreter
3.2.3 $CMT
and $INIT
Declare the names of all compartments in the model.
- For
$CMT
give the names of compartments; initial values are assumed to be 0 - For
$INIT
give the name and initial value for all compartments
Examples:
$CMT GUT CENT RESPONSE
$INIT GUT = 0, CENT = 0, RESPONSE = 25
See ?init
in the R
help system after loading mrgsolve
.
3.2.4 $MAIN
This code block has two main purposes:
- Derive new algebraic relationships between parameters, random, effects and other derived variables
- Set the initial conditions for model compartments
For users who are familiar with NONMEM, $MAIN
is similar to $PK
.
$MAIN
is wrapped into a C++
function and compiled / loaded by mrgsolve
. The MAIN
function gets called just prior to advancing the system from the current time to the next time for each record in the data set. $MAIN
also gets called several times before starting the problem (NEWIND == 0
) and just prior to simulating each individual (NEWIND == 1
). Finally, $MAIN
gets called every time the model initial conditions are queried with init()
.
New variables may be declared in $MAIN
. See section 3.4 for details.
Examples:
$CMT CENT RESP
$PARAM KIN = 100, KOUT = 2, CL = 1, VC = 20
$MAIN
RESP_0 = KIN/KOUT;
double ke = CL/VC;
3.2.5 $ODE
Use $ODE
to define model differential equations. For all compartments assign the value of the differential equation to dxdt_CMT
where CMT
is the name of the compartment. The dxdt_
equation may be a function of model parameters (via $PARAM
), the current value of any compartment (CMT
) or any user-derived variable.
For example:
$CMT GUT CENT
$ODE
dxdt_GUT = -KA*GUT;
dxdt_CENT = KA*GUT - KE*CENT;
It is important to make sure that there is a dxdt_
expression defined for every compartment listed in $CMT
or $INIT
, even if it is dxdt_CMT = 0;
The $ODE
function is called repeatedly during a simulation run. So it is wise to do as many calculations as possible outside of $ODE
, usually in $MAIN
. But remember that any calculation that depends on an amount in a compartment and helps determine the dxdt_
expression in a model must be written in $ODE
.
New variables may be declared in $ODE
. See section 3.4 for details.
For example:
$CMT CENT RESP
$PARAM VC = 100, KE = 0.2, KOUT = 2, KIN = 100
$ODE
double CP = CENT/VC;
double INH = CP/(IMAX+CP)
dxdt_CENT = -KE*CENT;
dxdt_RESP = KIN*(1 - INH) - RESP*KOUT;
If the model needs to refer to the current time, use the SOLVERTIME
variable.
Notes:
$ODE
is written inC++
syntax; every line must end in;
- There may be only one
$ODE
block in a model
3.2.6 $TABLE
Use $TABLE
to interact with parameters, compartment values, and other user-defined variables after the system advances to the next time. The value associated with any symbol may be inserted into the simulated output with the table()
macro.
For example:
$TABLE
table(CP) = CENT/VC;
This construct inserts a column called CP
into the simulated output, calculated for each record based on the values of the amount in the central compartment (CENT
) and the parameter (or variable) VC
.
3.2.7 $CAPTURE
A convenience block to quickly identify variables that should be captured in the simulated output.
For example:
$PARAM A = 1, B = 2
$MAIN
double C = 3;
bool yes = true;
$CAPTURE A B C yes
This construct will result in 4 additional columns in the simulated output with names A
, B
, C
, and yes
.
The $CAPTURE
block is translated to the following code:
$PARAM A = 1, B = 2
$MAIN
double C = 3;
bool yes = true;
// $CAPTURE A B C yes
// inserts the following code at the end of $TABLE
table(A) = A;
table(B) = B;
table(C) = C;
table(yes) = yes;
New variables may be declared in $TABLE
. See section 3.4 for details.
3.2.8 $OMEGA
See ?modMATRIX
for more details about options for this block.
Use this block to enter matrices for subject-level random effects drawn from multivariate normal distribution.
By default, a diagonal matrix is assumed. So:
$OMEGA
1 2 3
will generate a 3x3 omega matrix.
A block matrix may be entered by using block=TRUE
. So:
$OMEGA block = TRUE
0.1 0.02 0.3
will generate a 2x2 matrix with covariance 0.02.
A 2x2 matrix where the off-diagonal element is a correlation, not a covariance can be specified like this:
$OMEGA correlation = TRUE
0.1 0.67 0.3
Here, the correlation is 0.67. mrgsolve
will calculate the covariances and substitute these values. The matrix will be stored and used with these covariances, not the correlation.
A name can be assigned to each matrix:
$OMEGA name = "PK", block=TRUE
0.2 0.02 0.3
$OMEGA name="PD"
0.1 0.2 0.3 0.5
to distinguish between multiple $OMEGA
blocks and to facilitate updating later. The model in the preceeding example will have two $OMEGA
matrices: 2x2 and 4x4.
Notes:
- Multiple
$OMEGA
blocks are allowed
3.2.9 $SIGMA
See ?modMATRIX
for more details about options for this block.
Use this block to enter matrices for within-subject random effects drawn from multivariate normal distribution.
The $SIGMA
block functions like the $OMEGA
block. See $OMEGA
for details.
3.2.10 $SET
Use this code block to set different options for the simulation. Use a name=value
format, where value
is evaluated by the R
interpreter.
Most of the options that can be entered in $SET
are passed to update
.
For example:
$SET end = 240, delta=0.5, req=s(RESP)
Here, we set the simulation end
time to 240, set the time difference between two adjacent time points to 0.25 time units, and request only the RESP
onse compartment in the simulated output.
3.2.11 $GLOBAL
The $GLOBAL
block is for writing C++
code that is outside of $MAIN
, $ODE
, and $TABLE
.
There are no artificial limit on what sort of C++
code can go in $GLOBAL
. However there are two more-common uses:
- Write
#define
preprocessor statements - Define global variables, usually variables other than
double
,bool
,int
(see 3.4)
Preprocessor directives Preprocessor #define
directives are direct substibutions that the C++
preprocessor makes prior to compiling your code.
For example:
$GLOBAL
#define CP (CENT/VC)
When this preprocessor directive is included, everywhere the preprocessor finds a CP
token it will substitute (CENT/VC)
. Both CENT
and VC
must be defined and the ratio of CENT
to VC
will be calculated depending on whatever the current values are. Notice that we included parentheses around (CENT/VC)
. This makes sure the ratio between the two is taken first, before any other operations involving CP
.
Declaring global variables Sometimes, you may wish to use global variables and have more control over how they get declared.
$GLOBAL
bool cure = false;
With this construct, the boolean variable cure
is declared and defined right as the model is compiled.
3.2.12 $PKMODEL
This code block implements a one- or two-compartment PK model where the system is calculated by algebraic equations, not ODEs. mrgsolve
handles the calculations and an error is generated if both $PKMODEL
and $ODE
blocks are included in the same model specification file.
This is an options-only block. The user must specify the number of compartments (1 or 2) to use in the model as well as whether or not to include a depot dosing compartment. See ?PKMODEL
for more details about this block, including specific requirements for symbols that must be defined in the model specification file.
The $CMT
or $INIT
block must also be included with an appropriate number of compartments. Compartment names, however, may be determined by the user.
Example:
$CMT GUT CENT PERIPH
$PKMODEL ncmt=2, depot=TRUE
3.2.13 $THETA
Use this code block as an efficient way to add to the parameter list where names are determined by a prefix and a number. By default, the prefix is THETA
and the number sequentially numbers the input values.
For example:
$THETA
0.1 0.2 0.3
is equivalent to
$PARAM THETA1 = 0.1, THETA2 = 0.2, THETA3 = 0.3
See also: 3.2.1 .
3.2.14 $NMXML
The $NMXML
block lets you read and incorporate results from a NONMEM run into your mrgsolve
model. From the NONMEM run, THETA
will be imported into your parameter list (see 3.2.1 and 2.1), OMEGA
will be captured as an $OMEGA
block (3.2.8) and SIGMA
will be captured as a $SIGMA
block (3.2.9). Users may optionally omit any one of these from being imported.
An example
There is a NONMEM run embedded in the mrgsolve
package
path <- file.path(path.package("mrgsolve"),"nonmem")
list.files(path, recursive=TRUE)
## [1] "1005/1005.cat" "1005/1005.coi" "1005/1005.cor"
## [4] "1005/1005.cov" "1005/1005.cpu" "1005/1005.ctl"
## [7] "1005/1005.ext" "1005/1005.grd" "1005/1005.lst"
## [10] "1005/1005.phi" "1005/1005.shk" "1005/1005.shm"
## [13] "1005/1005.tab" "1005/1005.xml" "1005/1005par.tab"
## [16] "1005/INTER"
We can create a mrgsolve
control stream that will import THETA
, OMEGA
and SIGMA
from that run using the $NMXML
code block.
code <- '
$NMXML
run = 1005
project=path
theta=TRUE, omega=TRUE,sigma=TRUE
olabels = s(ECL, EVC, EKA)
slabels = s(PROP, ADD)
$MAIN
double CL = THETA1*exp(ECL);
double V2 = THETA2*exp(EVC);
double KA = THETA3*exp(EKA);
double Q = THETA4;
double V3 = THETA5;
$PKMODEL ncmt=2, depot=TRUE
$CMT GUT CENT PERIPH
$TABLE
table(CP) = (CENT/V2)*(1+PROP) + ADD/5;
$SET delta=4, end=96
'
NOTE: in order to use this code, we need to install the XML
package.
mod <- mcode("nmxml", code, quiet=TRUE)
## Loading required namespace: XML
mod
##
##
## -------- mrgsolve model object (unix) --------
## Project: /private/var/fol...dbsj0x4637ptj4hnd7kg900000gp/T/RtmprPum05
## source: nmxml.cpp
## shared object: 4cf52925906b (loaded)
##
## compile date: 05/11 16:37
## Time: start: 0 end: 96 delta: 4
## > add: <none>
## > tscale: 1
##
## Compartments: GUT CENT PERIPH [3]
## Parameters: THETA1 THETA2 THETA3 THETA4 THETA5 THETA6
## > THETA7 [7]
## Omega: 3x3
## Sigma: 2x2
##
## Solver: atol: 1e-08 rtol: 1e-08
## > maxsteps: 2000 hmin: 0 hmax: 0
param(mod)
##
## Model parameters (N=7):
## name value . name value
## THETA1 9.51 | THETA5 113
## THETA2 22.8 | THETA6 1.02
## THETA3 0.0714 | THETA7 1.19
## THETA4 3.47 | . .
revar(mod)
## $omega
## $...
## [,1] [,2] [,3]
## ECL: 0.21387884 0.12077020 -0.01162777
## EVC: 0.12077020 0.09451047 -0.03720637
## EKA: -0.01162777 -0.03720637 0.04656315
##
##
## $sigma
## $...
## [,1] [,2]
## PROP: 0.04917071 0.0000000
## ADD: 0.00000000 0.2017688
An infusion into GUT
:
set.seed(2922)
#+
mod %>%
ev(amt=1000, rate=1000/36, cmt="GUT") %>%
mrgsim(nid=10) %>%
plot
3.3 Variables and Macros
In the following section, we adopt the convention that CMT
stands for a compartment in the model.
3.3.1 ID
The current subject identifier.
3.3.2 TIME
Gives the time in the curent data set record. This is usually only used in $MAIN
or $TABLE
. Contrast with SOLVERTIME
.
3.3.3 SOLVERTIME
Gives the time of the current timestep taken by the solver. This is can only be used in $ODE
. Contrast with TIME
.
3.3.4 EVID
EVID
is an event id indicator. mrgsolve
recognized the following event IDs:
- 0 = an observation record
- 1 = a bolus or infusion dose
- 2 = other type event
- 3 = system reset
- 4 = system reset and dose
- 8 = replace
3.3.5 NEWIND
NEWIND
is a new individual indicator, taking the following values:
- 0 for the first record of the data set
- 1 for the first record of a given individual
- 2 for all other records
For example:
$GLOBAL
int counter = 0;
$MAIN
if(NEWIND <=1) {
counter = 0;
}
3.3.6 ETA(n)
ETA(n)
is the value of the subject-level variate drawn from the model OMEGA
matrix. ETA(1)
through ETA(25)
have default values of zero so they may be used in a model even if appropriate OMEGA
matrices have not been provided.
For example:
$OMEGA
1 2 3
$MAIN
double CL = TVCL*exp(ETA(1));
double VC = TVVC*exp(ETA(2));
double KA = TVKA*exp(ETA(3));
Here, we have a 3x3 OMEGA
matrix. ETA(1)
, ETA(2)
, and ETA(3)
will be populated with variates drawn from this matrix. ETA(4)
through ETA(25)
will be populated with zero.
3.3.7 EPS(n)
EPS(n)
holds the current value of the observation-level random variates drawn from SIGMA
. The basic setup is the same as detailed in ETA(n)
.
Example:
$CMT CENT
$PARAM CL=1, VC=20
$SIGMA
labels=s(ADD,PROP)
25 0.0025
$TABLE
double DV = (CENT/VC)*(1+PROP) + ADD;
3.3.8 table(name)
This macro is used in $TABLE
to insert derived variables or other information into the simulated data set.
For example:
$TABLE
table(CP) = CENT/VC;
In this example, a column will appear in the simulated data set that will be named CP
and will take the value of the ratio of the amount in the central compartment divided by the central volume of distribution.
Notice that the CP
value only exists in the table
map. It may be accessed on the right hand side of an expression like this:
$TABLE
table(CP) = CENT/VC;
table(logCP) = log(table(CP));
Note also that the name of the output column will appear exactly as it does inside the table
macro. So:
$TABLE
// DON"T DO THIS
// table("CP") = CENT/VC;
// table(ETA(1)) = ETA(1);
// DO THIS
table(CP) = CENT/VC;
table(ETA1) = ETA(1);
3.3.9 F_CMT
For the CMT
compartment, sets the bioavability fraction for that compartment.
Example:
$MAIN
F_CENT = 0.7;
3.3.10 ALAG_CMT
For the CMT
compartment, sets the lag time for doses into that compartment.
Example:
$MAIN
ALAG_CENT = 0.25;
3.3.11 R_CMT
For the CMT
compartment, sets the infusion rate for that compartment. The infusion rate is only set via R_CMT
when rate
in the data set or event object is set to -1
.
Example:
$MAIN
R_CENT = 100;
3.3.12 D_CMT
For the CMT
compartment, sets the infusion duration for that compartment. The infusion duration is only set via D_CMT
when rate
in the data set or event object is set to -2
.
Example:
$MAIN
D_CENT = 2;
3.4 Derive new variables
New C++
variables may be derived in $GLOBAL
, $MAIN
, $ODE
and $TABLE
. Because these are C++
variables, the type of variable being used must be declared. For the vast majority of applications, the double
type is used (double-precision numeric value.
$MAIN
double CLi = TVCL*exp(ETA(1));
We want CLi
to be a numeric value, so we use double
. To derived a boolean
variable, write
$MAIN
bool cure = false;
When variables of the type double
, int
, and bool
are declared and initialized in $MAIN
, $ODE
, $TABLE
, mrgsolve
will detect those declarations, and modify the code so that the variables are actually declared in $GLOBAL
not in $MAIN
, $ODE
, or $TABLE
. This is done so that variables declared in one code block can be read and modified in another code block.
For example, the following code:
$MAIN
double CLi = TVCL*exp(ETA(1));
gets translated to:
$GLOBAL
double CLi;
$MAIN
CLi = TVCL*exp(ETA(1));
This way, we can still read CLi
in $TABLE
:
$MAIN
double CLi = TVCL*exp(ETA(1));
double VCi = TVVC*exp(ETA(2));
$TABLE
table(KEi) = CLi/VCi;
To declare a variable that is local to a particular code block:
$MAIN
localdouble CLi = TVCL*exp(ETA(1));
3.5 Examples
The following sections show example model specification. The intention is to show how the different blocks, macros and variables can work together to make a functional model. Some models are given purely for illustrative purpose and may not be particularly useful in application.
3.5.1 Simple PK model
Notes:
- Basic PK parameters are declared in
$PARAM
; every parameter needs to be assigned a value - Two compartments
GUT
andCENT
are declared in$CMT
; using$CMT
assumes that both compartments start with 0 mass - Because we declared
GUT
andCENT
as compartments, we writedxdt_
equations for both in$ODE
- In
$ODE
, we refer to parameters (CL/VC/KA
) and the amounts in each compartment at any particular time (GUT
andCENT
) $ODE
should beC++
code; each line ends in;
- The
table()
macro is used in$TABLE
to insert the concentration in the central compartmentCENT/VC
into the simulated output
$PARAM CL = 1, VC = 30, KA = 1.3
$CMT GUT CENT
$ODE
dxdt_GUT = -KA*GUT;
dxdt_CENT = KA*GUT - (CL/VC)*CENT;
$TABLE
table(CP) = CENT/VC;
3.5.2 PK/PD model
Notes:
- We use a preprocessor
#define
directive in$GLOBAL
; everywhere in the model where aCP
token is found, the expression(CENT/VC)
… with parentheses … is inserted - We write the initial value for the
RESP
compartment in$MAIN
as a funciton of two parametersKIN/KOUT
- A new variable -
INH
- is declared and used in$ODE
- Since
CP
is defined asCENT/VC
, we can “capture” that name/value in$CAPTURE
; this is short-cut syntax fortable(CP) = CP;
in$TABLE
- Both
$MAIN
and$ODE
areC++
code blocks; don’t forget to add the;
at the end of each statement
$PARAM CL = 1, VC = 30, KA = 1.3
KIN = 100, KOUT = 2, IC50 = 2
$GLOBAL
#define CP (CENT/VC)
$CMT GUT CENT RESP
$MAIN
RESP_0 = KIN/KOUT;
$ODE
double INH = CP/(IC50+CP);
dxdt_GUT = -KA*GUT;
dxdt_CENT = KA*GUT - (CL/VC)*CENT;
dxdt_RESP = KIN*(1-INH) - KOUT*CENT;
$CAPTURE CP
3.5.3 Population PK model with covariates and IOV
Notes:
- Use
$SET
to set the simulation time grid from 0 to 240 by 0.1 - There are two
$OMEGA
matrices; we name themIIV
andIOV
- The IIV “etas” are labeled as
ECL/EVC/EKA
; these are aliases toETA(1)/ETA(2)/ETA(3)
. TheIOV
matrix is unlabeled; we must refer toETA(4)/ETA(5)
for this - Because
ETA(1)
andETA(2)
are labeled, we can “capture” them asECL
andEVC
- We added zeros for both
$OMEGA
matrices; all the etas will be zero until we populate those matrices (section 6.6)
$PARAM TVCL = 1.3, TVVC=28, TVKA=0.6, WT=70, OCC=1
$SET delta=0.1, end=240
$CMT GUT CENT
$MAIN
double IOV = ETA(4);
if(OCC==2) IOV = ETA(5);
double CLi = exp(log(TVCL) + 0.75*log(WT/70) + ECL + IOV);
double VCi = exp(log(TVVC) + EVC;
double KAi = exp(log(TVKA) + EKA;
$OMEGA name="IIV"
labels=s(ECL,EVC,EKA)
0 0 0
$OMEGA name="IOV"
0 0
$SIGMA 0
$ODE
dxdt_GUT = -KAi*GUT;
dxdt_CENT = KAi*GUT - (CLi/VCi)*CENT;
$TABLE
table(CP) = CENT/VCi;
$CAPTURE IOV ECL EVC


[1]
the hotel itself is the main road which runs up the east side of lake garda .
[2]
a few parking spaces out the front , and we never struggled to find a space .


DDG Makes An Impresive Debut With "Valedictorian"
DDG comes through.
by Milca P.Valedictorian
DDG
Editor Rating: HOTTTTT
User Rating: n/a - 0% (0)
Looks can be deceiving. Such is the case for those unfamiliar with the baby-faced DDG. The (proudly) Pontiac, MI-made emcee, who has achieved significant social media stardom, is an unassuming arsenal of the type of range and music-making IQ of that poised for longevity. With the arrival of his Valedictorian debut album, he drives the point home.
"I've got a lot of songs, so it's a lot of songs that didn't make the project," he previously told Complex. "But the ones that I picked out, I wanted to just show my versatility and everything different about my music ... It was all about just being versatile, because not only do I want to just show my skills and being able to switch it up, but I want to see what people like from me—what type of style people gravitate towards the most."
Get into Valedictorian below.


Here you are going to find animal products given below: Eggs, beef, mutton, pork, wool. Click on the SUGGEST SUPPLY button below to get the form for supplying your products. Kindly enter the amount in the following form eggs: trays @30 eggs, beef,mutton, wool and pork: kilograms.
Here you'll find a variety of legumes given below:Kidney beans, Black beans, Soy beans, Peas, Peanuts, Yellow beans, French beans, Chick peas, Lentils and Lima beans. Click on the button PLACE AN ORDER below to get the form for ordering your products. Kindly enter the amount in the following egg trays; product and kilograms.
We offer a variety of fruits namely: Apples, Oranges, Grapes, Plums, Lemons and Peaches.
 Remember to enter the quantity of cartons.(A carton carries 200 fruits)
Grapes and Plams are sold per kg
At our shop you'll be able to find vegetables that you desire to have.And as per now,the following products are the ones which are available: Kales, Cabbage, Lettuce, Cauliflower and Spinach. Click on the button PLACE AN ORDER below to get the form for ordering your products. Kindly enter the amount in the specific places that you've been asked.
| Category | Product type | Amount | Charge |
|---|


John Alexis Guerra Gómez| ja.guerrag[at]uniandes.edu.co| @duto_guerra
Jose Tiberio Hernández | jhernand[at]uniandes.edu.co
Universidad de los Andes
http://johnguerra.co/lectures/visualAnalytics_fall2017/03_Marks_and_channels/
Based onslides from Tamara Munzner
Encode most important attributes with highest ranked channels
[Automating the Design of Graphical Presentations of Relational Information. Mackinlay. ACM Trans. on Graphics (TOG) 5:2 (1986), 110–141]


WATER TANK CLEANING
The Benefits Of A Clean Water Tank To Your Health
Regular cleaning of the tank means cleaner water, which is important for maintaining good health. Even if you are only using the water for outdoor use (like watering your garden), you must clean your tank on a regular basis. Many people think a tank always has clean water – but this may not always be the case.
HARM TO OUR BODY IF WE DON'T CLEAN IT ON REGULAR BASIS
If the water tank is not cleaned on a regular basis, it can lead to impurities in the water which may consist of many harmful germs. ... If the tanks are left unclean, they can also get polluted easily over a period of time and may thus prove harmful for consumption and even for cleaning.The Water in Your Life Did you know that your water tanks and pipes are home to living germs, bacteria and viruses such as Legionella, Salmonella, Giardia, Norovirus, Hepatitis A and the E Coli group of bacteria.


When it comes to buying a guitar, there are several things to keep in mind:
If you're on a tight budget, or don't have extra money to buy extra accessories, you'll want to go with an acoustic or a classical (A.K.A Spanish Guitar). However, acoustic would most likely be the cheepest option, depending on what brand you buy.
Similarly, if you want more of a classical guitar sound, you'll want to go with an acoustic or classical guitar. The main difference between a classical and acoustic guitar is the strings and how they are wound. A regualr acoustic guitar uses steel strings and can be strumed with a pick, and also has a solid head where the strings wrap around the tuning pegs. A classical, on the other hand, uses nylon strings and should only be played with your fingers. The classical also has an open head unlike the solid head of the acoustic.
However, if you have more money to spend, and or want more of a rock sound and be able to play around with various effects with your guitar, then electric is the guitar for you. Keep in mind, that in order to get the full experience out of your electric guitar you'll need to make sure you get an amp and a cable to connect your guitar to the amp at a minimum.
If you are still unsure, here are some examples of what each guitar looks like:


climate conservation change high metrics exposure agreement vulnerability areas based predictions projections uncertainty velocity low strategies ecological quartile species different value alternative classified future regions {border-style data lands management multivariate adaptation backward framework px;} #ffffff;} Belote Change Fig. degree relatively upper velocity, Climate Ecology area estimates maps mode using values lower variability ecosystems metric recommendations used United changes confidence geographic heuristic mapped provide (i.e., Conservation approach assigned map metrics. planning predicted represent variables High Nature States biodiversity dissimilarity forward impacts protected restoration (Fig. grid local model projected quartiles reserves simulations use Emphasize RCP characterized conceptual conditions consensus current expected exposure. frequency important mountainous patterns px; shifts value-high value-low various {font-family (Supplemental America Ecological Figure Global However, Lawler Low Science [], assess assigning calculated contiguous font-size land level mean metrics, models precipitation range total (). (forward ./s--- Environment Frontiers GCMs Williams bivariate double; evaluate evaluating existing exposure, focus general greenhouse locations mapping recommend relative responses results time value, vulnerability. (see ./j.-...x AdaptWest Biology Climatic Environmental North Sciences analogues assignment associated border-color border-width cell central change: changing classification climatic confidently consider considering diversity evaluated example, experience face flexibility focused gas higher historical including index insights large natural potential projections, proposed reduce resulted solid; sources standard temperature wildland {font-style {font-weight ./-. ./gcb. ./pnas. Academy Commons Creative Forward National Proceedings Specifically, University Watson Western accounting analysis, approaches aspects available blue bold cells challenges change. combinations concentration corner corners courier; degrees derived dissimilarity) dissimilarity. distance ecosystem em; emphasize evaluation explicitly frameworks given global heuristics highest http://orcid.org/--- include included increasingly indicates inform innovative location managing material methods moisture multiple novel paper. planning. predictions. present previous processes pt;} recent remains representing require result resulting scores simulation simulations. strategy traditional vary vulnerability,


@***************************************************************************** * Page to display a form to provide feedback * * Copyright 2012 MIT Libraries * * @author richardrodgers * *****************************************************************************@ @(fbform: Form[(String,Boolean,String)])(implicit hubContext: HubContext, flash: Flash) @import helper._ @main("Feedback - TopicHub") {
We'd love to hear from you!
Please record any comments, questions, suggestions, etc you have in the field below. You may check the 'reply' box if you would like a reply sent to the email supplied. You may comment on application design and usability, or on the content you find (or don't) - if your comment pertains to content supplied by users, we will make every effort to relay it, consistent with their wishes.
@form(routes.Application.takeFeedback) { @inputText(fbform("email")) @checkbox(fbform("reply"), 'info -> "check") @textarea(fbform("comment"))}
Thanks for helping make TopicHub a more valuable service!
}


Changing Etiquette?
A recent conversation of someone that was offended when the were introduced to someone new, then was not greeted first since they were a female brought what follows to mind. The above is a train of thought that came from a 70 year old military wife. I do not believe this is common practice today and is quite rarely found as the common etiquette, but nonetheless I think what is proper etiquette in business is changing quite rapidly. Though I’m not sure if all of the older ideas and principles have gone away.
I take as a first example zuckerburg, whom is a notoriously difficult interview. Not because he keeps things hidden, or is sealed tight about the company, but rather that his soft skills are not his strength. His strength is building a web product that millions of people find worthwhile to divulge hours of their day into it.
Even two years ago when you were disgruntled with a company you may have gotten a few drinks in you and talked to a friend about your displeasure. But it certainly was not made fully public for anyone to see. At best you could only hope you were simply privy to things that would be brought to the publics eye from a larger misdoing either legally or that a mass-crowd found a problem with. But for simply being overworked, underpaid, or in some other odd way mistreated there was no politically correct outlet to speak through.
However in the past years it has become extremely common for those that are still employed, or were employed to voice their complaints and bring to light the details that were once hidden. I think of Zed Shaw’s rant on rails which calls out specific companies, or an older blog the diary of a mac genius, who gave detailed behind the scenes information of an apple customer support genius bar. While I’ll concede for the mass majority if it’s published it’s doesn’t mean its consumed, so it’s not a dramatic effect on any single business, I still find it hard to believe that this overall shift of users freely publishing is not going to be able to be stopped by companies. As we approach web 3.0 and have a better ability to pull in a larger base of information that’s more relevant this information may become more and more helpful to users.
Regardless of the effects, it seems the standard procedures for what is proper etiquette are changing. Whether its talking about your place of employment, or HR checking out you’re facebook profile to see if you’d be a risk for the company, the lines are being blurred from both sides and the barriers that once existed are now being torn down.


Team City¶
We use Team City’s built in nuget server and symbol server to host prerelease nugets.
Debug and Release Build Configuration¶
We build prerelease nugets with the Debug configuration for maximum information while developing. Release builds are build with the Release configuration. There seems to be less information available to Release builds when debuging because it get optimized away.
Build Output¶
To make Debug and Release builds work we require that build output be localed in the bin folder not the default bin/debug and bin/release
Symbol Indexer¶
Prerelease builds need the Symbol Indexer build feature turned on. It is what adds symbol information to the pdb file. If this is not run successfully symbols will not be downloadable. You know it runs when you see something similar to the following in the build output.
Indexing sources appeared in file C:\TeamCity\BuildAgents\BuildAgent03\work\ebeb9ff100c9190e\Source\Improving.DbUp\bin\Improving.DbUp.pdb
[15:52:06]Information about 6 source files was updated
Important
Do not add the Symbol Indexer to release builds that are being pushed to nuget and SymbolSource.org.
Dll’s have 2 fields that uniquely itentify them. The signature and the age. Running the Symbol Indexer
will increment the age in the dll and then nuget.exe
with increment the age again. The dll age will no longer
match and you will not be able to download symbols.


SOME CONTENT
This is A brief!
This is A Description!
This is an other brief!
A Description hfdksahf kjhdsk hfaj fhkajhafhdskjhf ksjhakjhfjkshdfkjsahkjfhasjkfhajhfkjahfkjdhakfjhadskjfhsfsdhafkhakfhdakjfhkajf


We combine the latest in machine learning technology with the care and craftsmanship of mathematicians and statisticians of yore.
Sounds interesting...We were drawn together by a calling: We felt that today's artificial intelligence was moving too fast, was mediated by too many layers of abstraction, and was too disconnected from its roots.
So we started Artisanal AI, where we are remedying that with hand crafted AI solutions. At Artisanal AI we do it all from scratch: backprop, adversarial neural nets, stochastic gradient descent are all calculated by hand, step by step, one iteration at a time. We use the tools of our fathers and grandfathers -- calculators, slide rules and even abaci -- to lovingly create machine learning algorithms that may not be as fast, but they are authentic.
Our tools aren't made from plastic or silicon. They're made from wood and steel.
Taking cues from the slow food movement, we created our own slow code movement. That gives you time to savor more and k-fold validate less.
Each craftsman spends 8 hours/day carefully calculating gradients by hand.
You can feel the love.
 Lots and lots of beards and some fedoras.
Send us a postcard:
Artisanal AI
100 Mongomery Street
SF, CA, 94707


Hey there, if you take this quiz we'll be able to give you guidance as to what language you should learn.
You should study c#! Cat ipsum dolor sit amet, hide head under blanket so no one can see but wake up human for food at 4am.
These developers work on things such as:
You call this cat food thug cat or wake up wander around the house making large amounts of noise jump on top of your human's bed and fall asleep again.
You should study JS!  Toy mouse squeak roll over going to catch the red dot today going to catch the red dot today mesmerizing birds for howl on top of tall thing for climb a tree, wait for a fireman jump to fireman then scratch his face.
You should study Ruby! Howl uncontrollably for no reason swat turds around the house for present belly, scratch hand when stroked, or hunt by meowing loudly at 5am next to human slave food dispenser for asdflkjaertvlkjasntvkjn (sits on keyboard),


Spoilers: Wife swap disaster in EastEnders for Walford residents
Disaster is something of a common occurrence in Albert Square, but a very different kind of disaster ensues in upcoming EastEnders episodes, as Mick Carter (Danny Dyer) carries out his plan of winning the ‘Best Pub’ competition — with a wife swap competition.
With plenty of stress on her plate, Linda (Kellie Bright) has been going through something of a rough time. Mick was determined to cheer her up with the ‘Best Pub’ competition.
However, when she wasn’t all that interested, the Queen Vic landlord came up with a winning idea — a Walford Wife Swap.
In the coming episodes, Mick orchestrates his plans for the wife swap competition, and as the day of the event arrives, he hopes that everything runs smoothly. Mind you — given that this is Walford we’re talking about — that was never going to happen.
Everyone gathers at The Vic to hear the outcomes, but Gray (Toby-Alexander Smith) isn’t too chuffed about the whole thing, and thus he sets about sabotaging the results. However, how he attempts to do so remains to be seen.
Advertisement Advertisement
Later, Ruby move into The Vic to stay with Mick and Ollie, while Kat (Jessie Wallace) moves in with Patrick (Rudolph Walker), and Kush (Davood Ghadami) ends up with Sheree (Suzette Llewellyn).
However, living with Patrick proves rather difficult for Kat, and thus she tells Kush to put an end to the whole thing.
With plenty of new dynamics set to be explored as a result of the wife swap competition, there’ll no doubt be plenty of conflict ahead!
One to watch: Tuesday 26thNovember at 7:30pm on BBC One.


The Weather Server - Map Tile Example
Current Temperature
This example shows how to add weather tiles from TheWeatherServer as of a map using the Openlayers framework. Every time you zoom or move the map, the appropriate weather tiles are loaded from TheWeatherServer.


Black Mesa is an American research corporation whose headquarters are located in the Black Mesa Research Facility, in the New Mexico desert.Black Mesa is apparently helmed by the United States government, as the Great Seal can be seen on the ground of several lobbies of the Black Mesa Research
The Resonance Cascade is a cataclysmic quantum event created after the insertion of Xen crystal sample "GG-3883" into the Anti-Mass Spectrometer at the Black Mesa Research Facility, by Dr. Gordon Freeman, culminating in the Black Mesa Incident
The Resonance Cascade has immediate and catastrophic effects. The Xen creatures, trapped in an alien environment, begin to relentlessly attack Black Mesa employees on sight. The Resonance Cascade also causes serious structural damage to the facility, with elevators collapsing and ceilings caving in


{% import '_tree_table.html' as tree_table with context %} {% set root_tree_closed = g.filtered.root_tree_closed %} {% set invert = ledger.fava_options.invert_income_liabilities_equity %}


The Magic Toy Shop is a retailer of toys, games, and magic tricks. For over 30 years it has successfully focused on traditional toys, but now offers a full range of new and vintage products to appeal to children and adults alike. The shop specializes in sourcing the most cherished items from everyone’s childhood, making long-forgotten things available today.Through their new website, it wanted to showcase its products, while maintaining the brand image of tradition, fun, and creativity.
Duration: 2 weeks
Team: Me
Information architecture, open and closed card sorting, user research, competitive and comparative analysis, site map, user flows, wire flows, prototyping, interaction design, sketching, personas
Maintaining tradition while keeping up with new trends.
The Magic Toy Shop had a problem with attracting both children and adults alike while maintaining the sentiment of a highly curated brick and mortar shop. Competing with giant retailers such as Amazon, the Magic Toy Shop was facing possible extinction if the brand image didn't keep up. This is where I needed to step in.
Plan for scalability while maintaining a small shop feel.
By incorporating content strategy management to tackle new inventory, adding a "chat with a rep" feature, and implementing a reviews database, the new and improved Magic Toy shop would be able to cater to a wide variety of users.
Whether a parent is searching for a gift for their child, or a vintage collector is seeking the new collectable, the Magic Toy Shop will contain an intuitively organized database of toys along with several features that will ensure the company remains competitive and relevant.
Apply information architecture techniques for a seamless e-commerce experience.
Research
In order to be able to establish a streamlined experience for e-commerce users a lot of research had to be done. I began by synthesizing data into primary personas, who I referred back to throughout the process to make sure design decisions were data-driven. Once the personas were establiched I recruited people for an open card sorting activity that aimed at uncovering what an intuitive way of categorizing toys and games would be. I was able to extract common categories from this activity, and proceeded to conduct a closed card sorting with some categories already established in order to validate them with users. With the information architecture determined, I moved forward with the process.
Implementation
Consequently, I drafted a sitemap for the new Magic Toy Shop to get an idea of what the skeleton would look like. Then, I created user flows for the personas so I could visualize what key touchpoints the users would have with the system. This was an integral part of my process that steered the ideation of wire flows and user interface sketching . The final product was an effective e-commerce website that served a multitude of user needs.


Sean Learns Code
I'm building a blog and doing other things with code and putting them here.
Come in, stay a while.
Log in:
Username:
Password:
login
Current user
{{user.username}}
Compose new post:
Recent Posts:
{{Display posts}}


Welcome to Navigate the News!
To begin navigating, type in the keywords you wish to search for in the news above.
If you want to view all the latest news with no filters, simply press search with no keywords.
To filter your search, use the options to the right of the search bar.


You are warmly welcome to the MintHRM Application now you can perform HR related transections using below login details.
Username
: [user_name]
Password
: [user_password]
EXPERIENCE IT ! IT’S REALLY COOL !


Music harmony generation
Select note
Harmony
Harmonic Minor
Harmonic Major
Melodic Minor
Melodic Major
Natural Minor
Natural Major
Pentatonic
Not selected
Use pentatonic
BPS (speed)
Size
1/1
1/2
1/4
1/8
1/16
1/32
Playback
Play
Stop
Harmonic minor


Platzinauta
Like
SpaceX
and
Platzi
? look launches info, for Platzinautas like you!


Developer Docs¶
This section of the documentation is for other developers, and contains the complete information about each package, module, class, and method.
Submodules¶
mention.base module¶
-
class
mention.base.
AppDataAPI
(access_token)[source]¶ Bases:
mention.base.Mention
Retrieves useful details about the application.
Parameters: access_token (str) – Mention API access_token -
query
()[source]¶ The request that returns a JSON file of the API call given a url.
Returns: the base_url and the end_url. Return type: class: json
-
url
¶ The concatenation of the base_url and end_url that make up the resultant url.
Returns: the base_url and the end_url. Return type: str
-
-
class
mention.base.
CreateAnAlertAPI
(access_token, account_id, name, queryd, languages, countries=None, sources=None, blocked_sites=None, noise_detection=None, reviews_pages=None)[source]¶ Bases:
mention.base.Mention
Retrieve details about a single alert.
Parameters: - access_token – Mention API access_token
- account_id – ID of the account.
- name – Alert name.
- queryd – queryd is a dictionary that can be of two different types: basic or advanced.
Example: >>> queryd = { 'type'='basic', 'included_keywords' : ["NASA", "Arianespace", "SpaceX", "Pockocmoc"], 'required_keywords' : ["mars"], 'excluded_keywords' : ["nose", "fil d'ariane"], 'monitored_website' : ["domain":"www.nasa.gov", "block_self":true] }
OR
>>> queryd = { 'type' : 'advanced', 'query_string' : '(NASA AND Discovery) OR (Arianespace AND Ariane)' }
Parameters: - languages (list) – A list of language codes. eg: [‘en’].
- countries (list) – A list of country codes. eg: [‘US’, ‘RU’, ‘XX’].
- sources (list) –
A list of sources from which mentions should be tracked. Must be either web, twitter, blogs, forums, news,
facebook, images or videos - blocked_sites (list) – A list of blocked sites from which you don’t want mentions to be tracked.
- noise_detection (boolean) – Enables noise detection.
- reviews_pages (list) – List of reviews pages.
-
data
¶ - Parameters passed to the API containing the details to create a new
- alert.
Returns: parameters to create new alert. Return type: dict
-
params
¶ Parameters used in the url of the API call and for authentication.
Returns: parameters used in the url. Return type: dict
-
query
()[source]¶ The request that returns a JSON file of the API call given a url.
Returns: the base_url and the end_url. Return type: class: json
-
url
¶ The concatenation of the base_url and end_url that make up the resultant url.
Returns: the base_url and the end_url. Return type: str
-
class
mention.base.
CurateAMentionAPI
(access_token, account_id, alert_id, mention_id, favorite=None, trashed=None, read=None, tags=None, folder=None, tone=None)[source]¶ Bases:
mention.base.Mention
Updates an existing mention.
Parameters: - access_token (str) – Mention API access_token
- account_id (str) – ID of the account.
- alert_id (str) – ID of the alert.
- mention_id (str) – ID of the mention.
- favorite (boolean) – Boolean value indicating if the mention was set as favorite.
- trashed (boolean) – Boolean value indicating if the mention has been put in trash.
- read (str) – Boolean value indicating that a mention was read.
- tags (dict) – add list of tags attributed to the mention.
- folder (str) – Indicates the folder where the mention has been put.
- tone (str) – Tone value given to the mention. Must be one of ‘negative’, ‘neutral’, ‘positive’.
-
data
¶ - Parameters passed to the API containing the details to update a
- alert.
Returns: parameters to create new alert. Return type: dict
-
params
¶ Parameters used in the url of the API call and for authentication.
Returns: parameters used in the url. Return type: dict
-
query
()[source]¶ The request that returns a JSON file of the API call given a url.
Returns: the base_url and the end_url. Return type: class: json
-
url
¶ The concatenation of the base_url and end_url that make up the resultant url.
Returns: the base_url and the end_url. Return type: str
-
class
mention.base.
FetchAMentionAPI
(access_token, account_id, alert_id, mention_id)[source]¶ Bases:
mention.base.Mention
Get a single mention by its mention ID.
Parameters: - access_token (str) – Mention API access_token
- account_id (str) – ID of the account.
- alert_id (str) – ID of the alert.
- mention_id (str) – ID of the mention.
-
params
¶ Parameters used in the url of the API call and for authentication.
Returns: parameters used in the url. Return type: dict
-
query
()[source]¶ The request that returns a JSON file of the API call given a url.
Returns: the base_url and the end_url. Return type: class: json
-
url
¶ The concatenation of the base_url and end_url that make up the resultant url.
Returns: the base_url and the end_url. Return type: str
-
class
mention.base.
FetchAlertsAPI
(access_token, account_id)[source]¶ Bases:
mention.base.Mention
This method will allow you to fetch a list of all alerts for a given account.
Parameters: - access_token (str) – Mention API access_token
- account_id (str) – ID of the account.
-
params
¶ Parameters used in the url of the API call and for authentication.
Returns: parameters used in the url. Return type: dict
-
query
()[source]¶ The request that returns a JSON file of the API call given a url.
Returns: the base_url and the end_url. Return type: class: json
-
url
¶ The concatenation of the base_url and end_url that make up the resultant url.
Returns: the base_url and the end_url. Return type: str
-
class
mention.base.
FetchAllMentionsAPI
(access_token, account_id, alert_id, since_id=None, limit='20', before_date=None, not_before_date=None, source=None, unread=None, favorite=None, folder=None, tone=None, countries=None, include_children=None, sort=None, languages=None, timezone=None, q=None, cursor=None)[source]¶ Bases:
mention.base.Mention
Get all or a filtered amount of mentions from an account.
Parameters: - access_token – Mention API access_token
- account_id – ID of the account.
- alert_id – ID of the alert.
- since_id – Returns mentions ordered by id. Can not be combined with before_date, not_before_date, cursor.
- limit – Number of mentions to return. max 1000.
- before_date – Mentions Before date in ‘yyyy-MM-dd HH:mm’ format
Example: >>> before_date = '2018-11-25 12:00'
Parameters: - not_before_date (str) – Mentions Not before date in ‘yyyy-MM-dd HH:mm’ format
- source (str) – Must be either web, twitter, blogs, forums, news, facebook, images or videos
- unread (boolean) – return only unread mentions. Must not be combined with favorite, q, and tone.
- favorite (boolean) – Whether to return only favorite mentions. Can not be combined with folder, when folder is not inbox or archive
- folder (str) – Filter by folder. Can be: inbox, archive, spam, trash. With spam and trash, include_children is enabled by default.
- tone (str) – Filter by tone. Must be one of ‘negative’, ‘neutral’, ‘positive’.
- countries (str) – Filter by country.
- include_children (boolean) – include children mentions.
- sort (str) – Sort results. Must be one of published_at, author_influence.score, direct_reach, cumulative_reach, domain_reach.
- languages (str) – Filter by language.
- timezone (str) – Filter by timezone.
- q (str) – Filter by q.
- cursor (str) – Filter by cursor
-
params
¶ Parameters used in the url of the API call and for authentication.
Returns: parameters used in the url. Return type: dict
-
query
()[source]¶ The request that returns a JSON file of the API call given a url.
Returns: the base_url and the end_url. Return type: class: json
-
url
¶ The concatenation of the base_url and end_url that make up the resultant url.
Returns: the base_url and the end_url. Return type: str
-
class
mention.base.
FetchAnAlertAPI
(access_token, account_id, alert_id)[source]¶ Bases:
mention.base.Mention
Retrieve details about a single alert.
Parameters: - access_token (str) – Mention API access_token
- account_id (str) – ID of the account.
- alert_id (str) – ID of the alert.
-
params
¶ Parameters used in the url of the API call and for authentication.
Returns: parameters used in the url. Return type: dict
-
query
()[source]¶ The request that returns a JSON file of the API call given a url.
Returns: the base_url and the end_url. Return type: class: json
-
url
¶ The concatenation of the base_url and end_url that make up the resultant url.
Returns: the base_url and the end_url. Return type: str
-
class
mention.base.
FetchMentionChildrenAPI
(access_token, account_id, alert_id, mention_id, limit=None, before_date=None)[source]¶ Bases:
mention.base.Mention
“”This class will allow you to fetch a list of all children mentions for a given mention.
Parameters: - access_token – Mention API access_token
- account_id – ID of the account.
- alert_id – ID of the alert.
- limit – Number of mentions to return. max 1000.
- before_date – Mentions Before date in ‘yyyy-MM-dd HH:mm’ format
Example: >>> before_date = '2018-11-25 12:00'
-
params
¶ Parameters used in the url of the API call and for authentication.
Returns: parameters used in the url. Return type: dict
-
query
()[source]¶ The request that returns a JSON file of the API call given a url.
Returns: the base_url and the end_url. Return type: class: json
-
url
¶ The concatenation of the base_url and end_url that make up the resultant url.
Returns: the base_url and the end_url. Return type: str
-
class
mention.base.
MarkAllMentionsAsReadAPI
(access_token, account_id, alert_id)[source]¶ Bases:
mention.base.Mention
Marks all mentions as read.
Parameters: - access_token (str) – Mention API access_token
- account_id (str) – ID of the account.
- alert_id (str) – ID of the alert.
-
params
¶ Parameters used in the url of the API call and for authentication.
Returns: parameters used in the url. Return type: dict
-
query
()[source]¶ The request that returns a JSON file of the API call given a url.
Returns: the base_url and the end_url. Return type: class: json
-
url
¶ The concatenation of the base_url and end_url that make up the resultant url.
Returns: the base_url and the end_url. Return type: str
-
class
mention.base.
Mention
(access_token)[source]¶ Bases:
object
The base class for all of the Mention API calls.
Parameters: access_token (str) – Mention API access_token
-
class
mention.base.
UpdateAnAlertAPI
(access_token, account_id, alert_id, name, queryd, languages, countries=None, sources=None, blocked_sites=None, noise_detection=None, reviews_pages=None)[source]¶ Bases:
mention.base.Mention
Modifies an existing alert, usually to update the criteria and to improve the search’s efficiency.
Parameters: - access_token – Mention API access_token
- account_id – ID of the account.
- name – Alert name.
- queryd – Queryd is a dictionary that can be of two different types: basic or advanced.
Example: >>> queryd = { 'type'='basic', 'included_keywords' : ["NASA", "Arianespace", "SpaceX", "Pockocmoc"], 'required_keywords' : ["mars"], 'excluded_keywords' : ["nose", "fil d'ariane"], 'monitored_website' : ["domain":"www.nasa.gov", "block_self":true] }
OR
>>> queryd = { 'type' : 'advanced', 'query_string' : '(NASA AND Discovery) OR (Arianespace AND Ariane)' }
Parameters: - languages (list) – A list of language codes. eg: [‘en’].
- countries (list) – A list of country codes. eg: [‘US’, ‘RU’, ‘XX’].
- sources (list) –
A list of sources from which mentions should be tracked. Must be either web, twitter, blogs, forums, news,
facebook, images or videos - blocked_sites (list) – A list of blocked sites from which you don’t want mentions to be tracked.
- noise_detection (boolean) – Enables noise detection.
- reviews_pages (list) – List of reviews pages.
-
data
¶ - Parameters passed to the API containing the details to update a
- alert.
Returns: parameters to create new alert. Return type: dict
-
params
¶ Parameters used in the url of the API call and for authentication.
Returns: parameters used in the url. Return type: dict
-
query
()[source]¶ The request that returns a JSON file of the API call given a url.
Returns: the base_url and the end_url. Return type: class: json
-
url
¶ The concatenation of the base_url and end_url that make up the resultant url.
Returns: the base_url and the end_url. Return type: str
mention..utils module¶
-
mention.utils.
transform_boolean
(value)[source]¶ Transfroms boolean to 1 or 0.
Parameters: value (boolean) – Boolean value. Returns: number epresentation of boolean 1 or 0. Return type: str


I'm a software engineer working on distributed storage technologies at Qumulo. Previously, I spent a few years working on scalability and latency improvements for the Azure cloud. I graduated from Brown University with a B.S. in Computer Science in 2013.
I love computer systems! I've spent a few years working on high-performance cloud storage and networking systems. Back in college, I studied computer graphics, operating systems, networks, game engines and more. I also love to learn and to teach. (You only truly grok something if you can explain it to someone else.)
When I'm offline, I enjoy going on road trips throughout Washington state and hanging around outdoors with my wife and our little boys.
On the Web
- My Blog
- You are here! Where I practice writing, usually tech-related stuff.
- My GitHub
- Where any of my hack projects ended up, long before I had kids :-)
- Peebles Lab
- A webcomic about science and math I drew and co-authored in high school.


new MYSQLPromiseObjectBuilder()
- Source:
MySQL Response Object Builder.
Methods
(async) add(key, query, def, DBKey) → {true}
- Source:
Add a promise to the handler.
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
key |
string | Key in the response object | |
query |
string | SQL Query | |
def |
* |
null
|
Default Value |
DBKey |
string | Database Key |
Returns:
Done
- Type
- true
(async) waitForAll(data) → {Object.<*>}
- Source:
Build an object based on the responses.
Parameters:
| Name | Type | Description |
|---|---|---|
data |
Object | is data.memberData (the mongoose Member schema) |
Returns:
Object
- Type
- Object.<*>


MILLINGTON OF PENGERSWICK
IN the reign of Henry VIII., one Militon, or Millington, appears to have purchased Pengerswick Castle. This Millington is said to have retired into the solitude of this place on account of a murder which he had committed. (Mr. Wilkie Collins appears to have founded his novel of "Basil" on this tradition.) In all probability a very much older story is adapted to Mr. Millington. So far from his being a recluse, we learn of his purchasing St. Michael's Mount, "whose six daughters and heirs invested their husbands and purchasers therewith."
That Millington was a man of wealth, and that large possessions were held by his family, is sufficiently evident. St. Michael's Mount appears to have been "granted at first for a term of years to different gentlemen of the neighbourhood. To Millington, supposed of Pengerswick, in Breage; to Harris, of Kenegie, in Gulval; and, perhaps jointly with Millington, to a Billett or Bennett."--Hals.


Downloads
This page includes different download types for individual boards. See individual product pages for details on what to download.
See Release notes here.
Software status legend:
| Status | Meaning |
|---|---|
| Production | Ready to be used commercially. |
| Preview | Preview of the next release, not quite ready for production use. |
| Alpha | Bleeding edge development that will frequently change. Major changes to come. |
Visual Studio Project System
The extension is what gets loaded on Visual Studio to allow it to communicate with a TinyCLR OS device. It also includes project templates. You can find it on Visual Studio Marketplace instead of downloading it here.
| File | Date | Status | MD5 |
|---|---|---|---|
| v1.0.0 | 2018-12-27 | Production | 2CDD88E2203716781CA0735FEAE2BBE3 |
| v1.0.0-preview3 | 2018-11-30 | Preview | 2A8507F721886572CD82F7A13E627F1D |
| v1.0.0-preview2 | 2018-09-28 | Preview | 9854917F72723AE94B005420A8F6512D |
| v1.0.0-preview1 | 2018-08-15 | Preview | 049923C25A981EF84E2CFB25CFB87855 |
Libraries
Libraries provide prebuilt ways of performing many common tasks. You can find them on NuGet instead of downloading them here.
| File | Date | Status | MD5 |
|---|---|---|---|
| v1.0.0 | 2018-12-27 | Production | 4EB8D0C9DBD8AABA8C48716256099924 |
| v1.0.0-preview3 | 2018-11-30 | Preview | B93555882C59A679A8D17EA2E22F0858 |
| v1.0.0-preview2 | 2018-09-28 | Preview | 6D5BA0E125FC42CDA7D2C893CEDB5F7C |
| v1.0.0-preview1 | 2018-08-15 | Preview | DF7DAB3754DE092D787D48ECBE42B82B |
TinyCLR Config
TinyCLR Config is a tool used to update and configure your TinyCLR device.
| File | Date | Status | MD5 |
|---|---|---|---|
| v1.0.0 | 2018-12-27 | Production | FFA158A503EBEA0D9F812007608A1974 |
| v1.0.0-preview3 | 2018-11-30 | Preview | 45A6CFEC728C5EF53F0C584A46238CAE |
| v1.0.0-preview2 | 2018-09-28 | Preview | C5B237C27470DC9BF3D16050865E0610 |
| v1.0.0-preview1 | 2018-08-15 | Preview | 1FD781BADFFB37E7593FFF98673D95AA |
TinyCLR Font Converter
The font converter is a tool used to convert desktop TrueType fonts to the format used by TinyCLR OS.
| File | Date | Status | MD5 |
|---|---|---|---|
| v1.0.0 | 2018-12-27 | Production | 9FBDD44955F51BDBE83BBAB4CAD25616 |
| v1.0.0-preview3 | 2018-11-30 | Preview | 804A90F030F3CEF3259D3A03A42E3B2F |
| v1.0.0-preview2 | 2018-09-28 | Preview | A74BC85A573BD99DFA4302750F8D9E4C |
Firmwares
The Firmware is the TinyCLR OS that lives on your hardware. The firmware version loaded on the hardware must match the version number of the extension and the libraries. This will be easier managed once the libraries are hosted on http://www.nuget.org/
FEZCLR (works on FEZ and BrainPad)
This is the reference firmware for TinyCLR OS.
| File | Date | Status | MD5 |
|---|---|---|---|
| v1.0.0 | 2018-12-27 | Production | C089598B40CC7398DD7BBC3723D25D0E |
| v1.0.0-preview3 | 2018-11-30 | Preview | B1C3DFB4B6DB4852D67A855158CDCAE4 |
| v1.0.0-preview2 | 2018-09-28 | Preview |<PHONE_NUMBER>2C54F20FE05DDF0910BB1D |
| v1.0.0-preview1 | 2018-08-15 | Preview | A98A9C45C368C5C3211829DD1BC7DF53 |
UC2550
| File | Date | Status | MD5 |
|---|---|---|---|
| v1.0.0 | 2018-12-27 | Production | 97F2BA54A92107CBFB5DDA029E58DA42 |
| v1.0.0-preview3 | 2018-11-30 | Preview | B958DAAF4B377CC47B4FE6C30A52B016 |
| v1.0.0-preview2 | 2018-09-28 | Preview | BCE56802BCD475CF93673019ED18B134 |
| v1.0.0-preview1 | 2018-08-15 | Preview | 99D87C4B379A51313191494CD8A606CF |
UC5550
| File | Date | Status | MD5 |
|---|---|---|---|
| v1.0.0 | 2018-12-27 | Production | BE4D80D4F88AA0902F25E8353148D2F8 |
| v1.0.0-preview3 | 2018-11-30 | Preview | 450F3071EE30FE35FE2502B68136A684 |
| v1.0.0-preview2 | 2018-09-28 | Preview | D8ADA0EAC6396E38F0DB4115B2DD1EB4 |
| v1.0.0-preview1 | 2018-08-15 | Preview | AFD0FF5599985FA96D6150D3A3F3CE76 |
G30
| File | Date | Status | MD5 |
|---|---|---|---|
| v1.0.0 | 2018-12-27 | Production | B3A3BC288A4776506D40198847AFAB85 |
| v1.0.0-preview3 | 2018-11-30 | Preview | 9F337D2FF1A09D3C131CBB45ED0EFC36 |
| v1.0.0-preview2 | 2018-09-28 | Preview | AA60EABD7624E3185F3EBC2EFEDD2D88 |
| v1.0.0-preview1 | 2018-08-15 | Preview | B7BBB3D880BFB1DF3F37F41E83F5C04D |
G80
| File | Date | Status | MD5 |
|---|---|---|---|
| v1.0.0 | 2018-12-27 | Production | CE90C3F05C6193A68C42E7D4C3A5AB80 |
| v1.0.0-preview3 | 2018-11-30 | Preview | B71EF151548AB758ADC5B23D0E72667E |
| v1.0.0-preview2 | 2018-09-28 | Preview | EBA094B56E2A904B8EC7C4AEDA8FE0D8 |
| v1.0.0-preview1 | 2018-08-15 | Preview | D438734607EA7AA1D155B1572BE224B8 |
G120
| File | Date | Status | MD5 |
|---|---|---|---|
| v1.0.0 | 2018-12-27 | Production | 482C2ADE1B27675A5457D8894D43BB6F |
| v1.0.0-preview3 | 2018-11-30 | Preview | 6E448DA35B0B00F3FE765BB111FE6F99 |
| v1.0.0-preview2 | 2018-09-28 | Preview | AADC660AE9A307F434C436D2CF8127B9 |
| v1.0.0-preview1 | 2018-08-15 | Preview | 21D96730FDECB36462CD86BA1836B475 |
G400
| File | Date | Status | MD5 |
|---|---|---|---|
| v1.0.0 | 2018-12-27 | Production | DF863A79DE30F5C4C204B2F6EE0ED4FE |
| v1.0.0-preview3 | 2018-11-30 | Preview | C12433036607BA792456C2A2F40C1995 |
| v1.0.0-preview2 | 2018-09-28 | Preview | 4DD79332EC91138B0D60D7BF443684E3 |
| v1.0.0-preview1 | 2018-08-15 | Preview | 35F33ECA41C54281497691EFC79F8CB0 |


{% include 'fragments/css/common.html' %} {% include 'fragments/js/common.html' %}
{% include 'fragments/js/pre_body.html' %}
{% include 'fragments/header.html' %}
{% include 'fragments/errors.html' %} {% block content %}{% endblock %}
{% include 'fragments/htk/feedback.html' %} {% include 'fragments/js/nonblocking.html' %}


Consuming Azure Key Vault secrets
You can easily create a Key Vault secret provider - The only thing you need to do is specify how you want to configure and to what vault.
var vaultAuthenticator = new ManagedServiceIdentityAuthenticator();
var vaultConfiguration = new KeyVaultConfiguration(keyVaultUri);
var keyVaultSecretProvider = new KeyVaultSecretProvider(vaultAuthenticator, vaultConfiguration)
You can find a list of supported authentication schemes for Azure Key Vault here.


SHOP
WHOLESALE
ABOUT US
MENU
WHERE TO FIND US
CONTACT
Come visit us!
1932 NW Lovejoy St. Portland Oregon, 97209


Sales Gross Sales $36,286.98 Tax $2,902.98 Discounts $122.35 Net Sales $33,261.65 Labor Labor Hours 926 Labor Dollars $13,890 Labor % Sales 42% Payments Cash $7,257.34 Visa/MC $28,206.78 Amex $822.86 Department Sales Food $25,400.87 Drink $10,413.96 Misc $472.15
Suspicious Transactions Total $1,126.26 Food $28.75 Drink $849.36 Comps $248.15 Top Sellers/Market Basket Appetizers 1. Chicken Wings $985.49 Sells with Bud Light (47%), Pasta Pomoro (34%), Coors(16%) Entrees 1. Pasta Podomo $2,938.03 Sells with Bloody Mary (53%), Nachos (27%), Martini (15%) Desserts 1. Chocolate Delight $533.98 Sells with Nachos (59%), Coors (33%), Chicken Wings (3%) Alcoholic Drinks 1. Bloody Mary $893.99 Sells with Bud (33%), Frites (15%), Bar Burger (10%) Beer 1.  Chicken Wings $3941.96 Sells with Bud Light (47%), Pasta Pomoro (34%), Coors(16%) Entrees 1. Pasta Podomo $11,752.12 Sells with Bloody Mary (53%), Nachos (27%), Martini (15%) Desserts 1. Chocolate Delight $2,135.92 Sells with Nachos (59%), Coors (33%), Chicken Wings (3%) Alcoholic Drinks 1. Bloody Mary $3.575.72 Sells with Bud (33%), Frites (15%), Bar Burger (10%) Beer 1.  Chicken Wings $30,550.19 Sells with Bud Light (47%), Pasta Pomoro (34%), Coors(16%) Entrees 1. Pasta Podomo $91,078.93 Sells with Bloody Mary (53%), Nachos (27%), Martini (15%) Desserts 1. Chocolate Delight $16,553.38 Sells with Nachos (59%), Coors (33%), Chicken Wings (3%) Alcoholic Drinks 1. Bloody Mary $27,713.69 Sells with Bud (33%), Frites (15%), Bar Burger (10%) Beer 1.  Chicken Wings $985.49 Sells with Bud Light (47%), Pasta Pomoro (34%), Coors (16%) 2. Potato Skins $876.33 Sells with Nachos (35%), Bud Light (22%), Frites (6%) 3. Nachos $383.09 Sells with Bud (33%), Tea (14%), Pork Pull (1%) Entrees 1. Pasta Podomo $2,938.03 Sells with Bloody Mary (53%), Nachos (27%), Martini (15%) 2. Chicken Salad $1,983.33 Sells with Cheese Fries(17%), Cajun Chicken(14%), Martini(2%) 3. Bar Burger $839.22 Sells with Pink Lemonde(54%), Chickn Strips(32%), Coors(3%) Desserts 1. Chocolate Delight $533.98 Sells with Nachos (59%), Coors (33%), Chicken Wings (3%) 2. Corn Cake $434.33 Sells with Scotch (25%), Mud Slide (15%), Ceaser Salad (9%) 3. Rice Pudding $323.99 Sells with Coors (45%), Chicken Strips (25%), Frites (20%) Alcoholic Drinks 1. Bloody Mary $893.99 Sells with Bud (33%), Frites (15%), Bar Burger (10%) 2. Martini $789.34 Sells with Coors (64%), Cajun Chicken (42%), Martini (12%) 3. Scotch $322.92 Sells with Bud (33%), Frites (23%), Nachos (15%) Beer 1. Bud $1,982.33 Sells with Nachos (15%), Coke (13%), Bloody Mary (6%) 2. Bud Light $1,827.03 Sells with Chickn Strips (33%), Frites (14%), Coors (2%) 3. Coors $1,203.88 Sells with BloodyMry(14%), Chickn Strip(10%), Cesar Sald(8%)
Suspicious Transactions for July 31, 2013 Allen, Suzy (Store 18, Employee ID#623825) Total- $34.99 (1233, 1240) Collins, David (Store 5, Employee ID#45252) Total- $86.22 (3240, 3298) Dijamano, Kat (Store 7, Employee ID#78521) Total- $56.23 (2684, 2699) Echo, Karen (Store 1, Employee ID#Echo, Karen) Total-$21.18 (1445, 1521) Fox, David (Store 8, Employee ID#141985247) Total-$36.12 (1806, 1911) Gordon, Bill (Store 17, Employee ID#321585) Total-$12.69 (2342, 2441) Guilion, Ed (Store 14, Employee ID#621522) Total-$18.79 (3887, 3981) Indago, Pino (Store 12, Employee ID#98732) Total-$20.36 (1604, 1721) Killian, Keller (Store 9, Employee ID#45412) Total-$13.56 (1233, 1240) Macasaet, Monica (Store 4, Employee ID#6213) Total-$28.83 (3241, 3299) Newton, Albert (Store 20, Employee ID#32211) Total-$15.65 (1447, 1522) Ocano, Mark (Store 19, Employee ID#116982) Total-$11.29 (2687, 2702) Talbert, Stephanie (Store 5, Employee ID#28242) Total-$18.01 (1446, 1501) Underwood, Rob (Store 3, Employee ID#336985) Total-$6.79 (1807, 1913) Young, Robert (Store 2, Employee ID#7048952) Total-$82.01 (2346, 2449) Top Sellers/Market Basket Appetizers 1. Chicken Wings $985.49 Sells with Bud Light (47%), Pasta Pomoro (34%), Coors (16%) 2. Potato Skins $876.33 Sells with Nachos (35%), Bud Light (22%), Frites (6%) 3. Nachos $383.09 Sells with Bud (33%), Tea (14%), Pork Pull (1%) Entrees 1. Pasta Podomo $2,938.03 Sells with Bloody Mary (53%), Nachos (27%), Martini (15%) 2. Chicken Salad $1,983.33 Sells with Cheese Fries(17%), Cajun Chicken(14%), Martini(2%) 3. Bar Burger $839.22 Sells with Pink Lemonde(54%), Chickn Strips(32%), Coors(3%) Desserts 1. Chocolate Delight $533.98 Sells with Nachos (59%), Coors (33%), Chicken Wings (3%) 2. Corn Cake $434.33 Sells with Scotch (25%), Mud Slide (15%), Ceaser Salad (9%) 3. Rice Pudding $323.99 Sells with Coors (45%), Chicken Strips (25%), Frites (20%) Alcoholic Drinks 1. Bloody Mary $893.99 Sells with Bud (33%), Frites (15%), Bar Burger (10%) 2. Martini $789.34 Sells with Coors (64%), Cajun Chicken (42%), Martini (12%) 3. Scotch $322.92 Sells with Bud (33%), Frites (23%), Nachos (15%) Beer 1. Bud $1,982.33 Sells with Nachos (15%), Coke (13%), Bloody Mary (6%) 2. Bud Light $1,827.03 Sells with Chickn Strips (33%), Frites (14%), Coors (2%) 3. Coors $1,203.88 Sells with BloodyMry(14%), Chickn Strip(10%), Cesar Sald(8%)
Suspicious Transactions for July 31, 2013 Allen, Suzy (Store 18, Employee ID#623825) Total- $34.99 (1233, 1240) Collins, David (Store 5, Employee ID#45252) Total- $86.22 (3240, 3298) Dijamano, Kat (Store 7, Employee ID#78521) Total- $56.23 (2684, 2699) Echo, Karen (Store 1, Employee ID#Echo, Karen) Total-$21.18 (1445, 1521) Fox, David (Store 8, Employee ID#141985247) Total-$36.12 (1806, 1911) Gordon, Bill (Store 17, Employee ID#321585) Total-$12.69 (2342, 2441) Guilion, Ed (Store 14, Employee ID#621522) Total-$18.79 (3887, 3981) Indago, Pino (Store 12, Employee ID#98732) Total-$20.36 (1604, 1721) Killian, Keller (Store 9, Employee ID#45412) Total-$13.56 (1233, 1240) Macasaet, Monica (Store 4, Employee ID#6213) Total-$28.83 (3241, 3299) Newton, Albert (Store 20, Employee ID#32211) Total-$15.65 (1447, 1522) Ocano, Mark (Store 19, Employee ID#116982) Total-$11.29 (2687, 2702) Talbert, Stephanie (Store 5, Employee ID#28242) Total-$18.01 (1446, 1501) Underwood, Rob (Store 3, Employee ID#336985) Total-$6.79 (1807, 1913) Young, Robert (Store 2, Employee ID#7048952) Total-$82.01 (2346, 2449) Top Sellers/Market Basket Appetizers 1. Chicken Wings $985.49 Sells with Bud Light (47%), Pasta Pomoro (34%), Coors (16%) 2. Potato Skins $876.33 Sells with Nachos (35%), Bud Light (22%), Frites (6%) 3. Nachos $383.09 Sells with Bud (33%), Tea (14%), Pork Pull (1%) Entrees 1. Pasta Podomo $2,938.03 Sells with Bloody Mary (53%), Nachos (27%), Martini (15%) 2. Chicken Salad $1,983.33 Sells with Cheese Fries(17%), Cajun Chicken(14%), Martini(2%) 3. Bar Burger $839.22 Sells with Pink Lemonde(54%), Chickn Strips(32%), Coors(3%) Desserts 1. Chocolate Delight $533.98 Sells with Nachos (59%), Coors (33%), Chicken Wings (3%) 2. Corn Cake $434.33 Sells with Scotch (25%), Mud Slide (15%), Ceaser Salad (9%) 3. Rice Pudding $323.99 Sells with Coors (45%), Chicken Strips (25%), Frites (20%) Alcoholic Drinks 1. Bloody Mary $893.99 Sells with Bud (33%), Frites (15%), Bar Burger (10%) 2. Martini $789.34 Sells with Coors (64%), Cajun Chicken (42%), Martini (12%) 3. Scotch $322.92 Sells with Bud (33%), Frites (23%), Nachos (15%) Beer 1. Bud $1,982.33 Sells with Nachos (15%), Coke (13%), Bloody Mary (6%) 2. Bud Light $1,827.03 Sells with Chickn Strips (33%), Frites (14%), Coors (2%) 3. Coors $1,203.88 Sells with BloodyMry(14%), Chickn Strip(10%), Cesar Sald(8%)


The page you are looking for might have been removed, had its name changed or is temporarily unavailable. Return to homepage


Read this article to know how to set up your blog site with pagd and host it using github. Rest of the article explain couple of restructured directives that can be used while authoring articles and generating a site with pagd.
source code highlighting
If you are a programmer or some-one who wants to author articles about programming and languages - it is likely that you will be including snippets of code in your article. In such cases wrap your code-snippets with code-block rst-directive, like,
.. code-block:: c
void myfunc(void) {
int i = 10;
printf("%d %d %d %d %x ", i++, --i, ++i, ++i, i++ );
}
while generating your web site using pagd, above block of code will be rendered like,
void myfunc(void) {
int i = 10;
printf("%d %d %d %d %x ", i++, --i, ++i, ++i, i++ );
}
youtube directive
There were many occasions we wanted to refer you-tube links that can play inside our page. For such occasions,
.. youtube:: 7-qGKqveZaM
and while generating the page with pagd,
You can also apply custom styling for youtube widgets in your site my modifying the CSS styling for div.rst-youtube selectors inside media/myblog.css file.
gallery directive
Let us say you have a bunch of charts that you would like to present them as image gallery for your readers,
.. gallery:: My collection of charts
media/sudokucharts/nosmp.png
media/sudokucharts/smp2.png
media/sudokucharts/smp4.png
media/sudokucharts/par.png
media/sudokucharts/conc.png
and the gallery looks like,
pagd uses magnific-popup jquery plugin to show image galleries within HTML pages. They have excellent documentation and there are many ways to customize the plugin - which you can learn from their project site. There is also a bunch of CSS selectors that are available in media/myblog.css with which you can do some basic customization as well.
gist directive
If you have code gist in github and you want to embed them inside your article, use the following directive,
.. gist:: prataprc/5843946.js
where prataprc is the user-name and it will expand to full URL - https://gist.github.com/prataprc/5843946.js.
To include a specific file from the gist,
.. gist:: prataprc/5843946.js?file=caveat7.js
This will embed only caveat7.js file inside your article.


1. Introduction¶
You know I don’t lie when I say that spaguetti code can get you in serious trouble. You have been there.
- Remember that time when a journal asked you for revisions, but you had to spend some good time trying to understand your code from six months ago?
- What about that time when you had to work with that other professor, but understanding his code took you more than you’d like to admit?
- Let’s not forget that day when you tried to check an earlier version of your code, but you couldn’t find it because you overwrote it.
Trying to understand complicated code is not why you entered the PhD program, or became a professor.
You’re too busy advising government officials and making great discoveries! And don’t forget about your personal life!
In the world of Software Engineering, it is widely known that code gets read more than it gets written, and therefore it has to be clean.
However, most Stata users don’t come from such background, and schools often don’t give importance to teaching how to write good code when teaching Stata.
Bad code steals your time, makes you angry and frustrates you, and that’s bad. This style guide gives you some tips that will make your life as a researcher easier.
1.1. What’s In This Guide?¶
- Suggestions to make your code more readable and easy to manipulate.
- An example project that shows how to structure your code and your data in a way that’s easy to maintain and to understand.
1.2. What’s NOT In This Guide?¶
- A Stata tutorial for beginners. This guide won’t introduce basic concepts, it will only show how to use them in efficient ways.
- A guide on creating macros. This might be included in the future; for now, this guide concentrates on design patterns for using existing packages.
1.3. Who Is It For?¶
This guide is aimed at researchers who have already some experience with Stata.
If you’re a graduate student working on your disertation, this guide will give you some tips on managing the code for your papers. Some patterns in this guide might make your life easy when replying to journals.
Professors and researchers can also find valuable design patters to help them process their data more efficiently. Especially if you’re working on a team, you might learn one trick or two to make it easy to collaborate with your partners.
If you’re a beginner and still need to learn the basics of Stata, you can still read this guide in order to learn some general tips on programming and structuring your project. However, some examples might feel difficult to follow.
Experienced Stata who are used to writing readable, easy to maintain code might find that the advice in this guide is not of great help. Indeed, there’s not a perfect way of writing code, and the best style might depend on the project and the person. In that case, you can still find interesting tips. For example, no matter how experienced you are, odds are high that you have never used Git for your research. In that case, the chapter on versioning can help you add a new tool to your stack.
1.4. Collaborating¶
Lazy Stata is an open source project, and is open for Pull Requests. If you have suggestions on how to improve the content of this guide, feel free to create an Issue. Front-end developers can also collaborate on improving the layout and making it more interactive.
The guide is compiled with Sphinx and is currently deployed on Github Pages. For instructions on the compilation process, see the README file.


Dear {{ user.full_name }},
{% if 'unread_message' in notification.name %}
You Have a new Message
{{ related.full_name }}
{{ message.timestamp.ctime() }}
{{ message.body }}
{% elif 'post_likes' in notification.name %}
You have a New Post Like
{{ current_user.full_name }}
{{ post.created_at.ctime() }}
{{ post.text }}
{% if post.image_filename %}
{% for image in json_load(post.image_filename) %}
{% endfor %}
{% endif %}
{% elif 'post_replies' in notification.name %}
You have a New Post Comment
{{ current_user.full_name }}
{{ post.created_at.ctime() }}
{{ post.text }}
{% if post.image_filename %}
{% for image in json_load(post.image_filename) %}
{% endfor %}
{% endif %}
{{ related.full_name }}
{{ comment.created_at.ctime() }}
{{ comment.text }}
{% elif 'answer' in notification.name %}
You have New Answer to your question : {{ question.title }}
{{ current_user.full_name }}
{{ question.created_at.ctime() }}
{{ question.description }}
{{ related.full_name }}
{{ answer.created_at.ctime() }}
{{ answer.body }}
{% elif 'new_follower' in notification.name %}
You have New Follower
{{ related.full_name }}
{{ related.profession }}, {{ related.state }}, {{ related.country }}
{% elif 'new_post_of_followers' in notification.name %}
Someone You Follow Added A new Post
{{ related.full_name }}
{{ post.created_at.ctime() }}
{{ post.text }}
{% elif 'new_job' in notification.name %}
There is a New Job Near You, Be quick and get it now.
{{ related.full_name }}
{{ job.created_at.ctime() }}
{{ job.position_title }}
{{ job.description }}
{% endif %}
Please Go to Notifications To access your account and see the new notification.
Alternatively, you can paste the following link in your browser's address bar:
{{ link }}
Sincerely,
The {{ config.APP_NAME }} Team
Note: replies to this email address are not monitored.


|
Pip-Services-Components-Dotnet
|
Dummy cache implementation that doesn't do anything. More...
Public Member Functions | |
| async override Task< T > | RetrieveAsync< T > (string correlationId, string key) |
| Retrieves cached value from the cache using its key. If value is missing in the cache or expired it returns null. More... | |
| async override Task< T > | StoreAsync< T > (string correlationId, string key, T value, long timeout) |
| Stores value in the cache with expiration time. More... | |
| async override Task | RemoveAsync (string correlationId, string key) |
| Removes a value from the cache by its key. More... | |
| Public Member Functions inherited from PipServices3.Components.Cache.AbstractCache | |
| virtual void | Configure (ConfigParams config) |
| Sets the components configuration. More... | |
| virtual void | SetReferences (IReferences references) |
| Sets the references. More... | |
| virtual Task | CloseAsync (string correlationId) |
| Closes component, disconnects it from services, disposes resources More... | |
| virtual bool | IsOpen () |
| Checks if component is opened More... | |
| virtual Task | OpenAsync (string correlationId) |
| Opens component, establishes connections to services More... | |
Additional Inherited Members | |
| Properties inherited from PipServices3.Components.Cache.AbstractCache | |
| long | Timeout [get, set] |
| Gets or sets the timeout. More... | |
Dummy cache implementation that doesn't do anything.
It can be used in testing or in situations when cache is required but shall be disabled.
|
virtual |
Removes a value from the cache by its key.
| correlationId | (optional) transaction id to trace execution through call chain. |
| key | a unique value key. |
Implements PipServices3.Components.Cache.AbstractCache.
|
virtual |
Retrieves cached value from the cache using its key. If value is missing in the cache or expired it returns null.
| correlationId | (optional) transaction id to trace execution through call chain. |
| key | a unique value key. |
Implements PipServices3.Components.Cache.AbstractCache.
|
virtual |
Stores value in the cache with expiration time.
| correlationId | (optional) transaction id to trace execution through call chain. |
| key | a unique value key. |
| value | a value to store. |
| timeout | expiration timeout in milliseconds. |
Implements PipServices3.Components.Cache.AbstractCache.


@(meetings: List[arisia.controllers.RunningMeetingInfo]) @main("Currently Running Meetings") {
These are the scheduled Zoom meetings that Virtual Arisia believes are currently running.


Name First First name is the only required field. Last Contact Info Email Please enter an email address in this format<EMAIL_ADDRESS>(Only letters, numbers, periods and underscores allowed) Phone Address Address Address 2 City State Zip code


Guaranteed response within 12 hours!
I always used to think that there were only limited career options that we've heard of. Kidoscope helped me understand that there are numerous new age professions to choose from.
I used to think my child would become an expert in the filed I am working in. But this helped me widen my perspective and accept various other career opportunities.


Brexit drove Tesla to pick Berlin over Britain for new factory - report
LONDON (Reuters) - Britain missed its chance to host the first European factory of U.S. electric vehicle pioneer Tesla (TSLA.O) because of Brexit, Chief Executive Elon Musk said in remarks reported on Wednesday.
The company had earlier said it chose a location near Berlin for a new design centre and plant to make batteries, powertrains and vehicles, offering a major boost to the German capital.
Berlin’s minister in charge of economic affairs, Ramona Pop, said the move could create 6,000 to 7,000 jobs in production alone, with hundreds or even thousands more in areas such as design, software or research.
“Brexit (uncertainty) made it too risky to put a Gigafactory in the UK,” Musk told industry website Auto Express.
No one from Tesla was immediately available to comment.
Britain’s vote to leave the European Union has hurt foreign investment because the country’s future trading relationship with the EU is still not clear, more than three years after the referendum.
Britain holds a parliamentary election in December in a bid to break the impasse. Conservative Prime Minister Boris Johnson has said high levels of inward investment would return once terms of the withdrawal agreement have been settled.
Major carmakers such as Nissan (7201.T) have said a disorderly departure from the bloc, where companies face tariffs after leaving the EU without a transition deal, would be unsustainable and jeopardise its entire business model.
Britain’s business minister Andrea Leadsom said the government was aware that the uncertainty over Brexit is causing investment to be put hold and that is why the upcoming election is needed.
“We need a Conservative government to get Brexit done with a deal and end the uncertainty,” she said.
But the opposition Liberal Democrats said the decision shows Johnson’s “deluded plans are already costing the country vital investment and making us all poorer”.
(This story refiles to add word in parentheses, paragraph 4)


Nick Wright
At heart, Nick is a writer and editor. After working for six years in bicycle shops, print newspapers and trade magazines, he applied to the Medill School's Media Innovation & Entrepreneurship master’s program to learn the ins and outs of web development and product management. An Ohio native who has calls Chicago home, Nick earned his BA in English from Denison University in 2008. In his free time, Nick is usually out riding his bike.


This is a careers talk, but...
Having the guts to just ask can get you to some cool places, too!
Codecademy /
HackerRank
CodinGame /
CodeWars
Personal recommendation: WakaTime
simon.fish | boardfish
HTML/CSS/JS!
reveal.js!
Bootstrap!
Raspberry Pi!
Ubuntu/Manjaro!


0"
[userCanDeleteTopic]="userCanDeleteTopic">
No topics to display.
0"
[pageNumber]="pageNumber"
[itemsPerPage]="itemsPerPage"
[editableTopicSummaries]="editableTopicSummaries"
[mergeableSkillSummaries]="mergeableSkillSummaries"
[untriagedSkillSummaries]="untriagedSkillSummaries"
[userCanCreateSkill]="userCanCreateSkill"
[userCanDeleteSkill]="userCanDeleteSkill"
[skillsCategorizedByTopics]="skillsCategorizedByTopics">
No skills to display.
{{ totalTopicSummaries.length }}
Topics
{{ totalSkillCount }}
Skills
Create New Topic
Create New Skill


| MEMFD_CREATE(2) | Linux Programmer's Manual | MEMFD_CREATE(2) |
#define _GNU_SOURCE /* See feature_test_macros(7) */ #include <sys/mman.h>
int memfd_create(const char *name, unsigned int flags);
The initial size of the file is set to 0. Following the call, the file size should be set using ftruncate(2). (Alternatively, the file may be populated by calls to write(2) or similar.)
The name supplied in name is used as a filename and will be displayed as the target of the corresponding symbolic link in the directory /proc/self/fd/. The displayed name is always prefixed with memfd: and serves only for debugging purposes. Names do not affect the behavior of the file descriptor, and as such multiple files can have the same name without any side effects.
The following values may be bitwise ORed in flags to change the behavior of memfd_create():
Unused bits in flags must be 0.
As its return value, memfd_create() returns a new file descriptor that can be used to refer to the file. This file descriptor is opened for both reading and writing (O_RDWR) and O_LARGEFILE is set for the file descriptor.
With respect to fork(2) and execve(2), the usual semantics apply for the file descriptor created by memfd_create(). A copy of the file descriptor is inherited by the child produced by fork(2) and refers to the same file. The file descriptor is preserved across execve(2), unless the close-on-exec flag has been set.
The memfd_create() system call also has uses without file sealing (which is why file-sealing is disabled, unless explicitly requested with the MFD_ALLOW_SEALING flag). In particular, it can be used as an alternative to creating files in tmp or as an alternative to using the open(2) O_TMPFILE in cases where there is no intention to actually link the resulting file into the filesystem.
Dealing with untrusted peers imposes extra complexity on code that employs shared memory. Memory sealing enables that extra complexity to be eliminated, by allowing a process to operate secure in the knowledge that its peer can't modify the shared memory in an undesired fashion.
An example of the usage of the sealing mechanism is as follows:
The first program, t_memfd_create.c, creates a tmpfs(5) file using memfd_create(), sets a size for the file, maps it into memory, and optionally places some seals on the file. The program accepts up to three command-line arguments, of which the first two are required. The first argument is the name to associate with the file, the second argument is the size to be set for the file, and the optional third argument is a string of characters that specify seals to be set on file.
The second program, t_get_seals.c, can be used to open an existing file that was created via memfd_create() and inspect the set of seals that have been applied to that file.
The following shell session demonstrates the use of these programs. First we create a tmpfs(5) file and set some seals on it:
$ ./t_memfd_create my_memfd_file 4096 sw & [1] 11775 PID: 11775; fd: 3; /proc/11775/fd/3
At this point, the t_memfd_create program continues to run in the background. From another program, we can obtain a file descriptor for the file created by memfd_create() by opening the /proc/[pid]/fd file that corresponds to the file descriptor opened by memfd_create(). Using that pathname, we inspect the content of the /proc/[pid]/fd symbolic link, and use our t_get_seals program to view the seals that have been placed on the file:
$ readlink /proc/11775/fd/3 /memfd:my_memfd_file (deleted) $ ./t_get_seals /proc/11775/fd/3 Existing seals: WRITE SHRINK
#define _GNU_SOURCE #include <sys/mman.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <stdio.h> #define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \ } while (0) int main(int argc, char *argv[]) { int fd; unsigned int seals; char *addr; char *name, *seals_arg; ssize_t len; if (argc < 3) { fprintf(stderr, "%s name size [seals]\n", argv[0]); fprintf(stderr, "\t'seals' can contain any of the " "following characters:\n"); fprintf(stderr, "\t\tg - F_SEAL_GROW\n"); fprintf(stderr, "\t\ts - F_SEAL_SHRINK\n"); fprintf(stderr, "\t\tw - F_SEAL_WRITE\n"); fprintf(stderr, "\t\tW - F_SEAL_FUTURE_WRITE\n"); fprintf(stderr, "\t\tS - F_SEAL_SEAL\n"); exit(EXIT_FAILURE); } name = argv[1]; len = atoi(argv[2]); seals_arg = argv[3]; /* Create an anonymous file in tmpfs; allow seals to be placed on the file */ fd = memfd_create(name, MFD_ALLOW_SEALING); if (fd == -1) errExit("memfd_create"); /* Size the file as specified on the command line */ if (ftruncate(fd, len) == -1) errExit("truncate"); printf("PID: %ld; fd: %d; /proc/%ld/fd/%d\n", (long) getpid(), fd, (long) getpid(), fd); /* Code to map the file and populate the mapping with data omitted */ /* If a 'seals' command-line argument was supplied, set some seals on the file */ if (seals_arg != NULL) { seals = 0; if (strchr(seals_arg, 'g') != NULL) seals |= F_SEAL_GROW; if (strchr(seals_arg, 's') != NULL) seals |= F_SEAL_SHRINK; if (strchr(seals_arg, 'w') != NULL) seals |= F_SEAL_WRITE; if (strchr(seals_arg, 'W') != NULL) seals |= F_SEAL_FUTURE_WRITE; if (strchr(seals_arg, 'S') != NULL) seals |= F_SEAL_SEAL; if (fcntl(fd, F_ADD_SEALS, seals) == -1) errExit("fcntl"); } /* Keep running, so that the file created by memfd_create() continues to exist */ pause(); exit(EXIT_SUCCESS); }
#define _GNU_SOURCE #include <sys/mman.h> #include <fcntl.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \ } while (0) int main(int argc, char *argv[]) { int fd; unsigned int seals; if (argc != 2) { fprintf(stderr, "%s /proc/PID/fd/FD\n", argv[0]); exit(EXIT_FAILURE); } fd = open(argv[1], O_RDWR); if (fd == -1) errExit("open"); seals = fcntl(fd, F_GET_SEALS); if (seals == -1) errExit("fcntl"); printf("Existing seals:"); if (seals & F_SEAL_SEAL) printf(" SEAL"); if (seals & F_SEAL_GROW) printf(" GROW"); if (seals & F_SEAL_WRITE) printf(" WRITE"); if (seals & F_SEAL_FUTURE_WRITE) printf(" FUTURE_WRITE"); if (seals & F_SEAL_SHRINK) printf(" SHRINK"); printf("\n"); /* Code to map the file and access the contents of the resulting mapping omitted */ exit(EXIT_SUCCESS); }
| 2020-02-09 | Linux |