As a part of the GameStop account at Publicis Sapient, I worked with GameStop’s Customer Engagement Team to improve the user experience of their online loyalty program & user account flows within their consumer-facing website.
My team was asked to surface UX issues, highlight high-impact areas for improvement and provide design recommendations to address painpoints throughout the end-to-end experience.
Experience Designer @ Publicis Sapient
Feb 2021 - June 2021
Adobe XD, MURAL
Lauren Ip (me!), Tucker Williams, Suresh Babu Sri Ram
But as the world has gone more and more digital, accelerated by the pandemic, GameStop has struggled to keep up with its competitors in meeting the changing demands of a tech-savvy, digital-first consumer base.
As part of GameStop’s digital transformation effort, my team was asked to help their Customer Engagement Team redesign their currently outdated website, conceptualize designs for new areas of business, and consult on ways to improve overall customer experience.
I collaborated with the Customer Engagement team on three main areas of work:
I was the primary UX designer for the survey design, and most of the website redesign pages (customer service & account, with secondary contribution to the loyalty pages). I worked closely with a UX Lead and visual designer to put these page redesigns together, and communicated frequently with our PM’s and developers regarding requirements and feedback. I also contributed high-fidelity concept work for the e-sports and mobile app.
Throughout the project, we worked with our stakeholders and a research team to better understand GameStop’s consumer base. They presented us with findings from user interviews conducted online and in-store, through which we were able to understand overall customer sentiment towards certain website features and the GameStop brand as a whole.
We also used quantitative data garnered from market research surveys to understand general market trends and consumer behaviour patterns.
With limited time and resources to spare, our stakeholders were initially focused on banging out features that were considered low-effort, but relatively high return.
One of the first designs I worked on was a customer satisfaction survey flow, an important part of the marketing communication journey that would allow Gamestop to receive valuable feedback from customers about their purchase and shopping experience.
Balancing ease of completion with generating enough quality information was an important consideration. I designed the initial email to be short and sweet, yet honest about why we were collecting feedback. I suggested we display the customer’s most recent purchase to help jog their memory but also also personalize the experience, making it easier and more meaningful for customers to give a rating.
We then gave GameStop’s account, loyalty, and customer service pages a UI refresh to make them feel lighter, cleaner, and more modern-looking. This included updating colours, font styles, buttons, form field interactions, error states and other components in correspondence with GameStop's constantly evolving design system.
With each page we pushed to make quick but powerful UX improvements where we could, making the website more usable, useful and desirable. We aimed to simplify the experience yet bring focus to the actions that we wanted users to take. And we wanted to make the experience more intelligent by using data in a meaningful way.
Improving online customer service resources was a priority for the GameStop team. One of our business goals was to improve the self-serve experience for customers while making it easy to reach a GameStop customer service rep when assistance was needed.
The current FAQ page required a huge overhaul as it felt clunky and disorganized with an overwhelming amount of information. I drew up a couple of low-fidelity options and then worked with a visual designer to produce higher-fidelity screens. We decided to use an accordion format to display the most relevant Q&As for each topic, which would be curated by the content team based on FAQ data from current customers.
We called for emphasis on predictive search functionality, and showed how the results might be displayed. Finally, we added a bold section at the bottom to call attention to Customer Care in case customers needed further assistance.
For Contact Us, we simplified the submission form and provided more context around response time and available methods of contact.
We followed a similar design process as the FAQ and Contact Us screens. First, we worked with our product team to define business goals, user goals, and uncover any constraints. I’d conduct light competitive analysis where applicable, then dive into design exploration. After a few rounds of feedback I turned them into high-fidelity designs for developer handoff.
Address Book (above)
Saved Credit Cards (above)
Personal Data (above, 1): Displayed information as individual editable fields (rather than a persistent form), under the assumption that personal information shouldn’t change very often.
Change Password (above, 2): Displayed password requirements upfront so users know what they are beforehand. Also proposed showing conditional feedback while users type.
Order History (above, 3): Improved the visual styling and layout to produce a cleaner, more cohesive look and enhance readability.
I was also asked to help polish designs for the loyalty program pages, including Rewards Activity, Rewards Center, and Active Offers. Aside from the same visual refresh as the Account pages, we implemented a few key features including a Filter/Sort function, displaying the type of reward (Online-only, in-store only), and the ability to quickly “Copy Code” for offer redemption.
After shipping all these quick-fix designs, we were finally given the go-ahead to explore opportunity areas beyond our initial scope by looking at the experience more holistically. We took this time to work with GameStop to uproot deeper problems and conceptualize design solutions.
I helped deliver a massive site-wide audit of the account creation and loyalty engagement process conducted across GameStop’s mobile web, desktop, and in-store experiences. Part of this audit included collaborating on a service blueprint to document the current flow of front-end and back-end stages of the business.
We captured UX/UI issues, development issues, and pinpointed areas of opportunity for GameStop to increase engagement or conversion. We presented our findings and resulting recommendations to GameStop leadership.
One of the larger problems we tried to tackle was the navigational structure within the account pages. We set up a Treejack study (card sorting exercise) that would help us figure out the best way to redesign the information architecture.
We also used GameStop’s Qualtrics software briefly to monitor specific user sessions, and see how loyalty members interacted with the website while signed into their account. This allowed us to discover UX issues or bottlenecks in the conversion process and understand how users actually went about completing tasks.
Beyond the current e-commerce website, we were involved in creating concepts for how GameStop might introduce a potential e-sports platform to engage new audiences. We did some competitive analysis and drew inspiration from other brands, such as Smash.gg, Macherino, and Pepper. I ended up delivering an e-sports landing page and event page design that played around with visuals, brand image and content.
Later we were also asked to help reimagine a new, sleek look and feel for their mobile app. We were given the freedom to revamp the entire app from the ground up, so we explored everything from new features, to navigational structure and microinteractions. We used mobile apps from Xbox, Best Buy, and Amazon as inspiration. When it came to the high-fidelity designs, my work focused primarily on the account/profile screens and interactions with a digital wallet.
Overall, the work we delivered for GameStop was quite impactful. My account page redesigns (totalling over 60 screens) were shipped and went live soon after handing them off to our developers. I was proud to see how quickly our team was able to put something out for consumers to see, despite the many back and forths we had with the product owners and engineering team.
The audit we delivered helped kickstart a discussion amongst GameStop leadership to revamp their loyalty program and customer engagement strategy. It showed them how much work still needed to be done from more than just a visual UI standpoint. And while our concept designs for e-sports and mobile app were not yet realized by the time I left the project, we received a ton of positive feedback from our client about the work.
Designing for GameStop was a very execution-focused process, with little time to think and much more pressure to produce. My design team worked hard to evangelize UX research, but it was often a struggle to truly incorporate it into our design process. Strategic decisions, like that of tackling quick fixes versus solving deeper problems, seemed to be made much higher up in the organization. Despite our low level of influence in the proverbial pecking order, I learned to really lean into my role as the field expert and consultant - handling client objections, vouching for the user, and advising on UX strategy as best we could, in the hopes that we could spark greater discussion about more transformative efforts in the future.
Throughout the project, I was witness to a constant churn of people and change of executive leadership. And with this change in leadership often came a change of vision and direction, which of course impacted the day-to-day flow of our design work. It required us to stay on our toes, to be flexible and highly adaptable in such a dynamic environment. It also taught me not to get too attached to my designs!
We collaborated with GameStop’s internal design team to ensure that the website redesigns matched the most recent version of their digital rebranding effort, which included updates to their design system. The challenge was that the design system was constantly evolving, with the rebranding work being done concurrently to our work. There was a lot of back and forth communication required in order to get everyone aligned on the same page. I learned how to work fast and efficiently in an agile process, but also how to communicate effectively and accurately with multiple players, including developers, product managers and other designers.


For three ultra-marathoners, NYC is the icing on the cake
NEW YORK CITY -- For most of us, 26.2 miles is a lot. But what about running 150 miles?
Three brothers started running 3 days ago and are topping it off with the TCS NYC Marathon.
Kemberly Richardson has more.


--- layout: post title: My Yahoo! WSDL Endpoint revisited with WCF date: 2008-02-22 16:03:02.000000000 +01:00 categories: [] tags: [] status: draft type: post published: false meta: _edit_last: '1' author: login: pvlerick email<EMAIL_ADDRESS>display_name: Philippe first_name: Philippe last_name: Vlérick excerpt: !ruby/object:Hpricot::Doc options: {} ---
In a "previous post":/2008/02/a-wsdl-file-for-yahoo-rest-api, I made an adapter in order to offer a WSDL endpoint to Yahoo! REST Api.
In this post, I will transform my solution in order to use "Windows Communication Foundation":http://netfx3.com/content/WCFHome.aspx to expose the endpoint (as WSDL again, but as you may know, it is easy to change the way endpoint are exposed with WCF.
h3. Windows Communication Foundation
WCF is based on "ABC":
* _Address_ : where the message can be sent
* _Binding_ : how to send the message (Tcp, Http, Named Pipes, MSMQ...)
* _Contract_ : what is exposed to the outside world


Function
| Static Public Summary | ||
| public |
CLI(argv: String[], stdout: WritableStream): Promise Entry point of the CLI. |
|
| public |
Create a comment list. |
|
| public |
Convert the WordPress's post to Markdown. Design and implementation was in reference to the npm to-markdown. |
|
| public |
ConvertShortCode(text: *): String Convert the WordPress's shotcode to Markdown. |
|
| public |
Download the linked image from Markdown and rewrite the link. |
|
| public |
async WordPressXmlToMarkdown(src: String, dest: String, options: CLIOptions): Promise Conver WordPress XML file to Markdown files. |
Static Public
public CLI(argv: String[], stdout: WritableStream): Promise source
import CLI from 'wpxml2md/src/bin/cli.js'
Entry point of the CLI.
Params:
| Name | Type | Attribute | Description |
| argv | String[] | Arguments of the command line. |
|
| stdout | WritableStream | Standard output. |
Test:
public Comment(src: Object[]): String source
import Comment from 'wpxml2md/src/lib/comment.js'
Create a comment list.
Params:
| Name | Type | Attribute | Description |
| src | Object[] | Comments (wp:comment). |
public Convert(post: String, modes: Modes): String source
import Convert from 'wpxml2md/src/lib/converter.js'
Convert the WordPress's post to Markdown. Design and implementation was in reference to the npm to-markdown.
public ConvertShortCode(text: *): String source
import ConvertShortCode from 'wpxml2md/src/lib/shortcode.js'
Convert the WordPress's shotcode to Markdown.
Params:
| Name | Type | Attribute | Description |
| text | * |
public async ImageLinkReplacer(markdown: String, dir: String, basename: String, logger: Logger): Promise source
import ImageLinkReplacer from 'wpxml2md/src/lib/image-link-replacer.js'
Download the linked image from Markdown and rewrite the link.
Test:
public async WordPressXmlToMarkdown(src: String, dest: String, options: CLIOptions): Promise source
import WordPressXmlToMarkdown from 'wpxml2md/src/lib/wpxml2md.js'
Conver WordPress XML file to Markdown files.
Params:
| Name | Type | Attribute | Description |
| src | String | Path of the WordPress XML file. |
|
| dest | String | Path of Markdown files output directory. |
|
| options | CLIOptions | Options. |


