The DCAFPilot consists of several components:
Get the code:
git clone git@github.com:dmwm/DMWMAnalytics.git
Dependencies:
Queried 5 CMS data-services: DBS, PhEDEx, SiteDB, PopularityDB, Dashboard - used 10 APIs to get data content - feed internal cache with ~220K datasets from 4 DBS instances, ~900 release names, 500+ site names, ~5k people DNs. - placed ~800K queries The final dataframe is constructed out of 78 variables and has 52 files and ~600K rows - each file is worth of 1 week of CMS data, ~600KB zipped/file - each file has about ~1K of popular datasets plus 10K random "un-popular" datasets Elapsed time: ~4h to 1h per job, times fade out due to cache usage (MongoDB) All jobs run on two CERN VM w/ N jobs/core splittingWe anonymized all data and performed factorization via internal cache
id,cpu,creator,dataset,dbs,dtype,era,naccess,nblk,nevt,nfiles,nlumis,nrel,nsites,nusers,parent,primds,proc_evts,procds,rel1_0,rel1_1,rel1_2,rel1_3,rel1_4,rel1_5,rel1_6,rel1_7,rel2_0,rel2_1,rel2_10,rel2_11,rel2_2,rel2_3,rel2_4,rel2_5,rel2_6,rel2_7,rel2_8,rel2_9,rel3_0,rel3_1,rel3_10,rel3_11,rel3_12,rel3_13,rel3_14,rel3_15,rel3_16,rel3_17,rel3_18,rel3_19,rel3_2,rel3_20,rel3_21,rel3_22,rel3_23,rel3_3,rel3_4,rel3_5,rel3_6,rel3_7,rel3_8,rel3_9,relt_0,relt_1,relt_2,rnaccess,rnusers,rtotcpu,s_0,s_1,s_2,s_3,s_4,size,tier,totcpu,wct
999669242,207737071.0,2186,20186,3,0,759090,14251.0,6,21675970,2158,72274,1,10,11.0,5862538,335429,30667701,373256,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0.6,0.4,3.9,0,3,8,0,0,8002,5,64280.0,216946588.0
332990665,114683734.0,2186,176521,3,1,759090,21311.0,88,334493030,32621,86197,1,4,8.0,6086362,968016,123342232,1037052,0,0,0,0,1,2,0,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,2,0.8,0.3,3.5,0,6,9,0,0,96689,3,58552.0,276683510.0
....
2014 dataset is available at
https://git.cern.ch/web/CMS-DMWM-Analytics-data.git
id: unique id constructed as long('%s%s%s'%(tstamp,dbsinst,dataset_id)) % 2**30 cpu: CPU time reported by Dashboard data-service for given dataset creator: anonymized DN of the user who created given dataset, reported by DBS dataset: DBS dataset id (comes from DBS APIs/database back-end) dbs: DBS instance id dtype: anonymized DBS data type (e.g. data, mc) era: anonymized DBS acquisition era name associated with given dataset nblk: number of blocks in given dataset, reported by DBS nevt: number of events in given dataset, reported by DBS nfiles: number of files in given dataset, reported by DBS nlumis: number of lumi sections in given dataset, reported by DBS nrel: number of releases associated with given dataset, reported by DBS nsites: number of sites associated with given dataset, reported by PhEDEx parent: parent id of given dataset, reported by DBS primds: anonymized primary dataset name, reported by DBS proc_evts: number of processed events, reported by Dashboard procds: anonymized processed dataset name, reported by DBS rel1_N: DBS release counter defined as N-number of series releases associated with given dataset rel2_N: DBS release counter defined as N-number of major releases associated with given dataset rel3_N: DBS release counter defined as N-number of minor releases associated with given dataset s_X: PhEDEx site counter, i.e. number of Tier sites holding this dataset replica size: size of the dataset, reported by DBS and normalized to GB metric tier: anonymized tier name, reported by DBS wct: wall clock counter for given dataset, reported by Dashboard Target variables: naccess: number of accesses to a dataset, reported by PopularityDB nusers: number of users*days to a dataset, reported by PopularityDB totcpu: number of cpu hours to accessed dataset, reported by PopularityDB rnaccess: naccess(dataset)/SUM_i naccess(i), reported by PopularityDB rnusers: nusers(dataset)/SUM_i nusers(i), reported by PopularityDB rtotcpu: totcpu(dataset)/SUM_i totcpu(i), reported by PopularityDB
merge_csv, model, check_prediction, pred2dataset
# get the data, we keep it secure in separate CERN based repository
prompt_1$ git clone<EMAIL_ADDRESS># merge dataframes, then split 2014.csv.gz into train/valid datasets
prompt_2$ merge_csv --fin=CMS-DMWM-Analytics-data/Popularity/DCAFPilot/data/0.0.3 --fout=2014.csv.gz --verbose
# transform data into classification problem and remove useless variables
prompt_3$ transform_csv --fin=2014.csv.gz --fout=train_clf.csv.gz --target=naccess --target-thr=100 \
--drops=nusers,totcpu,rnaccess,rnusers,rtotcpu,nsites,s_0,s_1,s_2,s_3,s_4,wct
# train the model
prompt_4$ model --learner=RandomForestClassifier --idcol=id --target=target --train-file=train_clf.csv.gz \
--scaler=StandardScaler --newdata=valid_clf.csv.gz --predict=pred.txt
# check prediction
prompt_5$ check_prediction --fin=valid_clf.csv.gz --fpred=pred.txt --scorer=accuracy,precision,recall,f1
Score metric (accuracy_score): 0.982348203499
Score metric (precision_score): 0.79773214833
Score metric (recall_score): 0.952781844802
Score metric (f1_score): 0.868390325271
# convert prediction into human/CMS data format
prompt_6$ pred2dataset --fin=pred.txt --fout=pred.txt.out
# inspect prediction
prompt_7$ head -2 pred.txt.out
1.000,/GenericTTbar/HC-CMSSW_7_0_4_START70_V7-v1/GEN-SIM-RECO
1.000,/SingleMu/Run2012D-22Jan2013-v1/AOD
dataframe, transform_csv, model, pred2dataset, popular_datasets, verify_predictions
# seed dataset cache (w/ MongoDB back-end)
prompt_1$ dataframe --seed-cache --verbose=1
# get new data from DBS (you may need to run it in background)
prompt_2$ dataframe --start=20150101 --stop=20150108 --newdata --verbose=1 --fout=new-20150101-20150108.csv
# transform new data into classification problem similar to our train data
prompt_3$ transform_csv --fin=new-20150101-20150108.csv.gz --fout=newdata-20150101-20150108.csv.gz --target=naccess \
--target-thr=100 --drops=nusers,totcpu,rnaccess,rnusers,rtotcpu,nsites,s_0,s_1,s_2,s_3,s_4,wct
# run the model with new data
prompt_4$ model --learner=RandomForestClassifier --idcol=id --target=target --train-file=train_clf.csv.gz \
--scaler=StandardScaler --newdata=newdata-20150101-20150108.csv.gz --predict=pred.txt
# produce human readable format and inspect its output
prompt_5$ pred2dataset --fin=pred.txt --fout=pred.txt.out
prompt_6$ head -2 pred.txt.out
0.000,/RelValQCDForPF_14TeV/CMSSW_6_2_0_SLHC22_patch1-PH2_1K_FB_V6_UPG23SHNoTaper-v1/GEN-SIM-DIGI-RAW
0.000,/RelValQCDForPF_14TeV/CMSSW_6_2_0_SLHC22_patch1-PH2_1K_FB_V6_UPG23SHNoTaper-v1/DQMIO
# get popular datasets from popularity DB
prompt_7$ popular_datasets --start=20150101 --stop=20150108 > popdb-20150101-20150108.txt
# verify our prediction against similar period from popularity DB
prompt_8$ verify_predictions --pred=pred.txt.out --popdb=popdb-20150101-20150108.txt
Popular datasets : 841
Predicted datasets : 187
Wrongly predicted : 0
| naccess>100 | naccess>0 | naccess>10 and naccess<10000 and nsites<50 | ||
| Classifier | Data |
accu prec reca f1
|
accu prec reca f1
|
accu prec reca f1
|
| Random Forest | all new |
0.97 0.85 0.89 0.87
0.83 1.00 0.83 0.91 |
0.89 0.00 0.00 0.00
0.00 0.00 0.00 0.00 |
0.96 0.70 0.89 0.78
0.92 1.00 0.92 0.96 |
| SGDClassifier | all new |
0.97 0.88 0.68 0.77
0.45 1.00 0.45 0.62 |
0.95 0.86 0.70 0.77
0.71 1.00 0.71 0.83 |
0.95 0.70 0.72 0.71
0.60 1.00 0.60 0.75 |
| Linear SVC | all new |
0.94 0.53 0.99 0.69
0.98 1.00 0.98 0.99 |
0.97 0.83 0.97 0.89
0.97 1.00 0.97 0.98 |
0.95 0.62 0.92 0.74
0.90 1.00 0.90 0.95 |
| Vowpal Wabbit | all new |
0.95 0.61 0.69 0.65
0.54 1.00 0.54 0.70 |
0.99 0.91 1.00 0.95
1.00 1.00 1.00 1.00 |
0.94 0.65 0.61 0.63
0.49 1.00 0.49 0.65 |
| xgboost | all new |
0.98 0.88 0.95 0.92
0.92 1.00 0.92 0.95 |
0.99 0.97 1.00 0.98
1.00 1.00 1.00 1.00 |
0.96 0.71 0.97 0.82
0.98 1.00 0.98 0.99 |


A complete set of functions to calculate several EBLUP (Empirical Best Linear Unbiased Predictor) estimators and their mean squared errors. All estimators are based on an area-level linear mixed model introduced by Rao and Yu in 1994 (see documentation). The REML method is used for fitting this model.
| Version: | 1.0 |
| Published: | 2014-09-10 |
| Author: | Maria Dolores Esteban Lefler, Domingo Morales Gonzalez, Agustin Perez Martin |
| Maintainer: | Agustin Perez Martin <agustin.perez at umh.es> |
| License: | GPL-2 |
| NeedsCompilation: | no |
| CRAN checks: | saery results |
| Reference manual: | saery.pdf |
| Package source: | saery_1.0.tar.gz |
| Windows binaries: | r-devel: saery_1.0.zip, r-release: saery_1.0.zip, r-oldrel: saery_1.0.zip |
| OS X binaries: | r-release: saery_1.0.tgz, r-oldrel: saery_1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=saery to link to this page.


