public class TCube extends java.lang.Object implements Solvable
| Modifier and Type | Field and Description |
|---|---|
private java.lang.String |
config
The String config, represents the configuration of the floppy cube using a single line.
|
private char[][] |
cube
The char matrix cube, represents the color configuration of the floppy cube.
|
private static java.util.ArrayList<java.lang.String> |
solutions
The solutions list contains, all the cube available solutions.
|
private int |
step
The int step, represents the current step of the cube, when it trying to find the solution.
|
private static java.util.ArrayList<Solvable> |
successors
The successors list contains, every possible next move configuration.
|
| Constructor and Description |
|---|
TCube(java.lang.String config)
The creation of a valid TCube implies that the initial configuration has exactly 40 characters.
|
TCube(java.lang.String config,
int step)
The creation of a valid TCube implies that the initial configuration has exactly 40 characters.
|
| Modifier and Type | Method and Description |
|---|---|
void |
downHorizontal()
Move 180 degrees the down horizontal lane of colors.
|
java.lang.String |
getConfig()
Get current cube configuration in String format (ALWAYS update configuration before return, maybe a move was executed).
|
char[][] |
getCube()
Get current cube configuration in matrix of chars format.
|
int |
getStep() |
java.util.List<Solvable> |
getSuccessors()
Makes all the possible moves (creating new cubes), for the current configuration and adds them all to a list.
|
void |
initCube()
Allocates space for the cube color matrix.
|
boolean |
isSolved()
Check if cube is in final configuration, this means that upper face has all positions with the
same color, this also applies to the lower face and sides of the cube.
|
void |
leftVertical()
Move 180 degrees the left vertical lane of colors.
|
void |
midHorizontal()
Move 180 degrees the middle horizontal lane of colors.
|
void |
midVertical()
Move 180 degrees the middle vertical lane of colors.
|
private void |
resetConfig()
*USE WITH CAUTION*
Set current cube configuration to an empty String.
|
void |
rightVertical()
Move 180 degrees the right vertical lane of colors.
|
void |
setConfig(java.lang.String config)
The creation of a valid TCube implies that the initial configuration has exactly 40 characters.
|
void |
setCube(java.lang.String config,
int step)
The creation of a valid TCube implies that the initial configuration has exactly 40 characters.
|
void |
setStep(int step)
Sets the current step of the cube.
|
private void |
swap(int i,
int j,
int k,
int l)
Swaps one color of the cube position in the matrix, with another color of the cube.
|
java.lang.String |
toString()
Returns a string representation of the object.
|
private void |
updateConfig()
Update the current cube configuration (useful to execute after performing a cube move).
|
void |
upHorizontal()
Move 180 degrees the top horizontal lane of colors.
|
private char[][] cube
private java.lang.String config
private int step
private static java.util.ArrayList<java.lang.String> solutions
private static java.util.ArrayList<Solvable> successors
public TCube(java.lang.String config)
config
- Cube color configuration ("computer readable format")setCube(String, int)
public TCube(java.lang.String config, int step)
config
- Cube color configuration ("computer readable format")step
- Cube current step (zero for the first step)setCube(String, int)
public void initCube()
public void setCube(java.lang.String config, int step)
config
- Cube color configuration ("computer readable format")step
- Cube current step (zero for the first step)public char[][] getCube()
public void setConfig(java.lang.String config)
config
- Cube color configuration ("computer readable format")public java.lang.String getConfig()
updateConfig()
private void resetConfig()
private void updateConfig()
resetConfig()
public void setStep(int step)
step
- New step of the cube.public int getStep()
private void swap(int i, int j, int k, int l)
i
- First color row number.j
- First color column number.k
- Second color column number.l
- Second color column number.getCube()
public void leftVertical()
swap(int, int, int, int)
public void rightVertical()
swap(int, int, int, int)
public void midVertical()
swap(int, int, int, int)
public void upHorizontal()
swap(int, int, int, int)
public void midHorizontal()
swap(int, int, int, int)
public void downHorizontal()
swap(int, int, int, int)
public boolean isSolved()
isSolved
in interface Solvable
updateConfig()
public java.util.List<Solvable> getSuccessors()
getSuccessors
in interface Solvable
leftVertical()
,
midVertical()
,
rightVertical()
,
upHorizontal()
,
midHorizontal()
,
downHorizontal()
,
TCube(String, int)
public java.lang.String toString()
toString
in class java.lang.Object


[gecode-users] Upgrading from Gecode 2.2.0 to 4.2.1
Christian Schulte
cschulte at kth.se
Wed Mar 5 15:16:02 CET 2014
Hi Filip,
Great to hear that the ride was smooth and the documentation helps.
Thanks for the kind words
Cheers
Christian
--
Christian Schulte, Professor of Computer Science, KTH,
www.ict.kth.se/~cschulte/
-----Original Message-----
From: users-bounces at gecode.org [mailto:users-bounces at gecode.org] On Behalf
Of Filip Konvicka
Sent: Wednesday, March 05, 2014 2:44 PM
To: users at gecode.org
Subject: [gecode-users] Upgrading from Gecode 2.2.0 to 4.2.1
Hi,
I just want to share with you my experience with upgrading from Gecode
2.2.0 to 4.2.1.
I did most of the upgrade to version 4 in the Summer 2013. I had my own
implementation of Float Variables, a set of related propagators and
branchings, a related script/solver, a number of scheduling-related custom
propagators and several other mainly combinatorial int/bool solvers using
the standard Gecode stuff.
I must say that the transition was very smooth and the documentation just
rocks. I was able to abandon my Float Variables implementation and use the
built-in version instead. Also, as a benefit, the new version seems to be
more robust (I've seen rare crashes with the old version that I attribute to
the library.)
I look forward to exploring and using the new propagators (I've already
played with Hamiltonian path for example), and the new features like
restart-based search, symmetry breaking etc.
Thanks and keep up the good work!
Filip
_______________________________________________
Gecode users mailing list
users at gecode.org
https://www.gecode.org/mailman/listinfo/gecode-users
More information about the users
mailing list


AWS re:Invent 2014: Initial Reactions to EC2 Container Service and Lambda
Another re:Invent in the bag! I’m beginning to digest the new services and trends I saw after listening to the keynotes, walking the exhibition hall floor, and chatting with what feels like all 13,000 people that attended. Here are my immediate impressions of the two most-hyped services since that’s all I have time for now.
You might have heard about this thing called Docker that’s been going around. As expected, Amazon’s container service is built around Docker and the Docker Hub and promises a nice cluster abstraction to running containers on a fleet of EC2 instances. It even comes complete with an awesome spaceport for moving containers around! Docker CEO Ben Goleb went to bat on stage with Werner pronouncing a deep integration and partnership with Amazon.
First impressions are challenging here since the service basically isn’t ready yet. It’s available as a preview only, and previews aren’t being given lightly. My impression is that the AMIs aren’t available, there isn’t yet integration with other services like ELB, and customizations are basic at best. Barb Darrow over at Gigaom is predictably underwhelmed by the new service offering, calling it “no Kubernetes”.
Still, AWS has a track record of releasing an MVP and iterating quickly. The dream is to have a generic, homogeneous fleet of compute capacity to which containers can be deployed transparently. The container service manages resources, distribution of containers, scheduling, and more. The other tools in this space are greenfield, at least as far as best practices are concerned.
I’ve been running Docker in production settings since (stupidly) version 0.5. The product is fantastic and the benefits are real, but it’s clear that a service like this is needed to simplify the orchestration and configuration. I’m excited to see this service improve rapidly.
##Lambda Also available in preview only is Lambda, “a compute service that runs your code in response to events and automatically manages the compute resources.” When an event occurs, like a new object uploaded to an S3 bucket or an message arrives on a Kinesis stream, a “trigger” calls a cloud function to process the event. Cloud functions are written in Node.js and can be daisy chained to create more complex interactions. Rumors abound that additional languages may be launched soon. Lambda functions can even be triggered on a scheduled basis, which I’ll use to replace some cron jobs.
People that I spoke to at the conference were very impressed with this announcement. I tweeted that it replaces an entire tier of worker instances that do nothing but process streams of event data. No longer are full blown EC2 instances needed for simple message processing. Mitch Garnaat (whom I didn’t have the pleasure of meeting, sadly) tweeted:
A double leapfrog maneuver. Containers leapfrog virtualization and then Lambda leapfrogs containers. Well played.
This is perhaps the most innovative service from AWS since the release of EC2 and S3. It dramatically simplifies running code in the cloud, lowering the bar to running services even more than PaaS tools. Consider the possibilities if an ELB trigger was released so that a Lambda function could handle HTTP/S.
It’s not a complete application replacement, of course. Some complex systems cannot be easily modeled as purely event driven functions. And I expect some lessons will be learned the hard way when developers don’t consider the implications of Lambda functions causing a recursive chain of events. Imagine that an image arrives in a bucket, triggering a Lambda function to process that image and puts it back in the bucket. If the function uploads the image to the same bucket, another function might be triggered to process the already-processed image, for an inception of image processing that costs the developer for each call. AWS warned against during the session discussing Lambda.
People who have signed up for the preview are already getting access. I can’t wait to see what clever things people will build on Lambda.
Coming up next
This is just a brief treatment of two of the nine services launched at re:Invent. The other big hitters were the Aurora RDS, the CodeDeploy/Commit/Pipeline services, and the Key Management Service. I’ll blog about those in an upcoming post.
Amazon is clearly pushing the industry it founded forward with innovative, high impact services that are exactly what customers asked for. Now let’s get to work and build something interesting.


We are individuals who share common interests and put our ideas into existence in order to contribute to the Open Source. We try to change the perspective from ‘I don’t know’ to ‘I don’t know yet’. We, as MSTC, help aspiring developers with the right environment to execute their ideas. We aim to do this in as exciting and simplified manner as possible. We help people find answers to their questions, share ideas, solve problems and get more out of their ideas and technology. We also come up with various events and competitions which help them to create a strong foundation for their dream development programs and competitions like GSoC, Outreachy, Imagine Cup, etc.


Firebase Train Schedule
Current Train Schedule
Train Name
Destination
Frequency (min)
Next Arrival
Minutes Away
Add Train
Train Name
Destination
First Train Time (HH:mm - military time)
Frequency (min)
Submit
Train Name
Destination
First Train Time (HH:mm - military time)
Frequency (min)