My Cinema
Register
Movies
Username
*
Password
*
Join My Cinema today and get 1 week free! Cancel Anytime!
Current Releases


| Time | Company name | Adress | Index | Phone | Type of letter |
|---|---|---|---|---|---|
| 21.10,17 | "OOO Voshod" | Russia, Vladivostok, Habarovskaya 25 | 344-051 | 8-800-555-35-35 | Banderolle with keys |
| 21.10,17 | "OOO Voshod" | Russia, Vladivostok, Habarovskaya 25 | 344-051 | 8-800-555-35-35 | Banderolle with keys |
| 21.10,17 | "OOO Voshod" | Russia, Vladivostok, Habarovskaya 25 | 344-051 | 8-800-555-35-35 | Banderolle with keys |
| 21.10,17 | "OOO Voshod" | Russia, Vladivostok, Habarovskaya 25 | 344-051 | 8-800-555-35-35 | Banderolle with keys |
| 21.10,17 | "OOO Voshod" | Russia, Vladivostok, Habarovskaya 25 | 344-051 | 8-800-555-35-35 | Banderolle with keys |
| 21.10,17 | "OOO Voshod" | Russia, Vladivostok, Habarovskaya 25 | 344-051 | 8-800-555-35-35 | Banderolle with keys |
| 21.10,17 | "OOO Voshod" | Russia, Vladivostok, Habarovskaya 25 | 344-051 | 8-800-555-35-35 | Banderolle with keys |
| 21.10,17 | "OOO Voshod" | Russia, Vladivostok, Habarovskaya 25 | 344-051 | 8-800-555-35-35 | Banderolle with keys |
| 21.10,17 | "OOO Voshod" | Russia, Vladivostok, Habarovskaya 25 | 344-051 | 8-800-555-35-35 | Banderolle with keys |
| 21.10,17 | "OOO Voshod" | Russia, Vladivostok, Habarovskaya 25 | 344-051 | 8-800-555-35-35 | Banderolle with keys |
| 21.10,17 | "OOO Voshod" | Russia, Vladivostok, Habarovskaya 25 | 344-051 | 8-800-555-35-35 | Banderolle with keys |


Until now, you have learned about class and objects. In this chapter, you will expand your knowledge to an advanced level.
You are already introduced with inheritance in OOP chapter. So, let's make a subclass of a superclass.
#include <iostream>
#include <string>
using namespace std;
class Student //base class
{
string name;
public:
string getName()
{
return name;
}
void setName( string n )
{
name = n;
}
void printAbout()
{
cout << "I am a student" << endl;
}
};
class Undergraduate : public Student //derived class
{
public:
void printAbout()
{
cout << "I am an Undergraduate" << endl;
}
};
int main()
{ Student s;
Undergraduate u;
s.printAbout();
u.printAbout();
return 0;
}
I am an Undergraduate
There is no need to explain anything in the 'Student' class.
class Undergraduate : public Student - 'Undergraduate' is the name of a class which is a subclass or derived class of the 'Student' class.
Both classes are having functions with the same name - 'printAbout'. But the definitions (or statements) of the functions are different. These type of functions are called polymorphic functions.
Execution of 'printAbout' from 's' ( object of 'Student' class ) will print "I am a Student." while from 'u' ( object of 'Undergraduate' class ) will print "I am an Undergraduate."
Thus, the objects of each of these classes are calling their respective printAbout function.
So, here Student is a base class or parent class and Undergraduate is a derived class or child class.
Before going further, let's learn more about the protected modifier.
Protected
Any protected member of a class ( variable or function ) can be accessed within that class or its subclass. It cannot be accessed outside that.
Let's see an example.
#include <iostream>
#include <string>
using namespace std;
class Student //base class
{
protected:
string name;
public:
void setName( string n )
{
name = n;
}
};
class Undergraduate : public Student //derived class
{
public:
void printName()
{
cout << name << endl;
}
};
int main()
{ Undergraduate u;
u.setName("xyz");
u.printName();
return 0;
}
In this example, 'Student' is the parent class and 'Undergraduate' is its child class.
In the 'Student' class, we made name protected. So, it can be accessed directly within its subclass 'Undergraduate'. And we did the same. We accessed the name variable directly in the function printName of its subclass.
Now, let's see what is happening in this example.
We first created an object u of the subclass Undergraduate. Since an object of a subclass can access any of the members of its parent class, so u called the function setName of its parent class with a string parameter "xyz". This string got assigned to the variable 'name' thus making the value of 'name' as "xyz" for the object 'u'.
'u' then called the function 'printName' which printed the value of 'name' i.e., xyz.
Now, let's see what would happen if we try to call a member function of a subclass by the object of the parent class.
#include <iostream>
#include <string>
using namespace std;
class Student //base class
{
protected:
string name;
public:
void setName( string n )
{
name = n;
}
};
class Undergraduate : public Student //derived class
{
public:
void printName()
{
cout << name << endl;
}
};
int main()
{
Student s;
s.setName("xyz");
s.printName();
return 0;
}
s.printName();
1 error generated.
The above code is giving us error. This is because 's' is an object of the 'Student' class and we are trying to call the function 'printName' of the class 'Undergraduate' by the object of its parent class 'Student' which is invalid.
Here is an example showing the same.
#include <iostream>
using namespace std;
class C1
{
public:
C1(){}
protected:
void m1()
{
cout << "This is protected function of superclass" << endl;
}
};
class C2 : public C1
{
public:
C2(){}
void m2()
{
m1();// Since m1 is a protected function of C1, therefore it can be called in its subclass (C2)
}
};
int main()
{
C1 s;
C2 a;
a.m2();/* 'a' an object of C2 can access m2( public function of C2)*/
// s.m2() Remove this from comment and you will get an error because 's' is an object of superclass can't access function 'm2' of subclass
// a.m1() This will also generate an error because m1 is a protected function of C1 and so cannot be called outside C1 or its subclass(C2)
return 0;
}
Subclass with constructor
We can normally have constructors for both base and derived class to initialize their respective members. The constructor of the derived class can call the constructor of the base class, but the inverse is not true. Let's see how.
Calling base class constructor having no parameter
If the base class constructor has no parameter, then it will be automatically called by the compiler whenever the derived class constructor will be called, even if we do not explicitly call it.
Look at the following to understand it.
#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout << "Constructor of A" << endl;
}
};
class B : public A
{
public:
B()
{
cout << "Constructor of B" << endl;
}
};
int main()
{
B b;
return 0;
}
Constructor of B
While calling the constructor of any class, the compiler first automatically calls the constructor of its parent class. This is the reason that while calling the constructor of class B, the compiler first called the constructor of its parent class A and then the constructor of B. Thus when the constructor of 'B' was called, the compiler first called the constructor of 'A' thus printing "Constructor of A" and after that "Constructor of B".
Let's see another example where the constructor of the parent class gets automatically called first.
#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout << "Constructor of A" << endl;
}
};
class B : public A
{
public:
B()
{
cout << "Constructor of B" << endl;
}
};
class C : public B
{
public:
C()
{
cout << "Constructor of C" << endl;
}
};
int main()
{
cout << "Creating object of A :" << endl;
A a;
cout << "Creating object of B :" << endl;
B b;
cout << "Creating object of C :" << endl;
C c;
return 0;
}
Constructor of A
Creating object of B :
Constructor of A
Constructor of B
Creating object of C :
Constructor of A
Constructor of B
Constructor of C
Here, when the object of A was created, its constructor was called, printing "Constructor of A".
When the object of B was created, the compiler first called the constructor of its parent class 'A', printing "Constructor of A" and after that printing "Constructor of B".
Similarly, when the constructor of C was called on creating its object, first the constructor of its parent class 'B' was called. On calling the constructor of 'B', the constructor of 'A' got called printing "Constructor of A" followed by "Constructor of B". At last, "Constructor of C" got printed.
Calling parameterized base class constructor
Unlike parent class constructors having no parameter, parameterized parent class constructors are not called automatically while calling its child class constructor.
To call a parent class constructor having some parameter form the constructor of its subclass, we have to use the initialization list of its subclass. Let's see how.
#include <iostream>
using namespace std;
class A
{
public:
A( int l )
{
cout << "Length : " << l << endl;
}
};
class B : public A
{
public:
B() : A(20)
{
cout << "This is constructor of B" << endl;
}
};
int main()
{
B b;
return 0;
}
This is constructor of B
As in the above example, a parameterized constructor of a class is called from its subclass by writing it in the initialization list with its argument written within brackets.
In this example, when we created an object b of the class B, the constructor 'B' got called. Since the constructor of 'A' is written in its initialization list, the constructor of 'A' got called first with a value 10 passed as its argument.
Thus, its parameter l became equal to 10 and the body of the constructor of 'A' got executed. After that the body of the constructor of 'B' got executed.
Let's see one more example.
#include <iostream>
using namespace std;
class A
{
int l1;
public:
A( int z ) : l1(z)
{
cout << "l1 : " << l1 << endl;
}
};
class B : public A
{
int l2;
public:
B( int x, int y ) : A(x), l2(y)
{
cout << "l2 : " << l2 << endl;
}
};
int main()
{
B b( 5, 10 );
return 0;
}
l2 : 10
In this example, we passed the values 5 and 10 to the constructor of class B while creating its object. So the values 5 and 10 got assigned to x and y respectively.
In the initializer list of the constructor of 'B', the value of 'x' i.e. 5 got passed as the argument of the constructor of 'A' and the value of 'l2' became 10.
Again, the constructor of 'A' first got called making the value of 'l1' as 5. After the body of 'A' got executed, the compiler went back to the body of the constructor of 'B' and executed it.
Let's see one more example of printing the area and perimeter of a rectangle.
#include <iostream>
using namespace std;
class Rectangle
{
int length;
int breadth;
public:
Rectangle( int l, int b )
{
length = l;
breadth = b;
}
int getArea()
{
return length * breadth;
}
int getPerimeter()
{
return 2*( length + breadth );
}
};
class Square : public Rectangle
{
public:
Square( int a ) : Rectangle( a, a )
{ }
};
int main()
{
Square s(2);
int area, p;
area = s.getArea();
p = s.getPerimeter();
cout << "Area : " << area << endl;
cout << "Perimeter : " << p << endl;
return 0;
}
Perimeter : 8
We know that square is also a rectangle with the same length and breath. This is what we did in the constructor of 'Square'.
We created an object 's' of class 'Square' and passed 2 at the time of creating it. So, this 2 will be passed to the constructor of class Square. Hence, the value of 'a' will be 2.
In the initialization list of the constructor of 'Square', constructor of its superclass 'Rectangle' is being called with the value of 'a' as 2, thus making the value of both its length and breadth equal to 'a' i.e. 2.
Finally, in the main function, we used the object 's' of the class Square to call two functions of its parent class Rectangle getArea and getPerimeter
Practice everytime you get a chance.
-Bill Monroe