class: center, middle, inverse, title-slide # Intro to R Markdown ## Automate! Reproduce! Win! ### Matt Dray ### First presented 14 May 2018 --- # Hello * Who's used R? * Who's used RMarkdown? This talk is for *beginners*. It isn't about how to code. It's about improving what we do. ??? R training sessions are coming! Materials are available from the [R Training Course site](https://dfe-analytical-services.github.io/r-training-course/). --- # The problem is the process The Excel-Word approach is looooong and error-prone. Exaggerated example: 1. Receive non-machine-readable data in Excel format 2. Use a pre-prepared Excel template to reformat the data 3. Generate figures, tables and plots 4. Copy and paste to ~100-page Word document 5. Find error/need to alter something 6. Fix it 7. Spend ages re-copy-pasting the updated bits 8. Get confused about the current working version 9. Repeat steps 5 to 7 until 4am --- # Is this reproducible? Questions to ask yourself: * are the steps recorded? * what's the chance of human error (e.g. bad copy-paste)? * is it easy to keep track of changes? * could someone else reproduce it from scratch independently? --- # Minimise the risk We can reduce error and go faster with R. 1. Receive machine-readable data in Excel format 2. Run a pre-prepared file written with **R Markdown** 3. Make minor tweaks if needed and re-render stress-free 4. Use the saved time to prepare more informative commentary and have a cup of tea --- # What's an R Markdown file? A document with filetype .Rmd in which you: * write plain text that's 'marked-up' with symbols (`*`, `[]`, `^`, etc) * embed R code to read, process and visualise data * click a button to render it to a HTML, Word or PDF ??? This is already being done in the department and across government ([Reproducible Analytical Pipelines](https://dataingovernment.blog.gov.uk/2017/03/27/reproducible-analytical-pipeline/)). --- # What does it look like?  --- # What does it look like?  --- # Header Enclosed in three hyphens. Specify metadata and what output should be produced. There's also space for some style information. ``` --- title: "Your title" author: "Your name" date: "The date" output: word_document: reference_docx: mystyles.docx highlight: "tango" --- ``` ??? The header section doesn't contain R code. It's a language called YAML, which stands for *Yet Another Markup Language*! --- # Body text: formatting You type: ``` *Italic*, **bold** super^script^ and a [link](www.gov.uk). ``` You get: > *Italic*, **bold**, super^script^ and a [link](www.gov.uk). ??? If you type these in RStudio, the text will change colour to indicate the formatting.  --- # Body text: inline code (maths) You can write some R code in the middle of a sentence! Wrap the code in backticks (the button under the Esc key) and start it with the letter `r`. You type: ```r The answer to 1 + 1 is `r 1 + 1` ``` You get: > The answer to 1 + 1 is 2 ??? You start with the letter `r` to indicate that R code is contained within the backticks. --- # Body text: inline code (stored values) Let's say `my_value <- "Lotad"` You type: ```r The best Pokemon is `r my_value` ``` ??? Your choice of Pokemon is *wrong*.  You get: > The best Pokemon is Lotad --- # Code chunks: input ```` ```{r chicks, echo=FALSE} chickwts %>% group_by(feed) %>% ggplot() + geom_col(aes(x = feed, y = weight)) ``` ```` Don't worry about the code, just know that it's going to produce something. --- # Code chunks: output ![](index_files/figure-html/chicks-1.png) --- # Simple steps 1. In RStudio: File > New File > R Markdown 2. Write your text and embed your code 4. Click 'Knit' to render the document 5. The file is output to your current working directory **DEMO TIME!** --- # To summarise  --- # What's actually hapening? Your R Markdown is rendered into 'plain' markdown by the package `knitr` (hence why you 'knit' to render the document), then something called `pandoc` converts it from markdown to your output format. .Rmd ➡ `knitr` ➡ .md ➡ `pandoc` ➡ .html/.pdf/.docx This isn't *essential* knowledge. --- # Further reading * [R Markdown: The Defninitive Guide](https://bookdown.org/yihui/rmarkdown/) by Yihui Xie, JJ Allaire and Garrett Grolemund * In RStudio: Help > Cheatsheets for hints and tips. * [Introduction to R Markdown](https://rmarkdown.rstudio.com/lesson-1.html) (webpages featuring video) * [Getting started with R Markdown](https://www.rstudio.com/resources/webinars/getting-started-with-r-markdown/) (video, 1 hr) * [See the R Markdown gallery for examples of other document types](https://rmarkdown.rstudio.com/gallery.html), including dashboards, interactive documents, presentations (like this one) and books with R Markdown * '[Knitting club](https://matt-dray.github.io/knitting-club/)', a Coffee & Coding session (webpage) * A workflow with R Markdown works much better using an [R Project](https://support.rstudio.com/hc/en-us/articles/200526207-Using-Projects) and [version control](http://happygitwithr.com/), which are subjects for another day


From: ASCII Binary Decimal Hexadecimal To: ASCII Binary Decimal Hexadecimal Inverted <-- Swap -->
Converted Data:


KineticGold ICO
Option 3 -
Guarantee from existing Vaulted Gold
Gold is left in current storage facility
Guarantee provided to insurer – allocated for KineticGold Coins
valuation.
New purchase amounts are converted to additional gold –
satisfying the gold requirements for the new coins
Guarantee only in use during transition period from initial
purchase to gold backing
All guarantees are removed within 2 years.


[1]
rocket -rrb-/-rrb- the bathroom is small but has a really nice shower with plenty of room .
[2]
for a room with a window that opens or you will get a small room/tiny window .


Shape
Morphing....................................................................................................................................................... 1
Shape Morphing Contents............................................................................................................................. 1
Shape Morphing.................................................................................................................................................... 2
DefineMorphShape............................................................................................................................................... 3
Morph Fill Styles.................................................................................................................................................. 4
Morph Gradient Values......................................................................................................................................... 5
Morph Line Styles................................................................................................................................................. 6
Macromedia Flash File Format (SWF) SDK
Examples................................................................... 6
Shape ‘morphing’ is the metamorphosis of one shape into another over time. Macromedia Flash supports a flexible morphing model, which allows a number of shape attributes to vary during the morph. Macromedia Flash (SWF) defines only the start and end states of the morph. The Macromedia Flash Player is responsible for interpolating between the end-points and generating the ‘in-between’ states.
The shape attributes that can be varied during the morph are:
· The position of each edge in the shape.
· The color and thickness of the outline.
· The fill color of the shape (if filled with a color)
· The bitmap transform (if filled with a bitmap)
· The gradient transform (if filled with a gradient)
· The color and position of each point in the gradient.
A number of restrictions apply to morphing. These restrictions are:
· The start and end shapes must have the same number of edges
· The start and end shapes must have the same type of fill (i.e. solid, gradient or bitmap)
· The style change records must be the same for the start and end shapes
· If filled with a bitmap, both shapes must be filled with the same bitmap.
· If filled with a gradient, both gradients must have the same number of color points.
Below is an illustration of a morph from a blue rectangle to a red quadrilateral over five frames. The green outlines represent the ‘in-between’ shapes of the morph sequence. Note that both shapes have the same number of points, and the same type of fill, namely a solid fill. As well as changing shape, the shape also gradually changes color from blue to red.
There are two tags involved in defining and playing a morph sequence:
2.
PlaceObject2
DefineMorphShape defines the start and end states of the morph. A morph object does not use previously defined shapes, it is considered a special type of shape with only one character ID. DefineMorphShape contains a list of edges for both the start and end shapes. It also defines the fill and line styles, as they are at the start and end of the morph sequence.
The PlaceObject2 tag displays the morph object at some point in time during the morph sequence. The ratio field controls how far the morph has progressed. A ratio of zero produces a shape identical to the start condition. A ratio of 65535 produces a shape is identical to the end condition.
For example, to calculate the x-coordinate of an edge in an ‘in-between’ shape, the equation is:
inbetween.x
= start.x + (end.x - start.x) * ratio / 65535;
The DefineMorphShape tag defines the start and end states of a morph sequence. A morph object does not use previously defined shapes, it is considered a special type of shape with only one character ID. A morph object should be displayed with the PlaceObject2 tag, where the ratio field specifies how far the morph has progressed.
StartBounds defines the bounding-box of the shape at the start of the morph, and EndBounds defines the bounding-box at the end of the morph
MorphFillStyles contains an array interleaved fill styles for the start and end shapes. The fill style for the start shape is followed the corresponding fill style for the end shape. Similarly, MorphLineStyles contains an array of interleaved line styles.
The StartEdges array specifies the edges for the start shape, and the style change records for both shapes. Because the StyleChangeRecords must be the same for the start and end shapes, they are defined only in the StartEdges array. The EndEdges array specifies the edges for the end shape, and contains no style change records. The number of edges specified in StartEdges must equal the number of edges in EndEdges.
Note: Strictly speaking MoveTo
records fall into the category of StyleChangeRecords, however they should be
included in both the StartEdges and EndEdges arrays.
It is possible for an edge to change type over the course of a morph sequence. A straight edge can become a curved edge and vice versa. In this case, think of both edges as curved. A straight edge can be easily represented as a curve, by placing the off-curve (control) point at the mid-point of the straight edge, and the on-curve (anchor) point at the end of the straight edge. The calculation is as follows:
CurveControlDelta.x = StraightDelta.x /
2;
CurveControlDelta.y = StraightDelta.y / 2;
CurveAnchorDelta.x = StraightDelta.x /
2;
CurveAnchorDelta.y = StraightDelta.y /
2;
(See class FDTDefineMorphShape in the Macromedia Flash File Format (SWF) SDK)
|
DefineMorphShape |
||
|
Field |
Type |
Comment |
|
Header |
RECORDHEADER |
Tag ID = 46 |
|
Character ID |
UI16 |
ID for this character |
|
StartBounds |
RECT |
Bounds of the start shape |
|
EndBounds |
RECT |
Bounds of the end shape |
|
Offset |
UI32 |
Indicates offset to
EndEdges |
|
MorphFillStyles |
Fill style information is
stored in the same manner as for a standard shape, however each fill consists
of interleaved information based on a single style type to accommodate
morphing. |
|
|
MorphLineStyles |
Line style information is
stored in the same manner as for a standard shape, however each line consists
of interleaved information based on a single style type to accommodate
morphing. |
|
|
StartEdges |
Contains the set of edges
and the style bits that indicate style changes (for example, MoveTo,
FillStyle, and LineStyle.) Number of edges must equal the number of edges in
EndEdges. |
|
|
EndEdges |
Contains only the set of
edges, with no style information. Number of edges must equal the number of
edges in StartEdges. |
A morph fill style array enumerates a number of fill styles. The format of a fill style array is described in the following table:
|
MORPHFILLSTYLES |
||
|
Field |
Type |
Comment |
|
FillStyleCount |
Count = UI8 |
Count of fill styles |
|
FillStyleCountExtended |
If count = 0xFF count =
UI16 |
Extended count of fill
styles. |
|
FillStyles |
MORPHFILLSTYLE[count] |
Array of fill styles |
A fill style represents how a close shape is filled in. The format of a fill style value within the file is described in the following table:
(See class FMorphFillStyle in the Macromedia Flash File Format (SWF) SDK)
|
MORPHFILLSTYLE |
||
|
Field |
Type |
Comment |
|
FillStyleType |
type = UI8 |
Type of fill style |
|
StartColor |
If type = 0x00 RGBA |
Solid fill color with
transparency information for start shape |
|
EndColor |
If type = 0x00 RGBA |
Solid fill color with
transparency information for end shape |
|
StartGradientMatrix |
If type = 0x10 or 0x12 MATRIX |
Matrix for gradient fill
for start shape |
|
EndGradientMatrix |
If type = 0x10 or 0x12 MATRIX |
Matrix for gradient fill
for end shape |
|
Gradient |
If type = 0x10 or 0x12 MORPHGRADIENT |
Gradient fill |
|
BitmapId |
If type = 0x40 or 0x41 UI16 |
ID of bitmap character for
fill |
|
StartBitmapMatrix |
If type = 0x40 or 0x41 MATRIX |
Matrix for bitmap fill for
start shape |
|
EndBitmapMatrix |
If type = 0x40 or 0x41 MATRIX |
Matrix for bitmap fill for
end shape |
Gradient information for a fill style. The format of gradient information is
described in the following table:
|
MORPHGRADIENT |
||
|
Field |
Type |
Comment |
|
NumGradients |
nGrads = UI8 |
1 to 8 |
|
GradientRecords |
MORPHGRADRECORD[nGrads] |
Gradient records - see
below |
The gradient record format is:
(See class FMorphGradRecord in the Macromedia Flash File Format (SWF) SDK)
|
MORPHGRADRECORD |
||
|
Field |
Type |
Comment |
|
StartRatio |
UI8 |
Ratio value for start shape |
|
StartColor |
RGBA |
Color of gradient for start
shape |
|
EndRatio |
UI8 |
Ratio value for end shape |
|
EndColor |
RGBA |
Color of gradient for end
shape |
A morph line style array enumerates a number of fill styles. The format of a line style array is described in the following table:
|
MORPHLINESTYLES |
||
|
Field |
Type |
Comment |
|
LineStyleCount |
count = UI8 |
Count of line styles |
|
LineStyleCountExtended |
If count = 0xFF count =
UI16 |
Extended count of line
styles |
|
LineStyles |
MORPHLINESTYLE[count] |
Array of line styles |
A line style represents a width and color of a line. DefineMorphShape supports only solid line styles. The format of a line style value within the file is described in the following table:
(See class FMorphLineStyle in the Macromedia Flash File Format (SWF) SDK)
|
MORPHLINESTYLE |
||
|
Field |
Type |
Comment |
|
StartWidth |
UI16 |
Width of line in start
shape in twips |
|
EndWidth |
UI16 |
Width of line in end shape
in twips |
|
StartColor |
RGBA |
Color value including alpha
channel information for start shape |
|
EndColor |
RGBA |
Color value including alpha
channel information for end shape |
The Macromedia Flash File Format (SWF) SDK contains C++ examples that demonstrate how to define shape morphs in Macromedia Flash (SWF):
· FExampleMorph.cpp uses the low-level manager to create a triangle with a thin black outline, that morphs into a triangle with a thick white outline (and curved egdes). The AddShapeRec_1 method of the FDTDefineMorphShape class adds the edges of the start shape. AddShapeRec_2 adds the edges of the end shape. The FMorphLineStyle class is used to define the start line style (thin black) and end line style (thick white). A series of 66 FCTPlaceObject2 objects are created to display the morph object at different stages of the morph.