Hi there!
My name is Craig Bryan. I'm a software engineer!
Why are you reading this?
I think CV's are great for giving a quick overview of a person's professional persona, but I think that everyone has a lot more to say about themselves than can fit on a reasonably-sized CV. That's why I made this for myself.
Want the "SparkNotes" version?
About Me
I have a passion for learning! I'm constantly learning new skills, facts, technologies, and trivia. I also have a passion for software development. So, my favourite things to learn about are software-adjacent. Most recently I've taken to learning a little some Go by going through the basic tour of Go. I'm also an avid reader of Hacker News, for both the technical reads and the start-up news.
I also like to consider myself a bit of an adventurer. I've travelled through mainland Central America, many parts of Europe, and a lot of Canadian wilderness: in the warmer seasons I love to get into Algonquin park for camping. More recently, I've become a regular jogger, and I supplement my running with squash and rock climbing. I'm ran my first half marathon on May 29th in Ottawa, ON, Canada - my running partner and I raised some money for the victims of the Fort McMurray fire.
I'm a gamer. I play video games in my free time, or, when the opportunity presents itself, one of the board games from my (oversized) collection.
Education
Dalhousie University
From 2007 to 2011, I studied and graduated from Dalhousie University with a BSc in Chemistry. I covered all of the classic sciences (biology, chemistry, physics) to some extent, but nearing the end of my degree I specialized in materials science. This specialization was mostly the result of working in a materials science laboratory for my honour's project under the supervision Dr. Mary Anne White.
In addition to the technical chemistry knowledge, I learned a lot of 'soft-skills'. In particular, I found that lab work, if it is to be done correctly and safely, requires a great deal of attention to detail. I also honed my communication skills, especially my writing skills, by writing research papers and lab reports on a regular basis.
During my career at Dalhousie University, I was fortunate to have the opportunity to participate in two published research papers. I am the primary author of the first, which is called Thermal conductivity of (Er1-xYx)2Ti2O7 pyrochlore oxide solid solutions, and is the result of my year of working in Dr. White's lab. The second, Bismuth Crystals: Preparation and Measurement of Thermal and Electrical Properties, was the result of a fun, crystal-growth experiment that I did in my first year at Dalhousie University.
University of Ottawa
After I graduated with my degree in chemistry, I focused on finding a job related to my field. After months of searching, I ended up as an IT technician for a television and consumer electronics store. This was a job that I was grateful for but not related to chemistry. At the same time, my interest in software development and programming had been growing. I decided I should be focusing on the field I enjoyed, so I headed back to school for Software Engineering.
I started at the University of Ottawa in September 2012, as a second year student. During the two years that I've spent here, I've learned a great deal of technical skills — languages, design patterns, frameworks, and tools — but I'm finding I learn the most working with fellow students. Collaborations improve my communication skills, my leadership abilities, and my empathy.
Projects and Experience
Technical Services Developer at 360pi
Since May 2015, I've been working as a developer at a mid-sized startup called 360pi. This company does price intelligence for large online retailers and brands. I'm really enjoying working for a smallish company (50ish people) where I can see the effect of my contributions in an immediate fashion.
As a technical services developer, I mainly focused on the software used to scrape data from the internet - maintaining and implementing these web crawlers are a large part of my job. Implementing type of software yields some very interesting problems - request mimicry, subverting blocking, obfuscation attempts are some examples that come to mind.
Due to the high rate of churn of team member on the technical services team, I quickly became one of the most senior members of my team. This has probably been the most challenging aspect of this job, but I am grateful for it. I've been given the chance to rise to the challenge and thrive and now I have the opportunity to help grow and maintain the team myself!
I don't directly work on the product at 360pi, but rather, work in a technical position that is more customer-facing. I work on tight deadlines on projects and bugs that customers are expecting in the immediate future. This means my code goes live very quickly. It's a very fast-paced environment that I am enjoying very much!
Developer for UmpleOnline
A couple summers ago (May to August, 2014), I worked as a developer on an open source project called Umple. Umple is a tool that enables "Model-Oriented Programming". It is a project based primarily at the University of Ottawa and managed by Dr. Timothy Lethbridge.
My primary responsibilities working on Umple were the maintenance and improvement of UmpleOnline, the web-based demo and teaching tool for Umple. I worked with many different technologies over the summer. Early on, my work focused on javascript, CSS, and HTML as I squashed bugs and refactored sections of UmpleOnline. Certain bugs led me into the backend of UmpleOnline — which is in PHP — and the core of Umple — which is written in Umple that generates Java.
Later in the summer, I focused on making UmpleOnline easier to change: the large majority of the code associated with UmpleOnline were not backed by tests. I used a headless browser called PhantomJS along with ruby libaries Poltergeist (Ruby bindings for PhantomJS), Capybara (Ruby library for user-centric website automation), and rspec (Ruby testing framework). This was the most educational and fun part of my summer.
Engineer/DIY Hacker
From May 2013 to April 2014, I worked in the Pelling Lab for Dr. Andrew Pelling — a professor in the Department of Physics at the University of Ottawa. During this year I worked on implementing a project that would allow people in the DIY biology community to interact with Dr. Pelling's lab via Twitter. The idea for the project morphed from a biological sample monitor to a multi-sample, DIY microscope built from repurposed webcams. In this project, I was responsible for the design and implementation of both the software and the hardware.
The large majority of the software was written in Python, with some hardware-facing components written in Arduino (a domain specific language based on C). The software was responsible for receiving requests from Twitter, parsing and interpreting these requests, then interfacing with the hardware — motors, cameras, and sensors. The Twitter user would then have an image of the requested biological sample tweeted back at them.
I designed the hardware and built it using modular 3D-printed pieces. The overall design went through several iterations:
From a full-fledged incubator with a camera that moved in 3 dimensions built inside an old iMac,
to a device that only required camera movement in one direction, and used hand-focused biological samples,
to a device that used multiple stationary cameras with spring-loaded, hand-focused biological samples.
Hardware design was a very different experience. I made plenty of mistakes and learned a lot about managing projects to meet deadlines. The middle device was displayed as part of Toxicity, a bioart exhibit in Winnipeg, and was donated to the Canada Science and Technology Museum as part of their microscope collection.
Tech Support
In the year before I started my studies at the University of Ottawa, I worked at a consumer electronic store, Electronic Lifestyles, in my hometown of Orillia, Ontario. Here, I filled a lot of different shoes; I was a labourer, customer support, IT guy, and designer.
More than any other job I've had, I communicated and worked directly with customers. With this kind of experience, I learned how important it is for a product — any product — to work correctly and easily. Frustrated customers can be difficult, but they became easier to sympathize with as I dealt with more and more of their problems. I learned to approach every service call with a genuine concern and worry for the problems plaguing the customers.
At this job, I had many opportunities to work creatively. I redesigned and re-wrote the store's entire website. My boss, Greg Reid, had asked me to change some content on the website, and when I saw it, I knew it needed a facelift. I had no idea what I was doing — I was new at HTML, CSS, and web design in general — but I wanted to try. I am proud of the result, and it's laid the groundwork for me to become a better front-end developer today.
My Skills
When I made a list of my technical skills, I came up with a lot of languages and tools, but I quickly came to the realization that I am not familiar with all of these technologies to the same extent. I don't want to seem dishonest and place my strongest skills in the same list as the ones that I've used for a single class or project. I also don't want to sell myself short by only making a short list of what I consider my strongest areas. My solution to this dilemma is to use the following analogy: I've categorized all these languages into three categories.
My "Family" — I'm in contact with these folks almost every day and I know them very well, including their quirks.
My "Friends" — I see these people pretty often, and I enjoy spending time with them. They keep some secrets from me, and that's just fine.
My "Acquaintances" — I see these people around, and only have long conversations with them occasionally. Some of them are old friends with whom I've fallen out of touch, and others are those with whom I wish I could spend more time.
For fun, I've also thrown in a list of my current "Crushes" — those people whom I've seen from afar and would jump at the chance to get to know better.
Family
- Python
- git
- Java
- Javascript
- MongoDB
Friends
- Bash
- PostgreSQL
- Ruby
- Ruby on Rails
- HTML
- CSS
- SQL
Acquaintances
- PHP
- C++
- mercurial
- Arduino
- ant
- svn
- Go
- Ember
Crushes
- AngularJS
- Sass
- Rust
- node.js
- React
- Unity
References
Sorry, I keep these private. Available upon request though!


Watch: Here's why Sushmita Sen was left in tears after listening to her daughter Alisah's essay on adoption
by TIMESOFINDIA.COMSushmita Sen is a proud mother of two daughters- Renee and Alisah. The actress makes sure to share some lovely moments of her daughter on social media. Her profile is flooded with some beautiful clicks and adorable videos and we can't get enough of these lovely ladies.
Read Also: PIC: Sushmita Sen's breathtaking selfie will brighten up your Friday morning
Recently, Sushmita took to her Instagram handle to share another inspiring video.  She wrote, ''“You gave life in such a way, that you saved one” 👏😇🙏 #alisahsen ❤ #10yrsold #essay #adoption 🤗❤She had me in tears!!! This magnitude of love, acceptance, security, purity & honesty...the divinity in her convictions...uffff! Just listening to her opens the heart!!! #sharing #truth #kindness #bornfromtheheart 😍💋😊🌈I love you guys!!! #listen #duggadugga 😇''. The actress is an awe of her daughter and she can't stop praising her.
Sushmita adopted her first daughter when she was just 24 year old. She is recently making headlines for her love relationship with Rohman Shawl. If the reports are to be believed, the actress is making a Bollywood comeback soon.
Picture Courtesy: Sushmita Sen Instagram
Facebook Twitter Pintrest


Close an editor on clic on "Close" in top right corner.
To reopen an editor, double-click on his text.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Possimus, aliquam, minima fugiat placeat provident optio nam reiciendis eius beatae quibusdam!
The text is derived from Cicero's De Finibus Bonorum et Malorum (On the Ends of Goods and Evils, or alternatively [About] The Purposes of Good and Evil ). The original passage began: Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit (Translation: "Neither is there anyone who loves grief itself since it is grief and thus wants to obtain it").
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Possimus, aliquam, minima fugiat placeat provident optio nam reiciendis eius beatae quibusdam!


About me
Arguably, you can't really write about yourself without sounding like a narcissist. So here we go, I'll try to keep this short and be relatively modest about it.
I'm a 43-year-old guy living in Brisbane, Australia, with several decades of experience in various genres of photography1. I equally enjoy all aspects of the photographic process, such as scouting out locations, interacting with models, obsessing over lens sharpness at f1.8 the technical aspects of photography and post-processing images. Editing and colour grading digital images is at least as much fun for me as the actual shooting, but I always take great care not to hurt those innocent little pixels too much and keep the results natural looking.
I love shooting on location using just available light. Generally speaking, my method is rather intuitive; I prefer to just go with the flow and let the circumstances shape my initial vision, as embracing unpredictability oftentimes leads to great results (well, in addition to missed shots and blurry photographs).
Apart from taking (mostly) pretty pictures, I also write weird electronic music and like to code (the source code of this whole website can be found here).
Drop me a line for friendship or business at<EMAIL_ADDRESS>- As it is readily evident from looking at this gallery, I also suffer from a rare condition called Mannequinophilia, which has fortunately been greatly alleviated by the large number of model shots I have completed just recently that feature some actual humans...