Glossary of termsedit
If you’d like to see a term defined here, use the "Edit" link to the right. See Site Corrections.
- alias
- A pointer to one or more indices. See Index Aliases in the official Elasticsearch documentation for more information.
- bloom
- This refers to a Bloom filter cache. A Bloom filter can be used to speed up answers in a key-value storage system. Beginning with version 1.4, Elasticsearch no longer uses a Bloom filter cache for search operations.
- command
- An operation to perform on one or more indices or snapshots. See Commands.
- subcommand
- A command which is nested, or comes after, a prior command. See Subcommands.
- time-unit
-
One of
hours
,days
,weeks
, ormonths
. When acting on time-series indices, the --time-unit is used for time calculation. - timestring
-
A Python strftime string to match your index
definition. 2014.07.15 would be
%Y.%m.%d
. See --timestring.


{% load base_tags wagtailcore_tags %} {% get_site_root as site_root %} {% is_nightmode as nightmode %}
You have enabled night mode in your profile, you can turn it off there
Copyright © University of Warwick Computing Society. Website built by David Richardson. Powered by Django.


_mocha_end
The command frees all allocated resources in mocha. This command is not visible to the user. It is used to implement the command quit, which is visible.


viz module¶
Available methods:
interpolate_raster: interpolates raster from data points using ordinary kriging.
interpolate_raster()
¶
pyinterpolate.viz.interpolate_raster(
data,
dim=1000,
number_of_neighbors=4,
semivariogram_model=None)
Function interpolates raster from data points using ordinary kriging.
INPUT:
data: (numpy array / list)
[coordinate x, coordinate y, value]
,dim: (int) number of pixels (points) of a larger dimension (it could be width or height),
number_of_neighbors: (int) default=16, number of points used to interpolate data,
semivariogram_model: (TheoreticalSemivariance) default=
None
, Theoretical Semivariogram model, if not provided then it is estimated from a given dataset.
OUTPUT:
(
numpy array
)
[
numpy array of interpolated values,
numpy array of interpolation errors,
[pixel size, min_x, max_x, min_y, max_y]
]


--- layout: post title: GiardiaDB 30 Released category: [GiardiaDB] ---
We are pleased to announce the release of GiardiaDB 30


Sask. government paid Kannick family $72,500 to settle lawsuit
by Alex MacPherson, Saskatoon StarPhoenixThe lawsuit was settled last year and while the terms are protected by a confidentiality agreement the figure is captured in public records.
The provincial government paid $72,500 to the estate of a 21-year-old woman who died while on remand four years ago as part of an out-of-court settlement of a lawsuit filed by her family.
Breanna Kannick’s family and the Ministry of Corrections and Policing reached the settlement late last year. The details are protected by a confidentiality agreement that prevents both sides from discussing them.
However, the single lump sum payment to her estate through the law firm retained by her family, Yorkton, Sask.-based Rusnak Balacko Kachur Rusnak (RBKR), is captured in the 2018-19 public accounts, which list all government expenditures.
Shane Wagner, the RBKR lawyer who represented Kannick’s mother, Sherri Chartrand, said in an email that he was not in a position to comment on any settlement. The government likewise declined to comment.
Kannick died on Aug. 20, 2015 while on remand at the White Birch Remand Unit in Regina. A subsequent inquest into her death heard that she was suffering opioid withdrawal, and asked to see a doctor more than once.
In May, following 10 days of testimony and five and a half hours of deliberations, the inquest jury ruled Kannick’s death accidental and provided 10 recommendations aimed at preventing similar deaths in the future.
A year earlier, her family sued the government, alleging the province and 11 people working at the facility “failed in their duties to take reasonable steps to ensure that Breanna was reasonably safe upon the premises.”
The parties announced the settlement in November 2018, but did not disclose the amount.
“We are pleased to see this process come to a close and sincerely hope the family and friends of Ms. Kannick are able to find some closure after this tragedy,” a spokesman for the ministry told the Regina Leader-Post at the time.
<EMAIL_ADDRESS>twitter.com/macphersona


Projects
Save The Link - Web Application
Developed a single page web application in the React Riot 2017 Hackathon that save your favourite links online.
- Used ReactJS and React Material Components
- Used Firebase on backend.
ngDownloader - Web Application
Developed a single page web application in the Angular Attack 2017 Hackathon that gives the download links of the videos.
- Used AngularJS, KendoUI for frontend.
- Used youtube-dl, Amazon AWS API Gateway and Amazon AWS Lamda function on backend.
- Winner of Angular Attack in Utility/Fun Category
Developed a single page web application to learn AngularJS 1 that gives the list of products based on search query using Flipkart API.
Backend Source Code
Backend Source Code
Developed a To-Do list web application which runs on the browser. Used the HTML5 local storage so that the to-do list persists even after the page is refreshed.
File explorer which runs on the browser. The file structure reside completely on the browser-end and user is able to create, edit and delete files on this virtual file system.
Amazon Alexa Skill Kit that will update you about the current and future programming contest available on different websites like codeforces, codechef and hackerrank. You can ask questions like When is the codefoces next contest.
Amazon Store | Built for Amazon Alexa Skills Challenge on Devpost | My Submission
Amazon Store | Built for Amazon Alexa Skills Challenge on Devpost | My Submission
Amazon Alexa Skill Set that will tell you the details of the nearby restaurant. You can search for Restaurant by saying, Tell me the restaurant nearby Vaishali Nagar.
Ex "Alexa, ask food helper Tell me the restaurant nearby Vaishali Nagar" or "Alexa, ask food helper Tell me the restaurant nearby Jaipur"
Ex "Alexa, ask food helper Tell me the restaurant nearby Vaishali Nagar" or "Alexa, ask food helper Tell me the restaurant nearby Jaipur"
Amazon Alexa Skill Kit will help you to get info about any topic or tell details about famous persons. You can ask questions like Tell me something about water, tell me something about google or who is Mark Zuckerberg.
Amazon Store Link | Built for Amazon Hack Your World on Mindsumo
Amazon Store Link | Built for Amazon Hack Your World on Mindsumo
Developed a personal portfolio page using HTML, CSS, and the Bootstrap framework. The page is fully responsive and works on mobile, tablet, and desktop browsers.
Using jQuery, developed an interactive resume application that reads all data from a JSON file and then dynamically modifies the DOM to display the information.
Developed a HTML5 Canvas powered video game, developed using the best practices in Object Oriented JavaScript. The goal of the player is to reach the water.
Optimized an inefficient web application's JavaScript, CSS and assets delivery, ensuring it runs at 60fps and achieves a PageSpeed score of at least 90 on both mobile and desktop.
Developed a single-page web application, built using the Knockout framework, that displays a Google Map of an area and various points of interest. Users can search landmarks.
Wrote comprehensive unit tests, using the Jasmine testing framework, for an RSS Feed Reader application that uses Google's RSS API so that we can check that it works correctly.
Application that takes the name of the person and tells the details of the person (from Wikipedia) using the Google Web Speech API.
Designed an Android Application for learning of C language with the presence of ease. Built using Android Studio.
Developed an application that retrieves the data from facebook profile using Facebook Javascript SDK and generates a ID Card.


WITNESS LIST Business & Industry Committee March 23, 1999-2:00P HB 23 For: Jones III, Luther G. (Self) HB 450 For: Hill, John E. (AARP) HB 537 For: Alexander, Mary (Self) DeLord, Ronald (Combined Law Enforcement Association of Texas) Gladden, Wilhelmina (AARP) Ross, James (Jim) L. (Self) Theriot Jr., Van (Self) Against: Barnes, Ronald E. (SITEL Corp.) Calvert, Tom (MCI World Com.) Camillo, John R. (J.C. Penny Life Insurance Co.) Erwin, John (Self and west Teleservices) Glenn, Eric (Tx Association of Business & Chambers of Commerce) Jewell, Mike (AT&T) Payne, Tyson (Self and Texas Association of Life Underwriters) Plaut, Jeffery (Self) Pollard, Mike (Texas Association of Life & Health Insurers) Thompson, Jay (TALHI) On: Borgett, Roger (OAG-- Consumer Protection Division) Tiede, Saralee (Public Utility Commision) HB 548 On: Tiede, Saralee (Public Utility Commission) HB 756 For: Boggins, Joseph C. (TX Society of Association Executives) Floyd, Robert A. (TX Society of Association Executives) Sissom, Joe (Self) HB 2420 For: Pollard, Mike (TX Association of Life & Health Insurers) Stinson, Bill (TX Association of Realtors)


PJM 5-bus system
Calculation time: Brute froce approach
Calculation time: Heuristic - brute froce approach
118-bus system


Guess the number of circles that I have..
It is probably between 0 and 10 for each color
Guess blue circles..
Guess red circles..
See the results


Background
I would lack what one would call professional experience, the extent of my knowledge came from the classroom and what i could learn from my own independent learning. What little experience i have is made up for with my determination and my drive to learn more and become a proper game developer. The current project i have completed is known as Retrogun it will of course be considered an indie title.
It was a simple game meant to wet the appetite. It was the very first game i published on my own and it certainly wont be my last. This was a simple shooting guessing game that was meant to be enjoyed when one is simply trying to kill time. My future projects will be shown here and will have a link so that anyone that likes could see the progress I make.
learn more