1) Select a background for your course, pick a location for the hole, and a starting place for your ball.
2) Create walls and other obstacles for your course, like a sand pit. (Tip: Be creative! You can add moving obstacles, water hazards, lasers, etc. The sky's the limit! )
3) When the mouse is clicked, create a line connecting the mouse pointer and the ball.
5) When the mouse is released, have the line disappear and have the ball travel in the direction of the line. (Tip: in addition to moving in the right directions, the ball should move faster or slower depending on the length of the line)
7) Make sure the ball slows down as it travels across the screen, just like a real golf ball does in grass. (Bonus: Can you make the ball slow down faster if it's in a sandpit or some other obstacle?)
9) Have the game end when the ball gets to the hole. Display a game over message and the player's swing count.


President Tump Just Set the Record Straight About Jan 6 In Mega-Viral Tweet - WayneDupree.comThere are lots of people who are doubting the ability that the GOP has to make a change on January 6th. TIRED OF THE ADS? BECOME A PREMIUM USER TODAY!! Well, if there was any doubt, President Trump...
https://www.waynedupree.com/2021/01/trump-mike-pence-electoral-votes/
Pence is a traitor! L Linn Wood has been right about everything! This is part 1 of 3! The links to the others are at the bottom of each. Please read and share everywhere you can! The future of the Republic depends on this info getting out to everyone ASAP!!!
Share this here! Share it on every other social media you’re on! Share it in groups and send it directly to everyone you care about and ask everyone to do the same! We must get this info to everyone possible and we don’t have much time Patriots! This is information warfare and now is the time to fight!!!
Your pitiful- someone that wants communism in this country need s to be pitied—- if Biden gets in you will be destroyed just like the rest of us— just remember that—
The hilarious thing is yeh democrats lost big time and they can’t handle losing so went to doing what they do best, which is cheating. I’m saddened that you are blinded by TDS, I am not even a fan of his, but the evidence is clear and blatant.
@RedSnow You are really still going on about election fraud? Even after no solid evidence came forward? Can’t you see how you are being mislead?
 ALL of AMERICA has seen the evidence. All of you armchair attorneys, without a single bit of Administration of Justice on your transcript or resume, let alone any actual experience, ARE the problem. Now be a good little boy and go get in line for your cup of Kool-Aid and your shot. Leave the politics to the grown-ups.
Name Hidden·@Private User4 days ago
@Fryerdane87 If trump is anything, he's a masterful manipulator. There's no evidence, only disproven theories. And gullible?
@Name Hidden The only people being manipulated are the simpletons duped into supporting democrat treason.
Name Hidden·@Private User4 days ago
@Fryerdane87 Not sure what you mean by this. I'm not insisting on a false narrative. I know how I would feel if I believed the election was unfair. Question is, why would you bet on trump university over the 100s of conservative judges who say it's baseless? Are they all simpletons as well?
Mitch McConnell is DONE. Good job ruining this country and career. He’s more worried about his political career... as he burns the senate & country to the ground.
Pence is already backing out as he knows if he sulports Trump he is finished without Trumps protection. Pence is weak. The GOP is dead and stinking. They have been exposed as spineless and ineffective. Trump has to go it alone and get RADICAL, or lose completely. Nothing less than a radical move will save the day.
I think there are still a lot? (I hope) of republicans that haven’t been bought out by the CCP and are still loyal to the US. Problem is, some have. I think it’s a major problem.
 Hard to go against that machine as an honest politician. Lets hope he has an ACE in the sleeve.
At what point will you recognize that Trump is the cancer in the Republican Party? It’s him!  Always was, always will be. He only is where he is because he’s had help.
Always was? That is a high sounding platitude, but totally ignorant of the facts. President Trump brought life to the Republican Party and he is the standard. Thank God for that.
@Sharmygirl Has anyone enabled you to rip off millions and millions of people and allow hundreds of thousands of others to die? Of course not. You know exactly what I’m talking about.
1. Don’t pay a F’ing penny of our tax dollars! Not one!!!
2. Take your money out of Nationals Banks (JP Morgan, Wells Fargo, Bank of America, Etc.) and put it in a Credit Union or A Community Banks, SHUT the National Banks DOWN!!!!
3. Stop buying off of Amazon, Walmart, Costco/Sams Clubs, Etc!
4. Truckers Stop delivering to these corrupt States!
5. Do not use Fakebook, YouBoob, Twatter or listen to the MSM! There are many other very reliable News resources like “Just One New”, “OAN”, “NewsMax”, Epoch Times and others!
They can only continue to do this if We, The Taxpayer, Continue to financially support them! They work for us, WE SURE AS “”F”” DO NOT WORK THEM!! Never have, NEVER WILL!   SHUT THEM THE “”F”” DOWN!!!
Maria Zack she runs a non profit organization called Nations in Action She needs donation for security detail here in USA and Italy and plane to bring perps and proof from Italian coup against POTUS please help her
So.....in Georgia.....they stop counting at 11pm. Kick the Republican poll watchers out.....again....and magically the democrats win again. More voter fraud. OUR REPUBLIC IS DEAD
Pence is a traitor! L Linn Wood has been right about everything! This is part 1 of 3! The links to the others are at the bottom of each. Please read and share everywhere you can! The future of the Republic depends on this info getting out to everyone ASAP!!!
Share this here! Share it on every other social media you’re on! Share it in groups and send it directly to everyone you care about and ask everyone to do the same! We must get this info to everyone possible and we don’t have much time Patriots! This is information warfare and now is the time to fight!!!
🇺🇸🇺🇸🇺🇸
What a sad sap he is. He lost and he can’t handle it. Get him out of the Whitehouse!