Spreading the hacker culture
-
{{ range $event := $.Site.Data.projects.projects }}
-
{{ readFile $event.logo | safeHTML }}
{{ $event.name }}{{ $event.description }}
{{ end }}
Upcoming events
Friday Hacks
-
{{ $fh := index $.Site.Data.friday_hacks
(partial "projects/get_project.html" (dict "projectName" "friday_hacks")) }}
{{ partial "projects/friday_hacks_ol.html"
(dict "hacks" $fh.hacks "start_date" $fh.start_date "start_series_num" $fh.start_nr) }}
Hackers Toolbox
-
{{ $ht := index $.Site.Data.hackers_toolbox
(partial "projects/get_project.html" (dict "projectName" "hackers_toolbox")) }}
{{ range $index, $event := $ht.events }}
{{ partial "projects/hackertools_li.html" (dict "event" $event) }}
{{ end }}
Hackerschool
-
{{ $hs := index $.Site.Data.hacker_school
(partial "projects/get_project.html" (dict "projectName" "hacker_school")) }}
{{ range $index, $event := $hs.events }}
{{ partial "projects/hackerschool_li.html" (dict "event" $event) }}
{{ end }}
Featured Articles
-
{{ range first 7 (where .Site.RegularPages "Type" "featured") }}
-
{{ .Summary | truncate 150 }} more
{{ end }}
Articles
Read more-
{{ range first 7 (where .Site.RegularPages "Type" "post") }}
-
{{ .Summary | truncate 150 }} more{{ .LinkTitle }}
{{ end }}
Join us
Interested in joining us? Visit this page to learn more!