{# #}
{{ basic_information['title']|default('Untitled work') }} by {{ basic_information['composer']|default('Unknown composer') }}.
Time signature of {{ preamble['time_signature'] }}, key signature of {{ preamble['key_signature'] }}, tempo of {{ preamble['tempo']|default('no tempo specified') }}
Music, both hands, a bar at a time, beat by beat
Play entire score


This is the metameta using the answers to the individual dorm row metas:
| Dorm | Answer |
|---|---|
| Baker House | APOLLO |
| Burton-Conner | BUDDY CURRY |
| MacGregor House | WHITE FANG |
| Maseeh Hall | RICHARD THE FIRST |
| McCormick Hall | SPICE TWICE |
| New House | RAINBOW |
| Next House | PRANCER |
We are given an audio clip containing a series of pop songs. The fact that each of them abruptly cuts off in the middle of a line suggests finding the word immediately after the stop (this is also suggested by the reference to musical chairs, in which the music’s stopping point is very important). The songs and cut-off words are listed below:
| Time | Song | Artist | Cut-off word |
|---|---|---|---|
| 0:00–0:04 | It Ain’t Me | Kygo & Selena Gomez | Growing |
| 0:04–0:07 | Fury of the Storm | Dragonforce | Fury |
| 0:07–0:11 | Can I Be Him | James Arthur | Unbroken |
| 0:11–0:16 | Will the Circle Be Unbroken? | Many artists, version is from Bioshock Infinite soundtrack | Unbroken |
| 0:16–0:22 | Follow the Leader | Eric B. & Rakim | Fury |
| 0:22–0:28 | Take Me to Church | Hozier | High |
| 0:28–0:29 | Take Me Home, Country Roads | John Denver | Growing |
| 0:29–0:36 | Baby It’s Cold Outside | Many artists, version by Idina Menzel and Michael Bublé | Roar |
| 0:36–0:44 | Young, Dumb & Broke | Khalid | High |
| 0:44–0:46 | Bohemian Rhapsody | Queen | Family |
| 0:46–0:55 | ME! | Taylor Swift | Winter |
| 0:55–1:01 | See You Again | Wiz Khalifa ft. Charlie Puth | Family |
| 1:01–1:09 | Here Comes the Sun | The Beatles | Winter |
| 1:09–1:23 | Roar | Katy Perry | Roar |
Each of the seven unique cut-off words appears exactly twice among the 14 clips, confirming that they are relevant. From googling all these words together or recognizing the reference (“Winter is Coming” is probably the most famous), we find that each of them is part of the house words of one of the seven Westeros houses in the Song of Ice and Fire books / Game of Thrones TV series. (This is also hinted by the flavor, as "musical chairs" is a "Game of Thrones" and "western rows" is phonetically similar to Westeros.) Each of these houses’ sigils can be associated with a dorm answer, as follows:
| Cut-off word | House | House words | Sigil | Dorm answer | Explanation |
|---|---|---|---|---|---|
| Growing | Tyrell | Growing Strong | Rose | SPICE TWICE | Spice Twice is a variety of rose |
| Fury | Baratheon | Ours is the Fury | Stag | PRANCER | Prancer is one of Santa’s reindeer |
| Unbroken | Martell | Unbowed, Unbent, Unbroken | Spear piercing a sun | APOLLO | Apollo is the Greek sun god |
| High | Arryn | As High as Honor | Falcon against a moon | BUDDY CURRY | Buddy Curry played for the Atlanta Falcons |
| Roar | Lannister | Hear Me Roar! | Lion | RICHARD THE FIRST | Richard I is also known as “the Lionheart” |
| Family | Tully | Family, Duty, Honor | Trout | RAINBOW | Rainbow is a variety of trout |
| Winter | Stark | Winter is Coming | Direwolf | WHITE FANG | White Fang is a fictional wolf(dog) |
The final step is to use the lengths of each of the clips, each of which is an exact integer number of seconds. This is also slightly hinted at by one of the clips being extremely short (Take Me Home, Country Roads) as well as the musical chairs theming (since you walk around the chairs for the length of the music). We index these lengths into the dorm answers:
| Time | Length (seconds) | Cut-off word | Dorm answer | Indexed letter |
|---|---|---|---|---|
| 0:00-0:04 | 4 | Growing | SPICE TWICE | C |
| 0:04-0:07 | 3 | Fury | PRANCER | A |
| 0:07-0:11 | 4 | Unbroken | APOLLO | L |
| 0:11-0:16 | 5 | Unbroken | APOLLO | L |
| 0:16-0:22 | 6 | Fury | PRANCER | E |
| 0:22-0:28 | 6 | High | BUDDY CURRY | C |
| 0:28-0:29 | 1 | Growing | SPICE TWICE | S |
| 0:29-0:36 | 7 | Roar | RICHARD THE FIRST | D |
| 0:36-0:44 | 8 | High | BUDDY CURRY | R |
| 0:44-0:46 | 2 | Family | RAINBOW | A |
| 0:46-0:55 | 9 | Winter | WHITE FANG | G |
| 0:55-1:01 | 6 | Family | RAINBOW | O |
| 1:01-1:09 | 8 | Winter | WHITE FANG | N |
| 1:09-1:23 | 14 | Roar | RICHARD THE FIRST | S |
Dorm row needs to CALL EC’S DRAGONS (a pun on Khaleesi, the title of Daenerys Targaryen, who owns some dragons; EC is how the MIT dorm East Campus is often called) to warm themselves up!


The project describes how climate change has affected our sonic- environment observation
The Graphs presents the experience of transforming related sounds of past and present in the city of Glarus into analyzing graphs and numbers by data.
Choose your own destination listed in below and Click to explore data for the sonic soundscape of Glarus :


Union Station is an Amtrak railroad station and mixed-use commercial building in downtown Erie, in the U.S. state of Pennsylvania. The Lake Shore Limited provides passenger service between Chicago, New York City, and Boston; Erie is the train's only stop in Pennsylvania. The station's ground floor has been redeveloped into commercial spaces, including The Brewerie at Union Station, a brewpub. The building itself is privately owned by the global logistics and freight management company Logistics Plus and serves as its headquarters.
The first railroad station in Erie was established in 1851 but was replaced with the Romanesque Revival-style Union Depot in 1866. Through a series of mergers and acquisitions by competing railroad companies which started not long after the establishment of Erie's first railroads, Union Depot became jointly owned and operated by the New York Central and Pennsylvania railroads. To meet the changing needs of the rapidly growing city, planners designed a more modern structure to replace the original depot. The new Art Deco Union Station, dedicated on December 3, 1927, was the first railroad station of that style in the United States.
While Union Station was busy from its opening and through World War II, passenger rail service began to dwindle after the war when air and highway travel became more popular. By the 1960s, the New York Central drastically cut service, while the Pennsylvania abandoned service to Erie altogether. Both railroads were merged in 1968 to form Penn Central, and passenger rail was transferred from Penn Central to Amtrak in 1971. At one point, from 1972 to 1975, even Amtrak service in Erie was suspended. With reduced demand for train travel, Union Station was neglected and allowed to decay until Logistics Plus bought it in 2003. Since then it has been restored, with portions re-purposed as commercial and retail space.


Package frc.robot.subsystems
Class DriveTrain
- java.lang.Object
-
- frc.lib5k.loops.loopables.LoopableSubsystem
-
- frc.robot.subsystems.DriveTrain
-
public class DriveTrain extends LoopableSubsystem
DriveTrain is the only class to not buffer it's outputs. We are currently waiting on pr #1691 before this is implemented.
-
-
Field Summary
Fields Modifier and Type Field Description boolean
is_moving
boolean
is_turning
static DriveTrain
m_instance
-
Fields inherited from class frc.lib5k.loops.loopables.LoopableSubsystem
last_timestamp, name
-
-
Constructor Summary
Constructors Constructor Description DriveTrain()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
arcadeDrive(double speed, double rotation)
The standard wrapper around WPIlib's joystick-based drive functionvoid
arcadeDrive(double speed, double rotation, boolean is_inputs_squared)
The standard wrapper around WPIlib's joystick-based drive function with optional input scalingvoid
cheesyDrive(double speed, double rotation, boolean is_quick_turn)
Wrapper around 254's drive interface.static DriveTrain
getInstance()
Get the current DriveTrain instanceint
getLeftGearboxTicks()
Get the number of ticks recorded by the left GearBox's encoderint
getRightGearboxTicks()
Get the number of ticks recorded by the right GearBox's encodervoid
outputTelemetry()
void
raiderDrive(double speed, double rotation)
Drive the robot with artificial acceleration and gear shiftingvoid
rawDrive(double l, double r)
Directly drive the gearboxes.void
reset()
void
setBrakes(boolean on)
Enables or disables brake mode on all drivebase talonsvoid
stop()
void
tankDrive(double l, double r)
A passthrough to WPILib's TankDrive method-
Methods inherited from class frc.lib5k.loops.loopables.LoopableSubsystem
periodicInput, periodicOutput
-
-
-
-
Field Detail
-
m_instance
public static DriveTrain m_instance
-
is_moving
public boolean is_moving
-
is_turning
public boolean is_turning
-
-
Method Detail
-
getInstance
public static DriveTrain getInstance()
Get the current DriveTrain instance- Returns:
- DriveTrain instance
-
arcadeDrive
public void arcadeDrive(double speed, double rotation)
The standard wrapper around WPIlib's joystick-based drive function- Parameters:
speed
- Forward speed (from -1.0 to 1.0)rotation
- Rotation of robot (from -1.0 to 1.0)
-
raiderDrive
public void raiderDrive(double speed, double rotation)
Drive the robot with artificial acceleration and gear shifting- Parameters:
speed
- Forward speed (from -1.0 to 1.0)rotation
- Rotation of robot (from -1.0 to 1.0)
-
arcadeDrive
public void arcadeDrive(double speed, double rotation, boolean is_inputs_squared)
The standard wrapper around WPIlib's joystick-based drive function with optional input scaling- Parameters:
speed
- Forward speed (from -1.0 to 1.0)rotation
- Rotation of robot (from -1.0 to 1.0)is_inputs_squared
- Should WPIlib try to scale the inputs
-
cheesyDrive
public void cheesyDrive(double speed, double rotation, boolean is_quick_turn)
Wrapper around 254's drive interface. The "turning" stick controls the curvature of the robot's path rather than its rate of heading change. This helps make the robot more controllable at high speeds. Also handles the robot's quick turn functionality - "quick turn" overrides constant-curvature turning for turn-in-place maneuvers.- Parameters:
speed
- Forward speed (from -1.0 to 1.0)rotation
- Rotation of robot (from -1.0 to 1.0)is_quick_turn
- Is quick turn functionality enabled?
-
tankDrive
public void tankDrive(double l, double r)
A passthrough to WPILib's TankDrive method- Parameters:
l
- Left speedr
- Right speed
-
rawDrive
public void rawDrive(double l, double r)
Directly drive the gearboxes. This should only be used wile motion profiling- Parameters:
l
- Left speedr
- Right speed
-
setBrakes
public void setBrakes(boolean on)
Enables or disables brake mode on all drivebase talons- Parameters:
on
- Should the brakes be enabled?
-
getLeftGearboxTicks
public int getLeftGearboxTicks()
Get the number of ticks recorded by the left GearBox's encoder- Returns:
- Number of ticks
-
getRightGearboxTicks
public int getRightGearboxTicks()
Get the number of ticks recorded by the right GearBox's encoder- Returns:
- Number of ticks
-
outputTelemetry
public void outputTelemetry()
- Specified by:
outputTelemetry
in classLoopableSubsystem
-
stop
public void stop()
- Specified by:
stop
in classLoopableSubsystem
-
reset
public void reset()
- Specified by:
reset
in classLoopableSubsystem
-
-


Hello Lorem
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard
Lorem Ipsum, Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem pune 411048


So this is what "tile efficiency" meant!
Back to OCs
Back to Home
おはよう
1
2
3
4
5
6
7
Chapter 1
Chapter 2
Chapter 3
Chapter 4
Chapter 5
Chapter 6
Chapter 7


Billiat Brace Good Timing For Chiefs…
by Soccer LadumaHaving not scored for Kaizer Chiefs for almost two months, Khama Billiat’s brace for Zimbabwe this week could bode well for the Amakhosi’s trophy ambitions…
Read: Bafana Coach To Finally Get Contract After AFCON Qualifiers?
Billiat’s last goal for the Glamour Boys came back in September when he helped them to a 2-0 win over AmaZulu in the Absa Premiership, and was only his fourth goal for the club in 2019 so far.
Now though, on the back of scoring two goals in his nation’s 2021 African Cup of Nations 2-1 victory over Zambia, Ernst Middendorp will be hoping that the attacker comes back with a spring in his step ahead of Sunday’s crucial Telkom Knockout semi-final against Maritzburg United.
Read: Bafana Hopeful Bags Euro Brace
Both of Billiat’s goals were set up by former Chiefs frontman, Knowledge Musona, with the Zimbabwean attacker scoring a header after a corner from the ‘Smiling Assassin’ before the Anderlecht forward set up the Amakhosi man for a winner towards the end of the game.
You can check out the game highlights in the video below:
Do you think Billiat can get back on the scoresheet against Maritzburg this weekend?


| Details | |
|---|---|
| Name | {{ employee.name }} |
| Team | |
| Address | {{employee.addresses[0]}} |
| BoD | {{employee.birthPlace}}, {{employee.birthDate | date}} |
| RFID | {{employee.rfid}} |
| Identity | {{employee.identityType}} : {{ employee.identityNo }} |
| Phone | {{employee.phones[0]}} |
| {{employee.email}} | |
| Status | {{ employee.status === 'a' ? 'Active' : employee.status === 's' ? 'Suspended' : '-' }} |


AppearanceConfiguration
public final class AppearanceConfiguration
An object used to customize the appearance of the UI components provided by this SDK.
Note that AppearanceConfiguration
is only used when the CheckoutViewController
is first initialized. Changes to this object after it has been created are ignored.
-
Initializes the appearance configuration.
Declaration
Swift
public init()
-
The preferred status bar style.
Declaration
Swift
public var preferredStatusBarStyle = UIStatusBarStyle.default
-
The attributes used for the navigation bar’s title.
Declaration
Swift
public var navigationBarTitleTextAttributes: [String: Any]?
-
The navigation bar’s tint color.
Declaration
Swift
public var navigationBarTintColor: UIColor?
-
The navigation bar’s background color.
Declaration
Swift
public var navigationBarBackgroundColor: UIColor?
-
A Boolean value indicating whether the navigation bar is translucent.
Declaration
Swift
public var isNavigationBarTranslucent = true
-
The image of the cancel button in the navigation bar, or
nil
if a title should be used instead.Declaration
Swift
public var navigationBarCancelButtonImage: UIImage?
-
The attributes used for the checkout button’s title.
Declaration
Swift
public var checkoutButtonTitleTextAttributes: [String: Any]?
-
The insets from the edges of the checkout button to the title.
Declaration
Swift
public var checkoutButtonTitleEdgeInsets: UIEdgeInsets?
-
The corner radius of the checkout button.
Declaration
Swift
public var checkoutButtonCornerRadius: CGFloat = 0.0
-
The tint color for most buttons and actionable elements.
Declaration
Swift
public var tintColor: UIColor?
-
Returns an instance of the default appearance configuration.
Declaration
Swift
public static var `default`: AppearanceConfiguration =


The Candy Maze is an activity adventurous children will love. Kids will be first given a vest that indicates where they are located within the maze. There is a screen that is used to monitor the location of the children. The vest includes a built-in microphone so that they can be rescued if they call for help. If a child makes it to the end of the maze, he/she is rewarded with a candy bar of his/her choice.
The Trampoline Paradise is something all kids will enjoy! The trampoline isn’t just your ordinary trampoline, it is made of gelatinous plastic in the shape of a chocolate bar! Children playing are completely safe because the entire floor of the trampoline room is bouncy. The whole entire family could even join in on the fun; who doesn’t like to trampoline?
Tired of boring normal candy? Don't be stultified anymore with this acitvity where children can be creative cooks. Children will be able to add a variety of toppings on a camamel apple: spinkles, chocolate bits, nuts, icing, hot fudge, cherries, chocolate chips, and whip cream.
Chewy Fish Galore is an activity where children will be given a pole to fish with. But, they wont be fishing for ordinary fish, they are fishing for chewy candied fish that is colored red! At the end of the pole, there is a net to make fishing easier for the children. And parents can help their children fish while bonding over with each other.
Two players will be standing on a stump and will be given a hefty marshmallow stick (Don’t worry, the marshmallow stick is soft and can't hurt a fly). The goal of the game is to knock each other off the stump and into a pit of jello. The winner gets a candy of bar of his/her choice.
The Pool Park is where everyone can have fun as a family! The depth of the pool varies from 1 ft. – 4ft. The children will be provided a safety vest if needed. The water is made of chocolate milk and the park is full of slides. There is also a wave pool for bigger kids and games like, water polo, capture the chocolate bar (a candy spin off of capture the flag), and marco polo are offered.
This is a kid's dream and a dentist's worst nightmare. The sweet shack is a snack-bar that is stocked with only the finest sweets from around the world. Enjoy delicate truffles and fine chocolate, indulge in golden caramel and sebaceous pastries. The sweet shack is one of main attractions and is not included in normal packaged deals. You wont want to miss out on this; make sure you check off Unlimited Snack-bar Access when you book your party.


My friend, nothing exists here. Some would call this a “404” error.
Please, do not be afraid. You are not alone.
I’ll guide you out of here.
Click here. That is your path out of here.
If you find yourself here again, I will be here for you.
As this is my sole purpose in life.
I guide souls to a salvation I cannot attain.
Good luck, my friend.
Let misfortune always chase you but never catch up.


DBC has us working on and understanding the way in which we learn. Early on, we took a few quizzes for self-reflection and I found out I was a concrete-random learner. In laymen's terms, the way in which I learn is to focus on the "here and now" and to categorize these pieces of information into chunks. This allows me to have a randomness to my learning - starting in the middle of a list of instructions for example, and using my intuition to figure out how it starts and finishes.
One of the ways in which this is helpful is that I find myself always using a trial-error method. When I see the cause and effect of one change, I'm able to infer how it actually works better than if it's just simply explained to me. The drawback of this is that I can spend insane amounts of time tinkering with something and making very little progress just because I find it "interesting". This is where time-blocking becomes my friend. By setting aside a limited amount of time to tinker, I can move away from challenges that might take too long and absorb too much productivity.
Another way in which my concrete random learning style affects my learnings at DBC is that I find myself making simple errors. Missing a bracket there, missing a quotation mark in another place. This is because I work on multiple things at once instead of going through problems in a linear fashion. A couple ways I've been able to combat this is to get really good at analyzing the error messages and being diligent with debugging/running tests anytime I make a change. Secondly, pairing has been incredibly helpful for someone to spot-check my syntax.
As I become more aware of where I lack, I can choose to embrace the growth mindset and look for opportunities to grow. When I look at Anthony Gregorc's "Mind Styles", I find myself drawn to the sequential mode of thinking and learning as something that I can continue to develop in. This means embracing the orderly and methodical and following directions in a predictable manner. This can be done during each of the challenges and exercises we are given by reading the directions and instructions thoroughly before working on the solution. This can also be done by reading through the book and resources page by page, instead of skimming through various parts. This will help solidify my knowledge and supplement where I may lack understanding in certain subject matters.


Report Designer &
HelloWorld Sample walkthrough
ContentsOverview
Segment
#1 - Creating a Report in Report Designer
Segment
#2 - Consuming Report from PHP using SSRSReport SDK
This document provides setup documentation, step-by-step instructions, and a written script for showing the PHP sample application which uses SSRSReport Library to consume SQL Server Reporting Service.
This demo is aimed to show the reporting capabilities of SQL Server 2008 and the usage of SSRSReport Library to consume those capabilities.
1.
You will learn how to open, create and deploy
SQL Server Reporting Services reports using Report Designer.
2. You will learn how to consume embedded SQL Server Reporting Services reports using URL Access.
3. You will learn how to consume SQL Server Reporting Services reports using SSRSReport Library.
This demo uses the following technologies:
1. PHP
2. Microsoft SQL Server 2008 Reporting Services
3. SQL Server Business Intelligence Development Studio
This Demo requires you to complete the prerequisites
mentioned in HelloWord/setup/Client_Setup.html (for configuring IIS7 with FastCGI, PHP with SOAP
extension, SQL Express Advanced series, SQL Server Sample Reports, SQL Server
Business Intelligence Development Studio,
Demo website and demo user for SSRSReport Demo Application) and HelloWord /setup/Server_Setup.html (for configuring Reporting
service and deploying SQL server sample reports).
The following diagram illustrates the high-level flow for this demo and the steps involved:
This demo is composed of the following two segments:
4. Creating a Report in Report Designer
5. Consuming the created Report from PHP using SSRSReport
|
Action |
Script |
Screenshot |
|
1. Open SQL Server Business Intelligence Development Studio from Start | SQL Server Business Intelligence Development Studio with administrator privileges. 2. Browse to C:\Program
Files\Microsoft SQL Server\100\Samples\Reporting Services\Report
Samples\AdventureWorks Sample Reports, select the file AdventureWorks 2008 Sample Reports.sln
and click Open 3. From solution explorer, right click on Reports; select to add an Existing Item… 4. Add the TopStoreBegin.rdl report located under the HelloWorld\Assets folder. 5. Double click on the added report to view it in design mode. |
·
This demo uses
Report Designer to create a report that will show the top 5 selling stores in
a table and in pie chart. ·
You can use Report
Designer to work with data, define a layout, preview a report, and then
publish it to a report server. ·
We have opened
an existent report that has some basic settings already defined such as the
report title, its look & feel, and some variables. We will expose how to
specify additional parameters for the report later on. |
|
|
6. From the Report Data pane, right click on AdventureWorks data source and select
Add Dataset…, this will bring up Dataset
Properties window. 7. In the Dataset
Properties window Click import… ( 8. Modify the filter to show All items (*.*). Select the TopStoresQuery.sql
file located under the HelloWorld\Assets
folder and click Open 9. If you wish to execute this query, click Query Designer… this will bring up
Query Designer window, click Run ( @ProductCategory: 1 @ProductSubCategory: 2 @StartDate: 20010101 @EndDate: 20020701 |
·
A report dataset
consists of a result set from a relational database, which can result from
running database commands, stored procedures, or user-defined functions. ·
For demo
purposes, we are actually going to import an existing query that retrieves
the top 5 stores. ·
The new dataset
uses existing AdventureWorks Connection Data Source. ·
(Optionally) We
can click Run to execute the query and retrieve the data that will be used to
fill the report. In order to do that, we first need to provide the query
parameters. |
|
|
10. Bring the Toolbox
pane, (View | Toolbox), select the Table
report item, drag and drop it to the report 11. Place the mouse over the first column of data row,
click on the data set symbol ( 12. Perform the same step (step 11) for second column of
data row, this time select SaleAmount as value. 13. Right click SaleAmount column in the data row (note
that we should select SaleAmount in the data row not in the header row) and
select Expression…, replace the
expression =Fields!SaleAmount.Value With =Sum(Fields!SaleAmount.Value) |
·
By default there
will be two rows in the table, header row and data row. ·
We want to show
the sales amount for each store. Therefore, we need a table with two columns
one for Store and another for Sale Amount |
|
|
14. Right click on Sum(SalesAmount) column in the data row
and select Add Total. 15. Add the
text Total in the first column of last row. |
·
We will add a
row that displays the total Sale amount of all stores. |
|
|
16. Click the table surface. Row and column handles appear
on the outside of the table and brackets appear inside cells 17. Enlarge the column widths using the column handler. |
·
We can customize
the position of the table in the report and the width of its columns. |
|
|
18. Right cilck the row handler of data row, From the Add Group select Parent Group… 19. From the tablix
group select [Store] for Group by
option. |
·
We group the
rows by Store. . |
|
|
20. Right click the column handler of first column and
select Delete columns, from the
confirmation box select Delete columns
only option and click OK 21. Similarly delete the last column also |
·
We will remove unnecessary
columns which are created by default. |
|
|
22. Right click on the first column (with text Store) in
the header row, select Text Box
Properties…, in the text box
properties window give the follow the below steps: a. Select Fill option, give Fill Color
as value as #4c68a2 b. Select Font option, select font as Tahoma, size as 11pt and color as
White. c.
Click OK d. Select
the text Store and make it bold (by using Ctrl+B key) 23. Perform the same step (step 20) for second column
(with text Sale Amount) 24. Right click on the first column (with text [Store]) in
the data row, select Text Box
Properties…, in the text box
properties window give the follow the below steps: a. Select Fill option, give Fill Color
as value as #9eb6e4 b. Select Font option, select font as Tahoma, size as 10pt and color as #465678. c.
Click OK d. Select the text [Store] and make it bold
(by using Ctrl+B key) 25. Right click on the first column (with text Total) in
the last row, select Text Box
Properties…, in the text box
properties window give the follow the below steps: a. Select Fill option, give Fill Color
as value as #7292cc b. Select Font option, select font as Tahoma, size as 10pt and color as
White. c.
Click OK d. Select
the text Store and make it bold (by using Ctrl+B key) 26. Perform the sampe step (step 23) for the second column
(with text [Sum(Sales Amount)]). |
·
Now we will add
some formatting to the table. |
|
|
27. In the Report Data
pane, under the Parameters folder,
right click the ProductSubcategory
parameter ( 28. In the Report
Parameter Properties dialog box, select the Available Values page and click Get Values From a Query. 30. Specify ProductSubcategories
as Dataset, ProductSubcategoryID for the Value Field, and Name for the label. Do not close the designer yet. |
·
Now we will
define the data source used to retrieve parameter values. ·
We have already
configured the ProductCategory parameter, but not the ProductSubCategory in
order to show you how this is done. ·
We use the
ProductSubcategories dataset to retrieve the available subcategories that
will appear in the report using its ID as the value and displaying its Name
as the Label field. |
|
|
31. On the Default
Values page, click Specify Value. 32. Click Add
and specify 2 in the Value field. 33. Click OK. |
·
We will now choose
a default value for the ProductSubCategory parameter. |
|
|
34. Click Preview tab to preview the report. 35. Point to the toolbar of the report and show the
parameters. 36. Unfold the combo boxes to show the values retrieved by
the queries and click the calendars to show date parameters. |
·
We can now run
our report to see how it looks like directly from Report Designer. This will
actually execute the queries and retrieve data from the database. ·
We can modify
the parameter values to filter the report for a different category, a
different date range, etc. ·
Right now, we
can see the table with the 5 top most selling stores, but the truth is that
the sales amounts do not look nice in the table. Besides, we would like to be
able to sort stores by name or amount of sales dynamically. |
|
|
37. Click Design tab
to go back to the design view. 38. Right Click over the SalesAmount field surface and select Text Box Properties, select the Currency from Number section
to change it format. |
·
Let's modify the
Sales Amount column so that its values are displayed as currency. |
|
|
39. Right click the Store
column header and select Text Box
Properties. 40. Select the Interactive
Sorting page and select Enable
interactive sorting on this text box. Specify Group1 for the Groups
and [Store] for the Sort By. 41. Do the same for the Sales Amount text box header, and specify [SaleAmount] in the Sort
By option. |
·
Now, we will configure
the headers to enable interactive sorting. ·
Notice that we
can choose the sorting fields and we can even specify special sorting
functions to use. |
|
|
42. Press Preview tab to preview the report. 43. Use the sorting buttons ( |
·
Let's run the
report again. Notice the sales amounts with the currency ($) symbol. ·
We can use the
sorting buttons to sort columns as desired. |
|
|
44. Click Design tab
to go back to the design view. 45. From the Toolbox pane, select Chart ( 46. Select Pie from
Select Chart Type and click Next. |
·
Let’s use charts
to make the information more consumable. For our report, we will add a pie
chart showing the sales percentages for each store. |
|
|
47. Double click on the chart to view the handles. 48. Select the top handle with text “Drop data fields
here”, click on the data set symbol
( 49. Select the bottom handle with text “Drop Category
fields here”, click on the data set symbol ( |
·
Now we have to
arrange the fields to specify how they are going to be displayed in the pie. ·
We want to show
the sales percentages of each store, so we use the Store field as Category
and we drag the SaleAmount to data field |
|
|
50. Right-click the chart and select Show Data Labels. 51. Right-click any of the labels and select Series Label Properties ( 52. In the General
tab, select #PERCENT for the Label data. 53. Click OK. 54. Right-click the chart title and select Delete Title ( |
·
Let's display
the labels as percentages and remove the default title. |
|
|
55. Select Preview
tab to preview the report. |
·
Let's run the
report again to see the customizations we've made to the chart. |
|
|
56. Save the report. 57. From the Solution Explorer, right click on TopStoresBegin.rdl, and select Deploy. |
·
Now that we the
report is ready, we'll upload it to the report server. |
|
|
58. If not already opened, open a Web browser with
Administrator privileges. Browse to http://localhost/Reports_SQLEXPRESS/ 59. Select the AdventureWorks
2008 Sample Reports folder. 60. Select the TopStoresBegin
report. |
·
Now we can
browse the Report Manager and see the report we have created by using Report Designer. ·
Report Manager
is a Web-based tool that includes features for viewing and managing reports.
To open Report Manager, type the Report Manager URL in a browser window. |
|
|
61. Click the Properties
tab and enter the following text in the Description field: Adventure Works
top five sales stores. 62. Click Apply. 63. Go to the AdventureWorks 2008 Sample Reports page by
using the Report Manager navigation bar and verify the description is displayed
with the report. |
·
Let's add a
description to this report in the report server using the Report Manager Properties
Page. |
|
|
Action |
Script |
Screenshot |
|
1. If the sample application is not already opened, open a
Web browser and browse to http://localhost:50002/ConsumeReportingService.php 2. Click on the sort button near the Store and Sale Amount
header and show the sort in action. |
·
So we have
created and deployed TopStoresBegin
Report. ·
In this demo we
will show you how to use SSRSReport toolkit (which internally uses Report
Server Web service) to consume the above report. ·
The Report
Server Web service end point allows accessing of the complete functionality
of Reporting Services. · When first opened, the page displays report in HTML format. |
|
|
3. Open the sample application ConsumeReportingService.php file located under the HelloWorld\Code folder. |
·
Now we'll explain
how to use the SSRSReport library to load a report, set execution parameters
and render and Sort. ·
The SSRSReport
constructor receives three parameters, credentials, Report Server Web Service
URL and proxy settings (which is optional). ·
The SSRSReport
library uses SOAP over HTTP to access Report Server Web service. ·
The SSRSReport
class creates two instance of the SoapClient
class in order to connect with the Report Server Web Service. ·
Report Server
exposes two Web Services. ◦ ReportService2005. ◦ ReportExecution2005. ·
The ReportService2005 endpoint contains
methods for managing objects in a Report Server. The WSDL for this endpoint
is accessed through ReportService2005.asmx?wsdl. ·
The ReportExecution2005 endpoint contains
methods to customize report processing and rendering from a report server.
The WSDL for this endpoint is accessed through ReportExecution2005.asmx?wsdl. ·
SoapClient
constructor has the following parameters: ◦ wsdl: URI of the WSDL file. ◦ options: An array of options. For HTTP authentication, the login and password options can be used to supply credentials, for Proxy settings proxy_host, proxy_port, proxy_login and proxy_password can be used. |
|
|
4. Show the LoadReport2 method at line 56 of ConsumeReportingService.php file. |
·
Now, having an
instance of the SSRSReport class, we can make calls to any methods from this
class which internally uses SOAP API to access the reporting service Web
Service. ·
To load a report
from the report server database we are going to use SSRSReport::LoadReport2 method. ·
SSRSReport::LoadReport2
method has the following parameters: ◦ report: The full name of the report. ◦
historyID: The history ID of the snapshot, the
default will be NULL. In this sample application REPORT (first parameter of LoadReport2 API) is a
constant, which has the value: /AdventureWorks 2008 Sample
Reports/TopStoresBegin ·
The SSRSReport
library uses the LoadReport2 web
service method to load the specified report, parse the return value of this
web service (execution information), build a structure from this return value
and return it to client application. ·
The LoadReport2 web service will create a
new session for the loaded report (identified by a session id), we can see
this session id from the return value of SSRSReport::LoadReport2. $executionInfo-> ExecutionID ·
Rest of the web
service methods, which performs operations on top of this loaded report,
requires this exection id (session id) as SOAP header, SSRSReport will take
care of this. |
|
|
5. Show the method SetExecutionParameter2 method at line 69 of ConsumeReportingService.php file |
·
For viewing
report using Report Manager, we have specified the parameters; we will use SSRSReport::SetExecutionParameter2 methods
to specify parameters. ·
SSRSReport::SetExecutionParameter2 method has the following parameters: ◦ parameters: An array of ParameterValue objects. ParameterValue is a
class to hold information about a parameter. ◦ parameterLanguage: locale identifier, the default will be en-us. ·
The SSRSReport
library uses the SetExecutionParameter2
web service method which sets and validates parameter values associated with
the current report execution, the SSRSReport library will parse the return value of this web service
(execution information), build a structure from this return value and return
it to client application. |
|
|
6. Show the method Render2
at ConsumeReportingService.php file |
·
We will use SSRSReport::Render2 to get the report
stream in a specified format. ·
SSRSReport:: Render2 method
has the following parameters: ◦ renderType: An object of type RenderAsCSV, RenderAsEXCEL,
RenderAsHTML, RenderAsIMAGE, RenderAsMHTML, RenderAsPDF, RenderAsWORD, RenderAsXML By
default all the active links (links to other reports, toggle, sort links
etc...) in a report are post back call to report server. Using RenderAsHTML::ReplacementRoot
option we can redirect all such call to our php file. The function
getPageURL() retruns the url of current page which is:
http://localhost:50002/ConsumeReportingService.php. If
the report contains any resources such as images (our report contains an
image representing pie chart), then we can instruct the report server about
how to construct the URLs to these resources.
Here we will use RenderAsHTML::StreamRoot member to instruct report
server for creating all urls with relative path ./images ◦ paginationMode: The mode by which the
report is processed. Possible values are: ◦ Extension: [out] the file extension
corresponding to the return value. For example if we pass renderType as
RenderAsHTML, then the Extension
will be html. ◦ MimeType: [out] The MIME type of the rendered report. the default
will be en-us. ◦ Encoding: [out] The encoding used when report server renders the
contents of the report ◦ Warnings: [out] An array of Warning
objects that describes any warnings that occurred during report processing StreamIds: [out] the stream id entifiers. These IDs are passed to the RenderStream
method. The StreamIds is collection of ids that will identify external
resources associated with a given report. Our report contains one such image
resource i.e. the image that represents the pie chart in the report ·
The SSRSReport
library uses the Render2 web
service method which processes a report under context and renders it in the
specified format. The SSRSReport library will parse the return value of this
web service, populate the variables to be returned by reference and return
the stream. |
|
|
8. Show the method RenderStream
at ConsumeReportingService.php file |
·
We will use SSRSReport::RenderStream to get secondary
image stream (stream representing the pie chart in the report) associated
with the report. ·
SSRSReport:: RenderStream method has the following parameters:, ◦ renderType: An object of type RenderAsCSV, RenderAsEXCEL,
RenderAsHTML, RenderAsIMAGE, RenderAsMHTML, RenderAsPDF, RenderAsWORD, RenderAsXML ◦ StreamID: The stream identifier ◦ Encoding: [out]
the encoding used to render the content of the report. ◦ MimeType: [out]
The MIME type of the stream. ·
The
SSRSReport library uses the RenderStream
web service method which returns a stream that is associated with a rendered
report. The SSRSReport library will parse the return value of this web
service, populate the variables to be returned by reference and return the
stream ·
We
will save the stream representing the pie chart into the images folder in the
current directory with name equal to the stream id. The image url in the
report will refer to this folder for associated resources. (we asked report sever
to do so by setting
RenderAsHTML::StreamRoot member) ·
The
statement echo
$result_html; will
display the report in the browser. |
|
|
9. Show the method Sort2
at ConsumeReportingService.php file |
· Since we set RenderAsHTML::ReplacementRoot to the url of current page, the url behind the sort link of the report will be as follows: http://localhost:50002/ConsumeReportingService.php?&ps:SessionID=kgvrtivkkz1atjagmczhopii&
ps:OrginalUri=http://localhost/ReportServer_SQLEXPRESS?/AdventureWorks 2008 Sample
Reports/Top Score Begin&rs:Command=Sort&&rs:SortId=15iT0&rs:SortDirection=Ascending&rs:ClearSort=TRUE&rc:ReplacementRoot=http//localhost:50002/
ConsumeReportingService.php?&ps:SessionID=kgvrtivkkz1atjagmczhopii&ps:OrginalUri&rc:StreamRoot=./images
The url parameters shown in red color are
parameters to the sort2 API. · Clicking on the sort link will call our page with $_REQUEST global array set. · We will use SSRSReport::Sort2 to sort the report. · SSRSReport::Sort2 has the following parameters: ◦
SortItem: The ID of the report item on
which to sort ◦
Direction:
The direction for the sort ◦
Clear:
Indicates whether all other existing sorts should be cleared. ◦
PaginationMode: The mode by which the report is
processed. Possible values are: ◦
ReportItem [out]: The ID of the item on the page used
for positioning in the viewing area. ◦
ExecutionInfo [out]: An ExecutionInfo2 object containing
new execution information. |
|


COM6509 Machine Learning and Adaptive Intelligence
| Summary |
The module is about core technologies underpinning modern
artificial intelligence. The module will introduce
statistical machine learning and probabilistic modelling and
their application to describing real world phenomena. The
module will give students a grounding in modern state of the
art algorithms that allow modern computer systems to learn
from data. |
| Session |
Autumn 2018/19 |
| Credits |
15 |
| Assessment |
50% Formal examination
50% Coursework, consisting of weekly lab classes and MCQ. |
| Lecturer(s) |
Dr Mauricio Alvarez & Dr Haiping Lu |
| Resources |
|
| Aims |
This unit aims to provide a deep understanding of the
fundamental technologies underlying modern artificial
intelligence. In particular it will provide foundational
understanding of
- data science,
- probability in artificial intelligence.
|
| Objectives |
By the end of the unit, a candidate will be able to
demonstrate the ability to
- understand of probability theory and how it relates
to uncertainty in modern artificial intelligence,
- understand when and how to implement the appropriate
learning paradigm for a given application,
- have a deep understanding (including how to
implement) of a range of supervised learning algorithms.
Potential examples include: linear regression, linear
classification, naive Bayesian classification, principal
component analysis, k-means clustering, decision trees.
- have a broad overview and basis for understanding more
complex technologies, such as: the support vector
machine, kernel methods, probabilistic graphical models,
E-M algorithms, factor analysis, nonparametric Bayesian
methods.
|
| Content |
- Probability theory
- Objective function
- Linear regression
- Basis functions
- Generalisation
- Bayesian regression
- Unsupervised learning
- Probabilistic Classification
- Logistic Regression and Generalised Linear Models
- Other topics
|
| Teaching Method |
There will be 10 hours of formal lectures and 20 hours of lab classes. These classes may involve computer based problem solving, examples and MCQ. The lectures and example classes will run concurrently, covering similar topics, with theory being laid out in the lectures, and application of the theory taking place in example classes. |
| Feedback |
Students will receive feedback on their
assignments in lab sessions. |
| Recommended Reading |
- S. Rogers and M. Girolami, A First Course in Machine Learning
- C. Bishop, Pattern Recognition and Machine Learning
- D. Barber, Bayesian Reasoning and Machine Learning
- R. Duda, P. Hart and G. Stork, Pattern Classification
|
|


The Special Case Of PowerPoint
Be sure to use the special slide in PowerPoint especially designed for images. It is by using these special slides that the correct information goes to the correct location in PowerPoint.
Alt Text Is Entered In An Area That "Seems" To Be Called Title
There Is Actually A Separate Title Area For Title
In Certain Cases, "TextBoxes" Are Actually Images
It may be surprising to learn that certain of the "text-boxes" are actually images in PowerPoint. Be sure and use a slide that specifically is built for content if you want to ensure that text is read as text. Doing so will save you from having to go back over the PowerPoint later and add all the alt text, and also, should help create a cleaner document for exporting.
Resources
-
Resources on Alternative Text for Images
As accessed 15 February 2019
-
An Alt Decision Tree
As accessed 15 February 2019


D Vector operations in R
| R | sf | ggplot2 |
| 4.3.1 | 1.0.14 | 3.4.2 |
Earlier versions of this tutorial made use of a combination of packages including raster
and rgeos
to perform most vector operations highlighted in this exercise. Many of these vector operations can now be performed using the sf
package. As such, all code chunks in this tutorial make use sf
for most vector operations.
We’ll first load spatial objects used in this exercise. These include: A polygon layer that delineates Maine counties (USA), s1.sf
; A polygon layer that delineates distances to Augusta (Maine) as concentric circles, s2.sf
; A polyline layer of the interstate highway system that runs through Maine. These data are stored as sf
objects.
library(sf)
z <- gzcon(url("https://github.com/mgimond/Spatial/raw/main/Data/Income_schooling_sf.rds"))
s1.sf <- readRDS(z)
z <- gzcon(url("https://github.com/mgimond/Spatial/raw/main/Data/Dist_sf.rds"))
s2.sf <- readRDS(z)
z <- gzcon(url("https://github.com/mgimond/Spatial/raw/main/Data/Highway_sf.rds"))
l1.sf <- readRDS(z)
A map of the above layers is shown below. We’ll use the ggplot2
package too generate this and subsequent maps in this tutorial.
library(ggplot2)
ggplot() +
geom_sf(data = s1.sf) +
geom_sf(data = s2.sf, alpha = 0.5, col = "red") +
geom_sf(data = l1.sf, col = "blue")
The attributes table for both polygon objects (s1.sf
and s2.sf
) are shown next. Note that each shape object has a unique set of attributes as well as a unique number of records
Dissolving geometries
Dissolving by contiguous shape
There are two different ways to dissolve geometries that share a common boundary. Both are presented next.
Option 1
To dissolve all polygons that share at least one line segment, simply pass the object name to sf
’s st_union
function while making sure that the by_feature
option is set to FALSE
. In this example, we dissolve all polygons to create a single outline of the state of Maine.
Note that the dissolving process removed all attributes from the original spatial object. You’ll also note that st_union
returns an sfc
object even though the input object is sf
. You can convert the output to an sf
object using the st_sf()
function as in st_sf(ME)
.
Dissolving by attribute
You can also choose to dissolve based on an attribute’s values. First, we’ll create a new column whose value will be binary (TRUE/FALSE) depending on whether or not the county income is below the counties’ median income value.
Next, we’ll dissolve all polygons by the med
attribute. Any polygons sharing at least one line segment that have the same med
value will be dissolved into a single polygon.
Two approaches are presented here: one using sf
’s aggregate
function, the other using the dplyr
approach adopted in the previous section.
Option 1
ME.inc <- aggregate(s1.sf["med"], by = list(diss = s1.sf$med),
FUN = function(x)x[1], do_union = TRUE)
This option will create a new field defined in the by =
parameter (diss
in this working example).
diss med
1 FALSE FALSE
2 TRUE TRUE
Option 2
This option will limit the attributes to that/those listed in the group_by
function.
# A tibble: 2 × 1
med
* <lgl>
1 FALSE
2 TRUE
A map of the resulting layer follows.
The dissolving (aggregating) operation will, by default, eliminate all other attribute values. If you wish to summarize other attribute values along with the attribute used for dissolving, use the dplyr
piping operation option. For example, to compute the median Income
value for each of the below/above median income groups type the following:
ME.inc <- s1.sf %>%
group_by(med) %>%
summarize(medinc = median(Income))
ggplot(ME.inc) + geom_sf(aes(fill = medinc))
To view the attributes table with both the aggregate variable, med
, and the median income variable, Income
, type:
# A tibble: 2 × 2
med medinc
* <lgl> <dbl>
1 FALSE 21518
2 TRUE 27955
Subsetting by attribute
You can use conventional R dataframe manipulation operations to subset by attribute values. For example, to subset by county name (e.g. Kennebec
county), type:
You can, of course, use piping operations to perform the same task as follows:
To subset by a range of attribute values (e.g. subset by income values that are less than the median value), type:
Intersecting layers
To intersect two polygon objects, use sf
’s st_intersection
function.
st_intersection
keeps all features that overlap along with their combined attributes. Note that new polygons are created which will increase the size of the attributes table beyond the size of the combined input attributes table.
NAME Income NoSchool NoSchoolSE IncomeSE med distance
8 Kennebec 25652 0.00570358 0.000917087 360.000 TRUE 20
12 Lincoln 27839 0.00278315 0.001030800 571.515 TRUE 20
14 Sagadahoc 28122 0.00285524 0.000900782 544.849 TRUE 20
1 Somerset 21025 0.00521153 0.001150020 390.909 FALSE 50
5 Franklin 21744 0.00508507 0.001641740 530.909 FALSE 50
6 Oxford 21885 0.00700822 0.001318160 536.970 FALSE 50
7 Waldo 23020 0.00498141 0.000918837 450.909 FALSE 50
8.1 Kennebec 25652 0.00570358 0.000917087 360.000 TRUE 50
9 Androscoggin 24268 0.00830953 0.001178660 460.606 TRUE 50
11 Knox 27141 0.00652269 0.001863920 684.849 TRUE 50
12.1 Lincoln 27839 0.00278315 0.001030800 571.515 TRUE 50
13 Cumberland 32549 0.00494917 0.000683236 346.061 TRUE 50
14.1 Sagadahoc 28122 0.00285524 0.000900782 544.849 TRUE 50
1.1 Somerset 21025 0.00521153 0.001150020 390.909 FALSE 80
2 Piscataquis 21292 0.00633830 0.002128960 724.242 FALSE 80
3 Penobscot 23307 0.00684534 0.001025450 242.424 FALSE 80
5.1 Franklin 21744 0.00508507 0.001641740 530.909 FALSE 80
6.1 Oxford 21885 0.00700822 0.001318160 536.970 FALSE 80
7.1 Waldo 23020 0.00498141 0.000918837 450.909 FALSE 80
9.1 Androscoggin 24268 0.00830953 0.001178660 460.606 TRUE 80
10 Hancock 28071 0.00238996 0.000784584 585.455 TRUE 80
11.1 Knox 27141 0.00652269 0.001863920 684.849 TRUE 80
12.2 Lincoln 27839 0.00278315 0.001030800 571.515 TRUE 80
13.1 Cumberland 32549 0.00494917 0.000683236 346.061 TRUE 80
14.2 Sagadahoc 28122 0.00285524 0.000900782 544.849 TRUE 80
1.2 Somerset 21025 0.00521153 0.001150020 390.909 FALSE 120
2.1 Piscataquis 21292 0.00633830 0.002128960 724.242 FALSE 120
3.1 Penobscot 23307 0.00684534 0.001025450 242.424 FALSE 120
5.2 Franklin 21744 0.00508507 0.001641740 530.909 FALSE 120
6.2 Oxford 21885 0.00700822 0.001318160 536.970 FALSE 120
7.2 Waldo 23020 0.00498141 0.000918837 450.909 FALSE 120
10.1 Hancock 28071 0.00238996 0.000784584 585.455 TRUE 120
13.2 Cumberland 32549 0.00494917 0.000683236 346.061 TRUE 120
15 York 28496 0.00529228 0.000737195 332.121 TRUE 120
Clipping spatial objects using other spatial objects
The st_intersection
can also be used to clip an input layer using another layer’s outer geometry boundaries as the “cookie cutter”. But note that the latter must be limited to its outer boundaries which may require that it be run through a dissolving operation (shown earlier in this tutorial) to dissolve internal boundaries.
To clip s2.sf
using the outline of s1.sf
, type:
The order the layers are passed to the st_intersection
function matters. Flipping the input layer in the last example will clip s1.sf
to s2.sf
’s bounding polygon(s).
Line geometries can also be clipped to polygon features. The output will be a line object that falls within the polygons of the input polygon object. For example, to output all line segments that fall within the concentric distance circles of s2.sf
, type:
A plot of the clipped line features is shown with the outline of the clipping feature.
Unioning layers
To union two polygon objects, use sf
’s st_union
function.  This is because each geometry of the layers being unioned are paired up with one another creating unique combinations of each layer’s geometries.
For example, the Aroostook County polygon from s1.sf
is paired with each annulus of the s2.sf
layer creating four new geometries.
Simple feature collection with 4 features and 7 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 318980.1 ymin: 4788093 xmax: 596500.1 ymax: 5255569
Projected CRS: +proj=utm +zone=19 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0
distance NAME Income NoSchool NoSchoolSE IncomeSE med
1 20 Aroostook 21024 0.0133872 0.00140696 250.909 FALSE
2 50 Aroostook 21024 0.0133872 0.00140696 250.909 FALSE
3 80 Aroostook 21024 0.0133872 0.00140696 250.909 FALSE
4 120 Aroostook 21024 0.0133872 0.00140696 250.909 FALSE
geometry
1 MULTIPOLYGON (((438980 4928...
2 MULTIPOLYGON (((438980 4958...
3 MULTIPOLYGON (((438980 4988...
4 MULTIPOLYGON (((438980 5028...
The union operation creates all possible pairs of geometries between both input objects (i.e. 4 circle geometries from s2.sf
times 16 county geometries from s1.sf
for a total of 64 geometries).
Buffering geometries
To buffer point, line or polygon geometries, use sf
’s st_buffer
function. For example, the following code chunk generates a 10 km (10,000 m) buffer around the polyline segments.
To create a continuous polygon geometry (i.e. to eliminate overlapping buffers), we’ll follow up with one of the dissolving techniques introduced earlier in this tutorial.
If you want to preserve an attribute value (such as highway number), modify the above code as follows:


5. Using the Toolkit GUI
The Toolkit GUI can be used by typing one of
% pythonw gui.py
% python gui.py
Use pythonw
when available, python
otherwise. In both cases the wxPython package needs to be
installed. The GUI has three advantages over using the command line
version:
- It is faster when using on a file-by-file basis because all
libraries are loaded either at start-up or when the first file is processed.
- It is easier to use.
- It allows the user to type some input and see what happens.
The main disadvantage is that it is not possible to process all files
in a directory. Here's a screen shot:
There is no separate manual for the GUI, but usage should be pretty
straightforward. Functionality can be summed up as follows:
- Use "Load File" to select a file to be processed.
- Use "Load Text" to type in text. This will create a file in
the
data/in/User
directory, which is then selected as the
input file.
- Use the"Document Type", "Trap Errors" and "Content Tag" pull-downs
and text field to enter processing options. Setting the "Document
Type" option will set the "Content Tag" text field to the default for
the document type. It will also select the default components for the
document type. The default components can be overridden by checking
and unchecking the component check boxes. Note that the three
pre-processing components are all either on or off.
- Use "Process File" to process the input file conform to the selected settings.
- Finally, "View Results" will pop up a new window that displays the
processing results in a more informative way (the large text field in
the control panel just prints the result file as is). The buttons in
the results view control what is shown in it. There are two
exceptions: (i) the "Graph" button will start the Tango annotation
tool on the results file, showing a graph of the annotation and
including a "TBox" button which displays an alternative format, and
(ii) the "TBox" button doesn't do anything yet, in the future it will
provide a more direct way to the TBox representation.


Pastes
Previous
1
2
Next
View Paste
(27 lines)
1 hour ago
[noPastesFound]
View Paste
(27 lines)
1 hour ago
asdfl;kajsdf; a;sldkfj a;lskdjf
Previous
1
2
Next


Customers Details
First Name:
Last Name:
Destination:
Gender:
Booking Date:
Traveling Date:
Back Flight List
Home Page


{% include "content/includes/header.html" %} {% if enablewarning %} {% include "content/includes/homepage-warning.html" %} {% endif %} {{ contents }} {% include "content/components/navigation-links-list.html" %} {% include "content/includes/footer.html" %}


It's a different experience from other learning institutions as you are encouraged to collaborate with others in the group.
Apart from learning how to be a web developer, you are learning mindset skills that will help you get through problems that you may encounter, along with other skills such as time management and relaxation activities. I felt that Shereef was talking truthfully from his experience and he sounded sincere, as it came from the heart.
From my previous study and work experience, I can hopefully take on board (embrace) these new skills that will set me up for the rest of my life. In order for me to engage in this culture I am going to have to pace myself through phase 0, master the basics and keep a good mindset to keep on track.
My expectations have changed a bit, The phase 0 is a bit more practical (using the command line) than I anticipated. I didn't realize that sprint 1 has so much information on relaxation, mindset, meditation and time tracking.
I am excited because I feel that it is going to teach me a lot. I am a little nervous at the moment, as I am catching up because i have had work commitments with bad hours. However I am enjoying the content of what I am learning and when I focus on it in this way it keeps me relaxed and on track for time management.