Yes but does he have the backbone..
As my mom used to say Actions are better than words
Mitch McConnell is DONE. Good job ruining this country and career. He’s more worried about his political career... as he burns the senate & country to the ground.
Pence is already backing out as he knows if he sulports Trump he is finished without Trumps protection. Pence is weak. The GOP is dead and stinking. They have been exposed as spineless and ineffective. Trump has to go it alone and get RADICAL, or lose completely. Nothing less than a radical move will save the day.
At what point will you recognize that Trump is the cancer in the Republican Party? It’s him!  Always was, always will be. He only is where he is because he’s had help.
Pence, do what’s right.
This is exactly what “must” happen right now!!
1. Don’t pay a F’ing penny of our tax dollars! Not one!!!
2. Take your money out of Nationals Banks (JP Morgan, Wells Fargo, Bank of America, Etc.) and put it in a Credit Union or A Community Banks, SHUT the National Banks DOWN!!!!
3. Stop buying off of Amazon, Walmart, Costco/Sams Clubs, Etc!
4. Truckers Stop delivering to these corrupt States!
5. Do not use Fakebook, YouBoob, Twatter or listen to the MSM! There are many other very reliable News resources like “Just One New”, “OAN”, “NewsMax”, Epoch Times and others!
They can only continue to do this if We, The Taxpayer, Continue to financially support them! They work for us, WE SURE AS “”F”” DO NOT WORK THEM!! Never have, NEVER WILL!
  SHUT THEM THE “”F”” DOWN!!!
Maria Zack she runs a non profit organization called Nations in Action She needs donation for security detail here in USA and Italy and plane to bring perps and proof from Italian coup against POTUS please help her
Pence will go along with this fraud, so don’t expect much of any push back from him today
If a politician makes a deal or a decision had a fear of losing his job, he needs to lose his job
He just said VP, he didn't say Pence.🤷♀
Pence is going to betray America the same way the courts, including SCOTUS, have.
So.....in Georgia.....they stop counting at 11pm. Kick the Republican poll watchers out.....again....and magically the democrats win again. More voter fraud. OUR REPUBLIC IS DEAD
Pence is deep state.
I smell something fishy 🤔🤔🤔
I really enjoy watching the trumptards turn on their own. Hahahah. Cry more MAGAts


Before Change
// for modules in dead branches will get processed!
// TODO Find out a way to remove unreachable branches in the graph. - Create a new graph object that will be constructed just from the top-level script?
if safe_to_remove:
submodule_list = set()
// First find submodules.
for subnode in mod_graph.nodes():
if subnode.identifier.startswith(excluded_node.identifier + "."):
submodule_list.add(subnode)
After Change
// Collect all dependencies and their submodules
// TODO: Optimize this by using a pattern and walking the tree
// only once.
targets_to_remove = []
for item in not_allowed_references:
excluded_node = mod_graph.findNode(item, create_nspkg=False)
if excluded_node is None:
logger.info("Import to be excluded not found: %r", item)
continue
logger.info("Excluding import %r", item)
targets_to_remove.extend(find_all_package_nodes(item))
// Remove references between module nodes, as though they would
// not be imported from "name".
for src in hooked_mods:


[1]
our 20 day november myanmar trip -lrb-/-lrb- mandalay , bagan , golden rock , hpa-an -rrb-/-rrb- .
[2]
our caps with built-in led lights to read in bed as there is little room lighting .