A/B Testing
Controlled experiments to determine a causal relationship between changes to an
application and their influence on observable behavior.
Kinds of A/B Tests
Split Tests, a.k.a. Hpothesis Testing
Multivariate Tests
Which really aren't A/B tests, but get grouped in with them anyway
A/A Tests - to make sure the service isn’t fake news
Bayesian craziness, a.k.a. Simulations
Yeah, but why?
Improves User Experience
Accelerates Innovation
CASH MONEY $$$ SYNERGY ROI
THE BLOCKCHAIN
* **Improves User Experience** - we pick the variant that users prefer
* **Accelerates Innovation** - instead of wondering for ourselves which variant is better, we just test, and then have data to back up our choices
* Do you know that part on Amazon where it says, "people who bought this item also bought...."
* That part is the result of an A/B Test, implemented by a guy named Greg Linden.
* Actually, marketing senior vice president was very against it because he thought adding more additional information would overload the user when the use should be focused on checking out.
* So Greg Linden stuck the code in there in an A/B Test
* It turns out that implementing that feature made them a ton of money
Concerns in A/B Tests
How can I measure and analyze my test?
How big does my test need to be?
What can I test?
What counts as a test?
What are "statistics?"
What is "probability?"
* If the test is too small, the data might just be noise.
* If the test is too big, we will move too slowly
Presentation Overview
Define Probability and Statistics
Frequentist Statistics
Bayesian Statistics
Multivariate Testing
Implementation
Faults in A/B Tests
A picture of a red panda
* Sorry, I'm gonna skip multivariate testing (or at least the math for it) because it is nuts
complicated
* Everything that makes A/B testing complicated is orders of magnitude crazier when you introduce
multi-dimensional parameters
* Towards the end of part of Bayesian statics I'll mention briefly a family of tools called Markov Chain
Monte Carlo simulations, which is one of the major elements of multivariate testing.
1. Define Probability & Statistics
So I'm gonna try to cram a bunch of statistics in the next hour
I really do think it's important to understand why or how decisions in A/B testing are made.
We could skip all this and just say, okay show me the formulas and I'll plug the A/B test data
in
I hope someday we can implement that for our applications, but it's worth noting that very
critical business and technical decisions can be made over A/B testing analysis, we have to be
sure of the reasoning
I'm gonna throw a lot of math at you guys and it's not too important to memorize the formulas or
proofs, but getting the general concepts and approaches to thinking about statistics is key.
I know there might be a lot of questions, so I guess stop me if I totally lose you.
What’s the point?
If I flip a coin 10 times and it lands heads 7 times, is the coin rigged? \(P(X = 7)\)
10% of contributors who debrief a session will create an annotation.
A change is made to the application, and 8 of the next 50 debriefing contributors create
annotations.
Did the change have an effect?
Is a sample size \(n=50\) good enough?
* If you can solve for the first problem, you are well on your way to solve the second problem
* This will be a pattern for most of the talk.
* I'll introduce an example using coin flips or dice throws
* And we'll use the solution to those examples to solve real A/B testing problems
Probability 101
What is Probability \((P)\)? A measure of the likelihood an event will occur.
\(P(A)\) - The probability of event A
\(p=0\) - the event will not occur
\(p=1\) - the event will occur
\(P(X = x) = p(x)\)
Depending on which textbook or paper you read, different authors use different notations.
The notation I'll be using will the ones I see most commonly, and I'll try to consistent
Some people write the variance symbole as sigma squared, and some use capital V-A-R
Probability of an event is capital P
Events are always uppercase letters
Lower case p is the probability function, or if you can express the probability of something as
a formula
Conditional Probability
Conditional Probability \(P(A|B)\) - the probability of event A occurring, given B
has occurred
\(P(A|B) = \frac{P(A \cap B)}{P(B)}\)
Multiplication Rule
\(P(A \cap B) = P(A|B) \cdot P(B)\)
Mutually Exclusive
\(P(A \cap B) = P(A) \times P(B)\)
upside-down U is intersection
Conditional Probability
What is the probability that you draw from a pack of cards 2 diamonds in a row?
\(P(D_2 \cap D_1)\)
= \(P(D_2|D_1) \times P(D_1)\)
\(P(D_1) = \frac{13}{52} = \frac{1}{4}\)
\(P(D_2|D_1) = \frac{12}{51}\)
\(P(D_2 \cap D_1) = \frac{1}{4} * \frac{12}{51} = \frac{3}{51}\)
Ahem, What is the probability that the second card drawn from a pack of cards is a diamond
\(P(D_2 \cap D_1)\) , given that the first card drawn was a diamond P(D1)?
Probability of drawing the first diamond is 13/52
Since there is 1 less card, the probability of drawing the second diamond given that a diamond
has been drawn is 12/51
Sally Clark
What is the probability that 2 babies from one mother die of SIDS?
Are these events dependent or independent?
Given that a mother's first baby died of SIDS, what is the probability that her
second baby will also die of SIDS? \(P(B_2|B_1)\)
Expert testimony from Dr. Roy Meadow: \(P(B)^2 = (1/8543)^2 \approx 1/73000000\)
Convicted in Nov. 1999 on this evidence
* What is the probability that a mother's first 2 babies dies of SIDS? Are these events dependent or
independent?
* Given that a mother's first baby died of SIDS, what is the probability that her second baby will also
die of SIDS?
* Professor Sir Roy Meadow incorrectly concluded that these were 2 independent events, and famously said
it was a "1 in 73 million" chance.
* This false statistic lead to her false conviction in November 1999.
* Probability and statistics got distorted - people understood "1 in 73 million" to be a measure of her
innocence.
* Also the pathologist hid knowledge that one of the babies had a staph infection
* She was release on January 2003, but died in March 2007 from alcohol poisoning.
Discrete Random Variables
Random Variables - variable with a value determined by a chance event.
A discrete sample space \(\Omega\) is a finite set of outcomes \(\{\omega_1,
\omega_2...*\}\). The probability of outcome \(\omega\) is \(P(\omega)\).
## Discrete Probability Distribution
*a distribution that can be represented by a table.*
* Example: there are only 4 outcomes from flipping a coin 2 times.
Number of Heads, \(x\)
Probability \(P(x)\)
0
0.25
1
0.5
2
0.25
* Note that the sum of all these probabilities equals 0.
Discrete Functions
Probability Mass Function pmf - the function for a discrete random
variable
$$p(a) = P(X = a)$$ $$0 \le p(a) \le 1$$
Cumulative Distribution Function cdf - the function that gives the total
probabilities from \(\infty\) to \(a\)
$$F(a) = P(X \le a)$$
* You can often determine which one you need by listening to the question.
* If someone asks what is the probability of getting exactly blah heads in so many coin flips, it's a
pmf
* If someone asks what is the probability of getting at least blah head in so many coin flips, it's a
cdf
Example: Discrete Functions
Let the sample space \(\Omega\) be 2 dice rolls
Random variable \(M\) is the maximum of 2 dice rolls.
$$M(1,4) = 4$$
value
\(a\)
1
2
3
4
5
6
pmf
\(p(a)\)
1/36
3/36
5/36
7/36
9/36
11/36
cdf
\(F(a)\)
1/36
4/36
9/36
16/36
25/36
36/36
Discrete Mean & Variance
Discrete Mean - the average of a discrete random variable \(X\) a.k.a.
expected value of \(X\)
$$E(X) = \mu_{x} = \sum_{i=1}^n p(x_{i}){x_{i} }$$
Discrete Variance - a measure of how much the probability mass is spread
out around \(\mu\).
$$Var(X) = E((X- \mu )^{2}) = \sum_{i=1}^n p({x_{i})(x_{i}- \mu )^{2} }$$
Discrete Standard Deviation
Discrete Standard Deviation \(\sigma\) - a measure of the spread, expressed
in the same units as the expected Value
$$\sigma = \sqrt{Var(X)}$$
$$Var(X) = \sigma^2$$
Expected Value is written as capital E of x
Mean is usually written with lowercase Greek μ
## Bernoulli Trial
* An experiment that only has two possible results - *success* and *failure* - is a **Bernoulli Trial**
if:
* The results are mutually exclusive,
* The probability of these two results do not change each time the experiment is done
$$X =\begin{cases}1 & success\\0 & failure\end{cases}$$
Bernoulli Distribution
Success:
\(P(X = 1) = p\)
Failure:
\(P(X = 0) = 1-p\)
Expected Value:
\(E(X) = \mu = 0(1-p) + 1(p) = p\)
Variance:
\(\sigma_x^2 = p(1-p)\)
If we say a success is rolling a die for 3 or higher, then the probability of success is 0.67,
and the probability of failure is 0.33.
Binomial Distribution
Lots and lots of Bernoulli Trials
Binomial Coefficient - the number of ways to “choose” \(k\)
unordered outcomes from \(n\) possibilities
$$_nC_k = \begin{pmatrix}n \\k \end{pmatrix} = \frac{n!}{k!(n - k)!}$$
Binomial probability mass function:
$$P(X = k) = \begin{pmatrix}n \\k \end{pmatrix}p^{k}(1-p)^{n-k}$$
* A bernoulli trial is one user coming to your website, he either buys or he doesn't buy
* A binomial distribution is 1000 users coming to your site. Some buy and some don't buy
* For example, how many ways can you choose 2 heads from flipping 4 coins? it would be 4! divided by 2!
times 2! which equals 6
Binomial Math
Mean:
\(\mu_x = np\)
Variance:
\(\sigma_x^2 = np(1-p)\)
Standard deviation:
\(\sigma_x = \sqrt{np(1-p)}\)
* So if I have 100 coins and they are all fair, the expected value of heads is 100 * 0.5 = 50
Binomial Coins
What is the probability of getting 3 heads in 5 coin flips?
$${P(X = 3) = \begin{pmatrix}5 \\3 \end{pmatrix}.5^{3}(1-0.5)^2 = 31.25\%}$$
What is the cdf of 3 out of 5?
Value
\(a\)
0
1
2
3
4
5
pmf
\(p(a)\)
\(p^5\)
\(5p^5\)
\(10p^5\)
\(10p^5\)
\(5p^5\)
\(p^5\)
pmf
\(p(a)\)
\(0.03125\)
\(0.15625\)
\(0.3125\)
\(0.3125\)
\(0.15625\)
\(0.03125\)
cdf
\(F(a)\)
\(0.03125\)
\(0.1875\)
\(0.5\)
\(0.8125\)
\(0.99875\)
\(1\)
Binomial Views
90% of students will view their scores if released to them.
What's the probability all of a class of 20 will view?
$${P(X = 20) = \begin{pmatrix}20 \\20 \end{pmatrix}.9^{20}(1-.9)^0 = 12.16\%}$$
What's the probability at least 90% will view?
$${P(X \ge 18) = 1 - P(X=20 )- P(X=19 ) = 60.83\%}$$
Like the coin flipping table, we can add up all the probabilites of 0 students, 1 student, 2
students but that takes forever
Instead take advantage that the sum of all probabilities always equal 1
It's faster do 1 minus the probabilities of 20 students and 19 students
Binomial Views With Code
Ain’t nobody got time to math.
from scipy.stats import binom
sample_size = 20
p = 0.9
# all 20 will view score
all_probability = binom.pmf(20, sample_size, p)
print(all_probability)
# 0.121576654591
# at least 18 students will view score
cumulative_probability = binom.cdf(20, sample_size, p)
print(cumulative_probability)
# 0.608253001875
Continuous Random Variables
A random variable \(X\) is continuous if there is a function \(f(x)\) such that
for any \(c \le d\), the probability density function (pdf) is
$$P(c \leq d) = \int_c^d f(x)dx$$
$${P(-\infty \leq X \leq \infty) = \int_{-\infty}^\infty f(x) dx = 1}$$
So note that when dealing with discrete distributions we are looking for a probability mass
function.
For continuous distribution, we are looking for a probability density function.
Mass is the integral of density
If you take the integral of the pdf at all vales, then the area of all probability is 1
Continuous Distributions
Uniform
angle of a dart throw
\(U(a,b)\)
Beta
batting average
\(beta(a,b)\)
Exponential
Finding an Uber
\(exp(\lambda)\)
Normal
IQ
\(N(\mu,\sigma^2)\)
Student \(t\)
Guinness Beer
\(t(df)\)
The Boring Distribution
a.k.a “Bell Curve”, Gaussian Distribution
$$f(x) = \phi(z) = \frac{1}{\sigma \sqrt{2 \pi } }e^{\frac{-(x - \mu)^2}{2\sigma^2}}$$
Defined by mean and standard deviation \(N(\mu,\sigma^2)\)
Curve is symmetrical, more data at center vs. edges
Mean = Median = Mode
Don't assume everything is normally distributed
Standard Z
A normal distribution where \(\mu\ = 0\), \(\sigma = 1\), a.k.a. \(N(0,1)\)
$$Z = \frac{X - \mu }{ \sigma }$$
If \(X=1\), then it is 1 standard deviation from the mean
pdf: \(f(z) = \phi(z) = 1/2\)
\(P(-1 \le Z \le 1) \approx 0.6827\)
\(P(-2 \le Z \le 2) \approx 0.9545\)
\(P(-3 \le Z \le 3) \approx 0.9973\)
Draw out the percentages!
The probability that Z is between -1 and 1 is 68%
Expected Value of Continuous Distributions
Expected Value measures central tendency
$$E(X) = \int_a^b xf(x)dx$$
Expected Value of a standard z distribution
$$E(z) = \phi(z) = \frac{1}{ \sqrt{2 \pi } }e^{-z^2/2} \Big|_{-\infty}^{\infty} = 0$$
Statistics vs. Probability
Statistic
μ of 100 dice rolls
Number times rolling a 5
Probability
Likelihood of rolling a 4
Likelihood of rolling a 6 three times
## Inferential Statistics
* **Parameter estimation** - some value that determines the properties of the distribution, such as
\\(\mu\\) or \\(\sigma\\)
* **Data Prediction** - use information about sample to predict a random selection
* **Model comparison** - selecting a model which best explains the observed data, something that
postulates the relationship between factors and the data
Central Limit Theorem
Without it, we can't make math happen!
$$\lim_{n \rightarrow \infty} P(| \overline{X} - \mu | < a) = 1$$
The bigger the sample, the closer the mean and variance of the sample gets to the population
The means of many samples is a normal distribution
The means of those means approximates the mean of the population
The normal distribution just doesn't happen everywhere, contrary to what we think
Suppose you're researching penguins. Today you grab 10 penguins and get their average weight.
Tomorrow you grab another 10 penguins and get their average weight.
Experimentation is what makes the normal distribution
Sample Statistics
Let \(S_n\) the the sum of \(x_1, x_2, ..., x_n\) random variables
Mean
\(E( \overline{X}_{n}) =\mu\)
\(E(S_{n}) = n\mu\)
Variance
\(Var( \overline{X}_{n}) =\frac{\sigma^2}{n}\)
\(Var(S_{n}) = n\sigma^2\)
S.D.
\(\sigma_{\overline{X}_{n}} =\frac{\sigma}{\sqrt{n}}\)
\(\sigma_{S_{n}} =\sqrt{n}\sigma\)
As \(n\) gets larger, the standard deviation gets smaller
Theory Time! Bayesian vs. Frequentist
Statistics require making lots of inferences
Bayesian : probability is subjective and deduced from prior
knowledge
Frequentist : probability is objective and obtained through
experimentation
So honestly, when you ask "what is Probability?" you can't even get a unified answer.
The reason is statistics require dealing a lot of unknowns. The process by which we we obtain
knowledge from a unknown information has two main approaches
I'm going to give you a very simplified definition. If a real statistician were sitting here,
that person would cringe a little for trying compress an entire discipline into a few sentences.
The first school of thought is Bayesian Statistics, which was popular until the 20th century
Bayesian: probability is subjective and deduced from prior knowledge
The second school of thought is Frequentist Statistics, which is the predominant approach to
statistics since the 20th century.
Frequentist: probability is objective obtained from experimentation
The funny thing is, in this 21st century, Bayesian inference is making a huge comeback with
regards to machine learning and data analysis
The main point to remember is neither one is inherently wrong or superior, it's just that the
two have different goals when computing data.
Bayesian vs Frequentist
A coin is flipped 100 times and it lands heads 60 times.
Frequentist : What's the probability of getting 60 or more heads \(P(X > 59)\)
if the coin is fair?
Bayesian : Is the coin fair?
What about A/B Testing?
Frequentist : Do the results of the new variant support rejecting the current
variant?
Bayesian : What's the probability the new variant is better than the current
variant?
* Of course there's a relevant XKCD. This one is number 1132
Frequentist Statistics
Probabilities present long-term frequencies of repeatable random experiments.
Conclusions are objective
Approach problems like a flowchart
Assign probability to the data, not degrees of belief
Dominant approach for 20th century
* Whenever you hear some study where half the participants were assigned the drug, and the other half
were taking the placebo, then you are likely reading about a study using Frequentist tools
Frequentist Weaknesses
Can't do small samples
People make dumb conclusions
So many false positives
Counter-intuitive way to reason about probability
The p-value is the probability of seeing your result if \(H_0\) were true. Wait, what?
* Researchers will typically assign a 5% significance level, which is another way of saying 5% of the
time, you will see a false positive.
* It's another way of admitting 1 in every 20 studies is wrong.
R. A. Fisher
A guy wearing a college professor costume
* R.A. Fisher is known as the father of modern statistics
* He may get too much credit versus other statisticians such as William Gosset, but he's still the go-to
guy when you think about hypothesis testing and p-values
* He read some books on Bayesian statistics and thought it was garbage.
* His career was spent research genetics, and the tools he developed to analyze and model his testing
grew into modern statistics.
* He published "The Design of Experiments" in 1935 which laid the foundations for modern experimental
design
* He wasn't all cool. He was a strong believer in eugenics and used statistics to show there were
difference between races
Null Hypothesis Significance Testing
Null Hypothesis \(H_0\) - Currently accepted value for a
parameter.
Alternate Hypothesis \(H_A\) - Claim to be tested
\(H_0\) and \(H_A\) are opposites. They must represent all possible answers.
Neyman-Pearson Paradigm - If the data is well outside the what is
expected under the null hypothesis, then reject the null hypothesis.
* **Alternate Hypothesis** is also called “research hypothesis”
* In A/B Testing, the null hypothesis is called the control, the Alternate hypothesis is called the
Treatment
* The most important thing here, and the thing that everyone gets wrong - you are not trying to prove
your alternate hypothesis. You are trying to prove the status quo.
* It's very counter-intuitive
## Innocent until proven guilty
*We assume the null hypothesis is true.*
* \\(H_0\\) - defendant is innocent
* \\(H_A\\) - defendant is guilty
* If evidence proves otherwise, then we will ***reject*** the null hypothesis (innocent verdict)
* If there isn't evidence to prove otherwise, then we will ***fail to reject*** the null hypothesis (not
guilty)
* Analogy to US courts: you are presumed to be innocent.
* It is up to the evidence to prove guilt.
* You don't have to prove innocence (aka null hypothesis)
Standardization
Map the sample to the Z distribution to math easier
$$Z = \frac{ \overline{x} - \mu_{0}}{ \sigma/\sqrt{n} }$$
Critical Value
Probability that the result will be within z-values, a.k.a. \(\sigma\)
Probability %
Critical Value
\(\alpha/2\)
68.27%
1.000
\(z_{0.1}\)
80%
1.282
\(z_{0.159}\)
90%
1.645
\(z_{0.05}\)
95%
1.960
\(z_{0.025}\)
98%
2.326
\(z_{0.01}\)
Finding Critical Value
from scipy.stats import norm
zscore_input = 'What is the z-score? '
zscore = input(zscore_input)
two_tail = 2 * (1 - norm.cdf(zscore))
print('2-tail: {0}'.format(two_tail))
Finding Z-Score
from scipy.stats import norm
significance_input = 'What is the significance level (alpha)? '
alpha = input(significance_input)
z_score = norm.ppf((1 - alpha))
print('Z-score: {0}'.format(z_score))
Significance vs Power
Significance Level \(\alpha\) - probability of rejecting \(H_0\) even though it’s
true, a.k.a. a “false positive”.
Power Level \(\beta\) - probability of rejecting \(H_0\) when it’s false.
Ideally we want to conduct a test with a low significance and a high power
“Statistically significant” rarely means what people think it means.
Inconceivable!
Testing Errors
\(H_0\) is true IRL
\(H_A\) is true IRL
“Reject” \(H_0\)
Type I error \(P(\alpha)\)
Correct Decision
“Don’t reject” \(H_0\)
Correct Decision
Type II error \(P(1-\beta)\)
Modeling a Test
Pick the null hypothesis \(H_0\)
Decide if the alternate hypothesis \(H_A\) is one- or two-sided
one-sided: new app version gets more clicks
two-sided: new app version has different click rate
Pick a test statistic, e.g., sample mean, sample total
Pick a significance Level \(\alpha\)
Determine the power \(\beta\)
* Typically we will pick 0.05 significance level
* and a 0.80 power level
* Draw the distribution curve to illustrate tails
One Tail or Two Tails?
Don't assume the new variant will either have no difference or outperform the current variant
(one-tail). It might be worse.
A two-tail test means the critical value is split in half. The probability of not rejecting \(H_0\)
is halved if \(H_A\) is better.

