Hopsolete Trees
One of the most unusual benefits of being in Ireland from a Southern French PhD student’s perspective is not so much the rain and the pronounced taste for culinary oddities (some weird, some excellent) but the awesome trend towards a new age of craft beers (and I’m not mentioning the pillar of Irish pub culture).
Looking at the increasing beer richness available in any decent pub/off-licence, I was inspired to combine two of my passions: beer-related stuff and phylogeny-related stuff. Despite an honourable attempt by J.L. Brown, I would like to discuss the three reasons why it’s imphopsible to build a true beer phylogeny. Admittedly one of the main reasons for this impossibility is the side effect of drinking any sugar rich (at least originally) drink that has been infected by Saccharomyces cerevisiae… But there are also three more theoretical reasons.
To build phylogenies, you need data.
Despite the fact that the data collection part of such a study could be great (doing your fieldwork in a pub, isn’t that cool?), I doubt the data base would actually be big enough to infer any well supported phylogenetic trees. Think about a matrix with only one character (let’s say presence or absence of bones) and with 4 species (a fly, a tuna, a pigeon and a walrus); you won’t be able to resolve the tree past the first node. Theoretically one needs at least a number of characters equal to the number of taxa (- 2 because you can cheat by ignoring the first and the last node).
Let’s see what our data matrix looks like for beers: there are approximately 180 different beer styles out there so we need at least 178 characters to classify them. Even if some characters come readily to your mind (ABV – alcool! –, colour, ingredients, taste), I’ll bet you cannot find more than 10 of them.
To build phylogenies, you need models.
When building a phylogeny, it is important to remember that the true questions we are asking our software are something like: (1) which tree involves the minimum number of changes or (2) which is the most likely tree regarding my data?
The first question is the cladistics approach; using an optimal criterion parameter (usually parsimony) when you’re building your tree. It states that the best tree will be the one implying the least number of changes for grouping the tips together. The second question is the probabilistic approach, which is based on fitting a model of character evolution that will be the best fit for the data.
Going back to our brews, the question we want to ask the software will mainly depend on the assumptions we have. A cladistic approach such as the one that Brown used works as long as we have sampled enough characters back in the pub. However, unless each clade of beers has a clear pattern (e.g. only the stouts have an ABV between 4.5° and 5°) we are likely to suffer from the well-known Long Branch Attraction artifact in some parts of the tree.
So can we use the probabilistic method instead? Again, as long as we have enough data, this method is possible but will it give an accurate result? Well, that depends on your model of character evolution. Since we cannot use the classic DNA evolution models, we will have to build our own evolutionary model implying that we have a reasonably guessable probability of going from one state to another for any character (e.g. the probability of moving along the Standard Reference Method color scale).
By the way, Spencer and Wilberg (Cladistics – 2013) tested the actual evolutionary meaning of the two methods (although, they were fairly biased in favour of one of the two approaches).
To build phylogenies, you need… evolution.
A last point to this whole problem is that trying to reconstruct a realistic scenario of a clade’s evolution (i.e. a phylogeny) implies that the mechanism underlying the whole process is mainly descent with modification (but this is not exclusively necessary e.g. evolutionary linguistics or horizontal transfer – see my previous blog post or some more serious (awesome) views here, here or here).
Regarding these three points, I must reluctantly abandon the idea of doing any proper beer phylogeny since it seems that a beer-types classification would look more like a massive network than a straightforward textbook example of a phylogenetic tree… To end with a more positive and less phylo-nerd point, these messy relationships between each type of beer allow us to enjoy creative, new craft beers such as Irish Pale Ales or Oyster Stouts which are more than the sum of every element composing their name.
And for those that just don’t care, I’ll leave you with this excellent post by Barley McHops from the aleheads blog while I’m going to continue my sampling… Just in case…
Photo credit: wikimedia commons


The three main functions are listed in the drop-down menu under ‘Choose Operation to perform’
‘QC raw data’ generates QC reports.
‘Aggregate QC’d data’ merges the QC’d data files for the desired time periods together. The input files need to be from the same site and share common parameters.
‘Summary statistics’ generates two sets of CSV files and a PDF with time series plots for each parameter. One of the CSVs has daily means and the other has a wider range of summary statistics (e.g., min, median, max, quartiles).
ContDataQC works sequentially, meaning the user needs to run the QC function before running the Aggregate function, and the Aggregate function before the SummaryStats function. More detailed information on each function can be found below.
Time-saver tip: if you use Google Chrome as your internet browser, you can change its settings so that it asks what folder to download files to (versus files going to the default Download folder). Click here for instructions on how to set this up.