PSquad33 my biggest concerns are making sure we don't bite off more than we can chew and that we keep WebWork... WebWork
jcarreira Have you looked at Cameron's stuff?
iroughley what were your thoughts on Camerons checkins?
PSquad33 i'm not interested in becoming a vehicle for distributing dojo
iroughley yes
jcarreira I wanted to talk to him about contributing his stuff back to dojo
PSquad33 all the javascript widget stuff sounds like it is getting a little too far away from webwork. but still, it is interesting
PSquad33 anyway, i'll be on and off
iroughley I like dojo as the transport, but as soon as you get too far into JS I am concerned abouot browser compatibility
jcarreira I like the idea of making the components dojo widgets, but I want the JSP tags to write out the dojo widgets... that way we can maintain server-side state
jcarreira yeah, that's a good reason to put it in dojo... more people using it = more compatibility testing
iroughley exactly
PSquad33 are we going to support dojo entirely, or will this be optional stuff? i just don't want to divert focus
PSquad33 maybe we should make an seperate project or something. do my concerns make sense?
jcarreira well, I think we should have an Ajax theme
iroughley I like using it as the transport, and the event stuff is good.
jcarreira I don't know... I think it's important to have rich widgets as part of the framework...
PSquad33 sure -- but we can't abandon our base either
jcarreira ...and they're going to do drag-n-drop, etc.
PSquad33 people still use the plain old XHTML theme
PSquad33 i want to keep the goals in sync
PSquad33 anyway, my big concern is that I feel a bit left out of the loop -- and if I do, our users defintiely will
iroughley I guess my underlying issue with the code that cameron added, was that it had no dependency with webwork
PSquad33 so you guys need to really hold my hand on this if you think this is the right direction to go
PSquad33 show me the vision in simple to understand terms
PSquad33 ian: exactly
PSquad33 ian: that is exactly my concern -- we're going to fragment the user base at this rate
jcarreira yeah.. I don't want to get into the biz of maintaining add-ons to dojo
iroughley it could be used with or without webwork, and then we are developing for someone else
jcarreira I wanted to talk to him about contributing the JS stuff back to dojo, and we just use it
jcarreira I've been trying to think through if we need the server-side events too
iroughley so then move in the direction that I think we are going - tag libs around the attributes for the dojo elements
jcarreira yep
iroughley so that we can link into server side state
jcarreira Should we just maintain UI widget dependencies on the client-side?
jcarreira or should we try to implement a real MVC style where the model changes cause the correct view components to update?
iroughley this is a urious question
iroughley i like loose dependencies on the client, via topics
iroughley so far, for what I am doing it works well
jcarreira so the UI components just know to listen to topics and refresh themselves?
iroughley yes
jcarreira in that case it can just be a UI component theme
iroughley the caveat is that the components have a known grnularity, that is understood by the developer
iroughley yes
jcarreira except for the extra JSP attributes
iroughley and changed per theme
jcarreira what do you mean about the granularity?
iroughley you have to know that a remote div (for example) might get a list from the server, or render a domain object
jcarreira I was thinking the remote div would just get HTML and set its innerHtml
iroughley so when you call that div to refresh itself you are doing work to obtain the information
jcarreira that way it's just like a ww:action tag...
iroughley yes
iroughley the action does the work
jcarreira and if you have it like this:
jcarreira <ww:remotediv action="foo"/>
jcarreira actually...
jcarreira this could just be a theme for the ww:action tag...
jcarreira ...except it's not a UI tag
iroughley true
jcarreira but it could wrap a ww:action tag and delegate calls to it
jcarreira but maybe that's limiting its reusability
jcarreira <ww:remotediv href="foo.action"><ww:action name="foo"/></ww:remotediv>
jcarreira the contents of the ww:remotediv would be the original content (no need for a separate call to load the content), then the href would be used when it refreshes
iroughley that's a good idea
iroughley i haven't had a chance to implement the initial content yet (as per your suggestion last week)
jcarreira what are the params to the remotediv tag?
iroughley so, i guess that the UI doesn't need to maintain dependencies on the client, just make calls via remote div's (or other components) and let the actions determine the state
jcarreira yeah
jcarreira but we need things like select boxes which can populate
|<-- PSquad33 has left efnet (Read error: Connection reset by peer)
iroughley is, url, updateFreq, loadingText, reloadingText, errortext, showErrorTransportText, topicName
jcarreira for example, if I'm shopping and I select a catalog, it should populate the product categories in a select list automatically
jcarreira ...I'd also like to be able to have a lazy-loading tree widget
iroughley i agree
jcarreira the loadingText can go away.. just make it the body enclosed by the tag
iroughley that was my plan
jcarreira we need a way to tell it to load immediately... then the default text would be there while it loads the first time
iroughley :)
iroughley my idea exactly
iroughley monday I hope it will be done
jcarreira cool
iroughley could the select tag and tree tag use topics to refresh state from the server
jcarreira what do you mean?
iroughley then use DWR or dojo to obtain JS to refresh themselves
jcarreira ah
-->| PSquad33<EMAIL_ADDRESS>has joined #webwork
PSquad33 back
PSquad33 sorry about that
PSquad33 you guys still talking about stuff
jcarreira but where do they call to get the stuff to refresh themselves?
PSquad33 ?
jcarreira yep
iroughley yeah
jcarreira you need to bind something to DWR to populate the list, right?
iroughley the data has to be sourced from somewhere originally, right?
iroughley yep
jcarreira yeah... originally it might be in the action
iroughley exactly
PSquad33 let me know when you guys are ready to talk strategy. i don't have much to add technically, but i want to make sure we are absolutely clear on our strategy and market perception.
jcarreira would we want to populate the data on the client?
iroughley what do you mean?
jcarreira pre-populate a data structure and select from there...
|<-- PSquad33 has left efnet (Remote host closed the connection)
iroughley personally I wouldn't - if you are using ajax the assumption is that the data may change, and should be refreshed from the server
iroughley that doesn;t mean that we shouldn't have a static tree widget
jcarreira I guess I don't know how DWR works... how do you tell it what to call? Can it load data from the session?
iroughley DWR (i think) makes a call to a method on a serverside object - like a spring BO
jcarreira can it access the session to get its data?
iroughley i would think that you could have it access a WW action, and return the session information from there
iroughley i haven't looked at it lately
jcarreira I'm asking Patrick... he keeps getting kicked off
iroughley do you want to try another IRC server?
jcarreira nah, it's his client
jcarreira he's got a cheesy shareware one for mac
iroughley ok - so if anyone changes the select list they update an element in the session - then the select list uses DWR to call an action with a list name (?) which obtains a refreshed (possibly) list from the session
jcarreira I was using an onChange() call... it uses bind() to call and set something into the session
iroughley that would work
jcarreira we need a way to make it easy for users to bind onChange to a call to the server
jcarreira You shouldn't have to write a JS function everytime
-->| PSquad32_<EMAIL_ADDRESS>has joined #webwork
PSquad32_ yo yo
PSquad32_ chatzilla to the rescue
jcarreira ok, Patrick was just explaining DWR to me
iroughley but it's more complex than that, as it might not be the same element - it may be a different one
iroughley ok
jcarreira no, it shouldn't change anything client-side
PSquad32_ so yeah, lemme know when you are ready to talk strategy. dojo doesn't seem to line up with what webwork is about at all, so i'm a bit worried
jcarreira it should make a call to the server, set some session state, then return and send a client-side topic message
iroughley ok - yes
jcarreira it's maybe a little more chatty, but it's simple to understand and model
jcarreira and very loosely coupled
iroughley could we set up each of the UI tags to define whether they send or update, and then wire it up for the users?
iroughley more chatty, but the calls are going to be very small
jcarreira what do you mean?
jcarreira I think each UI component should be able to be given a URL to hit with the new value onChange()
jcarreira and a topic to publish to
iroughley agreed
iroughley so that call will be small (not alot of data in the URL)
jcarreira and also have a topic to listen to that would load the value... so that would need a url to get the list
iroughley yes
iroughley and that call is going to be returning just the list, and not a complete HTML page - do the data being sent back to the client will be small
jcarreira yep.. but in what form does it return the list?
jcarreira ...patrick, we're almost done with the Js stuff....
iroughley innerHTML?
jcarreira what does it mean if you set the innerHtml of a select tag? what do you set it to?
iroughley it's easy and whatever is called on the server to get the data out of the session can format it to html
iroughley I would think that any tag can be gotten by id, and then html set in it
iroughley so <OPTION>one</OPTION> etc.
PSquad32_ i'm going to play a game of halo -- be back in a few :)
jcarreira yes, but what do you set into the innerHtml of a select tag to populate it? is it just the <options>?
iroughley i think so
iroughley haven't tried it, but it makes sense
jcarreira ok, so for the tree... it needs to get javascript back, probably, or some data structure... should we support both?
Fracture Hi
jcarreira Hi Fracture...
Fracture i'm going to read the log to catch up
iroughley i think that depends on the core tree widget that we use and augment for the implementation
jcarreira true... I've been playing with dtree for a while... it's pretty easy
jcarreira Fracture, I'm not sure who you are IRL...
iroughley do you think that returning JS or HTML would be easier with dtree?
jcarreira JS
iroughley i think that's fine then - the action/object that obtains the data from the session can modify it to JS to return to the browser
jcarreira This is how I add things to the tree:
jcarreira <ww:iterator value="categories">
jcarreira tree.add(<ww:property value="id"/>,<ww:property value="(parentCategory == null)?0:parentCategory.id"/>,'<ww:property value="name"/>','javascript:changeCategory(<ww:property value="id"/>);','<ww:property value="name"/>','_top','/img/folder.gif','/img/folderopen.gif');
jcarreira </ww:iterator>
jcarreira then you add it to the page like this:
jcarreira document.write(tree);
iroughley cool
iroughley we could even use JS for the select - just an implementation detail, as it will be hidden from teh end user
jcarreira but I think we can get to that later... I'm ok hardwiring this one together for now.. but we should make it easy to create components that send changes to the server to update server state and then send update events on topics
Fracture is Cameron :)
jcarreira ahh.. ok...
=-= Fracture is now known as Cameron-
jcarreira Cameron, let us know when you're caught up
Cameron- shall do .. half way there.
iroughley i would agree with that
iroughley while we are handwiring, we should also start thinking about a naming convention for the topics
jcarreira categoryChange, userChange, etc?
iroughley yes - I have been using topic_{html id}_event - i.e. topic_myRemoteDivId_refresh
iroughley but they can easily change
jcarreira I think we should make it easy to type and remember... users will end up needing to do some wiring themselves at some point
iroughley makes sense
iroughley on some of the elements i added a topic to publish to - perhaps I should go ahead and add this to them all
jcarreira where would we be defining topics?
iroughley at the moment I autowire some, and give the user the option of specifying them on some
jcarreira well, we should talk through that with Patrick... how we're going to position this Ajax stuff... if we're going to add attributes to the taglibs, etc.
jcarreira which are autowired?
jcarreira brb
iroughley from memory I think the autowired ones are - remotediv sends a "refesh", tab header sends a "tab selected"
iroughley remote div can specify a topic to listen to and refrsh itself - i think that might be the only one for now
Cameron- ok - I agree that these dojo widgets that I have created really belong in dojo - or a separate project. I was just demonstrating that rather than us write javascript code (that the ww components use) we write them as dojo widgets, and use the components to bind data to them. When using more interactive client controls - webwork more becomes a controller for marshaling data. I do think that we need to bundle a dojo build with w
iroughley oh - the remote link / <a href> is autowired to send a "refresh"
Cameron- and also allow our users to use a different profile build - if they meet our dependencies
PSquad32_ cameron: this whole dependency on dojo widgets is very un-webwork-ish
PSquad32_ i _really_ think it is not the right direction
Cameron- we depend on DRW, we depend on XmlHttpRequest..
Cameron- we have to have dependencies
PSquad32_ but we're depending on a framework
PSquad32_ the others are libraries
PSquad32_ dojo is a framework
PSquad32_ think about it from user's perspective. when they upgrade to 2.2, what are they going to see?
PSquad32_ what is the "webwork message"?
PSquad32_ what is our story? we can't have 4 different versions of the same story
jcarreira well, that's where we need to decide if this is a theme
jcarreira I think this is the Ajax theme
jcarreira and it requires dojo
jcarreira I think we bundle a dojo profile with the example app
PSquad32_ i think that is fine (a lot of this is marketing more than anything)
iroughley are there cases where you might needs to utilize multiple themes for a single compnent?
jcarreira yes
iroughley i.e. 2 different styles of lists or tabbed controls on the same page
iroughley so each of these would then need to be developed from teh core ajax theme
jcarreira sometimes I end up using the "simple" theme because the layout requires I can't put it in the table
jcarreira what do you mean?
iroughley it's late - i think i just confused myself :)
jcarreira what's our status with JSP 2?
jcarreira with JSP 2 you can just add more attributes without having to put them in the TLD, right?
PSquad32_ i am fine iwth requiring jsp 2
jcarreira I don't really know the features of JSP 2 :-)
jcarreira but requiring JSP 2 is requiring J2EE 1.4 and J2SE 1.4, right?
jcarreira which means no WebSphere 4.x or 5.0
PSquad32_ websphere 5 is JDK 1.4
jcarreira 5.1 is
iroughley if that is the case i would opt not to exclude those markets
PSquad32_ that's fine
PSquad32_ we don't need JSP 2 features
PSquad32_ ww:param works
PSquad32_ i have to run
PSquad32_ let's keep thinking about what the webwork story is -- how all this fits in
PSquad32_ we can't just say the old stuff doens't matter or isn't supported
Cameron- so Pat - what is the wework story ?
PSquad32_ well, i think we all need to work on that
PSquad32_ i'll draft up some thoughts -- maybe you guys can too
jcarreira ok, so if not JSP2, then we need to pull those attributes out and use ww:param to parameterize the tag for this specific theme
PSquad32_ my main concern is that you guys understand what i'm saying :)
PSquad32_ anyway, i have to run
PSquad32_ see ya
jcarreira later
Cameron- bye
iroughley later
jcarreira so if this is going to be a theme, we can't add theme-specific attributes
iroughley for the remote div that cameron added - right?
Cameron- you can - using ww:param no ?
jcarreira right, I mean attributes to the TLD
Cameron- you could probably add optional ones, and document them as 'only used for xxx theme'
jcarreira Hmm... could be.... as long as it's very clear... I don't want to be answering questions about why the topic isn't being used with the xhtml theme
Cameron- true
jcarreira speaking of which, does anyone know if someone actually build a real XHTML theme using div's and CSS instead of tables?
jcarreira built
iroughley no idea
Cameron- no idea
iroughley a while back i thought cloves and pat were talking about doing it
Cameron- yeah - I rememer hearing that.
iroughley so the plan is to move forward with a dojo/ajax theme?
jcarreira yes
jcarreira who wants to take what?
Cameron- with regards to your 'topics' ... are they for use client side .. or do these events get routed to an action too ?
jcarreira Cameron, you're going to talk to the dojo guys about contributing the remote div, remote link, and remote submit stuff to dojo?
jcarreira they're the dojo.event.Topic stuff that lets you do publish/subscribe in JS
Cameron- yep - i'll do that.
iroughley we will also require theme specific tags then, right?
Cameron- so you use topics for inter widget communication ?
iroughley remote div for example
jcarreira I built it as a wrapper around their event stuff
iroughley yes - mainly for server side refreshes at the moment
jcarreira I think let's keep the theme specific attributes for now
jcarreira the idea is for a component to update its server state then publish a message on a topic
Cameron- so something emits an event, a widget is triggered, which then refreshes itself ?
Cameron- sure
jcarreira yep, the developer specifies with the tags which topic(s) a component listens to to refresh itself
iroughley or parts of itself - like the drop down list elements
jcarreira and which topic a component publishes on when it is changed
jcarreira so they are loosely coupled and the developer specifies which thing listens to the others
Cameron- cool.
jcarreira so about dojo and source
iroughley so - there are 3 parts as i see it - 1. the dojo UI widgets, 2. the events/topics, and 3. the WW tag/component that combines them all
Cameron- yep
iroughley go ahead jason
jcarreira should we just bundle the __package__.js?
Cameron- we also need the other 'non bundled' files.. like html templates, css files and other widget resources (gif/jpg)
jcarreira yeah, the tags generate JS to use the dojo widgets and JS to wire them to topics
jcarreira ok
jcarreira where do those come from?
Cameron- I setup an ant target dojo-profile that causes dojo to build a __package__.js and copy it and other non bundled resources into the os/static/dojo package
Cameron- where do those come from ? dunno what you mean
jcarreira Well, I don't know about bundling the sources to dojo into webwork's CVS
jcarreira I think we should just bundle the final built product, like we do with other libraries
iroughley also, if they are in webwork.static, can the end user override the images easily if they wanted?
Cameron- that depends on how the widet is authored
Cameron- authored
jcarreira how does one specify the images to be used?
jcarreira can it be done so that the template could be edited to change where they come from?
Cameron- the widget can take a img= attribute and use it in the building of the rendered widget.
iroughley ok - so it doesn't need to be in ww.static
jcarreira well, the defaults can be
Cameron- doesn't have to be.. however .. defaults may be packaged there
iroughley ok - makes sense
jcarreira ok, so the order of things:
jcarreira 1) Cameron, you're going to try to get this stuff into dojo
jcarreira 2) we build a profiles of dojo with the widgets
jcarreira 3) we edit the JSP templates to use the dojo widgets
jcarreira sound good?
jcarreira anything i'm missing?
iroughley sounds good
Cameron- with the remote div.. why do we need a jsp template ?
jcarreira because we want to wire it to topics
Cameron- why not have a <dojo:topic> widget ?
jcarreira and it can take the body contents as the default content of the div
Cameron- the body content can be done <dojo:remotediv attribs...><ww:action name='foo'/></dojo:remotediv>
jcarreira what would the dojo:topic do?
Cameron- the dojo:topic would 'install' the topic 'bus' into the page
jcarreira well, I'd like to keep things consistent... using ww: tags and auto-wiring them to topics
iroughley can th edojo:topic tag specify the topic to listen to and the topic to publish to when an event ocurrs?
iroughley it's also going to be more code for developers to type
jcarreira <ww:remotediv listenTopic="itemSelected"> creates JS to wire the div to refresh when it gets a message on that topic
jcarreira yeah, we want to make this dead-simple
Cameron- dojo:remotediv listenTopic='itemSelected'> can do the same thing.. without a jsp template
jcarreira ...and it doesn't hurt to wrap dojo in case something else comes along and we replace the JS library
Cameron- I think we only need to use a jsp tag when we need to access action context from the tag
jcarreira I don't want to make users know anything about dojo
Cameron- ok.. well. I think we have two different approaches.
iroughley if we don't wrap it, it won't really be a theme - wil it?
jcarreira yeah, the JSP template can just call the dojo stuff, so you can just use the dojo stuff directly, too
iroughley it will be something else to use with ww
Cameron- ok
jcarreira well... maybe we should just make this a ww:div tag
iroughley makes sense
jcarreira and in the Ajax theme it can become a remote div
iroughley then we also need a <ww:a>
iroughley :)
jcarreira yeah... we should do that
jcarreira it can use the URLTag code
Cameron- sounds good
jcarreira ok, Ian, do you want to take those?
iroughley sure
jcarreira cool
iroughley we also need dojo components for the existing elements - remote div, remote a link, tabbed panel - right?
jcarreira yeah... not sure how hard it is to do the tabbed panel... that's a more complicated one
iroughley tonight we also talked about a select list and tree element
iroughley it might be easy - just use <ww:div> and it will just not update - events will be the only issue
jcarreira ...and I still want them to build a nice menuing system :-)
iroughley the only other thing I was thinking about is a paginated list
jcarreira let's get the ones we've got now using the new architecture
jcarreira JSP tag -> template -> dojo widget
iroughley cameron - you up for building the dojo components?
Cameron- yeah
jcarreira ok, I'll fill Patrick in with where we're heading and maybe we can schedule another chat to talk about the WebWork message, etc
Cameron- ok
iroughley ok - then I will start on the remote div tag/template from teh dojo component next monday
Cameron- we need a wiki page to list the ajax theme components
Cameron- (so I know what to build)
iroughley let me know as new ones come down the pipe
iroughley the current tutorial list all the ones i've done - localhost/webwork/tutorial/ajax/...