How rare is the result if the null hypothesis is true?
The p-value is the result of the test
If it is less than the significance level \(\alpha\) then it’s the probablity of seeing your
result if the null hypothesis \(H_0\) were true.
If so, we can reject \(H_0\)
* 30 / 214 is 14% so at first glance it seems like an improvement
Testing a population Proportion
Historically, 12% of participants will upload a profile pic
We’ve updated the UI. From a sample of 214 new participants, 30 uploaded a profile picture
With \(\alpha = 0.05\), can we reject \(H_0\)? (\(z_{\alpha=0.05} = 1.645\))
\({Z = \frac{ \overline{x} - \mu_{0}}{ \sigma/\sqrt{n} } = \frac{ \frac{k}{n} - \mu_{0}}{ \sqrt{\frac{p(1-p)}{n}} } = \frac{ \frac{30}{214} - 0.12}{ \sqrt{\frac{0.12(1 - 0.12)}{214}} } = 0.909}\)
Since \(Z_{H_A} = 0.909 < Z_{H_0} = 1.649\), we do not reject \(H_0\)
Testing a population mean
A manufacturer claims its thermostats last more than 10,000 days. In a sample of 30, the \(\mu\)
time before everyone froze was 9,900 days with \(\sigma = 120\).
With \(\alpha = 0.05\), can we reject \(H_0\)? (\(z_{\alpha=0.05} = -1.645\))
$${Z = \frac{ \overline{x} - \mu_{0}}{ \sigma/\sqrt{n} } = \frac{ 9900 -10000}{ 120 \sqrt{30} } = -4.456}$$
Since \(Z_{H_A} = -4.456 < Z_{H_0} = -1.649\), we reject \(H_0\)
Sampling Size
How big does a sample size need to be before you can trust the data not to be total garbage just noise?

Things with unknown variance (e.g., purchase $ amount) require t-test.
Binomial distributions typically have less variance than normal distributions
Conversions require the smallest sampling size
Smaller sample sizes = more testing
Sample Size For Proportions
How much data do I need to collect in order to measure an \(x\%\) change in conversion rate?
$$n = (Z_{\alpha/2}+Z_{1-\beta})^{2} \cdot \frac{p_1(1-p_1)+p_2(1-p_2) }{(p_1-p_2)^2}$$
Measuring Uplift
The feature currently has a 10% conversion rate
Detect at least a 25% uplift, with \(\alpha = 0.05\) and \(\beta = 0.80\)
$$p_{H_0} = 0.1, p_{H_A} = 1.25p_{H_0} = 0.125$$
$${n = (1.960 + 0.842)^2 \cdot \frac{0.199}{-0.025^2} \approx 2504}$$
Was that bigger than you thought?
Peeking
In Frequentist testing, always determine the sample size beforehand.
Never check progress even if one variant looks to be outperforming the other!!!
You want garbage? This is how you get Type I errors.
A/B Test 1
A/B Test 2
A/B Test 3
A/B Test 4
1000 observations
Don't reject H0
Don't reject H0
Reject H0
Reject H0
2000 observations
Don't reject H0
Reject H0
Reject H0
Don't reject H0
End Result
Don't reject H0
Reject H0
Reject H0
Reject H0
* Maybe after 2000 observations there's some regression
* This is major problem with so many A/B testing services. They allow you to track progress.
* They kinda have to. It's what the client wants. They can't just say, okay run your test, check back in
a few weeks.
* That is the dilemma. I'm sure all those A/B testing services have Ph.D statisticians working for them,
and they are all probably saying over to the marketing team: STOP PEEKING, but the marketing team can't
just sell a mystery black box to clients.
Power Analysis
How to compare two population proportions
$$Z= \frac{X - \mu}{\sigma} = \frac{\widehat{p}_1-\widehat{p}_2}{\sqrt{\widehat{p}(1-\widehat{p}) \left ( \frac{1}{n_1} + \frac{1}{n_2} \right ) }}$$
$${\widehat{p_1} = \frac{x_1}{n_1} , \widehat{p_2} = \frac{x_2}{n_2} , \widehat{p} = \frac{x_1+x_2}{n_1+n_2} }$$
* Okay this is the season finale of Frequentist testing.
* It's finally the formula you can plug all the numbers into, and not have to worry where the formula
came from
Raw Fish
Of the 50 times I've placed an order for Sakedon under my name “Jimmy,” I’ve
gotten extra salmon 23 times.
Of the 70 times using the alias, “Hot Carlos,” I’ve gotten extra salmon 43
times.
Should I continue to let them think I'm Jimmy?
Test Statistic
\(X = \widehat{p}_1-\widehat{p}_2 = \frac{23}{50}-\frac{43}{70} \approx -0.1543\)
Z-score
\(Z = \frac{-0.1543}{0.0921} \approx -1.6749\)
\(p\)-value: \(P(Z < -1.6749) \approx 0.0470\) or 4.7%
If \(H_o\) is true, then there’s a 4.7% chance \(\Delta\mu < 0.1543\).
* In other words, there's a 4.7% chance calling myself Hot Carlos makes no difference
4. Multivariate Testing
Sorry, this a whole talk onto itself.
Full vs. Fractional Factorial
Chi-Squared Tests
Analysis of Covariance
Multilevel Modeling
Markov Chain Monte Carlo (MCMC)
5. Implement- ation
We should totally do it.
(Sorry, this section will be very high level.)
Perhaps an A/B Testing Part II talk?
Can we pay someone else?
There are two major companies....
Optimizely - Sequential Probability Ratio (Frequentist)
VWO - Monte Carlo Simulations (Bayesian)
... and there’s everyone else
Google Experiments - ties in with Google Analytics
Adobe Target - ties in with Adobe Analytics, what?
Qubit - strong focus on segmentation (Frequentist)
Do 3rd-party services just lie?
With the exception of the companies mentioned, everything else looks like quackery.
There's a disconnect between what statistics can do, and what customers expect to happen.
They also expect that every customer is just looking to increase CASH MONEY $$$ ROI SYNERGY BLOCKCHAIN , so they cater to
that.
* I didn't mention a lot of other companies, like "Convert Experiences," "AB Tasty," "Sentient Ascend,"
"SiteSpeck," "Conversion sciences," but if you go to those websites, it's trash.
* A guy named Peter Borden tried to get smart with Optimizely. He conducted an A/A test (both variants
were the same) and optimizely told him that Variant A was 100% guarenteed to be 18% better than Variant
A
R vs. Python
Purpose
Specifically for statistics
General whatever
Good for
Ad-hoc analysis
Repeated Tasks
Learning
Steep curve
import scipy
Usage
Standalone computing
Integrate into apps
Tasks
A few lines
OOP fun
Packages
CRAN
PyPi
Commonalities
Interpreted Language, StackOverflow support
Allocation
Which users see what?
Batch - resolve to a fixed and known set of users
Relatively easier to implement
What about new users?
Will they even see the feature?
Real Time - eligibility criteria along with interaction
Split users on strata (e.g. demographics)
Latency a real concern
Can't estimate length of test
* **Batch Allocation** - resolve to a fixed and known set of users, very straightforward
* Decide users with last names A through M see Control, and N-Z see Treatment
* Cons:
* can't allocate new users
* can't allocate based on real-time user behavior
* can't guarantee the user will ever access the feature being tested - so how much of the data is even useful?
* **Real Time allocation** - user is eligible if they meet certain criteria as they interact with the application
* split users on user classification, or device, or geographic region
* cons: latency from making additional calls.
* solution run call in parallel when doing something else before
* Can't estimate how long it will take to have sufficient data
A/B Testing Workflow
User accesses front end, which calls the API with a session and user info payload
The backend calls the A/B testing service
A/B services calls DB and retrieves all tests allocated
If using real-time allocation, determines correct one
Respond to app backend with test info
Deliver to front end whatever is necessary
* Special thanks to Netflix
1. User accesses a feature on the front end
2. The front end calls the main application API, delivering a payload containing session and user information to the main appplication backend
3. The back end calls the A/B testing service
* The service hits the A/B database retrieves all tests to which this user is already allocated
* For users with batch allocation, the appropriate test is known
* Otherwise the server determines the correct (real time) allocation
5. A/B service passes the test info to the backend
6. With the test info, the backend fetches and delivers whatever media is necessary back to the user front-end
A/B Testing Backend
Which users are in which tests at what time?
Make sure each user gets sees consistent experience
Prevent users from being part of antagonistic tests
Have some good caching
Feed data to a separate front end for internal analysis
The front end
const myComponent = ({}) => {
return (
Click Me
Click Me
);
};
emitter.testListener((experimentName, variantName) => {
// record test initiation for experimentName, variantName
});
emitter.conversionListener((experimentName, variantName) => {
// record event for experimentName, variantName
});
Rules Engine
Two variants is easy, what about multivariate testing?
A long chain of conditionals inside the components (to determine which UI to render for whom) puts too much unnecessary logic into rendering.
Production Rule System - a set of rules with conditions + actions that can be evaluated in any order
Improves template legibility by abstracting rules out to a separate file, and encourages re-use
* Suppose we are testing both the page title, form buttons, and help text on a view. We could easily have half a dozen different variations.
* We'll need a way to nest all those conditionals, for the different versions, and a way to identify which user sees which
* A rules engine, also known as a Production Rule System is something that Martin Fowler is a huge fan of.
5.Faults in A/B Tests
This is the part where I make my sales pitch look bad.
An A/B Test doesn't tell us everyhing
We can determine which variant is better, but not why.
Letting A/B tests dictate the UI might lead to an incoherent design
We really don't know what is worth testing, so we will waste time trying everything everywhere.
What can throw off a test?
Short vs. long term - (latent conversion) there may be a lag between
the time a user is exposed to something and when they take action.
Familiarity - users may be less efficient at doing something until they learn
how to do it.
Novelty - users may want to click on everything if they see something new,
instead of using it for its purpose.
Seasonal effects - e.g., our app usage fin the summer.
* Example: you have a IRA service and you change the feature for grabbing tax-related documents. Nobody
is gonna use it until tax season.
* Example: introducing a new navigation
We might be responsible for messing it up
Chatter - users might find out others experience something different.
Bugs - can different variants can work simultaneously?
Hawthorne Effect - users may alter their behavior if they know they’re being studied.
Consistency - make sure users see the same variant for the duration of the test.
* The joke is they are running 20 tests with a p-value of 0.05. So that means they are likely to get 1 false positive.
Pre- & post-test segmentation
Stratified sampling before/after the test for more insight
Before testing : split users by strata to ensure proportionate representation
After testing : measure which sub-population had the best conversion for each variant
Get ready for more Type I errors
Regression to the mean
Suppose you had a bunch of users use coin flips to answer a T/F test, and you picked the users with the highest scores.
Give them the same T/F test again and have them pick answers by coin flip. Would they still score highly?
If you retest a bunch of winning A/B tests again to find the "best of the best,” you’ll get false negatives.
The End
Is it lunch yet? Who's hungry?