#include <classifier.hpp>
|
|
template<fly::StandardStringLike T> |
| constexpr auto | size (T &&value) -> size_type |
| |
|
template<std::size_t N> |
| constexpr auto | size (const CharType(&value)[N]) -> size_type |
| |
|
| template<fly::StandardStringLike T> |
| static constexpr size_type | size (T &&value) |
| |
| template<std::size_t N> |
| static constexpr size_type | size (const CharType(&value)[N]) |
| |
| static constexpr bool | is_alpha (CharType ch) |
| |
| static constexpr bool | is_upper (CharType ch) |
| |
| static constexpr bool | is_lower (CharType ch) |
| |
| static constexpr CharType | to_upper (CharType ch) |
| |
| static constexpr CharType | to_lower (CharType ch) |
| |
| static constexpr bool | is_digit (CharType ch) |
| |
| static constexpr bool | is_x_digit (CharType ch) |
| |
| static constexpr bool | is_space (CharType ch) |
| |
template<fly::StandardCharacter CharType>
class fly::detail::BasicClassifier< CharType >
Helper class to provide safe alernatives to the STL's <cctype> methods.
- Author
- Timothy Flynn (trfly.nosp@m.nn89.nosp@m<EMAIL_ADDRESS>- Version
- January 3, 2021
◆ is_alpha()
template<fly::StandardCharacter CharType>
Checks if the given character is an alphabetic character as classified by the default C locale.
The STL's std::isalpha and std::iswalpha require that the provided character fits into an unsigned char and unsigned wchar_t, respectively. Other values result in undefined behavior. This method has no such restriction.
- Parameters
-
| ch | The character to classify. |
- Returns
- True if the character is an alphabetic character.
◆ is_digit()
template<fly::StandardCharacter CharType>
Checks if the given character is a decimal digit character.
The STL's std::isdigit and std::iswdigit require that the provided character fits into an unsigned char and unsigned wchar_t, respectively. Other values result in undefined behavior. This method has no such restriction.
- Parameters
-
| ch | The character to classify. |
- Returns
- True if the character is a decimal digit character.
◆ is_lower()
template<fly::StandardCharacter CharType>
Checks if the given character is a lower-case alphabetic character as classified by the default C locale.
The STL's std::islower and std::iswlower require that the provided character fits into an unsigned char and unsigned wchar_t, respectively. Other values result in undefined behavior. This method has no such restriction.
- Parameters
-
| ch | The character to classify. |
- Returns
- True if the character is an alphabetic character.
◆ is_space()
template<fly::StandardCharacter CharType>
Checks if the given character is a whitespace character as classified by the default C locale.
The STL's std::isspace and std::iswspace require that the provided character fits into an unsigned char and unsigned wchar_t, respectively. Other values result in undefined behavior. This method has no such restriction.
- Parameters
-
| ch | The character to classify. |
- Returns
- True if the character is a whitespace character.
◆ is_upper()
template<fly::StandardCharacter CharType>
Checks if the given character is an upper-case alphabetic character as classified by the default C locale.
The STL's std::isupper and std::iswupper require that the provided character fits into an unsigned char and unsigned wchar_t, respectively. Other values result in undefined behavior. This method has no such restriction.
- Parameters
-
| ch | The character to classify. |
- Returns
- True if the character is an alphabetic character.
◆ is_x_digit()
template<fly::StandardCharacter CharType>
Checks if the given character is a hexadecimal digit character.
The STL's std::isxdigit and std::iswxdigit require that the provided character fits into an unsigned char and unsigned wchar_t, respectively. Other values result in undefined behavior. This method has no such restriction.
- Parameters
-
| ch | The character to classify. |
- Returns
- True if the character is a hexadecimal digit character.
◆ size() [1/2]
template<fly::StandardCharacter CharType>
template<std::size_t N>
Determine the length of a character array value, excluding the null terminator (if present).
- Parameters
-
| value | The character array. |
- Returns
- The length of the character array.
◆ size() [2/2]
template<fly::StandardCharacter CharType>
template<fly::StandardStringLike T>
Determine the length of any string-like value. Accepts std::basic_string and std::basic_string_view specializations.
- Template Parameters
-
- Parameters
-
| value | The string-like value. |
- Returns
- The length of the string-like value.
◆ to_lower()
template<fly::StandardCharacter CharType>
Converts the given character to a lower-case alphabetic character as classified by the default C locale.
The STL's std:tolower and std::towlower require that the provided character fits into an unsigned char and unsigned wchar_t, respectively. Other values result in undefined behavior. This method has no such restriction.
- Parameters
-
| ch | The character to convert. |
- Returns
- The converted character.
◆ to_upper()
template<fly::StandardCharacter CharType>
Converts the given character to an upper-case alphabetic character as classified by the default C locale.
The STL's std:toupper and std::towupper require that the provided character fits into an unsigned char and unsigned wchar_t, respectively. Other values result in undefined behavior. This method has no such restriction.
- Parameters
-
| ch | The character to convert. |
- Returns
- The converted character.
The documentation for this class was generated from the following file:


---
layout: post
title: Code View
tags: []
status: publish
type: post
published: true
meta: {}
---
Dunstan Orchard was detailing some of the code behind his blog's recent re-design and his approach/technique to code display (which is discussed about half way down) was I thought quite awesome [his site is equally awesome and his thoughts and comments are hilarious].
He opted to use CSS and a numbered list represent indented and line numbered code. It also displays single and multi line comments in a different colour(Ironically I forgot to include a check for CFML based comments <!--- --->. I'll add this later). His wrote the script using PHP and with his permission I created a ColdFusion UDF. And the UDF is as follows:
[code]
/**
* This function reads in a file with code and displays and formats the code nicely.
* Modified/Adapted for ColdFusion by Greg Stewart
* Rewritten based on original PHP function by Dunstan Orchard (http://www.1976design.com/).
*
* @param fName The file to parse.
* @return output The formatted xHTML code view.
* @author Greg Stewart (gregs(at)tcias.co.uk)
* @version 1, August 5, 2004
*/
function codeTransform (fName) {
var output = "";
var linecount = 0;
var tabCount = "";
var comnt = "";
var class = "";
var multiLineCmnt = 0;
fileReader = createObject("java", "java.io.FileReader");
fileReader = fileReader.init(fName);
lineReader = createObject("java","java.io.LineNumberReader");
lineReader = lineReader.init(fileReader);
// Read first line, if any into variable line
line = lineReader.readLine();
while (isDefined("line")) {
lineCount = lineCount + 1;
// convert tags to safe entitiies for display
line = HTMLEditFormat(line);
// find out how many tabs (based on FindOccurences() by Ray Camden from cflib.org)
tabCount = Len(line) - Len(Replace(line,"#chr(9)#","","ALL")) / len("#chr(9)#");
// set the style for tabs
if (tabCount gt 0) {
tabCount = "tab" & tabCount;
} else {
tabCount = "";
}
// now remove the tabs
line = Replace(line,"#chr(9)#","","ALL");
// let's deal with comments
slashSlashPos = REFind("^//",line, 1, "true");
slashStarPos = REFind("/\*",line, 1, "true");
starSlashPos = REFind("\*/",line, 1, "true");
if (multiLineCmnt neq 1) {
if (slashSlashPos.pos[1] neq 0) {
comnt = "cmnt";
multiLineCmnt = 0;
} else {
comnt = "";
multiLineCmnt = 0;
}
if (slashStarPos.pos[1] neq 0) {
comnt = "cmnt";
if (starSlashPos.pos[1] neq 0) {
multiLineCmnt = 0;
} else {
multiLineCmnt = 1;
}
}
}
if (starSlashPos.pos[1] neq 0) {
comnt = 'cmnt';
multiLineCmnt = 0;
}
// build up the class
if ((tabCount neq "") AND (comnt neq "")) {
// set the style for both tabs and comments
class = "tabCount" & & " comnt";
} else if ((tabCount neq "") OR (comnt neq "")) {
// or for just tabs or comments
class = "tabCount&comnt&"""";
}
// Process the variable line
if (line neq "") {
output = output & "- & line & "
";
} else {
output = output & "";
}
// Read the next line, if any
line = lineReader.readLine();
}
output = output & "
";
return output;
}
// call the function
writeOutput(codeTransform("/path/To/File/To/Display/file.name"));
[/code]
I'll start using this for my code display once I figure out how to integrate PHP and CFML.


Specify the path of the proxy configuration file.
Specify the URL that the browser client will use.
Specify the URL that the browser client will use.
SSL certificate to use for serving HTTPS.
SSL key to use for serving HTTPS.
Base url for the application being built.
URL where files will be deployed.
Localization file to use for i18n.
Path where output will be placed.
Enable and define the file watching poll time period (milliseconds).
Format of the localization file specified with --i18n-file:
{{ format }}
Locale to use for i18n:
{{ locale }}
Opens the url in default browser
Serve using HTTPS
Build using Ahead of Time compilation
Enable hot module replacement (HMR).
Whether to reload the page on change, using live-reload
Log progress to the console while building
Use a separate bundle containing only vendor libraries
Adds more details to output logging
Run build when files change


--- layout: post title: Git Aliases date: '2011-10-03T14:06:01-05:00' tags: - git - alias - checkout permalink: /post/10985122399/git-aliases ---
Ever see someone checkout a git repo by simply typing `git co master` instead of the HORRIBLY LONG IMPOSSIBLY DIFFICULT `git checkout master` ? I know I have, so to save me HOURS a day I added these aliases to my ~/.gitconfig to my git config file.
[alias]
st = status
ci = commit
br = branch
co = checkout
df = diff
dc = diff --cached
lg = log -p
lol = log --graph --decorate --pretty=oneline --abbrev-commit
lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
ls = ls-files
You can get even more helpful stuff through this handy cheat sheet https://cheat.errtheblog.com/s/git. Good luck and happy Git-ing


creating a basic swing application Supporting tagline
Why to use SwingUtilities.invokeLater in main method?
The docs explain why. From Initial Threads
Why does not the initial thread simply create the GUI itself? Because almost all code that creates or interacts with Swing components must run on the event dispatch thread.
From The Event Dispatch Thread
Some Swing component methods are labelled “thread safe” in the API specification; these can be safely invoked from any thread. All other Swing component methods must be invoked from the event dispatch thread.
Programs that ignore this rule may function correctly most of the time, but are subject to unpredictable errors that are difficult to reproduce.
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("Hello World");
frame.setSize(600, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
Application startup code
There’s one place where it’s very easy to forget that we need SwingUtilities.invokeLater(), and that’s on application startup.
Our applications main() method will always be called by a special “main” thread that the VM starts up for us.
And this main thread is not the event dispatch thread! So:
The code that initialises our GUI must also take place in an invokeLater().
So our initial main() method should look something like this:
public class MyApplication extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
MyApplication app = new MyApplication();
app.setVisible(true);
}
});
}
private MyApplication() {
// create UI here: add buttons, actions etc
}
}
A Visual Guide to Layout Managers
Several AWT and Swing classes provide layout managers for general use:
1.BorderLayout (Every content pane is initialized to use a BorderLayout.)
2.BoxLayout
3.CardLayout
4.FlowLayout
5.GridBagLayout
6.GridLayout
7.GroupLayout
8.SpringLayout
‘public class MainFrame extends JFrame { ‘
’…’
’ public MainFrame() {‘
’ …’
’ setLayout(new BorderLayout());’
’ …’
’ add(textArea, BorderLayout.CENTER);’
’ add(btn, BorderLayout.SOUTH);’
’ }’
’}’
The Observer pattern
In Design Patterns, the authors describe the Observer pattern like this:
Define a one to many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
The Observer pattern has one subject and potentially many observers.
Observers register with the subject, which notifies the observers when events occur.
The prototypical Observer example is a graphical user interface (GUI) that simultaneously displays two views of a single model; the views register with the model, and when the model changes, it notifies the views, which update accordingly.


Back
CreateSpriteSheet
Hello World
Content:
-
Methods
.
sht = gfx.CreateSpriteSheet(
file
,
callback
) →
unknown
Methods
The following methods are available on the
SpriteSheet
object:
data
→
object
string
function
()
An object for saving individual extra properties.


Intel releases free file transfer app to help you ditch Windows 7: how to download it
by Mark Wycislik-WilsonIntel releases free file transfer app to help you ditch Windows 7: how to download it
Before Microsoft ends support
(Image credit: Shutterstock)
If you still need to switch from Windows 7, Intel and software developer Laplink have released a free tool that will transfer your files to a new PC.
There are now just two months until Microsoft ends support for Windows 7, but despite this – and in spite of the fact that the operating system is now an astonishing 10 years old – huge numbers of people are still using it. Why?
Intel has looked into things, and its research suggests that the hassle involved in moving files, settings and other data from one computer to another is one of the main reason people stick with their old machines.
But with end of support for Windows 7 fast approaching, the millions of people still using the operating system are at risk of missing security updates from Microsoft – in addition to using very old software.
Make the switch
To help with this, Intel has teamed up with Laplink Software and announced a free version of its data migration tool. PCmover Express has been made completely free for personal use and can be used to move from an old Windows 7 computer to a new, Intel-based Windows 10 machine (previously it cost $29.95, €23.95 or £20.95 in different parts of the world). The software can migrate files, documents and user settings, making the process of moving to a new computer much less of a headache.
The software is only free for home users; Laplink says that a commercial license is available "for about $20".
The free edition of PCmover Express will be enough for most people, but there's also a special offer if your needs are a little greater. Laplink is offering a 50% saving off the usual price of PCmover Professional, which can also transfer applications from one computer to another. The pro version of the software can be yours for $29.98/£20.98 (about AU$40) (down from $59.95/£41.95 (about AU$90).
- Need a hardware upgrade? The best laptops money can buy in 2019


Description
DEWAG make Earth Leakage Relay is designed to monitor leakage
current to earth from either terminals of a battery. It operates
directly from the battery being monitored and provides visual
indication of the leakage condition by red LED. It also provides
relay contact output when the earth leakage current exceeds the set
value, that can be used for any external application.
Features
- Adustable leakge current alarm setting by potentiometer
- The Red LED illuminates when the leakage current exceeds set value
- 2 sets of potential free changeover contacts of relay for external application
- Easy to install
- Compact size
Dimensions
- Enclosure: 90mm width X 120mm length X 135mm height. panel/wall mounting
- Mounting plate details: 76mm X 82mm, (5mm X 12mm) slots
Technical Specifications
- Battery Voltage:- 24V / 30V / 36V / 48V / 110V / 220V DC battery
- Leakage Set potentiometer:- This sets the leakage current value above which the relay should operate. (Typical Range: 1 to 7mA)
- Red LED: To indicate earth leakage relay status
- Relay Contacts: 2 changeover potential free , Rated 5Amp. @ 230V AC
Ordering Information
- Series: ELR-01 Model: 03
- Battery Voltage


Attack feet sleep on keyboard
Stretch need to chase tail and stare at ceiling but chase mice or intently sniff hand. Intently stare at the same spot hopped up on goofballs claw drapes and climb leg rub face on everything yet burrow under covers.  Destroy couch. Sleep on keyboard leave hair everywhere, destroy couch yet mark territory yet mark territory. Climb leg find something else more interesting run in circles run in circles, but missing until dinner time and attack feet yet under the bed.  Shake treat bag. Missing until dinner time mark territory but intently stare at the same spot sun bathe. Need to chase tail. Chase imaginary bugs.


Coding Survey
Tell us briefly about your coding experience.
*
Name:
*
Age:
*
Email:
*
For how long have you been coding?
Select an option
1-3 YEARS
4-6 YEARS
7-10 YEARS
10+ YEARS
What is your favorite programming language?
Python
JavaScript
Ruby
Do you plan on learning any more languages?
Python
JavaScript
Ruby
C++
Other
Do you have any additional comments?
Submit


These details were taken directly from https://kafka.apache.org/quickstart All we have done is put some specifics around our implementation.. For this example the user name is developer and the directory where AMQ-Streams is installed is /Users/developer/RedHatTech/kafka_2.12-2.4.0.redhat-00005. These steps are manual; however, as you get more familiar you can develop a start script.
Download the latest source code from Red hat: https://access.redhat.com/products/red-hat-amq?extIdCarryOver=true&sc_cid=701f2000001OH7EAAW
Installing Kafka


Game Project
(In this page you will find all the information needed for our game project)
We started this project in December 2020
to make our own horror game that is gonna be published in the next 1 or 2 years
Currently we are working on implementing the movement and some basic mechanics
Questions & Answers
1. When will the game be released?
2. Will you upload more?
3. What is the game about?
4. Will it be free or paid?
5. Are you going to release information about the game?
1. We are looking to release the game in 2021 or 2022.
2. We don't have time to upload videos but we will try.
3. The game is a horror based game.
4. We have yet to decide.
5. Yes, all the information will be released here.
As of April 2021 here are some screenshots of our project so far
We didn't do much because we went on a break but we are working on it
We implemented a flashlight and our basic movement with W, A, S, D


Matthew Campen
LinkedIn
●
Chicago, IL 60626
●
<EMAIL_ADDRESS>Full Stack Web and Hybrid Mobile Applications Developer
Full stack web and hybrid mobile applications developer specializing in full stack Javascript application
and architectures. Experienced in all stages of the development lifecycle, well-versed in numerous
programming languages.
- Hands-on experience leading all stages of system development efforts, including requirements in definition design, architecture, testing, and support
- Outstanding leadership abilities; able to coordinate and direct all phases of proejct
Core Competencies
Full Stack Development
Database Development
Hybrid Mobile Development
Database Development
Hybrid Mobile Development
Problem Solving
Scrum
Team Communicator
Scrum
Team Communicator
CERTIFICATIONS / TECHNICAL PROFICIENCIES
Certifications:
Certified Scrum Master
Platforms:
Linux, WIndows, MaxOS, LAMP, MEAN, NodeJS
Database:
Microsoft SQL Server, MySQL, MongoDB
Tools:
VSCode, SSH, Gulp, Git, Eclipse
Languages:
HTML, CSS, SASS, Javascript, PHP, Bash, SQL
PROFESSIONAL EXPERIENCE
BRAVOSOLUTION US INC, Chicago, IL 2015 - 2018
Developing client-driven solutions for collaborative sourcing and procurement.Junior Database Developer
- Designed SQL Database Schemas from ERD software
- Created Stored Procedures, Prepared Statements, and User Defined Functions
- Worked in an agile environment with team members in-office and around the world.
- Adapted to tight deadlines and changing requirements to deliver quality results.
HEWLETT PACKARD COMPANY INC, Chicago, IL 2011 - 2014
Trouble shooting, customer service and support for HPSW Marketing Optimization WCM.Technical Solutions Consultant II
- Demonstrated quick correspondence and proactive follow-up with customers.
- Handled upwards of 18 simultaneous cases regularly.
- Worked before hours and stayed after hours to help with customer issues.
EDUCATION


Sign In
Login
Recover Password
Create Account
{{DisplayName}}
Change Password
Log out
Login...
User / Email
Password
Sign in
Cancel
Windows Authentication
{{Status}}
Register...
UserName:
* Required.
* Minimum 4 characters.
User already exists.
Display Name:
* Required.
* Minimum 4 characters.
Email:
* Required.
* Invalid Email.
Email already exists.
Confirm Email:
* Required.
* Doesn't Match.
Password:
* Required.
* Minimum 6 characters.
Confirm Password:
* Required.
* Doesn't Match.
{{Status}}
Cancel
Change Password...
Password
Confirm Password
* Doesn't Match.
Cancel
{{Status}}
Recover Password...
User / Email
Cancel
{{Status}}


ABOUT ME
ORIGIN...
My name is Adeoluwa Adeboye, I am a Nigerian from the prestigious state of OGUN.
I graduated from the prestigious University of Ibadan where i studied Mechanical Engineering.
FIRST LOVE FOR PROGRAMMING...
During my studies at the University we did one or two programming course which gave birth to my interest in programming.
I started coding personally back in 2016 trying to learn Python, but it was not a serious attempt. I was fairly inconsisitent with coding back then, sometimes going 4-6 months without writing a line of code.
FOUND LOVE AGAIN IN DSN BOOTCAMP...
I started coding serious during my NYSC Service Year in 2019 when DataScience Nigeria launch its Pre-Qualification Kaggle Machine Learning Competition for its Bootcamp in November.
Inorder to participate in this Competition i had to take my programming serious and took Kaggle's crash course on Machine Learning. I qualified for the Bootcamp which was held in November, 2019.
The Bootcamp was a very enlightening experience with one on one meetings with experts from different fields of Artificial Intelligence.
My love for programming was revived during the DSN 5days Artificial Intelligence Bootcamp.
POST BOOTCAMP...
After the Bootcamp, i started doing my research, reading articles, searching on Google looking for career opportunities in Programming for non-computer science graduates.
I found out the Tech World was no only for the computer science graduates and that a lot of people were doing good in the Tech World without a computer science degree.
With my mind make up to entering the Tech World, i decided to pursue the fields of Web Development , Data Science , Artificial Intelligence and Graphic Design.
PRESENT JOURNEY...
Well, am still grinding to make a name for myself in the fields i decided to pursue.
Every one in one way or the other does self learning, my transition to this fields has been solely through Online Resources coupled with Self Discipline and Self Motivaton.


Hello {{user.name}} ({{user.id}})
This demo shows the creation of a session app only using code. Meaning that, there is neither a template app nor physical/real app created at any point. A session app is created in memory only for YOU ({{user.name}}) while your session, as a logged-in user, is active. No one else can see this app, it's an in-memory flash-app!
What is really going on when you click on "Create Session App"
- An empty session app is created in memory and attached to your session
- A REST connector is created for you. This connection will grab the data corresponding to the logged-in user.
- The session app will use this connection.
- An load script is set to this session app. (see load script here)
- A Reload is triggered so the app loads the data using the load script and the connection.
- When the data is loaded, the load script is cleared and the connection removed.
- These all happend server side :-)
- Finally, the client (this web) opens the session app (since both the server and client share the session!!) and render some on-the-fly charts.
- Isn't it awesome!!


WITNESS LIST Pensions & Investments Committee March 3, 2003-8:00A HB 258 For: Ingersoll, Deborah (El Paso Pension Widows) Pickett, Joe (Bill Author) Against: Brown, Gerald (Dallas Police and Fire Pension System) Lowe, Jon (Fire and Police Pension Fund, San Antonio) HB 280 For: Ingersoll, Deborah (El Paso Pension Widows) Moreno, Paul (Bill Author) Against: Brown, Gerald (Dallas Police and Fire Pension System) Lowe, Jon (Fire and Police Pension Fund, San Antonio) Owen, Robert (Self and Texas Society of CPAs) Sweeten, Randy (Self) Registering, but not testifying: For: Cummings, Bill (Self and Retired) Wilkison, Charley (Combined Law Enforcement Associations of Texas, CLEAT) Against: Dear, Penny (Texas Society Certified Public Accountants) HB 601 For: Grace, Cary (City of Houston) Perales, Erin (Houston Municipal Employees Pension System) Thompson, Senfronia (Bill Author) HB 1047 On: Mattax, David (Office of the Attorney General) Smith, Virginia (Pension Review Board) Registering, but not testifying: On: Shivers, Shari (Pension Review Board- Chair) HCR 17 For: Berman, Leo (Bill Author) Cummings, Bill (Texas Silver Haired Legislature) Gustafson, Lindsay (Texas Classroom Teachers Association) Lehr, Mike (Texas Retired Teachers Association) Raab, Ted (Texas Federation of Teachers) Registering, but not testifying: For: Gregg, Brock (Association of Texas Professional Educators) Kelly, Jack (Texas State Teachers Association)


| Chains | Clover | Dallas | Houston |
|---|---|---|---|
WE'RE ALL BONNIE HERE1,000,000 /1,000,000 enemies bottled.100 %WE'RE ALL BONNIE NOW! |
WOLOLOLOLOLOOO!0 /2,000,000 cloakers wololoo'd.0 % |
HAIR FALLOUT0 /100,000 insane russians pleased.0 % |
|
GRIND FEST0 /100,000,000,000 experience lost.0 % |
SELF DEFENSE, I SWEAR!0 /15,000,000 enemies slain.0 % |


Pakistani/Indian rice dish which is often reserved for very special occasions such as weddings, parties, or holidays such as Ramadan
Pakistani/Indian rice dish which is often reserved for very special occasions such as weddings, parties, or holidays such as Ramadan
Pakistani/Indian rice dish which is often reserved for very special occasions such as weddings, parties, or holidays such as Ramadan
Pakistani/Indian rice dish which is often reserved for very special occasions such as weddings, parties, or holidays such as Ramadan
Pakistani/Indian rice dish which is often reserved for very special occasions such as weddings, parties, or holidays such as Ramadan
Pakistani/Indian rice dish which is often reserved for very special occasions such as weddings, parties, or holidays such as Ramadan
Pakistani/Indian rice dish which is often reserved for very special occasions such as weddings, parties, or holidays such as Ramadan
Pakistani/Indian rice dish which is often reserved for very special occasions such as weddings, parties, or holidays such as Ramadan
Pakistani/Indian rice dish which is often reserved for very special occasions such as weddings, parties, or holidays such as Ramadan


Most Common Categories
- Resource Events
- cached- The resources listed in the manifest have been downloaded, and the application is now cached.
- error- A resource failed to load.
- abort- The loading of a resource has been aborted.
- load- A resource and its dependent resources have finished loading.
- beforeunload- The window, the document and its resources are about to be unloaded.
- unload- The document or a dependent resource is being unloaded.
- Network Events
- online- The browser has gained access to the network.
- offline- The browser has lost access to the network.
- Focus Events
- focus An element has received focus (does not bubble).
- blur An element has lost focus (does not bubble).
- Websocket Events
- open A WebSocket connection has been established.
- message A message is received through a WebSocket.
- error A WebSocket connection has been closed with prejudice (some data couldn't be sent for example).
- close A WebSocket connection has been closed.

- CSS Transition Events
- transitionstart A CSS transition has actually started (fired after any delay).
- transitioncancel A CSS transition has been cancelled.
- transitionend A CSS transition has completed.
- transitionrun A CSS transition has began running (fired before any delay starts).
- Form Events
- reset The reset button is pressed
- submit The submit button is pressed
- Printing Events
- beforeprint The print dialog is opened
- afterprint The print dialog is closed


A package service that has more participants that promote different things to work on.The package gives microphone and soft speakers that will allow the people within the committee to communicate well and do things right.
A package service that has more participants that promote different things to work on.The package gives microphone and soft speakers that will allow the people within the committee to communicate well and do things right.
An extensive selection of package that has an high-end, custom-installation automobile audio systems that include electronics and loudspeakers.The package offers a choice of a multi-channel amplifier, all designed to provide extraordinary quality sound system.
Outdoor Package a package that coughs noise every other minute. It leaves the guests wondering if you were forced to hold the event in the first place. One of those things to pay proper attention to in any event or occasion is your this package because it promotes how loud sound is being implied in a event.
Providing an equipment good for a press conference that gives good quality of sound with in a place or for announcement in a work and support many specifications in terms of its event.
Panel Discussion Package support produce effectively good sounds in the speakers from the participants, reproducing individual sounds not just around the listener, but inside the room, outside the room and overhead in any direction, placing acoustic objects accurately in three-dimensional space.
A package with a descriptive special data without defining the balance into specific speakers. Source audio can use normal recording multitrack as well as surround microphones and most any recording equipment.
More audio equipment that support many specification that provides many flawless and unique sounds in banquet room.That share more customize integration in terms of its audio sources.


KCAP-03 Workshops
The K-CAP 2003 Program Committee is happy to announce that five workshops have been accepted for the Workshop Program
for K-CAP 2003, to be held in Sanibel, Florida, USA.
Workshops will be held on October 25 and 26th, 2003, immediately after the end of the main conference. Note that this year K-CAP'2003 is held in conjunction with the 2nd International Semantic Web Conference (ISWC2003).
K-CAP workshops will provide an informal setting
where workshop participants will have the opportunity to discuss specific technical
topics in an atmosphere that fosters the active exchange of ideas. Our aim for the workshop
programme is to promote and collect multidisciplinary research directions and
potentially interesting technologies for efficiently capturing knowledge
from a variety of sources.
To encourage interaction and a broad exchange of ideas, each
workshop will be limited to 30 participants and ample time will
be allotted for general discussion.
The K-CAP-03 Workshop Programme
- Knowledge Markup and Semantic Annotation
Siegfried Handschuh, Karlsruhe University, Germany (contact person),
Marja-Riitta Koivunen, W3C,
Rose Dieng-Kuntz, INRIA, France,
Steffen Staab, Karlsruhe University, Germany.
Go to workshop website
- Knowledge Management and the Semantic Web
Rose Dieng-Kuntz, INRIA, France (co-chair and contact person),
Fabien Gandon, Carnegie Mellon University, USA (co-chair),
Philippe Perez, Atos Origin, France,
Joel Quinqueton, LIRMM, France,
Paola Turci, University of Parma, Italy.
Go to workshop website
- Information Visualization in Knowledge Capture Technologies
Neil A. Ernst, University of Victoria, Canada (contact person),
Margaret-Anne Storey, University of Victoria, Canada.
Go to workshop website
- Distributed and Collaborative Knowledge Capture
Tim Chklovski, Information Sciences Institute, USC, USA (contact person),
Push Singh, Media Lab, MIT, USA.
This workshop will be linked to the workshop "Capturing Knowledge from Domain Experts: Progress and Prospects"
Go to workshop website
- Capturing Knowledge from Domain Experts: Progress and Prospects
Derek Sleeman, University of Aberdeen, UK (contact person).
Yolanda Gil, ISI, USA.
This workshop will be linked with the Workshop on "Distributed and Collaborative Knowledge Capture"
Go to workshop website
The specific details on the deadlines and format for workshop papers is given in the individual workshop website. Any questions regarding the overall structure of the workshops can be addressed to John Domingue (j.b.domingue@open.ac.uk). Questions on an individual workshop should be addressed to the workshop chairs.
Conference home page: http://sern.ucalgary.ca/ksi/K-CAP/K-CAP2003/


20 Creating DataSHIELD packages
The procedure for the development of a client-side or a server-side package in DataSHIELD is similar as the procedure of creating packages in native R and RStudio. For the development of a package, the developer will need the R packages devtools and roxygen2. Having those packages installed and loaded in the R session, the developer should follow five basic steps:
Create the package directory: this will create the R and the man folders and the DESCRIPTION file in a specified directory.
Add functions: copy the R scripts of the functions developed in the R folder created at step (1).
Add documentation: add comments at the beginning of each function to give information to the user on what the function does and how the arguments of the function are used. Those comments are compiled into the correct format for the package documentation. More details can be found in the roxygen2 documentation.
Create the documentation: this automatically adds in the .Rd files to the man directory and a NAMESPACE file to the main package directory. (see the function document in devtools)
Install the development package.
In addition to those steps, the developer can make the package a GitHub repo and allows other developers to commit any further developments and improvements. For more details the reader can have a look on a Git/GitHub guide.
After the development of a client-server pair of DataSHIELD packages the DataSHIELD Development Team can provide a testing framework where the developed functions and packages are tested including tests related to disclosure protection and if all tests are passed, then the package can be become publicly available for use by the DataSHIELD users. Details for the DataSHIELD testing framework can be found in the DataSHIELD Wiki.
20.1 Example of DataSHIELD package development
The following section contains an example on how to setup a whole environment to develop DataSHIELD packages using DSLite and RStudio, as well as a guided illustration of how to create a new functionality. It is targeted at new developers of DataSHIELD packages that need some guidance on the first steps. Please note that anything described on this section is just a template and can be modified and adapted to anyone liking, take it as a starting point.
20.1.1 Folders and files
To speed up the development process, the most practical approach to setting up the folders and files is illustrated on the Figure 20.1. The idea is to have two folders that contain each one a package, that means one to be used in the client and one on the server (virtualized server on this development approach); outside those two folders there is the testing script that will be used to call the new functions.
Inside each folder, a typical R package structure is to be found. This is further detailed here and here. If the reader does not have prior experience on R package development, there is the option of setting up a package folder through:
RStudio -> File -> New Project... -> New Directory -> R Package
The typical style convention for DataSHIELD is to name the client package as dsXClient and the associated server package as dsX. The client package will contain the functions that the user will use, those functions will be basically triggers to the server functions, more information about that on the following lines.
20.1.2 Development of a function
There is many information about DataSHIELD and how it works. A very brief introduction will be provided on this section to help.
When developing a function, we have to develop both the server function and the client function. The aim of the client function (your RStudio instance) is to send an instruction to the server that will or will not have a return to you; and the aim of the server function is to perform an action(s) on an object that it contains, and make sure that if there is an output to the client, it is non disclosive.
We have already described a classification between functions that do and do not have outputs to the client, in DataSHIELD they are called AGGREGATE
functions (output to the client) and ASSIGN
functions (NO output to the client).
It is important to always have in mind that the objects that are being manipulated only exist on the servers, and not on the client, with that in mind let’s take a look at a basic client function.
This is a basic function that will modify an object on the server that has one option parameter. Before writing any more code, let’s take a minute to understand that the object
variable and option
variable will be strings, since they do not exist on the client side. The object
variable is the name of the object that we want to modify on the server, and the option
variable is a string that in this example will refer to a bool (TRUE/FALSE).
Let’s now build the function call that will be done on the client.
ds.basicFunction <- function(object, option) {
cally <- paste0("basicFunctionDS(", object, ", ", option, ")")
return(cally)
}
ds.basicFunction("dataset1", "FALSE")
[1] "basicFunctionDS(dataset1, FALSE)"
As it can be seen, we have now created a string that contains a function call that we want to execute on the server, the only thing left to do is to send this instruction to the server. Before doing that let’s make clear the style used here. For the client functions we use ds.X and the associated server function is named XDS. Now we can use as example the following function that we have created on our server package.
basicFunctionDS <- function(object, option){
if(option){
object <- sum(object)
}
else{
object <- mean(object)
}
return(object)
}
What needs to be noted about the example server function is 1) Here we are using the input arguments of the functions as R objects, since this will be executed on a server that is expected to have them. On this particular example object
must be a numerical vector and option
a bool (this is a very simple example with no class checking of the arguments); 2) We have a return, so this can be an AGGREGATE
or ASSIGN
function, more information on that in the following lines, no need to worry at this stage.
Having explained the server function, let’s now retake the client function. We now have our server function defined and what is left to be done is to actually call it. To do so we make use of the DSI package, at this point is when we have to decide if the function call will be AGGREGATE
or ASSIGN
.
# AGGREGATE
DSI::datashield.aggregate(conns, as.symbol(cally))
# ASSIGN
DSI::datashield.assign.expr(conns, name, as.symbol(cally))
The return of the server function will be passed to the client on a AGGREGATE
function and it will be assigned to a new object (on the server) on a ASSIGN
function.
If we want to create a function that will have an output to the client, we use DSI::datashield.aggregate
, this function needs a connection object and the previously formatted string; while if we just want to create a new object on the server we use DSI::datashield.assign.expr
, this function also needs the connection object as well as a string (name
on the example) that indicates the name the new object will have on the server. Let’s say for this example we are creating a AGGREGATE
function, our final function will look like this:
ds.basicFunction <- function(object, option, datasources = NULL) {
if (is.null(datasources)) {
datasources <- DSI::datashield.connections_find()
}
cally <- paste0("basicFunctionDS(", object, ", ", option, ")")
result <- DSI::datashield.aggregate(datasources, as.symbol(cally))
return(result)
}
On this final example, there is already the handling of the connection object, which is done using the DSI package as well.
Now that we have both our client and server functions ready, we are almost ready to test them using DSLite, before doing that there are still a couple of steps to be done.
Document using roxygen both functions, to do so go to:
Code -> Insert Roxygen Skeleton
And complete the header that has been added to the funcion (this step has to be done for both client and server functions).
For both the client and server packages, the NAMESPACE has to be updated to declare this new functions, to do so, find both folders on the RStudio Files panel and do the following:
- Go inside dsX folder on the files panel in RStudio.
More -> Set As Working Directory
- On the RStudio Console run the following command:
devtools::document()
- Repeat 1, 2 and 3 on the dsXClient folder
There is just one step left to be done, on DataSHIELD server packages there has to be a file that states all the funcions of the package and whether they are AGGREGATE
or ASSIGN
functions. This file has to be named DATASHIELD
(no extension) and has to be placed on dsX/inst/
. The structure of this file is the following:
AggregateMethods:
basicFunctionDS,
basicFunction2DS
AssignMethods:
assignFunctionDS,
assignFunction2DS
On our example it would just be:
AggregateMethods:
basicFunctionDS
AssignMethods:
20.1.3 Testing of the function
We are now ready to test our new function using DSLite. This will be done from the testing script that we described when talking about the folders and files.
On this script, we have to achieve the following:
- Install the packages we are developing
- Create (or load) test data
- Create a virtualized server using DSLite
- Put the base DataSHIELD package and our new package inside the server
- Put the test data inside the server
- Login into the virtualized server
- Execute the new function and see how it behaves
To simplify the explanation, an example script will now be shown with some comments on it to guide the reader.
# Make sure the working directory is the test script
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
# Install the current version of both the client and server packages found locally
devtools::install("./dsX")
devtools::install("./dsXClient")
# Load all the required packages
library(dsBase)
library(dsBaseClient)
library(resourcer)
library(DSLite)
library(dsX)
library(dsXClient)
# Create test numerical vector
test_data <- rpois(n = 50, lambda = 10)
# Create virtualized server with DSLite, assign everything needed on it
dslite.server <- newDSLiteServer(tables=list(exposures = test_data),
config = DSLite::defaultDSConfiguration(include=c("dsBase", "dsX")))
builder <- DSI::newDSLoginBuilder()
builder$append(server = "server1", url = "dslite.server", table = "exposures", driver = "DSLiteDriver")
logindata.dslite <- builder$build()
# Login to the virtualized server
conns <- datashield.login(logindata.dslite, assign=T, symbol = "exposures")
# Test the function
ds.basicFunction("exposures", FALSE)
With this complete example understood, one must feel now ready to start developing new features for DataSHIELD. Once a package has been developed using DSLite, it should be tested on a real instance of Opal before releasing it.


✨ Main page ✨ About me ✨ Mystery ✨ Table ✨ Survey ✨ Contact ✨
My name: Lilianna Maniak
My student ID: 132368
My studies:
My hobby: 🥋
My favourite colour: blue pink
My favourite food: 🍔
My favourite pet: 🐱


\[ \newcommand{\Prob}{\operatorname{P}} \newcommand{\E}{\operatorname{E}} \newcommand{\Var}{\operatorname{Var}} \newcommand{\Cov}{\operatorname{Cov}} \newcommand{\se}{\operatorname{se}} \newcommand{\re}{\operatorname{re}} \newcommand{\ybar}{{\overline{Y}}} \newcommand{\phat}{{\hat{p}}} \newcommand{\that}{{\hat{T}}} \newcommand{\med}{{\tilde{Y}}} \]
sex_ct <-
array(
data =
c(
43, 26, 134, 149
,29, 22, 23, 36
)
,dim = c(2, 2, 2)
,dimnames = list(
Gender = c("M", "F")
,Intercourse = c("Y", "N")
,Race = c("W", "B")
)
)
sex_ct
## , , Race = W
##
## Intercourse
## Gender Y N
## M 43 134
## F 26 149
##
## , , Race = B
##
## Intercourse
## Gender Y N
## M 29 23
## F 22 36
sex_ct_flip <-
array(
data =
c(
43, 29, 134, 23
,26, 22, 149, 36
)
,dim = c(2, 2, 2)
,dimnames = list(
Race = c("W", "B")
,Intercourse = c("Y", "N")
,Gender = c("M", "F")
)
)
sex_ct_flip
## , , Gender = M
##
## Intercourse
## Race Y N
## W 43 134
## B 29 23
##
## , , Gender = F
##
## Intercourse
## Race Y N
## W 26 149
## B 22 36
sex_data <- flatr::flatten_ct(sex_ct)
sex_summary <-
sex_data %>%
group_by(Race, Gender) %>%
mutate(Intercourse_Num = if_else(Intercourse == "Y", 1, 0 )) %>%
summarize(
Yes = sum(Intercourse_Num)
,No = length(Intercourse_Num) - Yes
,Total = Yes + No
)
sex_summary
## # A tibble: 4 x 5
## # Groups: Race [?]
## Race Gender Yes No Total
## <fctr> <fctr> <dbl> <dbl> <dbl>
## 1 B F 22 36 58
## 2 B M 29 23 52
## 3 W F 26 149 175
## 4 W M 43 134 177
sex_plot_data <-
sex_summary %>%
ungroup %>%
mutate(
Race = if_else(Race == "W", "White", "Black")
,Gender = if_else(Gender == "M", "Male", "Female")
,Yes = Yes/Total
,No = 1 - Yes
) %>%
dplyr::select(
-Total
) %>%
gather(
key = Intercourse
,value = `Sample Proportion`
,-Race
,-Gender
)
sex_plot_data %>%
ggplot(
aes(
x = Gender
,y = `Sample Proportion`
,fill = Intercourse
)
) +
geom_col(alpha = 0.75) +
facet_wrap(
~ Race
,nrow = 1
) +
scale_fill_brewer(
type = "qual"
,name = "Intercourse:"
,palette = "Set2"
) +
labs(
title = "Proportion of Persons who have had Intercourse by Gender"
,subtitle = "Conditional on Race"
)
sex_plot_data %>%
ggplot(
aes(
x = Race
,y = `Sample Proportion`
,fill = Intercourse
)
) +
geom_col(alpha = 0.75) +
facet_wrap(
~ Gender
,nrow = 1
) +
scale_fill_brewer(
type = "qual"
,name = "Intercourse:"
,palette = "Set2"
) +
labs(
title = "Proportion of Persons who have had Intercourse by Race"
,subtitle = "Conditional on Gender"
)
\[ H_{0}:\text{ Intercourse is independent of Gender, conditional on Race} \] \[ H_{1}:\text{ Intercourse is dependent on Gender, conditional on Race} \]
sex_cmh <- mantelhaen.test(sex_ct, correct = FALSE)
sex_cmh
##
## Mantel-Haenszel chi-squared test without continuity correction
##
## data: sex_ct
## Mantel-Haenszel X-squared = 8.3751, df = 1, p-value = 0.003804
## alternative hypothesis: true common odds ratio is not equal to 1
## 95 percent confidence interval:
## 1.229343 2.967939
## sample estimates:
## common odds ratio
## 1.910135
With a p-value of 0.0038, we reject the null hypothesis, and accept the alternative based on the sample.
\[ H_{0}:\text{ Intercourse is independent of Race, conditional on Gender} \] \[ H_{1}:\text{ Intercourse is dependent on Race, conditional on Gender} \]
sex_cmh_flip <- mantelhaen.test(sex_ct_flip, correct = FALSE)
sex_cmh_flip
##
## Mantel-Haenszel chi-squared test without continuity correction
##
## data: sex_ct_flip
## Mantel-Haenszel X-squared = 32.501, df = 1, p-value = 1.192e-08
## alternative hypothesis: true common odds ratio is not equal to 1
## 95 percent confidence interval:
## 0.1684817 0.4281210
## sample estimates:
## common odds ratio
## 0.2685713
With a p-value of 0, we reject the null hypothesis, and accept the alternative based on the sample.
logit_sex_01 <-
sex_data %>%
glm(
Intercourse ~ Race + Gender + Race:Gender
,family = binomial
,data = .
)
summary(logit_sex_01)
##
## Call:
## glm(formula = Intercourse ~ Race + Gender + Race:Gender, family = binomial,
## data = .)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.2773 -0.7461 -0.5672 1.0807 1.9528
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.4925 0.2706 -1.820 0.06878 .
## RaceW -1.2534 0.3441 -3.642 0.00027 ***
## GenderM 0.7243 0.3888 1.863 0.06251 .
## RaceW:GenderM -0.1151 0.4765 -0.241 0.80919
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 529.25 on 461 degrees of freedom
## Residual deviance: 491.74 on 458 degrees of freedom
## AIC: 499.74
##
## Number of Fisher Scoring iterations: 4
logit_sex_02 <-
sex_data %>%
glm(
Intercourse ~ Race + Gender
,family = binomial
,data = .
)
summary(logit_sex_02)
##
## Call:
## glm(formula = Intercourse ~ Race + Gender, family = binomial,
## data = .)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.2601 -0.7511 -0.5611 1.0969 1.9628
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.4555 0.2221 -2.050 0.04032 *
## RaceW -1.3135 0.2378 -5.524 3.32e-08 ***
## GenderM 0.6478 0.2250 2.879 0.00399 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 529.25 on 461 degrees of freedom
## Residual deviance: 491.79 on 459 degrees of freedom
## AIC: 497.79
##
## Number of Fisher Scoring iterations: 4
anova(logit_sex_02, logit_sex_01, test = "Chisq")
## Analysis of Deviance Table
##
## Model 1: Intercourse ~ Race + Gender
## Model 2: Intercourse ~ Race + Gender + Race:Gender
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 459 491.79
## 2 458 491.74 1 0.058349 0.8091
By doing a Likelihood Ratio Test between the model with an interaction term, and the model without, a p-value of 0.8091 is found. This fails to reject the null hypothesis of explaining equal amounts of variance, based on the sample. As such we can use the more parsimonious model.
Both the slope parameters are significant at \(\alpha=0.05\), based on the sample. A White person on average has an increased log likelihood in favour of having intercourse of -1.3135 vs. a Black person, based on the sample. A Male on average has an increased log likelihood in favour of having intercourse of 0.6478 vs. a Female, based on the sample.
marijuana_ct <-
array(
data =
c(
911, 44, 538, 456
,3, 2, 43, 279
)
,dim = c(2, 2, 2)
,dimnames = list(
Cigarette = c("Y", "N")
,Marijuana = c("Y", "N")
,Alcohol = c("Y", "N")
)
)
marijuana_ct
## , , Alcohol = Y
##
## Marijuana
## Cigarette Y N
## Y 911 538
## N 44 456
##
## , , Alcohol = N
##
## Marijuana
## Cigarette Y N
## Y 3 43
## N 2 279
marijuana_ct_flip <-
array(
data =
c(
911, 3, 538, 43
,44, 2, 456, 279
)
,dim = c(2, 2, 2)
,dimnames = list(
Alcohol = c("Y", "N")
,Marijuana = c("Y", "N")
,Cigarette = c("Y", "N")
)
)
marijuana_ct_flip
## , , Cigarette = Y
##
## Marijuana
## Alcohol Y N
## Y 911 538
## N 3 43
##
## , , Cigarette = N
##
## Marijuana
## Alcohol Y N
## Y 44 456
## N 2 279
marijuana_data <- flatr::flatten_ct(marijuana_ct)
marijuana_summary <-
marijuana_data %>%
group_by(Alcohol, Cigarette) %>%
mutate(Marijuana_Num = if_else(Marijuana == "Y", 1, 0 )) %>%
summarize(
Yes = sum(Marijuana_Num)
,No = length(Marijuana_Num) - Yes
,Total = Yes + No
)
marijuana_summary
## # A tibble: 4 x 5
## # Groups: Alcohol [?]
## Alcohol Cigarette Yes No Total
## <fctr> <fctr> <dbl> <dbl> <dbl>
## 1 N N 2 279 281
## 2 N Y 3 43 46
## 3 Y N 44 456 500
## 4 Y Y<PHONE_NUMBER>
marijuana_plot_data <-
marijuana_summary %>%
ungroup %>%
mutate(
`Alcohol Use` = if_else(Alcohol == "Y", "Yes", "No")
,`Cigarette Use` = if_else(Cigarette == "Y", "Yes", "No")
,Yes = Yes/Total
,No = 1 - Yes
) %>%
dplyr::select(
-c(
Alcohol
,Cigarette
,Total
)
) %>%
gather(
key = `Marijuana Use`
,value = `Sample Proportion`
,-`Alcohol Use`
,-`Cigarette Use`
)
marijuana_plot_data %>%
ggplot(
aes(
x = `Cigarette Use`
,y = `Sample Proportion`
,fill = `Marijuana Use`
)
) +
geom_col(alpha = 0.75) +
facet_wrap(
~ `Alcohol Use`
,nrow = 1
) +
scale_fill_brewer(
type = "qual"
,name = "Marijuana Use:"
,palette = "Set2"
) +
labs(
title = "Proportion of Persons with Marijuana Use by Cigarette Use"
,subtitle = "Conditional on Alcohol Use"
)
marijuana_plot_data %>%
ggplot(
aes(
x = `Alcohol Use`
,y = `Sample Proportion`
,fill = `Marijuana Use`
)
) +
geom_col(alpha = 0.75) +
facet_wrap(
~ `Cigarette Use`
,nrow = 1
) +
scale_fill_brewer(
type = "qual"
,name = "Marijuana Use:"
,palette = "Set2"
) +
labs(
title = "Proportion of Persons with Marijuana Use by Alcohol Use"
,subtitle = "Conditional on Cigarette Use"
)
\[ H_{0}:\text{ Marijuana Use is independent of Cigarette Use, conditional on Alcohol Use} \] \[ H_{1}:\text{ Marijuana Use is dependent on Cigarette Use, conditional on Alcohol Use} \]
marijuana_cmh <- mantelhaen.test(marijuana_ct, correct = FALSE)
marijuana_cmh
##
## Mantel-Haenszel chi-squared test without continuity correction
##
## data: marijuana_ct
## Mantel-Haenszel X-squared = 441.83, df = 1, p-value < 2.2e-16
## alternative hypothesis: true common odds ratio is not equal to 1
## 95 percent confidence interval:
## 12.58828 24.00445
## sample estimates:
## common odds ratio
## 17.38317
With a p-value of 0, we reject the null hypothesis, and accept the alternative based on the sample.
\[ H_{0}:\text{ Marijuana Use is independent of Alcohol Use, conditional on Cigarette Use} \] \[ H_{1}:\text{ Marijuana Use is dependent on Alcohol Use, conditional on Cigarette Use} \]
marijuana_cmh_flip <- mantelhaen.test(marijuana_ct_flip, correct = FALSE)
marijuana_cmh_flip
##
## Mantel-Haenszel chi-squared test without continuity correction
##
## data: marijuana_ct_flip
## Mantel-Haenszel X-squared = 76.464, df = 1, p-value < 2.2e-16
## alternative hypothesis: true common odds ratio is not equal to 1
## 95 percent confidence interval:
## 7.461745 46.632418
## sample estimates:
## common odds ratio
## 18.65367
With a p-value of 0, we reject the null hypothesis, and accept the alternative based on the sample.
logit_marijuana_01 <-
marijuana_data %>%
glm(
Marijuana ~ Alcohol + Cigarette + Alcohol:Cigarette
,family = binomial
,data = .
)
summary(logit_marijuana_01)
##
## Call:
## glm(formula = Marijuana ~ Alcohol + Cigarette + Alcohol:Cigarette,
## family = binomial, data = .)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.4077 -0.4292 -0.1195 0.9634 3.1449
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -4.9381 0.7096 -6.959 3.42e-12 ***
## AlcoholY 2.5998 0.7269 3.576 0.000348 ***
## CigaretteY 2.2755 0.9274 2.454 0.014143 *
## AlcoholY:CigaretteY 0.5895 0.9423 0.626 0.531576
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3099.3 on 2275 degrees of freedom
## Residual deviance: 2255.5 on 2272 degrees of freedom
## AIC: 2263.5
##
## Number of Fisher Scoring iterations: 7
logit_marijuana_02 <-
marijuana_data %>%
glm(
Marijuana ~ Alcohol + Cigarette
,family = binomial
,data = .
)
summary(logit_marijuana_02)
##
## Call:
## glm(formula = Marijuana ~ Alcohol + Cigarette, family = binomial,
## data = .)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.4069 -0.4324 -0.0993 0.9641 3.2601
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -5.3090 0.4752 -11.172 < 2e-16 ***
## AlcoholY 2.9860 0.4647 6.426 1.31e-10 ***
## CigaretteY 2.8479 0.1638 17.382 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3099.3 on 2275 degrees of freedom
## Residual deviance: 2255.8 on 2273 degrees of freedom
## AIC: 2261.8
##
## Number of Fisher Scoring iterations: 7
anova(logit_marijuana_02, logit_marijuana_01, test = "Chisq")
## Analysis of Deviance Table
##
## Model 1: Marijuana ~ Alcohol + Cigarette
## Model 2: Marijuana ~ Alcohol + Cigarette + Alcohol:Cigarette
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 2273 2255.8
## 2 2272 2255.5 1 0.37399 0.5408
By doing a Likelihood Ratio Test between the model with an interaction term, and the model without, a p-value of 0.5408 is found. This fails to reject the null hypothesis of explaining equal amounts of variance, based on the sample. As such we can use the more parsimonious model.
Both the slope parameters are significant at \(\alpha=0.05\), based on the sample. A person with Alcohol Use on average has an increased log likelihood in favour of Marijuana Use of 2.986 vs. a person without, based on the sample. A person with Cigarette Use on average has an increased log likelihood in favour of Marijuana Use of 2.8479 vs. a person without, based on the sample.
death_ct <-
array(
data =
c(
53, 11, 414, 37
,0, 4, 16, 139
)
,dim = c(2, 2, 2)
,dimnames = list(
Defendant = c("W", "B")
,Death = c("Y", "N")
,Victim = c("W", "B")
)
)
death_ct
## , , Victim = W
##
## Death
## Defendant Y N
## W 53 414
## B 11 37
##
## , , Victim = B
##
## Death
## Defendant Y N
## W 0 16
## B 4 139
death_data <- flatr::flatten_ct(death_ct)
death_summary <-
death_data %>%
group_by(Victim, Defendant) %>%
mutate(Death_Num = if_else(Death == "Y", 1, 0 )) %>%
summarize(
Yes = sum(Death_Num)
,No = length(Death_Num) - Yes
,Total = Yes + No
)
death_plot_data <-
death_summary %>%
ungroup %>%
mutate(
Victim = if_else(Victim == "W", "White", "Black")
,Defendant = if_else(Defendant == "W", "White", "Black")
,Yes = Yes/Total
,No = 1 - Yes
) %>%
dplyr::select(
-Total
) %>%
gather(
key = `Death Penalty`
,value = `Sample Proportion`
,-Victim
,-Defendant
)
death_plot_data %>%
ggplot(
aes(
x = Defendant
,y = `Sample Proportion`
,fill = `Death Penalty`
)
) +
geom_col(alpha = 0.75) +
facet_wrap(
~ Victim
,nrow = 1
) +
scale_fill_brewer(
type = "qual"
,name = "Death Penalty:"
,palette = "Set2"
) +
labs(
title = "Proportion of Defendants who Received the Death Penalty by Defendant's Race"
,subtitle = "Conditional on Victim's Race"
)
death_plot_data %>%
ggplot(
aes(
x = Victim
,y = `Sample Proportion`
,fill = `Death Penalty`
)
) +
geom_col(alpha = 0.75) +
facet_wrap(
~ Defendant
,nrow = 1
) +
scale_fill_brewer(
type = "qual"
,name = "Death Penalty:"
,palette = "Set2"
) +
labs(
title = "Proportion of Defendants who Received the Death Penalty by Victims's Race"
,subtitle = "Conditional on Defendants's Race"
)
logit_death <-
death_data %>%
glm(
Death ~ Victim + Defendant
,family = binomial
,data = .
)
summary(logit_death)
##
## Call:
## glm(formula = Death ~ Victim + Defendant, family = binomial,
## data = .)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.7283 -0.4899 -0.4899 -0.2326 2.6919
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.5961 0.5069 -7.094 1.30e-12 ***
## VictimW 2.4044 0.6006 4.003 6.25e-05 ***
## DefendantW -0.8678 0.3671 -2.364 0.0181 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 440.84 on 673 degrees of freedom
## Residual deviance: 418.96 on 671 degrees of freedom
## AIC: 424.96
##
## Number of Fisher Scoring iterations: 6
death_summary %<>%
cbind(
phat =
predict(
object = logit_death
,newdata = death_summary %>% dplyr::select(Victim, Defendant)
,type = "response"
) %>% t
) %>%
mutate(
Expected_Yes = Total*phat
,Expected_No = Total*(1-phat)
)
death_summary
## # A tibble: 4 x 8
## # Groups: Victim [2]
## Victim Defendant Yes No Total phat Expected_Yes Expected_No
## <fctr> <fctr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 B B 4 139 143 0.02669805 3.8178206 139.18218
## 2 B W 0 16 16 0.01138621 0.1821794 15.81782
## 3 W B 11 37 48 0.23296207 11.1821794 36.81782
## 4 W W 53 414 467 0.11310026 52.8178206 414.18218
death_chisq_gof <- flatr::goodness_of_fit(model = logit_death, type = "Chisq")
death_chisq_gof
##
## Chi-squared Goodness of Fit Test
##
## model: logit_death
## Chi-squared = 0.19779, df = 1, p-value = 0.65651
death_gsq_gof <- flatr::goodness_of_fit(model = logit_death, type = "Gsq")
death_gsq_gof
##
## G-squared Goodness of Fit Test
##
## model: logit_death
## G-squared = NA, df = 1, p-value = NA
Based on the sample, and the logistic regression found above, doing a \(\chi^{2}\) Goodness of Fit Test yields a p-value of 0.6565. Therefore we fail to reject the null hypothesis that the model fits the data and assume it to be true. A \(G^{2}\) Goodness of Fit Test can’t be used as no White Defendants with Black Victims were given the death penalty.
Both the slope parameters are significant at \(\alpha=0.05\), based on the sample. A Defendant with a White Victim on average has an increased log likelihood in favour of getting the death penalty of 2.4044 vs. a Black Victim, based on the sample. A White Defendant on average has an increased log likelihood in favour of getting the death penalty of -0.8678 vs. a Black Defendant, based on the sample.
lung_cancer_ct <-
array(
data =
c(
126, 35, 100, 61
,908, 497, 688, 807
,913, 336, 747, 598
,235, 58, 172, 121
,402, 121, 308, 215
,182, 72, 156, 98
,60, 11, 99, 43
,104, 21, 89, 36
)
,dim = c(2, 2, 8)
,dimnames = list(
Smoking = c("Y", "N")
,Lung = c("Y", "N")
,City =
c(
"Beij"
,"Shan"
,"Shen"
,"Nanj"
,"Harb"
,"Zhen"
,"Taiy"
,"Nanc"
)
)
)
lung_cancer_ct
## , , City = Beij
##
## Lung
## Smoking Y N
## Y 126 100
## N 35 61
##
## , , City = Shan
##
## Lung
## Smoking Y N
## Y 908 688
## N 497 807
##
## , , City = Shen
##
## Lung
## Smoking Y N
## Y 913 747
## N 336 598
##
## , , City = Nanj
##
## Lung
## Smoking Y N
## Y 235 172
## N 58 121
##
## , , City = Harb
##
## Lung
## Smoking Y N
## Y 402 308
## N 121 215
##
## , , City = Zhen
##
## Lung
## Smoking Y N
## Y 182 156
## N 72 98
##
## , , City = Taiy
##
## Lung
## Smoking Y N
## Y 60 99
## N 11 43
##
## , , City = Nanc
##
## Lung
## Smoking Y N
## Y 104 89
## N 21 36
lung_cancer_data <- flatr::flatten_ct(lung_cancer_ct)
lung_cancer_summary <-
lung_cancer_data %>%
group_by(City, Smoking) %>%
mutate(Lung_Num = if_else(Lung == "Y", 1, 0 )) %>%
summarize(
Yes = sum(Lung_Num)
,No = length(Lung_Num) - Yes
,Total = Yes + No
)
lung_cancer_plot_data <-
lung_cancer_summary %>%
ungroup %>%
mutate(
Smoking = if_else(Smoking == "Y", "Yes", "No")
,Yes = Yes/Total
,No = 1 - Yes
) %>%
dplyr::select(
-Total
) %>%
gather(
key = `Lung Cancer`
,value = `Sample Proportion`
,-City
,-Smoking
)
lung_cancer_plot_data %>%
ggplot(
aes(
x = Smoking
,y = `Sample Proportion`
,fill = `Lung Cancer`
)
) +
geom_col(alpha = 0.75) +
facet_wrap(
~ City
,nrow = 1
) +
scale_fill_brewer(
type = "qual"
,name = "Has Lung Cancer:"
,palette = "Set2"
) +
labs(
title = "Proportion of Persons with Lung Cancer by whether or not they Smoke"
,subtitle = "Conditional on City"
)
lung_cancer_plot_data %>%
ggplot(
aes(
x = City
,y = `Sample Proportion`
,fill = `Lung Cancer`
)
) +
geom_col(alpha = 0.75) +
facet_wrap(
~ Smoking
,nrow = 1
) +
scale_fill_brewer(
type = "qual"
,name = "Has Lung Cancer:"
,palette = "Set2"
) +
labs(
title = "Proportion of Persons with Lung Cancer by City"
,subtitle = "Conditional on whether or not they Smoke"
) +
theme(
axis.text.x = element_text(
angle = 45
,hjust = 0.5
,vjust = 0.5
)
)
logit_lung_cancer <-
lung_cancer_data %>%
glm(
Lung ~ City + Smoking
,family = binomial
,data = .
)
summary(logit_lung_cancer)
##
## Call:
## glm(formula = Lung ~ City + Smoking, family = binomial, data = .)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.3001 -1.2637 -0.9444 1.0935 1.7530
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.548682 0.118022 -4.649 3.34e-06 ***
## CityHarb 0.018187 0.129473 0.140 0.888
## CityNanc -0.054906 0.170996 -0.321 0.748
## CityNanj 0.005764 0.140911 0.041 0.967
## CityShan 0.055618 0.119570 0.465 0.642
## CityShen -0.027739 0.120071 -0.231 0.817
## CityTaiy -0.745683 0.185519 -4.019 5.83e-05 ***
## CityZhen 0.028782 0.144755 0.199 0.842
## SmokingY 0.777062 0.046775 16.613 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 11663 on 8418 degrees of freedom
## Residual deviance: 11358 on 8410 degrees of freedom
## AIC: 11376
##
## Number of Fisher Scoring iterations: 4
A Smoker on average has an increased log likelihood in favour of getting Lung Cancer of 0.7771 vs. a non-smoker, based on the sample.
lung_cancer_summary %<>%
cbind(
phat =
predict(
object = logit_lung_cancer
,newdata = lung_cancer_summary %>% dplyr::select(City, Smoking)
,type = "response"
) %>% t
) %>%
mutate(
Expected_Yes = Total*phat
,Expected_No = Total*(1-phat)
)
lung_cancer_summary
## # A tibble: 16 x 8
## # Groups: City [8]
## City Smoking Yes No Total phat Expected_Yes Expected_No
## <fctr> <fctr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Beij N 35 61 96 0.3661702 35.15234 60.84766
## 2 Beij Y 126 100 226 0.5568481 125.84766 100.15234
## 3 Harb N 121 215 336 0.3704013 124.45485 211.54515
## 4 Harb Y 402 308 710 0.5613312 398.54515 311.45485
## 5 Nanc N 21 36 57 0.3535232 20.15082 36.84918
## 6 Nanc Y 104 89 193 0.5432600 104.84918 88.15082
## 7 Nanj N 58 121 179 0.3675090 65.78412 113.21588
## 8 Nanj Y 235 172 407 0.5582700 227.21588 179.78412
## 9 Shan N<PHONE_NUMBER> 0.3791720 494.44035 809.55965
## 10 Shan Y<PHONE_NUMBER> 0.5705261 910.55965 685.44035
## 11 Shen N 336 598 934 0.3597564 336.01248 597.98752
## 12 Shen Y<PHONE_NUMBER> 0.5499925 912.98752 747.01248
## 13 Taiy N 11 43 54 0.2151149 11.61620 42.38380
## 14 Taiy Y 60 99 159 0.3734830 59.38380 99.61620
## 15 Zhen N 72 98 170 0.3728755 63.38883 106.61117
## 16 Zhen Y 182 156 338 0.5639384 190.61117 147.38883
lung_chisq_gof <- flatr::goodness_of_fit(model = logit_lung_cancer, type = "Chisq")
lung_chisq_gof
##
## Chi-squared Goodness of Fit Test
##
## model: logit_lung_cancer
## Chi-squared = 5.19987, df = 7, p-value = 0.63559
lung_gsq_gof <- flatr::goodness_of_fit(model = logit_lung_cancer, type = "Gsq")
lung_gsq_gof
##
## G-squared Goodness of Fit Test
##
## model: logit_lung_cancer
## G-squared = 5.1958, df = 7, p-value = 0.63608
Based on the sample, and the logistic regression found above, doing a \(\chi^{2}\) Goodness of Fit Test yields a p-value of 0.6356. Therefore we fail to reject the null hypothesis that the model fits the data and assume it to be true.
Based on the sample, and the logistic regression found above, doing a \(G^{2}\) Goodness of Fit Test yields a p-value of 0.6361. Therefore we fail to reject the null hypothesis that the model fits the data and assume it to be true.


Enter In A Sentence
Which Word Would You Like To Replace
What Would You Like To Replace It With
Submit


THE FACULTY OF MODERN LANGUAGES
THE FACULTY TEAM 1999-2000
Mrs M. Mathews, Head of Faculty - F/T Spanish/French
Mrs. C. Csemiczky, Teacher with Special Responsibilities - F/T French/Spanish
Mrs. D. Entwistle P/T (0.8) French/Spanish
Mr. A.M. Harling - F/T Spanish/French
Mrs. M. Lawrence P/T - (0.5) French
Mr. M. Jenkins Head of Year 11 F/T French/PSE
Mrs. C Jones P/T/ - (0.5) French/Spanish
Mr. N. Morgan F/T- Spanish/French/IT
Mrs. P. Rentería F/T - Spanish/French
Mrs. P Watts P/T (0.5) - French/ Spanish
Mlle Christelle Marot - P/T Assistante Française
Srta. Cenaida Alvis Barranco - P/T Lectora española


About Me
My name is Sarah Crites. I am 20 years old and a Sophomore at Loyola University Chicago. I was trained as a Face Painter in 2013 at Six Flags Great America. Since I moved to Chicago for school I have started face painting at kids' parties, youth events, and school carnivals to help pay for school and because I absolutely love it.
Pricing
Pricing is negotiable and depends on factors such as:
- Availability
- Distance
- Ease of Travel
- Size of Event
- Age of Guests
- Special Requests
The base rate before special accommodations is $20/hour.
Portfolio
My portfolio is constantly growing as I find new designs and think of new ideas, so keep checking back!
Click here to see more pictures!Contact Me
By email<EMAIL_ADDRESS>Or by phone:<PHONE_NUMBER>


Use this command to turn window tabs on or off. These are a row of tabs that appear at the top (or bottom) of the main HexEdit screen, one for each open window.
Window tabs allow you to easily switch to any open window. Right-click any tab to select from a context menu performing commands on the file. Hover the mouse over the tab to se the full path of the file.
Turn off tabs to use other window arrangements like Tile Vertically command, Tile Horizontally command, and Cascade command.


%include templates/parts/head.html
%include templates/parts/navBar.htmlEXAMS
Midterm
Friday, February 9th
In-class
Final
[Date]
[Time]
STAFF
ANNOUNCEMENTS
Hello! Tiny feedback (as inspired by a previous 106B professor Chris Gregg) is available starting today!
As instructors, we constantly strive to improve our lectures and the class as a whole. We provide anonymous "Tiny Feedback" opportunities to the class after each lecture, and the feedback helps us guage how CS 106AP is going on a bit more personal level.
We very much appreciate constructive feedback, and we want to know what is working and what you would like to see us do differently. We will read every piece of feedback and make every attempt to improve the course as the quarter progresses.
Feedback form
We will begin taking your preferences at 5:00 PM on Thursday, January 11, 2018. Note that signups will then close at 5:00 PM on Sunday, January 14, 2018. If you do not sign up during the regular period, the limited selection for late signups may make it impossible for you to enroll in a CS106 class. So please make sure to submit your preferences by the deadline.
Section signup linkWelcome to CS106AP! We are looking forward to a fun quarter. Class starts Monday, January 8th at 1:30pm in Herrin T175.


Hurting Hewitt pans Davis Cup scheduling after Australia eliminated
MADRID (Reuters) - Australia captain Lleyton Hewitt criticised the scheduling at the revamped Davis Cup Finals after his team lost 2-1 to Canada in the quarter-finals on Thursday.
Australia, playing their third match in successive nights, lost Nick Kyrgios to a collarbone injury before the quarter-final and faced a Canadian team who has a day off on Wednesday.
“The scheduling is a big problem,” twice Grand Slam champion Hewitt told reporters.
“You know, for us to have had to play these three nights in a row, it’s not ideal.
“Yeah, I understand it’s the first time and you’re going to have hiccups and you’ve got to learn from it. But there’s been a lot of small problems, that’s for sure.”
After a two-month break, Kyrgios had been in fine form in Madrid, bashing down 22 aces in a straight sets victory over Steve Darcis late on Wednesday to help Australia beat Belgium and reach the last eight.
But the 24-year-old pulled up sore on Thursday and was replaced by Jordan Thompson, who lost in straight sets to Vasek Pospisil in the opening singles rubber.
“I think (the injury) was similar to what he had at Laver Cup time,” Hewitt said of Kyrgios’s collarbone problem.
“That’s just the way the cards fell. It’s been pretty tough I guess trotting back out the last three nights as well.

Hewitt has been a vocal critic of the revamp of the 119-year-old tournament that originally had home and away ties played throughout the year.
Defeat, however, was no less difficult for the 38-year-old, who holds Australia’s record for Davis Cup ties and wins as a player.

“The format changed but we still came here to give absolutely everything we could, and we did that.
“So, yeah, we’re all hurting at the moment. But it just shows that it means something, which is good.”


--- date: 2010-06-08T00:00:00Z published: true title: Misreading Tehran – By Reza Aslan, Abbas Milani, Azar Nafisi, and others | Foreign Policy url: /2010/06/08/misreading-tehran-by-reza-aslan-abbas-milani-azar-nafisi-and-others-foreign-policy/ ---
With a full 12 months now between us and the election, the time is ripe to start revisiting the hype and hope in a year of writing: which stories were overblown, what stories were missed entirely, and what can be gleaned about Iran's annus horribilis from a more thorough understanding. FP asked seven prominent Iranian-Americans, deeply immersed in both the English- and Persian-language media, to look through the fog of journalism at what actually happened in Tehran -- and why so many of us got it so wrong.


Pratap Prasuti Grih is an infertility & A.R.T research, Thoracic and Laproscopic surgery center based in Bikaner of Rajasthan, India. It is being managed and run by eminent medical practitioners having special qualifications in IVF, Infertility, Gynae Endoscopy, Obstetrics and laproscopy. The hospital is installed with all the modern equipments required for specialities we provide.
We specialize in each and every aspect of infertility and provide comprehensive services in IUI, IVF, IVF - egg donation, embryo donation, surrogate motherhood, male infertility, natural infertility treatments, semen banking and embryo freezing.
The hospital is being managed under the supervision of Dr. Vikram Singh Tanwar, who hails from a family of eminent doctors in the realm of Gynaecology, Obstetrics and infertility. He is being assisted by his mother Dr. Pushpa Tanwar and wife Dr. Suman Kanwar, both specializing in Gynaecology and Obstetrics. Here is a list of Conferences and Scientific Paper Presentations by these eminent and reputed doctors.


sdl2.ext.window - Window routines to manage on-screen windows¶
Window routines to manage on-screen windows.
-
class
sdl2.ext.window.
Window
(title, size, position=None, flags=None)¶ Bases:
object
A visible on-screen object with an optional border and title text.
It represents an area on the screen that can be accessed by the application for displaying graphics and receive and process user input.
-
DEFAULTFLAGS
= 8¶
-
DEFAULTPOS
= (536805376, 536805376)¶
-
__init__
(title, size, position=None, flags=None)¶ Create a Window with a specific size and title.
The position to show the Window at is undefined by default, letting the operating system or window manager pick the best location. The behaviour can be adjusted through the DEFAULTPOS class variable:
Window.DEFAULTPOS = (10, 10)The created Window is hidden by default, which can be overridden at the time of creation by providing other SDL window flags through the flags parameter.
The default flags for creating Window instances can be adjusted through the DEFAULTFLAGS class variable:
Window.DEFAULTFLAGS = sdl2.video.SDL_WINDOW_SHOWN-
window
¶ sdl2.SDL_Window – The used SDL_Window.
-
-
get_surface
()¶ Get the SDL_Surface used by the Window to display 2D pixel data.
Using this method will make the usage of GL operations, such as texture handling, or using SDL renderers impossible.
Returns: sdl2.SDL_Surface
-
hide
()¶ Hide the window.
-
maximize
()¶ Maximize the window to the display’s dimensions.
-
minimize
()¶ Minimize the window to an iconified state in the system tray.
-
refresh
()¶ Refresh the entire window surface.
This only needs to be called, if a SDL_Surface was acquired via get_surface() and is used to display contents.
-
show
()¶ Show the window on the display.
-
size
¶ The size of the window.
-
title
¶ The title of the window.
-


Hello, you are registered!!!!
You'll get stackOverflow notifications (unread) every 10 minutes in messenger now!
(If you're active enough to have any :D)


ROLE OF WOMEN IN HOMEGOING
Women are seen as destruction and pain. Effia is seen as a curse. When Effia is born on the night of a powerful fire that destroys much of her family’s livehood. It leads her father to believe that his family had just been cursed for generations. Effia’s father Cobbe Otcher leaves Effia with his wife, Baaba, to survey his yams, which have been damaged. He is hunted by the sight of the fire, Cobbe tells Baaba never to speak of what happened that day.
Expected to follow everything they are told even if its against their will. As Effia matures and becomes increasingly beautiful, her mother, Baaba, continually beats and abuses her. When she is mature enough to start menstruating Baaba tells her to keep the fact between the two of them. Effia agrees, even though she knows that her chances of becoming a bride to the handsome new tribal chief, Abeeku, who has been interested in her ever since she was a child, would increase if he knew she had matured. Her chances of becoming his wife are ended when she finds herself accidentally present at a meeting between Abeeku and the white governor of the region, James Collins. We also see Cobbe commanding Baaba to love Effia after Cobbe dreams of living Effia in the dark forest.
Abiding by the rules. Esi is kept in the dungeons below the castle with so many other women that they can barely move, covered in their own waste and starving.
Mistreatment. When Cobbe comes home and discovers what happened, he and Baaba fight into the night, and he beats her for the cruel way she treated Effia. This begins a cycle, Baaba beats Effia, Cobbe beats Baaba. This cycle of beating also demonstrates how women experience violence at the hands of men and women.
Being loved. Esi was the beautiful daughter of an important man in her village, a wise and powerful warrior. She was treated with love and tenderness of her mother Maame and with pride by her father, and eventually learned that her mother was chosen by her father to be his wife in spite of her having had a troubled history, about which no-one will tell her. Eventually, and upon her father’s insistence, Esi’s mother took a young female prisoner into the family home.
Fear. When Effia meets the soldier, she hides behind Cobbe’s leg, as she has never seen a white man before. Cobbe and Baaba show him their compound, explaining that each wife has her own hut that she shares with her children. The man’s eyes grow wide, finally understanding that the huts are where they live.
Male-centric. The family structure is extremely male-centric. The men have more freedom in their marriages by being able to move wherever they want within the compound and marry several women, while the women are limited to a single hut and a single man. When Effia choose Abeeku to marry, other young people in the village recognizes the importance of marrying for power or status.
Women are meant to be seen and not heard. When the dinner begins, Effia asks if Abeeku will work for the British. Her parents glare at her for speaking out of turn, but Abeeku smiles at her. He tells her he will work with the British, facilitating trade between the British and the Asantes. Effia nods and stays quiet, which she notes pleases Baaba. She has come to realize that Baaba prefers to remain silent and wants Effia to do the same.
The role of women in the society
Women are now allowed to choose their marriage partners who they can share their whole life with, stay single if they want, join sisterhood.
Women are being allowed to speak up in the society.
Women are being given the opportunity for leadership.
Women are being embraced into the Information Technology sector.
Noah


ABOUT ME
The text area below will display relevant information, such as errors and hints.
Enter a valid SQL statement in the text area below:
The results will show below this text:


'tis I, the frenchiest fry
The Dark Crystal | Summer Wars | Big Fish | Moonrise Kingdom | The Last Mimzy
Kids of Appetite | Greenglass House | Paper Towns | The Outsiders | The Little Prince | Into the Wild
Bone | Seconds | Lost at Sea | Barbarous | Kiwi Blitz


KILLER: A JOURNAL OF MURDER A film review by Steve Rhodes Copyright 1996 Steve Rhodes
RATING (0 TO ****): **
Writer and first time director Timothy Metcalfe takes one of the original books on serial killers by Thomas E. Gaddis and James O. Long and turns it into a dreary tale of the friendship of a vicious murderer and a big hearted guard. If you can focus on the story itself and ignore the plodding pacing, at its heart KILLER: A JOURNAL OF MURDER is a fascinating tale.
In a true story set in the Leavenworth federal penitentiary in 1929, the great and explosive actor James Woods plays Carl Panzram. In the 1920s Carl was arguably the era's most vicious killer. He slaughtered twenty-one men, women, and children and spent his entire life in and out of prison. Since some of the places where he killed people did not have the death penalty he managed to escape so he could kill again. Not until he killed a federal prison guard did he get the hangman's noose.
In a film where Oliver Stone is the executive producer, you may not be surprised to find that the victims in this movie get short shrift. The inhumane treatment that Carl gets is featured instead. The focus is on Carl and the young Jewish guard Henry Lesser played by Robert Sean Leonard. Henry's father taunts him with, "Whoever heard of a Jewish prison guard?"
As soon as Carl enters Leavenworth, he and his new fellow inmates are lectured by the warden with, "I didn't send for you. I don't like you and I don't want any more of you." The guards, except the new guard Henry, are out to get Carl from the beginning.
Henry has an unfailing belief in the inner goodness of everyone, even Carl. He even goes into Carl's cell and puts down his nightstick which irritates Carl since he thinks that it is such reckless behavior in front of someone with his proclivity to senseless violence.
Carl is not permitted to have a pencil and paper, but Henry smuggles them in and out every night so that Carl can write his autobiography. The film tells in flashback the story of Carl's past life intertwined with his current predicament.
When the story moves back to Leavenworth, it bogs down in Henry's little pious pronouncements about how society is to blame for the men in the prison and how reform is possible. Carl will have none of this, and he asks Henry if he is a red, to which Henry nods yes but keep it quiet. Carl believes in the inner meanness of some man regardless of any reform. The flashbacks have him more a victim that a criminal, but do show some of the damage he has done.
Perhaps the best sequence in the show is when Carl is at a prison earlier in his career when a reform minded warden comes in to whom the inmates give the nickname of Spud.  He lets Carl out of the prison during the day solely because he is reputed to be the worse prisoner there. You can take a guess as to the success of that little experiment.
The acting by Woods is quite good, but far from his best. Leonard seems out of his depth and gives a lackluster and never convincing performance. The other characters are all caricatures. Notice, for example, how all of the wardens are beefy guys who smoke big cigars, and the guards all sinewy. Only Henry looks like a wimp.
The main problem with the show is the surprisingly slow pace set by the director. How he takes such naturally controversial material and a high spirited actor like Woods and manages to craft such a low energy show is a conundrum. The only answer I have is that he views the book on which it is based so reverentially that he wants his audience to have the time to fully ponder the subtleties in its every meanings.
My favorite part of the show is the CATCH 22 style paradox about executing serial killers. If they demand to be killed by the state, they risk the chance of being declared ipso facto insane, and, therefore, unfit to have their wish carried out. As Carl puts it, "I don't want to be alive. I want out of these clothes. I want out of this body. I want out of this world." Later he goes on to say, "You created me.
KILLER: A JOURNAL OF MURDER runs 1:31, but trust me, it feels like a three hour movie. It is rated R for brutal violence including one scene of a guy's skull being crushed where most of the audience had to look away. There is also bad language and a rape scene. This show would be okay only for quite mature teenagers. Although the story is interesting and Woods gives a compelling performance, watching it all is such an arduous task that I can not bring myself to recommend it. For Woods' work in it, I do give it **.
**** = One of the top few films of this or any year. A must see film. *** = Excellent show. Look for it. ** = Average movie. Kind of enjoyable. * = Poor show.  Totally unbearable.
REVIEW WRITTEN ON: September 13, 1996
Opinions expressed are mine and not meant to reflect my employer's.
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