Url for Seo module, use for sitemap generation.
More...
Url for Seo module, use for sitemap generation.
- Author
- jc
Definition at line 12 of file Url.php.
◆ __construct()
| __construct |
( |
|
$location = "" , |
|
|
|
$lastModified = null , |
|
|
|
$changeFrequency = "daily" , |
|
|
|
$priority = "0.5" |
|
) |
| |
◆ fromArray()
| static fromArray |
( |
|
$array, |
|
|
|
$existing = true |
|
) |
| |
|
static |
◆ getChangeFrequency()
- Returns
- string
Definition at line 49 of file Url.php.
◆ getExisting()
- Returns
- mixed
Definition at line 95 of file Url.php.
◆ getLastModified()
- Returns
- string
Definition at line 41 of file Url.php.
◆ getLocation()
- Returns
- mixed
Definition at line 33 of file Url.php.
◆ getPriority()
- Returns
- string
Definition at line 57 of file Url.php.
◆ getValid()
- Returns
- boolean
Definition at line 115 of file Url.php.
◆ setChangeFrequency()
| setChangeFrequency |
( |
|
$changeFrequency | ) |
|
- Parameters
-
Definition at line 81 of file Url.php.
◆ setExisting()
- Parameters
-
Definition at line 102 of file Url.php.
◆ setLastModified()
| setLastModified |
( |
|
$lastModified | ) |
|
- Parameters
-
Definition at line 73 of file Url.php.
◆ setLocation()
- Parameters
-
Definition at line 65 of file Url.php.
◆ setPriority()
- Parameters
-
Definition at line 89 of file Url.php.
◆ setValid()
- Parameters
-
Definition at line 122 of file Url.php.
◆ $changeFrequency
◆ $existing
◆ $lastModified
◆ $location
◆ $priority
◆ $valid
The documentation for this class was generated from the following file:


Record your progress and compare your metrics over time.
Have other join in on the exciting by adding friends and creating teams.
Receive reminders and review dashboards which give you valuable insights on how to optimize your performance.


{% extends "base.html" %} {% import "macros/form.html" as Form %} {% import "macros/element.html" as Element %} {% set title = _('Thank you for your feedback') %} {% block page_title %}{{ title }} - {{ super() }}{% endblock %} {% block inner_content %}
{{ _('We use the feedback to improve the service.')}}
{% include "checker/time-out-warning.html" %} {% endblock %}


--- date: 2011-01-14T00:00:00Z published: true title: Hypergraphia - Finding a Needle in Haystack - Facebook's Photo Storage url: /2011/01/14/hypergraphia-finding-a-needle-in-haystack-facebook-s-photo-storage/ ---
Facebook currently stores over 260 billion images, which translates to over 20 petabytes of data. Users upload one billion new photos (~60 terabytes) each week and Facebook serves over one million images per second at peak.
That's unreal.


If you click on me, I will disappear.
Click me away!
Click me too!
Demonstrate fadeIn() with different parameters.
Demonstrate fadeOut() with different parameters.
Demonstrate fadeToggle() with different speed parameters.
By default, all HTML elements have a static position, and cannot be moved. To manipulate the position, remember to first set the CSS position property of the element to relative, fixed, or absolute!
By default, all HTML elements have a static position, and cannot be moved. To manipulate the position, remember to first set the CSS position property of the element to relative, fixed, or absolute!
By default, all HTML elements have a static position, and cannot be moved. To manipulate the position, remember to first set the CSS position property of the element to relative, fixed, or absolute!
Click the button multiple times to toggle the animation.
By default, all HTML elements have a static position, and cannot be moved. To manipulate the position, remember to first set the CSS position property of the element to relative, fixed, or absolute!
By default, all HTML elements have a static position, and cannot be moved. To manipulate the position, remember to first set the CSS position property of the element to relative, fixed, or absolute!
This is a paragraph with little content.
jQuery is fun!!
This is some bold text in a paragraph.
Name:
This is a paragraph.
This is another paragraph.
Input field:
This is a paragraph.
This is another paragraph.


Garrett Brown is a Software Engineer who graduated from Epicodus and worked under Hubb as an Angular Development Intern. Garrett graduated in the class of 2016 from Reynolds High School, and initially wanted to pursue a theatre arts degree, as he had realized he had a passion for it just before he graduated. He went to school at Clackamas Community College, Mt. Hood Community College, and South Puget Sound Community College for 4 years. After realizing he didn't have a particular aim for what he was actually going to do after school, he took interest in coding as his cousin had been a graduate of Epicodus and quickly made progress in the field. Garrett took this inspiration and enrolled himself in hopes of finally finding a calling, and so far, it has been an amazing journey. He graduated from Epicodus in March 2021 with a certification In web-design. He finds himself most interested in Front-End development, Game-Design and UI/UX Design, as the visual aspects of software engineering provide him with a greater sense of accomplishment. He is currently looking for his first Software Engineering job and is also volunteering with Kona Connect, assisting with their WordPress site, and, after beta-testing, working on the front-end for Sophia, Kona Connect's domestic abuse help chat-bot!
Garrett's current interests include video games, Dungeons and Dragons with his friends, drawing, playing guitar and bass, (Although he's been doing a bad job of actually picking them up lately.) with intentions of creating music. He also enjoys theatre arts and has acted in 7 shows on stage, as an extra in "Documentary Now!", and even the webseries "Fallen Justice." He also acted in "Dinner Detective Portland", an improv-based murder-mystery company for 2 years. Some of his favorite bands include Sybreed, Periphery, Perturbator, Celldweller, and A Day to Remember, with metal being his favorite genre. He currently resides in SE Portland, but is eager to relocate, as it has been a dream of his since he was 14!
JavaScript: JavaScript is Garrett's most used coding language due to the frameworks and wide variety of applications available. Related experience: P5.js, Three.js, JQuery, React, React Spring, with minor knowledge of Redux.
C#: Garrett's trained backend language. He took interest in it after learning that a wide variety of gaming engines are programmed in C#. Related experience: MySQL, Unity, Razor and .NET.
TypeScript: Garrett learned a bit about Angular for Hubb Software, as their backend was built in Angular. Related experience: Angular.
C++: Garrett is currently learning C++ in an effort to further his knowledge of game design, as well as add another backend-language to his arsenal. Related experience: DirectX programming.
Processing/Java: Garrett is also currently learning Processing in an effort to further his knowledge of animation technologies while also learning a new language. Related experience: Java - MySQL connections, Processing animations. (2D and 3D.)
HTML/CSS: Garrett's preferred method of creating sites. Related experience: SASS, Canvas, Bootstrap, API's.
IDE's/Other software: Garrett's preferred IDE is VSCode, however he has knowledge of Visual Studio, Eclipse IDE, the Processing Sketchbook, and Tiled Game Editor. Other useful software he has knowledge of include: Figma, Azure DevOps, and WordPress.
An MUD (Multi-User-Dungeon) Game created by me and 4 other Epicodus students for our first team week! I worked on the old-style computer terminal UI, enemies placed in rooms and their stats, and room descriptions! Created with: HTML, CSS, Javascript, Canvas, Node.JS, and Git.
The new and improved version of Dungeon_Darkly based on the legendary Unity Engine! I assisted in the creation of the UI to get it to look like a simple screen and scroll as the JS version did! Created with: Unity Engine, C#, Git.
A database intended for use alongside Dungeon_Darkly. With this, you can add items, monsters and more to the list of things encountered in-game. I styled this page, and helped with the connections to the MySql database. Created with: C#, HTML, CSS, Bootstrap, and MySql.
A lovely flowchart-esque site that shows the general day for an Epicodus student. This site was meant to be an exploration of React animations and styling capabilities, but ended up becoming a fun nod towards our time spent in class. Created with: Javascript, React, React Spring, CSS, HTML, jQuery, Node.JS, and Git.
My capstone project for Epicodus. This project was an attempt at recreating "Hanenbow", a template for the sound-based Nintendo DS game, Electroplankton. It also includes several coding excercises from projects and technologies I had wanted to use for it. This project cemented in my mind what I wanted to do as a software developer, and that was make unique experiences for a person to enjoy through sound, animation, and gameplay! I fully intend to work on this project in my off time, creating the other templates in the original game, and furthering my skills in what I love! Created with: Javascript, Matter.js, Tone.js, Three.js, P5 Physics Editor, HTML, CSS, and Git.
My assigned project for Hubb Software! This is an arcade feature for Hubb's existing event-planning software. I worked with a fellow intern, Harrison Strand, my mentor, Grant Eadie, the marketing department and their CEO Robert Norton to create this feature! The backend is Angular based, and allows the users to change the colors according to a company's desired color scheme via state variables that are connected to an event-config JSON file! This product was built over 10 weeks and has already been purchased by 2 companies! I assisted in creating Snake-Eater, and the arcade splash page! Created with: Angular, TypeScript, Javascript, P5 Physics Editor, Figma, CSS, HTML, and Git.
Kona Connect - May 2021 - Present: Volunteer work, 2-3 hours a week.
Hubb Software - March 2021 - June 2021: Fixed-term internship.
Sail on Inn - March 2020 - Stand closed after COVID mandate.
Dinner Detective Portland - August 2017-December 2019.
Black Rock Coffee Bar - September 2019-November 2019.
Dutch Bros - May 2017 - June 2019.
McMinneman's Edgefield - June 2016 - September 2016.
Shorecrest Beach Club - June 2015 - August 2015.