I am a Data Scientist and a Big Data enthusiast with a Computer Science background. My work experience allowed me to work in several challenging Machine Learning problems. I was responsible for developing a Document Classification system, where I was able to obtain 70% of accuracy on a multi-label classification problem using Random Forest. Worked on a Object detection module for Automated Document Parsing (PDFs) using state of the art Deep Learning techniques. Also, have experience working with Graphs to solve problems like Costumer Churn and Client Segmentation. During the development of some of my projects I was also responsible for managing necessary stakeholders. The love for new technologies and challenges is what motivates me and I am always interested in learning new things.
• Responsible for mentoring one team member in a data science project. • Responsible for creating new business value proposals and presenting them. • Development of data science solutions such as Anomaly Detection in Set up Boxes. • Technologies: Python, Apache Spark, Pyspark, AWS(S3,EMR), GitLab, Zeppelin, Python Bokeh.
• Responsible for create contents and teaching hands-on classes on Big Data Algorithms. • Lectures can be found here. • Technologies: Apache Spark, Python, Hadoop.
• Parser library to convert PDF,Image,HTML files into Data Objects. • Research state of the art methodologies to parse documents. Choosing approaches based on research. • Deep Learning using Faster R-CNN, SSD, YOLO networks for Object detection and localization. • Technologies: Java, Python, Deep Learning, Image Processing, Tensorflow, Keras.
• Development of new functionalities in a document platform, which classify documents using machine learning techniques NLP.
• Developed a traceability system with Outsytems Platform. • Technologies: Outsystems, .Net, Javascript, CSS, HTML5.
• Developing Billing API’s to integrate with Mobile Operators. • Developing webapps that run on Tomcat, tested using with JUnit. • Log analysis. • Technologies: Java, Shell Scripting, REST, SOAP, SVN, JUnit.
• Log Analysis/ Requests analysis. • Ongoing maintenance. • Technologies: Java, Shell Scripting, SOAP, JUnit, TFS
14 Values
15 Values
Apart from being a Data Scientist and Full Stack Developer, I enjoy most of my time in Beekeeping, I have a small farm where I have some beehive. I enjoy traveling, have visited almost ten countries.
As hobbies I used to train Krav maga and boxing. and I spend a large amount of my free time exploring the technology related with data science world.


UN Climate Change Conference - Poznań
06-Dec-08 — original report
ADAPTATION AND MEANS OF IMPLEMENTATION (AWG-LCA): Co-Chair Kolly asked participants to identify areas of convergence and those requiring further elaboration in the assembly text (FCCC/AWG/2008/16).
The EU drew attention to its proposed framework for action on adaptation.
Barbados, for AOSIS, said enhanced action on adaptation should deal first with current, then anticipated, climate change impacts.
AUSTRALIA said the effectiveness of current activities should first be considered.
SRI LANKA and PALAU, speaking also for Micronesia and the Marshall Islands, proposed an ecosystem approach to adaptation.
NEW ZEALAND urged building on ongoing work such as under the NWP.
South Africa, for the AFRICAN GROUP, called for a shift to practical implementation of adaptation activities, and highlighted the need for early warning systems, vulnerability mapping and information exchange.
The AFRICAN GROUP, INDIA, NORWAY and others supported establishment of regional adaptation centers.
GUATEMALA, speaking for a group of Central American countries, underscored that though the region is as vulnerable as other regions, it lacks the support and recognition given to others.
COLOMBIA said all developing countries are equally vulnerable to climate change and opposed differentiation among them.
SWITZERLAND noted his proposed global carbon dioxide levy to generate resources for adaptation.
CHINA proposed establishing an adaptation fund and adaptation committee under the Convention.
During informal consultations, Co-Chairs Campbell and Sangarwe distributed the text of a draft decision.
Parties discussed options for expediting the process of implementing NAPAs.
Informal consultations will resume on Tuesday.
During informal consultations, one party presented a proposal for non-Annex I Eastern European countries to be represented within the CGE.
A group of developing countries proposed a draft COP decision on financial and technical support, requesting the GEF, inter alia , to establish an interim fund to enable non-Annex I countries to prepare their third and subsequent national communications.
In addition, a developed country party presented a proposal to assess the progress of implementing Convention Article 10.2(a) (assessment of Convention implementation information), and to consider and discuss this at SBI 30.
During informal consultations on Protocol Articles 2.3 and 3.14 (adverse effects), debate centered on how to resolve the precedent established by holding a joint SBI/SBSTA contact group.
Parties discussed whether Protocol Articles 2.3 and 3.14 should be addressed in one joint SBI/SBSTA conclusion, or whether there should be separate conclusions under each of the respective bodies.
The Secretariat will give legal advice on this matter.
Several Annex I countries also contended that adverse effects and response measures should be discussed jointly, while others maintained that these items should be considered separately with equal time allocated to each, as agreed at SB 28.
Informal consultations will continue.
Parties met informally to comment on the text.
Discussions focused on the possible need for expert consultations on degradation methodologies and methodological aspects of financial flows, with some concerned that financial issues should be discussed in the AWG-LCA.
Parties also discussed a programme of work in the context of decision 2/CP.13 (REDD), and some mentioned the involvement of indigenous peoples in the formation of REDD methodologies.
During the contact group, AWG-LCA Vice-Chair Cutajar invited delegates to make comments on a conference room paper on the shared vision workshop report, focusing on guiding principles, scope and objectives.
Costa Rica, for the G-77/CHINA, said efforts to address climate change should not be compromised by the current financial crisis.
She also said adaptation and mitigation must be addressed as equal priorities, deep emission cuts should primarily be undertaken domestically by developed countries, and nationally appropriate mitigation actions for developing countries should be considered in the context of sustainable development. ICELAND drew attention to the social dimension of climate change, taking account of gender considerations and participation of all sections of society.
The US noted recent economic circumstances and countries evolving capabilities to contribute to emission reductions.
JAPAN emphasized the central role of innovative technologies.
Barbados, for AOSIS, highlighted safeguarding vulnerable countries as the central element of a shared vision.
CHINA said industrialized countries need to make space for developing countries to develop.
On principles, several delegates sought clarification of terminology regarding per capita accumulative emission convergence and equal rights to common atmospheric resources.
TUVALU proposed the inclusion of the principle of state responsibility.
In the contact group, Co-Chair Kerr introduced a draft text, which notes that spillover effects can be both positive and negative and could impact all parties, although impacts on the poorest and most vulnerable developing countries should be prioritized.
The text also lists topics raised by parties and proposes a workshop in 2009.
On the list of issues, AUSTRALIA proposed removing the list.
JAPAN sought to add some positive spillover effects.
ARGENTINA said the list should be reclassified into three or four main categories, with specific issues included as examples.
On the focus of future discussions, South Africa, for the G-77/CHINA, said the group s mandate was to focus on minimizing adverse impacts, while CANADA said positive effects needed equal treatment and NEW ZEALAND observed that the group s mandate was sufficiently broad to accommodate both negative and positive effects.
The EU proposed first deepening understanding of the magnitude of effects, both positive and negative, before deciding on next steps.
Several parties raised concerns over duplication of work under different agenda items.
The G-77/CHINA said other bodies were focusing on the first commitment period, while this one was dealing with the second.
Informal consultations will convene on Saturday.
On another day full of informal consultations and contact groups, some observers were commenting on what they saw as an apparent lack of urgency.
We re all busy, but I don t hear many people acknowledging the sheer magnitude of our task over the next year, or worrying about the closing window of opportunity here in PoznaÅ, said a delegate.
This is the last COP before Copenhagen, and we re already halfway through, with little achieved, said another.
Some suggested that negotiators are not yet willing to make many commitments.
Since it s not a deadline meeting, we re still in a bit of a waiting game - no one is going to play any part of their hand yet, explained a veteran.
This sentiment appeared to be reflected in the AWG-LCA discussions, where some were complaining about a lack of discussion on existing proposals and too many general statements.
Meanwhile, many participants were still fretting about the duplication of work under different negotiating groups.
The flexible mechanisms, for instance, were discussed on Friday in the CDM, JI, AWG-KP and Article 9 review groups.
Some developing country delegates were concerned that the question of geographic distribution was not moving forward in either the CDM or Article 9 group, and kept pushing for it under both groups to ensure an outcome.
While some parties have been trying to get their issues into multiple bodies in the hope of getting traction somewhere, this tactic might just backfire if we end up making progress nowhere, warned a participant.
Others were less concerned, however, with an old hand in the process noting that such maneuvers are just part of the usual diplomatic game.
In the contact group, delegates addressed concerns raised in the previous session.
On a possible conflict of interest with regard to multiple roles of the World Bank, its representative clarified that purchases and sales of CERs take place in two markets (primary and secondary) that do not overlap.
He added that the Bank will take additional measures to minimize any apparent conflicts of interest.
Delegates also discussed direct access to funds, particularly the issue of the legal status of the Fund.
TUVALU presented his proposal to give the Adaptation Fund Board the legal capacity to enter into certain legal agreements.
BANGLADESH said funding criteria should be developed, such as a vulnerability index.
Informal consultations will continue on Saturday.
In the contact group, parties continued discussing the Co-Chairs draft decision.
The AFRICAN GROUP proposed adding preambular language on Annex I parties refraining from using hot air AAUs.
UKRAINE and the RUSSIAN FEDERATION opposed this proposal, saying it would mean renegotiating the Protocol.
On procedures for inscribing commitments for Annex I parties under Protocol Annex B, BRAZIL, CHINA, INDIA, SINGAPORE and SAUDI ARABIA said the current provisions are sufficient.
However, the RUSSIAN FEDERATION said they are cumbersome and, with the EU, AUSTRALIA and CANADA, supported their revision.
SOUTH AFRICA proposed addressing the issue through a procedural annex.
Parties also commented on the section on the flexible mechanisms, especially on text addressing CDM governance and the delegation of technical work by the CDM Executive Board.
Informal consultations will continue, focusing on the flexible mechanisms.
Informal consultations were held on Friday to exchange views on the Co-Chairs draft text distributed at Thursday s contact group meeting.
Different views were put forward on, inter alia , the CDM s regional distribution.
Informal consultations will continue.
During informal consultations, delegates discussed the various options set out in the Co-Chairs draft text.
However, differences remained over including CCS under the CDM.
Informal consultations will continue.
During informal consultations, parties focused on exchanging experiences of adaptation activities, as well as sharing best practices and identifying gaps and challenges.
Consultations will continue in a Friends of the Chair group.
In the contact group, AWG-LCA Chair Machado invited comments to further clarify proposals and explore areas of convergence and difference.
The EU, supported by NEW ZEALAND and CANADA, said any financial architecture should be based on principles of effectiveness, efficiency and equity.
JAPAN suggested differentiating among countries for provision of financial and technological support and, with AUSTRALIA, supported focusing on the existing financial architecture.
Barbados, for AOSIS, said only the G-77/China s proposal came close to providing the required level of resources.
He highlighted that the current financial crisis demonstrated that existing institutions do not work.
BRAZIL said new options are needed to provide the vast resources required.
The US, NORWAY and CANADA highlighted the importance of the private sector.
The ENVIRONMENTAL INTEGRITY GROUP requested the Secretariat to undertake analytical work on proposals in a manner similar to work on share of proceeds under the Kyoto Protocol.
The group will resume its work on Tuesday.
In informal consultations, delegates discussed the text for a draft decision on the fourth review.
No brackets were removed.
Informal consultations will continue.
Co-Chair Martins Barata explained that the contact group would focus on guidance to the Joint Implementation Supervisory Committee (JISC) and that issues related to JI are also being considered under the Article 9 review and the AWG-KP.
He proposed that the COP/MOP decision focus on the JISC s revised management plan and funding situation.
No interventions were made by parties.
IETA warned against turning JI Track 2 into a second CDM, noting fundamental differences between the two mechanisms.
Parties will consult informally.


CM to inaugurate Tenkasi district formally on November 22
The new district was carved out of Tirunelveli
by Special CorrespondentChief Minister Edappadi K. Palaniswami will formally inaugurate Tenkasi district, which was recently bifurcated from Tirunelveli district, on November 22.
The Chief Minister, who is expected to reach Thoothukudi on Thursday evening and drive down to Tenkasi on the next morning, will preside over the 90-minute-long function and distribute welfare measures to beneficiaries.
He is likely to lay the foundation for an integrated collectorate complex, housing the district police office, which is expected to come up on a 50-acre government land at Aayiraperi.
Inspector General of Police, South Zone, K.P. Shanmugarajeswaran, Deputy Inspector General of Police, Tirunelveli Range, Praveen Kumar Abinapu, Superintendents of Police Om Prakash Meena (Tirunelveli) and G. Suguna Singh (Tenkasi) and other senior police officials on Monday held discussions on security arrangements for the Chief Minister’s visit.
Although a formal puja was performed on Government Higher Secondary School ground near Tenkasi new bus stand on Monday for erection of pandal for the event, the venue is likely to be shifted to a school premises near Azad Nagar bridge, where Mr. Palaniswami attended a function where former Minister Esakki Subiah was readmitted into the AIADMK from the T.T.V. Dhinakaran-led Amma Makkal Munnetra Kazhagam.


Consensus analysis, model-based clustering, and cultural consensus theory applications to response data (e.g. questionnaires). The models are applied using hierarchical Bayesian inference. The current package version supports binary, ordinal, and continuous data formats.
| Version: | 1.5.2 |
| Depends: | R2jags (≥ 0.04-03) |
| Imports: | tcltk, rjags, psych, mvtnorm, polycor, MASS, methods |
| Published: | 2017-10-10 |
| Author: | Royce Anders |
| Maintainer: | Royce Anders <andersr at uci.edu> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | no |
| Citation: | CCTpack citation info |
| CRAN checks: | CCTpack results |
| Reference manual: | CCTpack.pdf |
| Package source: | CCTpack_1.5.2.tar.gz |
| Windows binaries: | r-devel: CCTpack_1.5.2.zip, r-release: CCTpack_1.5.2.zip, r-oldrel: CCTpack_1.5.2.zip |
| OS X binaries: | r-release: CCTpack_1.5.2.tgz, r-oldrel: CCTpack_1.5.2.tgz |
| Old sources: | CCTpack archive |
Please use the canonical form https://CRAN.R-project.org/package=CCTpack to link to this page.


e THE DOORS A film review by Christopher Null Copyright 2001 filmcritic.com filmcritic.com
I figure most of us thought The Doors was plenty of movie at 138 minutes. Little did we realize that one of Oliver Stone's least favorably received movies would call for a two-disc DVD set with 43 minutes of deleted scenes, numerous documentary extras, and a feature length commentary track from Stone.
And yet here it is.
Ten years after its initial release, I found The Doors a lot like I remembered: a long and meandering -- yet dutiful -- retelling of Jim Morrison's life (and which ultimately had far more to do with him than the band he fronted). Stone traces all the high points -- from Morrison's struggle to achieve fame in Venice, California during the height of the surf music craze, to his run-ins with Ed Sullivan and Andy Warhol. But it's mainly Jim's self destruction via drugs, alcohol, and scandalous behavior (antics that ultimately forced him to flee to Paris to escape an obscenity conviction) that is the focus of the film, and that relatively shallow effort is hard to sustain over nearly 2 1/2 hours.
Shot with Stone's characteristic, psychedelic style, the film is a memorable one thanks to Val Kilmer's inspired portrayal of Morrison, not to mention nude scenes of hundreds of Hollywood actresses -- notably the prudish Meg Ryan and Kathleen Quinlan. There's also a prodigious volume of music to contend with -- as virtually ever Doors song worth hearing is at least sampled on the movie. And ultimately, it's the music that tells you more about the nihilism of Jim Morrison than Oliver Stone ever could.
Far out, man.
RATING: ***1/2
|------------------------------| \ ***** Perfection \ \ **** Good, memorable film \ \ *** Average, hits and misses \ \ ** Sub-par on many levels \ \ * Unquestionably awful \ |------------------------------|
MPAA Rating: R
Director: Oliver Stone Producer: Bill Graham, Sasha Harari, A. Kitman Ho Writer: Randall Jahnson, Oliver Stone Starring: Val Kilmer, Meg Ryan, Kyle MacLachlan, Michael Wincott, Michael Madsen, Josh Evans, Dennis Burkley, Billy Idol, Kathleen Quinlan, Kevin Dillon, Frank Whaley, John Densmore, Gretchen Becker, Jerry Sturm, Sean Stone
No web site.
--- http://www.amazon.com/exec/obidos/redirect?tag=filmcriticcom&path=subst/video/sellers/amazon-top-100-dvd.html Movie Fiends: Check out Amazon.com's Top 100 Hot DVDs!
Visit filmcritic.com on the Web at http://www.filmcritic.com
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


{{ page.title }}
Corporate design of the manufacturer’s painting canvases.
--- title: Andrej Korec corporate design label: Andrej Korec subtitle: Corporate design description: Corporate design of the manufacturer’s painting canvases Andrej Korec. Designed by cross-disciplinary designer Pavol Mikuláš in 2011. permalink: /work/andrej-korec-corporate-design/ layout: default published: true group: project lang: en language: English og-locale: en_US thumbnail: andrej-korec-corporate-design-1by1 image: andrej-korec-website-2by1 og-image: andrej-korec-corporate-design-2by1-w2000.jpg order: 9 index_tile: false work_tile: false ---
Corporate design of the manufacturer’s painting canvases.


Directx 12 Download 2021 Latest For Windows 10 8 7
Directx 12 For Pc Windows Download
Directx 12 Download For Pc Free
Download And Install Directx 12 On Windows 10 32 64 Bit Youtube
Directx 12 Download Windows 10 64 Bit 32 Bit
Download Directx 12 For Windows 10 Solved Driver Easy
Download Directx 12 For Windows 10 64 Bit Offline Installer For Games
How To Download And Install Directx 12 11 10 9
Download Directx 12 64 Bit For Windows 10 Windowstan
Directx 9c 11 2 12 Latest Offline Installer Setup For Windows 7 8 10 Get Pc Apps
Download Directx 12 For Windows 10 32 Bit And 64 Bit Windows 10 Themes Net
Directx 12 Download Windows 7 64 Bit
Directx 12 Free Download For Windows Pc Dx12 32bit 64bit Softsfreak Com
These Graphics Cards And Processors Support Windows 10 S Directx 12 Graphics Tech Pcworld
Dx12 Download 64 Bit Offline Installer Deliverylasopa
Directx Download Update Install Windows 10
Announcing Directx 12 Ultimate Directx Developer Blog
Directx 11 Free Download
Directx 12 Offline Installer Free Full Setup For Windows 32 Bit 64 Bit
Directx 12 Ultimate Download
Directx Wikipedia
Windows 10 Update Enabled Directx 12
Nvidia S First Directx 12 Ultimate Driver For Geforce Quadro Gpus Now Available
How To Install Directx 12 Ultimate Support In Windows 10 Tutorial Nvidia Gpu Only Youtube
Treffpunkteltern De Thema Anzeigen Directx 12 Download For Mac
Directx 12 Free Download Full Version For Windows Free Download Pc Games And Softwares
Directx 12 Ultimate For Holiday 2020 Directx Developer Blog


gh help
Display help about the GitHub CLI command.
More information: home page
- Display general help:
gh help
- Display help for the `gh help` subcommand:
gh help --help
- Display help about environment variables that can be used with `gh`:
gh help environment
- Display a markdown reference of all `gh` commands:
gh help reference
- Display help about formatting JSON output from `gh` using `jq`:
gh help formatting
- Display help about using `gh` with MinTTY:
gh help mintty
- Display help for a subcommand:
gh help subcommand
- Display help for a subcommand action:
gh help pr create


Robot 1a. Crane setup does not have to be precise¶
Robot 2a. Crane setup still works well when the peg points to the line.¶
Robot 3. The robot is too likght as there is no weight on the back wjeels¶


Please click on your favorite image. You will be doing several rounds of this task so we can gather input on what you like best!


TBulletStyle class.
TBulletStyle defines the enumerable type for the possible bullet styles that may be used for a TBulletedList control.
Located in /Web/UI/WebControls/TBulletedList.php (line 456)
TEnumerable | --TBulletStyle
Documentation generated on Mon, 22 Feb 2010 12:16:53 +0000 by phpDocumentor 1.3.0RC4


Reports
return
statements inside of
finally
blocks. While occasionally intended, such
return
statements may mask exceptions thrown, and complicate debugging.