Issue: MACRO-FUNCTION-ENVIRONMENT
References: MACRO-FUNCTION, p. 144
MACROLET, pp. 113-4
&ENVIRONMENT, pp. 145-6
MACROEXPAND and MACROEXPAND-1, pp. 151-2
Category: ADDITION
Edit history: Version 1, Pavel, March 21, 1988
Version 2, Masinter, 8-Jun-88, (as per cleanup discussion)
Problem description:
The &ENVIRONMENT argument to a macro-expansion function may only be used as
the
second argument to the functions MACROEXPAND and MACROEXPAND-1. It is
sometimes
more convenient, however, to be able to work directly with the more
primitive
function MACRO-FUNCTION, on which MACROEXPAND and MACROEXPAND-1 are
presumably
based. However, since MACRO-FUNCTION does not take an environment
argument, it
cannot be used in situations in which that environment must be taken into
account.
Proposal (MACRO-FUNCTION-ENVIRONMENT:YES):
Add an optional second argument to MACRO-FUNCTION, that argument being an
environment that was passed as the &ENVIRONMENT argument to some macro
expansion
function. If the argument is not given, or the argument is NIL, the null
environment is used. MACRO-FUNCTION will now consider macro definitions
from
that environment in preference to ones in the global environment. It is an
error
to supply the environment argument in a use of MACRO-FUNCTION as a SETF
location
specifier.
Examples:
(macrolet ((foo (&environment env)
(if (macro-function 'bar env)
''yes
''no)))
(list (foo)
(macrolet ((bar () :beep))
(foo))))
=> (no yes)
(setf (macro-function 'bar env) ...) is an error.
Rationale:
Intuitively, the more primitive operation in macro expansion is
not MACROEXPAND or MACROEXPAND-1, yet the environment argument can only be
supplied to the latter functions and not to the former one. By changing
this
state of affairs, the model of macro expansion becomes somewhat simpler.
Also,
more flexible use of the facility is enabled.
Current practice:
Xerox Common Lisp already implements this proposal. Symbolics Common Lisp,
and Kyoto Common Lisp do not. Lucid Common Lisp did not, but version 3.0
does.
Cost to Implementors:
This is presumably a simple change to make, a small matter of moving the
environment-searching code from MACROEXPAND-1 to MACRO-FUNCTION.
Cost to Users:
The change is upward-compatible and so poses no cost to users.
Cost of non-adoption:
One more (small) semantic wart on the language.
Benefits:
The function that users think of as being more primitive really is.
Aesthetics:
This slightly cleans up the language.
Discussion:
This issue was discussed starting in January 1987, but got tangled in
a web of other related proposals. In its current form, the only objections
have been that some other proposal or committee might otherwise change
macro handling, or that this proposal doesn't fix enough of the problems.


SOMETHING TO TALK ABOUT A film review by Christopher Null Copyright 1995 Christopher Null
This is one of those reviews that's going to garner plenty of nasty mail from disgruntled readers, but I feel it's my obligation to let *you* know exactly what you're getting into with SOMETHING TO TALK ABOUT.
If you are a female, preferably married, preferably Southern, preferably jilted by your husband, and preferably interested in horses, you'll love this film. If not, you're screwed. SOMETHING TO TALK ABOUT is the story of a married, Southern, jilted female, Grace (Julia Roberts), who works for her father (Robert Duvall) at his horse-breeding ranch. When she finds husband Eddie (Dennis Quaid) with another woman, she dumps him like week-old halibut and heads off into the land of reckless self-indulgence, revenge, and wacky hijinks with her dysfunctional family.
Well, it ain't quite that simple. I was expecting a romantic comedy, judging from the marketing campaign. Unfortunately, this is *not* a humor-filled film. It's a drama with some funny bits tacked on. Although Kyra Sedgwick (as Grace's sister Emma Rae) is the only comic relief and a God-sent saving grace to the picture, SOMETHING TO TALK ABOUT does exactly what its title says: talk ... at length ... for what feels like hours ... mainly about what scum the men in the female characters' lives are.
SOMETHING TO TALK ABOUT soon becomes the movie that will not die, which I started praying for after the first half hour. Absolutely nothing interesting happens to these characters. They are almost universally unlikable and underdeveloped--which is difficult to pull off, considering the sheer mass of personal interactions in the picture. Everyone just moans a lot along the lines of "Whatever happened to what we used to have?" and "How could you do this to me?" The whole film comes off as a sad experiment in marketing--to see how many women the movie could pack in the theater. Sadly, it's a lot. Let me tell you: a knee to the crotch goes a long way for this crowd.
And when it's finally over ... just when you think they aren't going to slap on a Hollywood Ending and make a nice statement ... *wrong!* SOMETHING TO TALK ABOUT sells out like tickets to a Streisand concert. I left the theater depressed.
SOMETHING TO TALK ABOUT is an especially painful letdown, considering its cast and creators. Director Lasse Hallstrom (MY LIFE AS A DOG, WHAT'S EATING GILBERT GRAPE?) and screenwriter Callie Khouri (THELMA AND LOUISE) have really taken a wrong turn here. It looks like everyone had the best of intentions, but the results were less than stellar.
Gentlemen reading these words, just remember to say this to your girlfriend or wife after she drags you to the film: "I thought it was good!" It'll be a lot less painful that way. I promise.
RATING: **
+-------------------------------+ |* Unquestionably awful | |** Sub-par on many levels | |*** Average, hits and misses | |**** Good, memorable film | |***** Perfection | +-------------------------------+
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


These functions run asynchronously in Script Lab. You can try running them faster in sync mode with these instructions.


Send us a message using the form below and someone from our team will be in touch ASAP!
We appreciate you taking the time to contact us. You can expect a prompt and courteous reply.


Terms of the settlement agreement
{% if data['makeoffernow'] == 'true' %}We'll also ask {% if data['theclaimant'] == 'true' %}{{ partyName( 'defendant' ) }}{% else %}{{ partyName( 'claimant' ) }}{% endif %} to sign. If they do this will become a legal contract.
{% else %}{% if data['theclaimant'] == 'true' %}{{ partyName( 'defendant' ) }}{% else %}{{ partyName( 'claimant' ) }}{% endif %} has signed this agreement. If you also sign it will become a legal contract.
{% endif %}| The offer | {% if data['defendant'] == "defendant" %} {% if data['makeoffernow'] == 'true' %}{{ data['the-offer-text'] }} | {% elif data['respondtoclaimantnocounter'] == 'false' %}Come to fix my roof sometime next week. | {% else %}{{ partyName( 'claimant' ) }}: I'll pay a maximum of £100 towards any new materials. | {% endif %} {% else %} {% if data['makeoffernow'] == 'true' %}{{ data['the-offer-text'] }} | {% elif data['makecounteroffer'] == 'true' %}I will fix the roof if you'll give me access and you pay for any extra materials. | {% elif data['claimantusertestingpartthree'] == 'true' or data['claimantusertestingpartfour'] == 'true' %}I will fix the issue with the roof on Tuesday 20th of August. I'm booked up until then.
I'll bring the spare materials I had left over from the job. |
{% else %}
{{ partyName( 'defendant' ) }}: I will fix the roof if you'll give me access and pay for any extra materials. | {% endif %} {% endif %}
| Completion date | {% if data['offeraccepted'] == 'true' %}{{ data['offerDateDay'] }} August 2019 | {% elif data['defendant'] == "defendant" and data['respondtoclaimantnocounter'] == 'false' %}{{ data['offerDateDay'] }} July 2019 | {% else %} {% if data['makecounteroffer'] == 'true' %}{{ data['offerDateDay'] }} August 2019 {% else %} | {{ data['offerDateDay'] }} August 2019 {% endif %} {% endif %} |
This agreement settles the claim made by {{ partyName( 'claimant' ) }} against {{ partyName( 'defendant' ) }}. This includes all money owed in the claim, for example court fees, expenses or interest.
Neither party can make any further claims relating to this case, other than to enforce it.
Either party can view and download this agreement from their Money Claims account. Both parties should keep a copy of this agreement.
If the agreement is broken
{{ partyName( 'claimant' ) }} can apply to:
- request a judgment for any money still owed from this agreement
- resume the original claim or counterclaim for the full amount of the claim
- ask the court to enforce any of the steps to be taken
Sign the agreement
Make sure this agreement includes everything you've agreed with {% if data['theclaimant'] == 'true' %}{{ partyName( 'defendant' ) }}{% else %}{{ partyName( 'claimant' ) }}{% endif %} before signing. You won't be able to change this later.


{% extends "base_project.html" %} {% load humanize static hc_extras %} {% block title %}Matrix Integration for {{ site_name }}{% endblock %} {% block content %}
If your team uses Matrix, you can set up {{ site_name }} to post notifications to an appropriate Matrix room.
Invite {{ matrix_user_id }} into your Matrix room.
Note: after joining the room, {{ matrix_user_id }} will be able to read its messages. Do not invite to rooms with sensitive content. Consider creating a dedicated room for notifications.
Look up the room's alias or ID, and paste it in the form below and save the integration.
{{ matrix_user_id }} will shortly join your room. After that, you are all set! From now on {{ site_name }} will post notifications to your room when checks go down or up.


'Pound party to continue as hard Brexit fear fades away'
A Brexit deal and the EU agreeing to an extended deadline for the UK to leave the bloc have given a breather to market participants.
by Moneycontrol ContributorVaqarjaved Khan
The pound had been under severe pressure since 2018 on account of a possible hard Brexit and continuous slack in the domestic economy hampering the growth in the UK. This led to a fall in GBPUSD by nearly 8 percent. In line with its international counterpart, GBPINR appreciated by nearly 2 percent.
The same story continued in the first half of 2019 as well. However, since August beginning both GBPUSD and GBPINR have skyrocketed. GBPUSD has gained by nearly 5 percent, while GBPINR has depreciated by 8.75 percent. This rise in the pound is on account of hard Brexit jitters fading away. To the delight of many market anticipants across the globe, the Brexit drama seemed to be drawing to an end when the UK secured a deal with the EU on October 17.
A new deal, a new ray of hope?
The UK parliament had in December 2018 rejected the Brexit deal that Prime Minister Theresa May secured from the European Union. The deal was modified but was rejected by parliament again.
As a hard Brexit loomed, the EU extended to October 31 the deadline for the UK to leave the bloc but not without its share of drama. May resigned and Boris Johnson, a hardcore Brexiteer, took over as the PM.
Johnson was determined to leave the EU by October 31, with or without a deal. He secured a new deal with the EU on October 17. The deal got the consent from parliament but the ministers disapproved of the PM’s rush to leave the EU before October 31.
Johnson was forced to extend the deadline to January 31, 2020.
Another twist in the tale
Just when we thought that the drama had ended, Johnson decided to call a snap election on December 12, 2019. The positive thing this time is that both the PM and the opposition Labour candidate, Jeremy Corbyn, want the UK out of the EU as soon as possible.
Global factors in support of Sterling
The US Fed increased interest rates four times in 2018. However, in its October 2019 meeting, Jerome Powell decided to cut interest rates by 25 bps amid a slowdown in exports and business investment scenario. This cut was the third for the current year.
Trade tensions between the US and China have hogged global centre stage ever since they erupted in 2018. Recently, the talks have progressed well. A few weeks ago, both sides decided to delay the imposition of tit-for-tat tariffs and the two countries are expected to meet in December to sign the first part of a trade deal, according to reports.
Elections, the new recipe for pound volatility
Going ahead, election results will continue to provide certain volatility in the pound. Headwinds for the UK have subsided in the last couple of months but the December 12 election and the January 31 Brexit deadline will remain crucial for the sterling.
A Brexit deal and the extended deadline have provided some breather to market participants but uncertainty over elections remains.
With the Fed trimming its interest rates and the trade talks progressing smoothly, the pound should gain strength. The overall scenario looks much in favour of the British currency and will help it scale higher heights.
Hence, GBPINR Spot (CMP: 91.2) is likely to move higher towards the 94 mark by the end of December.
(The author is Research Associate - Currencies at Angel Broking Ltd.)
Disclaimer : The views and investment tips expressed by investment expert on moneycontrol.com are his own and not that of the website or its management. Moneycontrol.com advises users to check with certified experts before taking any investment decisions.


Comments
-
Greg Hurrell
Thanks for sending in this suggestion. I think it's a good idea.
I think the most likely way I'd implement this is to follow Apple's lead, as exemplified in the desktop preferences pane, where you can set the desktop picture to change "Every 5 minutes", "Every hour", "Every day" etc. In this way even if you left iTunes running for days on end you'd still get the randomization.
Marking as ASSIGNED.
-
Greg Hurrell
Changing assignment to reflect my new email address.
https://wincent.com/a/news/archives/2006/05/change_of_email.php
Add a comment
Comments are now closed for this issue.


The Gzip Module allows to uncompress selected files using the GZIP format.
Do the following steps for uncompressing a file:
The following screenshot shows selecting a file using the pop-up menu:
The following screenshot shows selecting a file, and initiate compressing by using the main menu Tools|Gzip:
The following screenshot shows the dialog, asking if you want to uncompress the selected file:
The following screenshot shows the dialog, asking if you want to delete the original file:


First look at Doctor Who teases huge drama in 'biggest episode ever'
Jodie Whittaker returns for the new series of Doctor Who as boss Chris Chibnall calls it the 'biggest episode ever'
by Nicola Methven, Tiffany WallisWho is posing in a French vineyard? It’s The Doctor and her pals as part of their festive offerings.
A trailer for the new series revealed that the Time Lord, played by Jodie Whittaker , is chased on a motorbike by Sir Lenny Henry who appears to be a gun-toting baddie.
And along the way it looks like the Cybermen are making a comeback.
Boss Chris Chibnall said: “It’s the biggest episode we’ve ever done.”
The BBC's newly released trailer hints at the Time Lord's dark past as well as some returning big bads.
While much of the trailer focuses on the fun tone, bizarre locations and mysterious monsters fans have come to expect from this incarnation, something much bigger and much badder is hinted at.
"Something's coming for me," the Doctor announces, "I can feel it."
"Let it come!" declares Tosin Cole's Ryan Sinclair as the camera cuts to an old foe - a Cyberman.
"Cos we're your mates," says Mandip Gill's Yasmin Khan.
There are also some famous faces about, including actor and comedian Stephen Fry.
We also get a peak at the returning giant rhino aliens, the Judoon, as well as the hissing spider-like creatures, the Racnoss.
The trailer closes by telling us we can expect it in early 2020 - a relief for fans considering the show'll be skipping out on the usual Christmas special this year.
The highly-anticipated 12th series is due to start on New Year’s Day, with one of the biggest episodes in the show’s history.
Whittaker and her time-travelling pals Bradley Walsh as Graham O’Brien, Tosin Cole as his step grandson Ryan Sinclair and Mandip Gill as Yasmin Khan, will all return for the new 10-part run.
The second half of the story is then expected to air on January 4, as the series shifts back to its traditional Saturday evening teatime slot.


Although the definition of application means both the request to an authority for something (e.g. a cover letter) and the action of putting something into operation, I have come to believe it also describes the best attributes that you want in a programmer and developer. Basecamp provides a rooting and solidifying force. Often when we think of OOP or FP in web architecture, there are characteristics that are more desirable. As a programmer is my program, and the tools I use to apply a reflection of my solution space? If so then it follows that it works both ways and I often like to think of these qualities of my work can also be used as a self portrait in programming. Here are some of the broader character traits or lookalike features.
I’m obsessed with Basecamp web technologies and its open sourced tools. With a passionate concentration on software engineering because it is developing new ways to empower those on the other side of the digital divide. Reaching beyond my comfort zone, I have come to love learning code mostly through the idea and implementation of open source and constant data feedback. Approaching the engineering community has given me opportunities to learn with peers from different backgrounds, from instructors that lead with their heart and this has been the greatest motivation and structure for growth.
Communicating, interfacing, and considerations are key for interoperability. Empathy and user first philosophy improves trust, customer satisfaction, performance, and much more opportunity for growth and community.
While reliability is the ability of a system to continue operating in an expected way over time, and scalability is its ability to perform or expand under increasing load, I feel my ability to deliver under various stressors and remain collected is illustrated here.
After evaluation you will find my toolset, whether software or soft skills full and environment rich. As a relatively young programmer easily tweak able and optimized for build and learning. With a growth mind set can be said my configuration is easily scriptable and new skills deployed. Principled and passionate I will be an awesome app, especially with a footing in an environment that is BaseCamp. Basecamp isformative and foundational software, chisels, and organizes organizations? I love how it leverages, unifies tasks and team members alike. I would like to be apart of this lean green truth making machine!
Ready to start your next project with us? That's great! Give us a call or send us an email and we will get back to you as soon as possible!
@thunderenlight


SWIFT, Eye Computer, VIV, Bitcoin, Parsey McPareface
Another SWIFT Attack
The SWIFT interbank network that handles money transfers between bank has seen its second major hack attack. SWIFT is the primary way banks move billions of dollars to other banks daily. The hack spreads malware using a pdf reader software and bears code signatures similar to the Sony hack and the recent attack on the Bangladesh Central Bank. So if you work at a bank and are reading swift message via a pdf reader make sure its not infected and stay vigilant.
 Not content with the public rejection of google glass the company continues to push the envelope on a wearable computer. It latest vision via a patent filing is to implant one directly into your eyeball. Once injected the device would be powered by an energy harvesting antenna. The device can transmit signals like GPS, NFC, LTE. Will it be able to interact with the optic nerve and beam signals directly to the neo cortex is still unknown.
Viv - Conversation as a platform CAAP
A new conversational bot named Viv was unveiled last week by the creators of Siri. Viv promises to be the bridge between the apps on your device. You could ask Viv to order some flowers for mom or the temperature at the golden gate bridge at 7pm. You could even ask it to send some money to your friends. The AI assistant would be social graph and service aware to make the autonomous decisions for you. Will Viv be a radical change or just another bot that is gobbled up by Siri, Cortana or Ok Google
Will the real Satoshi Nakamato please stand up …
The elusive founder of bitcoin was found and lost again. Australian Craig Steve Wright was briefly unmasked as the infamous Satoshi Nakamoto, founder of bitcoin. Several clues including a PGP pubic key, blog posts and the mysterious “Tulip Trust” . Clues that surfaced after the release of the Wired story point an elaborate hoax that Wright may be propagating. So once more Nakamoto-san slips back into matrix..

Parsey McParseface
Google this week open sourced its natural language parser. This will enable smarter applications that one can communicate with using natural language. This should make chatbots smarter. The parser SyntaxNet is a Neural network built on googles macdhine learning framework Tensor Flow.


eduni.simdiag
Interfaces
GraphListener
Traceable
TraceListener
Classes
GraphClearObject
GraphData
GraphDiagram
GraphDisplay
GraphEqn
GraphEventObject
GraphLoader
GraphSetAxes
GraphSetScale
GraphWindow
TimingDiagram
TimingWindow
TraceEventObject
TraceLoader
TraceSaver


{% extends "base.html" %} {% block title %} 500 error encountered {% endblock %} {% block content %}
You have encountered a 500 error. Something behind the scenes went wrong.


React is a 'Single Page App' technology from Facebook. Demos: - React, developed using just Github Web UI, without JSX or any equivalent - React with Material UI and HTML instead of JSX