SENITY: Smart Energy in the City
Introduction
SENITY is an emulator for smart energy deployments targeting city environments. It can emulate sites that contain a smart energy meter, smart energy devices and appliances. Its goal is to become a mininet-like tool promoting research in the respective field, making possible to evaluate algorithms, energy models and complete energy systems (e.g. for demand/response, pricing etc), in various city scenarios.
Architecture
SENITY constis of the following entities:
- Site: For the site we follow the "allInOne" approach where all of a site's entities are emulated in single process.
- Emulation Manager: The Emulation Manager is responsible for setting up a particular scenario with a number of sites, devices and energy profiles.
- Communication Bus: All the entities interact through the Communication Bus, exchanging measurements and commands.
- Console: Through Console a user is able to control an emulation scenario, e.g. by turning on and off devices and also get infomration regarding the sites, the devices and their status.
- UI: UI presents various statistics.
Implementation
Operational Flow
The overall operation flow of SENITY is described below:
- Site and device configurations in json format are created.
- A scenario is defined in json, utilizing existing site and device configurations.
- The emulator reads the scenario and creates the respective emulated entities (sites, devices).
- The emulator passes through the communication bus the necessary conf info and configures the other software components.
- The sites are initiated and start operating sending consumption data and reacting to commands.
- Events (weather, time of day etc, on/off commands) are send by the emulator through the communication bus and the devices act accordingly.
Configuration files
SENITY has a configuration file:
# this is the configuration file for senity
[General]
# the folder where device profiles are located
devices_folder = devices
# the folder where site descirptions are located
sites_folder = sites
# the file holding the log file, if empty logging is disabled
log_file = senity.log
# the mqtt broker ip, mqtt port and websocket port
mqtt_broker_ip = <IP_ADDRESS>
mqtt_broker_port = 1883
websocket_broker_port = 9001
[Console]
# the waiting time for a console command, which interacts with the mqtt
console_cmd_waiting = 10
[Web]
# enable web ui
enable_ui = 1
# web port
web_port = 8080
# directory where web files are located
base_dir = ui
In the current implementation for simplicity reasons we do not have a db instead local jsons hold the necessary information. In particular, the following json files are defined:
In a device json file, the avgConsomption is in watts, while the workingCycle indicates whether the device operates 24/24 or a shorter cycle every time it is invoked e.g. 5/24. InitialStatus indicates whether the device is on(1) or off (0) when the emulations is started or by default. updateInterval is the interval with which measurement are sent by the device, and overide the per site updateInterval. In current version the updateInterval (per device) and workingCycle parameters are not used, instead all the devices update interval is defined throuh the corresponding command sent from the emulation manager for the whole site, while each device working cycle is considered 24/24.
{
"name" : "aircondition01",
"type" : "aircondition",
"status": 1,
“updateInterval: 10”
"avgConsumption": 1100,
"workingCycle": 5
}
A site json file defines a particular site and the number of devices in it
{ "siteName": "site01",
"devicesAvailable":
[
{"deviceName": "oven01", "deviceCounter": 1},
{"deviceName": "fridge01", "deviceCounter": 1},
{"deviceName": "aircondition01", "deviceCounter": 3},
{"deviceName": "dishwasher01", "deviceCounter": 1}
]
}
The scenario json
{
"scenarionName": "scen01",
“updateInterval”: 10,
"sitesAvailable":
[
{"siteName": "site01", "siteCounter": 10 },
{"siteName": "site02", "siteCounter": 20 }
]
}
Communication messages
Communication takes places using the communication bus and respective messages are exchanged between the various entities. Third party entites can interact with SENITY through the communication bus in order to receive the status and send commands. Messages exchanged are:
- for configuration purposes
- for scenario setup purposes
- for applying on/off commands
- for advertising the measurements
In particular, the following topics are used, while their exact format can change through the constants.py (aka con) file :
- Topic: con.TOPIC_SITE_DEVICES_CONF/<site id>, message: An array of the site’s devices’ json files, retain: true, type: emulation related
This is published from the Emulation Manager and is read by the respective site. We used this way of initially configuring the site entities (instead of giving input parameters) as a more generic approach that can also be used in other modes of operation, except the “all in one” sites. Also, in this way it is also possible to change/update the configuration of a site. This is retained so it is possible for a site to reinitialize after a possible restart, without the Emulation Manager to sent anything, while this message can (and it actually is) be used by UI/CLI/API to get the available sites, devices and their status.
- Topic: con.TOPIC_SITE_CONF/<site id>, message: Update interval, retain: true, type: emulation related
This is published from the Emulation Manager and is read by the respective site. It indicates the interval with which measurement are sent from the site’s devices, assuming a single interval for all devices. Other site related parameters can also be passed this way.
- Topic: con.TOPIC_SITE_DEVICE_STATUS/<site id>/<device id>, message: 0/1, retain: false, type: operation related
This is published from any entity to switch on/off a device. This also leads to updating the site’s devices configuration by the device (not the Emulation Manager as before) sending an updated con.TOPIC_SITE_DEVICES_CONF message
- Topic: con.TOPIC_SITE_DEVICE_CONSUMPTION, message: energy consumption, retain: false, type: operation related
This is published from a device, advertising its current energy consumption.
- Topic: con.TOPIC_SITE_CONSUMPTION, message: energy consumption, retain: false, type: operation related
This is published from the site, advertising the current energy consumption of all the devices in the site.
Setup and Run
Setup
To setup the environment one needs to
Console
In what follows we present an example use of SENITY through the senity-console.
linux:~/senity$ python senity.py -c senity.conf -s scenarios/emuScenario01.json
senity> help
Available commands: ['sites', 'site', 'device_on', 'device_off', 'device_consumption', 'help', 'exit']
senity> sites
. . . . . . . . . .

Devices found in Site 0 :
["{0: {u'status': 0, u'name': u'oven01', u'workingCycle': 3, u'updateInteval': 10, u'avgConsumption': 3000, u'type': u'oven'}, 1: {u'status': 1, u'name': u'fridge01', u'workingCycle': 24, u'updateInteval': 10, u'avgConsumption': 350, u'type': u'fridge'}, 2: {u'status': 1, u'name': u'fridge01', u'workingCycle': 24, u'updateInteval': 10, u'avgConsumption': 350, u'type': u'fridge'}, 3: {u'status': 1, u'name': u'aircondition01', u'workingCycle': 5, u'updateInteval': 10, u'avgConsumption': 1100, u'type': u'aircondition'}, 4: {u'status': 1, u'name': u'aircondition01', u'workingCycle': 5, u'updateInteval': 10, u'avgConsumption': 1100, u'type': u'aircondition'}, 5: {u'status': 1, u'name': u'aircondition01', u'workingCycle': 5, u'updateInteval': 10, u'avgConsumption': 1100, u'type': u'aircondition'}, 6: {u'status': 1, u'name': u'dishwasher01', u'workingCycle': 3, u'updateInteval': 10, u'avgConsumption': 1200, u'type': u'dishwasher'}}"]
senity> device_on 0/0
senity> site 0
. . . . . . . . . .
Devices found in Site 0 :
["{0: {u'status': 1, u'name': u'oven01', u'workingCycle': 3, u'updateInteval': 10, u'avgConsumption': 3000, u'type': u'oven'}, 1: {u'status': 1, u'name': u'fridge01', u'workingCycle': 24, u'updateInteval': 10, u'avgConsumption': 350, u'type': u'fridge'}, 2: {u'status': 1, u'name': u'fridge01', u'workingCycle': 24, u'updateInteval': 10, u'avgConsumption': 350, u'type': u'fridge'}, 3: {u'status': 1, u'name': u'aircondition01', u'workingCycle': 5, u'updateInteval': 10, u'avgConsumption': 1100, u'type': u'aircondition'}, 4: {u'status': 1, u'name': u'aircondition01', u'workingCycle': 5, u'updateInteval': 10, u'avgConsumption': 1100, u'type': u'aircondition'}, 5: {u'status': 1, u'name': u'aircondition01', u'workingCycle': 5, u'updateInteval': 10, u'avgConsumption': 1100, u'type': u'aircondition'}, 6: {u'status': 1, u'name': u'dishwasher01', u'workingCycle': 3, u'updateInteval': 10, u'avgConsumption': 1200, u'type': u'dishwasher'}}"]
senity> device_consumption 0/0
. . . . . . . . . .

Devices found in Site 0 :
["{0: {u'status': 0, u'name': u'oven01', u'workingCycle': 3, u'updateInteval': 10, u'avgConsumption': 3000, u'type': u'oven'}, 1: {u'status': 0, u'name': u'fridge01', u'workingCycle': 24, u'updateInteval': 10, u'avgConsumption': 350, u'type': u'fridge'}, 2: {u'status': 1, u'name': u'fridge01', u'workingCycle': 24, u'updateInteval': 10, u'avgConsumption': 350, u'type': u'fridge'}, 3: {u'status': 1, u'name': u'aircondition01', u'workingCycle': 5, u'updateInteval': 10, u'avgConsumption': 1100, u'type': u'aircondition'}, 4: {u'status': 1, u'name': u'aircondition01', u'workingCycle': 5, u'updateInteval': 10, u'avgConsumption': 1100, u'type': u'aircondition'}, 5: {u'status': 1, u'name': u'aircondition01', u'workingCycle': 5, u'updateInteval': 10, u'avgConsumption': 1100, u'type': u'aircondition'}, 6: {u'status': 1, u'name': u'dishwasher01', u'workingCycle': 3, u'updateInteval': 10, u'avgConsumption': 1200, u'type': u'dishwasher'}}"]
senity> device_consumption 0/0
. . . . . . . . . .
Device 0/0 consumption :
[]
senity>
UI
One can also use the UI to view the total consumption, the number of sites and devices in the emulation. Turning on/off a device will lead to total power consumption reduction.
Known Issues
- There is a limitation on the number of sites one can start, depending on the system where SENITY runs. 500 is around the maximum for a normal systems. This is due to the fact that each site is a different process.
- Sometimes after multiple initiations and terminations of SENITY, when you start SENITY a "[Errno 104] Connection reset by peer" msg appears though the normal functionallity still exists. This will be resolved.
- SENITY will not work well with multiple initiations of it, since there is a single communication bus (the mqqt broker).
Contact
Panagiotis Kokkinos, kokkinop@gmail.com


Turkey to send foreign IS jihadists home from Monday, says minister
ISTANBUL, Nov 8 — Turkey will start sending foreign jihadists back to their home countries next week, Interior Minister Suleyman Soylu told state news agency Anadolu today.
“Now we are telling you that we are going to send them back to you. We are starting this on Monday,” Soylu said, referring to members of the Islamic State group (IS).
Earlier this week, Soylu said Turkey had nearly 1,200 foreign members of IS in custody, and had captured 287 during its recent operation in northern Syria.
Turkey has criticised Western countries for refusing to repatriate their citizens who left to join IS in Syria and Iraq, and stripping some of them of their citizenship.
It remains unclear whether Turkey will be able to repatriate those who have lost their citizenship.
Although under the New York Convention of 1961, it is illegal to leave someone stateless, several countries, including Britain and France, have not ratified it, and recent cases have triggered prolonged legal battles.
Britain has stripped more than 100 people of their citizenship for allegedly joining jihadist groups abroad.
High-profile cases such as teenage IS recruit Shamima Begum, and another alleged recruit Jack Letts, have sparked court proceedings and fierce political debate in Britain. — AFP


| Wapsol Secure-AP v.0.51 802.11b (WPA) | |||||
| WPA Config | MAC List | Authentication Server | Network Config | DynDNS Config | Advanced Config |
Welcome to the
| |||||
| © 2001-2003 Wapsol GmbH. All rights reserved. Most usable with Mozilla/Firebird. http://www.mozilla.org |


{% extends "common/page_base.html" %} {# common/page_base.html extends layout.html #} {% block content %}
| Pizza Streak 🍕🔥 | {{ current_user.get_streak() }} |
| Pizza this month | {{ current_user.pizza_month() }} |
| Total Pizza | {{ current_user.total_pizza() }} |
Simply submit a photo of your pizza here to add it to your account. (Support for multi-user pizzas is coming soon.)


After reading this guide you will know how to:
To gather input from the user we are going to use asking package, because it’s simple and is not bloated with unneeded features. It is inspired by highly popular highline ruby gem. Let’s go ahead and install it:
1 | $ npm install asking --save |
Asking package exposes only 2 functions: ask and choose. Simple as that. ask method is for entering data manually and choose method is for selecting one of the possible answers. To get started with asking:
1 2 | var choose = require('asking').choose; var ask = require('asking').ask; |
To ask user a question:
1 2 3 | ask('What is your favourite color?', function (err, color) { // color variable contains the answer }); |
ask also supports default values and input validation:
1 2 3 4 5 6 7 | ask('What is your favourite color?', { default: 'green' }, function (err, color) { // color defaults to "green" }); ask('What is your favourite color?', { pattern: /red|green|blue/ }, function (err, color) { // color can be either "red", "green" or "blue" }); |
Password prompt is a bit different from the others, because it’s input should be hidden. To achieve this behavior with asking, simply:
1 2 3 | ask('Enter your password: ', { hidden: true }, function (err, password) { // password will be hidden in console }); |
Thanks to choose method, we can provide user with a list of possible answers to our question. For example:
1 2 3 4 | choose('Select a color: ', ['red', 'green', 'blue'], function (err, color, index) { // color is either "red", "green", "blue" // index is an index of answer }); |
which will output this in console:
For more information on asking, visit its Github repository.