I'll in an AJ's podcast for your Monday.
Most wonderful show is keeping up with the Joneses.
Ladies and gentlemen, welcome to a very special episode of Keeping Up With The Joneses.
That is less an episode and more a public health announcement.
And kind of an update.
Yes.
I'm sorry, Ade, what did you say?
Yes.
So, AJ has lost her voice.
Sure have.
That's gonna be an interesting weekly update. I don't know how this audio is gonna work.
Your SNFs are louder than your whispers.
Sorry.
Can you try talking and greeting the people?
Hello people!
We should have done this on videos so people know you're actually here and it's not just me with the sock puppet.
Yeah, my voice is totally gone.
Your voice is totally gone.
AJ Jones, shall we do a weekly update?
Sure.
Why don't you do the talking and I'll do the intercession.
Okay.
This is going to be such a weird episode.
All right.
Week to update our girls were away on a youth camp in Florida this week.
Hard to believe again.
I know we say this every week, but hard to believe that was this week.
They were away.

Yes.
Do you want to talk about your sickness and about how I called it about a week ago and
you were stubborn and refused to go to a doctor.
today you went to see a doctor and the doctor confirmed everything I'd already told you.
Yeah, so I definitely have a push through issue. So I do think I could push through anything.
And uh yeah, I wasn't. Tia came home with a cold from camp. Not a cold. What you thought was a cold.
She came home with something. Yes, but with my medical training, I diagnosed it as something
other than the cold and everybody mocked me because technically I don't have a medical
degree or license.
But in my head, I'm an amazing physician.
And every time I go to a hospital, everybody thinks I'm a doctor.
Except for the medical people.
Yeah, I know.
But one time I asked my friend, I was like, "People often think I'm a doctor."

I'm like, "Yeah, it's not your medical knowledge that they're amazed by.
that you're short and grumpy, which is what most doctors are. I was like, oh, yeah, that
puts a spin on it. But we digress. You're not short. You're six foot one. I'm just kidding.
That was brilliant. Okay. Anyway, I pushed through into the encounter weekend. And I
know, no, no, no, no, no. Yeah. Don't blame us on the encounter weekend.
That's not the encounter weekend's fall. I'm just saying, I probably haven't felt great
in two weeks.
I went to see Riverdance.
And we're still married.
I mean, that is a test, many of covenant in action.
You went to see Riverdance.
It was amazing.
But you weren't well.
And I was like, I actually felt better that day than I am.
But that's your superpower.
Your superpower of denial and delusion
allows you to no longer feel the physical symptoms
that everybody else can see that's on you.
Well, what's weird is I don't like even--
I saw it went to the doctor today.
I misspoke all day yesterday.
And my voice kinda went by the end.
At the very end I was done speaking and then my voice kinda went.
Anyway, when I saw the doctor today, she said, "Listen, from the collar bones up, you're
basically a pickled mess."
She said, "You have an ear infection.
You have a monster sinus infection."
And she said, "It's not in your lungs, so that's good."
Your vocal cord is stripped.
Yes, she said that's all because of the drainage from the sinus infection.
So she said, "Your throat is swollen and everything."
She said, "You must be."
She's looking at my throat.

I said, "Well, I'm in some pain,
but I'm not gonna die or anything."
She goes, "Wow, that's a metric."
So she's gonna look at me.
So anyway, I got a steroid shot.
Yeah, and I'm now in antibiotics and steroids.
And I wanna feel better real soon.
- Right, and you're also podcasting right now.
But, blessed you, you have been silent all day.
Yeah.
Which is an interesting chapter to our marriage.
Me, silent?
Mm-hmm.
I'm real loud, am I?
You're louder than you have been today.
Well, that's true.
For sure.
You've been taking advantage of the fact that I'm not supposed to be speaking.
I really have.
Speaking of the encounter we can't, how was the encounter we can't?
It was amazing.
It was so good.
The team was great.
It...
I got to meet a ton of new people that are new to Grey Centre.
That's fun.
You all had a meal together?
Yeah, it was really good.
Good.
Yeah.
Well, other than the girls being away, you being sick, largely, this has been a week of rattling off work, like just working, working, working, working, working, working.
Yeah, crazy working.
Because as the title of this episode suggests, we are about to go on sabbatical.
In fact, not about to.
We are officially today is our first day of sabbatical.
Yeah.
I think that's part of, I mean, to go back to the sickness thing, I think that's part of why I didn't recover as well as because we worked all weekend.
Take, try and get ready to be able to go.
Right.
Yes, because if we, if we slip beautifully from our weekly catch up into our main topic, you're right.
Like we are having a sabbatical, but it's all happened very, very quickly.
Like I did the math.
It was three weeks ago that we actually asked for a sabbatical.
And it was last week that we found out that we were getting it.
Yeah.
And then we had a week in which to make sure everything ready for all of our
departments would be covered.
Yeah, exactly.
So, you know, the one question everybody asked when they hear that we have an eight
week sabbatical, which by the way, like let's not go any further without a huge
thank you to the generosity of our church board that approved our request.
So wonderful.
But the first thing everybody asks is, what are you going to do for eight weeks?
And the trouble is as high shape as we really haven't had that much time to plan.
No, like on my hard drive, there is a beautiful mind map of what I want to do.
And what I want to do is definitely not on your back.
Well, no, it does.
I think I could cross.
They could cross over.
It does cross over.
But my point is you haven't had time to think about it.
I've had a little time to think about it and put some stuff into action.
But with all the stuff getting ready and then doing encounter,
a couple of days behind you, I think.
Yeah, you are.
Like I technically I finished my work week at 5 p.m. on Thursday.
And you worked all day Friday and all day Saturday.
Yeah.
So I had seven or eight last night.
Yeah.
So we're on Spaticle.
How's it feel being as today was really going to a doctor's office and then
try not to talk all day.
I'm quiet.
So where do you want to go with this, Ajay Jones?
Obviously, you can't talk too much.
Yeah, you talk it all.
Agree silently over here.
Okay.
You're going to agree silently.
My marriage just got so good.
And my voice should be back in a day or two.
Don't get used to it.
It's funny that we're having a sabbatical because I've actually never really given
any thought to a sabbatical.
I don't remember having more than two weeks off at a time.
Since I was probably 18 when I started working full time.
Yeah.
Let's talk about your issues for a second, but you're right.
Like you, you just work, work, work, work.
Yeah.
I've never like a, I realized I was like, Oh, I need to talk to Samuel about the
anxiety I felt with what does one do with more than two weeks off?
Like, right.
And he's like, you seem to be afraid that you're not going to know how to spend that correctly.
He was funny because he was like, well, first of all, it'd be good if you didn't view the next eight weeks in your units, your 15 minute units of time.
I was like, thanks, yeah.

What would you like to do with the kids?
Well, I want to take them on an RV trip.
And I'm actually shot that I'm not against the idea.
Yeah.
Is getting an RV and driving around the United States.
Oh, I've mapped the whole thing out.
I've figured out kilometers.
Kilometers.
Oh, I'm sorry.
We go to Canada.
Oh, I'm sorry.
I figured out miles and I figured out the main parks
that I want to take them to.
And I've got it all down.
Oh, this is a difference between Angie and I.
When she says I haven't really thought about anything,
and I'm over here waxing lyrical
about having a mind map.
What she's done with really no time
is plotted in RV trip around America.
- Well, I wanted to know how much of a cost.
So I wanted to figure out like mileage
because mileage figures in the cost
just think could we even do something like this?
- Tell me the highlights
of where we would be going in this fictitious.
- I have it all written down just a moment.
We would start with leave here.
We go kind of through Dallas.
Well, hang on, we don't live in Texas.
So when you say we'd start here and then go through Dallas.
Because we're trying.
We're trying to drive.
How long is it from Tennessee to--
Born in New Mexico, my friend.
[LAUGHTER]
How many hours driving is it from here to Dallas?
Oh, 10.
Is that all?
Yeah.
Wow.
We go to White Sands National Park.
What's in White Sands National Park?
It's like a desert.
It's a desert park that the sand is all white.
and because of the wind it forms into all these structures that they're not
they're different every day and you can
They have slides there and you can take slides and you just slide down these mountains instead of being snow mountains their white sand mountains
So it sounds like really fun and it's
It's supposed to be one of the wonders of the world kind of thing
Yeah, I don't know who came up with that list because it's not on the same list as the Taj Mahal
Okay. Well, nobody wants to see that. We have children.
The hanging gardens of Babylon and then the Grand Canyon. Obviously
Arches Natural National Park, which isn't far from there, which is where those massive stone arches are.
It's like amazing. I'll show you pictures.
Oh, wait, wait, all I want to see is the White House.
Can we take an RV to DC?
Oh, you can't take an RV into DC.
This is America. Land of the Free.
The kids don't want to see the White House.
Excuse me.
Have you even pulled up?
You can't take an RV into DC. You're literally not allowed.
Is Mount Rushmore on your list? No, it's too far away, it's too many miles. So Dakota, there's nothing else by it.
Okay, thanks. I'm glad we had this episode just to kind of solve this out.
And then I found out where there's some Six Flags parks to take the kids on roller coasters.
And I thought we might be able to finish staying at the RV park at Disney and do like a day or
do it Disney. Are we officially becoming, remember that Robin Williams movie, RV? Are we becoming that
family. Listen, remember that was like bonding trip. Do you remember the movie? They were
so bonded by the end. That's right. Well, so, Ajit would apparently like to go on an RV trip
around America. Yes. But apparently not hitting the places I would like to go see, which is... I'm
willing to take into consideration some of your needs. Not all of them, of course, but I would say.
I was just snoring.
You just snorted on the podcast and just for that,
I'm leaving that snoring.
I was trying to keep where we were going,
all within a little tight area because of mileage.
You're now adding in Washington and South Dakota.
- Well, we aren't apparently getting a gas holiday,
a tax on gas holiday.
President Biden can--
- What does that mean?
So the gas prices will come back down?
- Yeah, we just want paid tax on gas for a month.
- Well, praise him.
Let it be now because that RV is going to be brutal.
Well, apparently you haven't given some thought
to what we're going to do on a--
I think it's sabbatical.
Yes.
I would like to do that.
And then I want to paint the kitchen.
Oh my god.
I need to sabbatical for my sabbatical.
My wife's just the man she wants to paint the kitchen.
You know how to unwind, huh?
Well--
Oh, baby, listen to your squeaky.
Maybe you need to gargle some WD-40.
I think that would help.
Yeah, you're like squeaking like an old door.
So we're on sabbatical.
We asked for about three weeks ago.
I was saying that I haven't really,
this has not been like a long-term plan.
It's not something I've been thinking about.
I just remember one day,
about three and a half weeks ago coming home
and just saying to you,
I have a moment of clarity.
I think I'm gonna ask our board for a sabbatical.
And I remember you looking a little shocked.
Do you remember that?
because I was like, I have so much to do.
I can't go on a sabbatical.
- But it makes sense for us to go on a sabbatical now
because any other time of the year,
it's the easiest time for us to do it
because S.O.S.L. is not in session.
And all the other stuff we do at the church
can get covered by our staff far easier
than any other time of the year.
And our kids are at the school.
So that's the how.
Like I asked for one.
The what is its eight weeks, which is amazing.
As for the why, the last two years, any way you want to skin it has been difficult, especially
the last year, was particularly taxing.
And a number of things just fell into place.
One of the other things that's happening is grey sinners going through some restructuring.
And one of the beautiful parts about that is neither you or I are involved in that restructuring,
which is nice.
So we're not leading the charge on those changes, which means we can step aside.
And when we return, we'll be able to see the fruit of those changes and just kind of slot
in where we need to there.
We already mentioned our kids being out of school.
We already mentioned SSL not being in session.
So it allows us and affords us a little bit of time to recover probably just regain energy.
The other thing, and I've mentioned this before in the podcast, but especially 2022,
you know those, do you do this in North America?

Yeah.
All right.
I feel like one of those tin cans.
Like, I've got where I need to go, but it was a bumpy ride and it wasn't me that was
driving.
I was just dragged along by life.
Yeah.
So I feel like it's shocking to me that this is the middle of June, end of June.
Good Lord.
Yeah.
It's shocking to me.
It's halfway through 2022 and I feel like I've just been dragged here.
So I'm looking forward to just getting a fresh perspective.
One of the things that happens when you are in leadership crisis is you tend to very easily
focus on what's before you and there's a tendency that you can lose sight of a larger
scope.
So I'm looking forward to being able to lift my eyes a little bit and get some perspective
and see the horizon for what feels like a long time.
Yeah.
What about you?
feel like with all the busyness and all the sort of pressure of the last couple years,
I feel like I've kind of lost me.
Kind of lost you?
Yeah.
And so I think really my main goal other than getting lots of time with the kids is to
refine to me.
Do you know where you left you?
I'm not being quite.
I don't know.
I'm genuinely curious.
I don't know.
Under a bus somewhere I think.
One of the reasons this is an odd episode in many ways is one, my beautiful co-host doesn't
have a voice, so it's very hard to podcast when you don't have a voice.
But part of this episode is just to give some context to why there's not going to be any
episodes for the next eight weeks, because as we go into the sabbatical, we are pushing
pause on everything, not just Ministry at Grace Centre, but also all of our extracurricular
activities.
really one of the major focuses is time with the kids because I'm not sure how much price
our kids have paid in the last couple of years. So I'm looking forward to that. We sat down
with them and had a family meeting about what they want to do. That was an interesting
list of things.
That's why I want to do something like an RFP trip or something that's kind of epic
because what are we going to get eight weeks off again?
I mean, I think that's the pressure.
- But this has been like the memory,
like I want them to look back and go,
remember that amazing summer that we went into it.
- Yes.
- And there's at such great ages with Appian 15 and Diab 13
and MJ about to be 10, like they're gonna remember this
for like ages.
- Has it dawned on you that while we're on sabbatical,
we might get a baby?
- It hasn't, but it's certainly possible.
It's funny because even in the last couple of days, one of the agencies that we've followed
has posted more.
Not that we are qualified for because they want a family who's based in Utah or whatever.
But it's interesting certainly with the Roe v. Wade getting overturned.
My heart is like, "Oh, this is so amazing."
My hope is that Christians are going to stand up and say, "We'll take them and we'll give
them a loving home. So I would imagine adoption statistics are about to really change. Apparently
the last year they went down 45%. Right. We got an email from one of the adoption agencies that said
that pregnancies in the last two years have dropped, adoptions have dropped.
I mean, really COVID had a, you know, we're now being able to see the massive knock on effects of
that. But we even had a conversation with one of our adoption people this week. And they were like,
you know, typically somebody in your situation would have been matched by now. But what we're
seeing is all of the agencies are slowing down. All of the people who are in the adoption process
are slowing down, which made me feel a little bit better because, you know, here we are, we've checked
all the boxes, we've done everything we can, and we're waiting and nothing's happening.
Which again, we're not in the situation, which I can imagine some families are who are
You know, they don't have any kids. This is maybe going to be their first child.
Right.
You know, we are living, continue to live a rich, full, busy life and are looking forward
to a baby.
Yes.
But it's not the most preoccupied thought at the front of my head.
Well, we still have full life in the midst of it, yeah.
Right. But I was wondering, oh, the timing is interesting.
Yeah.
We'll just be interested to see what the Lord does.
Yeah, we really will be interesting, yeah.
Well, in an effort of not stressing my wife's throat anymore.
I'm going to bring this one to a close.
Thanks, babe.
It's a weird episode, for sure.
But we did want to just let you know where we are and where we're going.
You will not hear from us for the next eight weeks, either podcasting or on social media.
We're taking a break from everything.
Thank you so much for joining us on our journey.
We're in our 286th episode.
We are looking forward to being back in late August when we come back from our sabbatical
and hopefully we'll still have some stories to tell you about what we did on sabbatical.
But for now, thank you so much for being with us.
We are praying that you have an incredible time on your next eight weeks and look forward
to being with you soon.
Bye.
Life, communication, tacos and video games
Paleotronuts and the kindness of God
But things we deal with every day
From Franklin, Tennessee
They are just like you and me
Alan, and AJ
Keeping up with the Joneses, keeping up with the Joneses
Sharing their life, experience it
Keeping up with the Joneses, keeping up with the Joneses
They talk about faith in God and everything under the sun
If you are a human being, there's something here for everyone
(music)
(buzzing)


Several weeks ago, I came across a few blotters of fentanyl, 150ug each. Excited at the prospect of trying my first opiate other than blue lotus, I decided to ingest my first blotter two days later.
My friend and I were on our way to the theater to see the new Tolkien movie, The Two Towers, when I popped my blotter in my mouth and swallowed it down. The taste was bitter and unpleasant. About 30 minutes later and just barely into the movie, a mellow, easy kind of feeling seeped its way into me. The effect was quite mild, but more noticeable than blue lotus and not quite as happy. In fact, any positive mood lift was very much secondary to the sedative effects of the drug. I'm not too sure how long these effects lasted since the movie was distracting me, but by the time it ended, I couldn't detect any more of the drug.
The second time around, I decided to take the blotter sublingually, hoping to feel the fentanyl a little stronger. The environment was a tolerably loud drinking party at my house. As for my physical background, I was highly sleep deprived after three weeks of disturbed rest, and I hadn't eaten in several hours. At 9ish I held the blotter under my tongue and swallowed any excess saliva, despite the taste. In less than 20 minutes, the opiate hit me in a wave and I felt a detectable loosening of muscles and leadening of flesh.  I sat down on a recliner for some amount of time--I have no idea how long--and let the heaviest of the dizziness pass.
When I felt a little more coherent and stable, maybe two hours or less later, I noticed the effects rapidly lessening. Now, the party was barely halfway through and I didn't want to feel sober anytime soon, so I went to one of the serving rooms and grabbed a small alcoholic drink and downed it. I was hoping the mix of chemicals would potentiate my experience, but I barely felt any changes. I guess that wasn't enough alcohol to help things along.
By midnight, I felt mostly sober, even after the addition of a nitrous balloon and two hours later the effects were no longer detectable.
Like the last time, there was little mood lift and mostly sedative effects, although quite a bit stronger than the time before. If I'm looking for fun, I'd probably choose blue lotus over fentanyl.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Dalek.Config Class
Parses config data & loads config files for DalekJS tests.
This module is a driver plugin for DalekJS. It connects Daleks testsuite with the remote testing environment of Sauce Labs.
The driver can be installed with the following command:
$ npm install dalek-driver-sauce --save-dev
You can use the driver by adding a config option to the your Dalekfile
"driver": ["sauce"]
Or you can tell Dalek that it should run your tests via sauces service via the command line:
$ dalek mytest.js -d sauce
In order to run your tests within the Sauce Labs infrastructure, you must add your sauce username & key to your dalek configuration. Those two parameters must be set in order to get this driver up & running. You can specifiy them within your Dalekfile like so:
"driver.sauce": {
"user": "dalekjs",
"key": "aaaaaa-1234-567a-1abc-1br6d9f68689"
}
It is also possible to specify a set of other extra saucy parameters like name
& tags
:
"driver.sauce": {
"user": "dalekjs",
"key": "aaaaaa-1234-567a-1abc-1br6d9f68689",
"name": "Guineapig",
"tags": ["dalek", "testproject"]
}
If you would like to have a more control over the browser/OS combinations that are available, you are able to configure you custom combinations:
"browsers": [{
"chrome": {
"platform": "OS X 10.6",
"actAs": "chrome",
"version": 27
},
"chromeWin": {
"platform": "Windows 7",
"actAs": "chrome",
"version": 27
},
"chromeLinux": {
"platform": "Linux",
"actAs": "chrome",
"version": 26
}
You can then call your custom browsers like so:
$ dalek mytest.js -d sauce -b chrome,chromeWin,chromeLinux
or you can define them in your Dalekfile:
"browser": ["chrome", "chromeWin", "chromeLinux"]
A list of all available browser/OS combinations, can be found here.
Item Index
Methods
_checkDefaultFile
-
ext
-
data
Iterator function that checks the existance of a the default file
Parameters:
-
ext
StringFile extension to check
-
data
ObjectFile data
Returns:
config File path
_checkFile
-
previousValue
-
ext
-
idx
-
data
Iterator function that checks the existance of a given file
Parameters:
-
previousValue
StringLast iterations result
-
ext
StringFile extension to check
-
idx
IntegerIteration index
-
data
ObjectFile data
Returns:
config File path
_verify
-
check
-
fn
-
instance
Verifies if a driver is given, exists & is valid
Parameters:
-
check
ArrayData that should be mapped
-
fn
StringName of the function that should be invoked on the veryify object
-
instance
ObjectObject instance where the verify function should be invoked
Returns:
data List of verified items
_verifyIterator
-
fn
-
instance
-
elm
Verifies if a driver is given, exists & is valid
Parameters:
-
fn
StringName of the function that should be invoked on the veryify object
-
instance
ObjectObject instance where the verify function should be invoked
-
elm
StringName of the element that should be checked
Returns:
element name of the verified element or false if checked failed
checkAvailabilityOfConfigFile
-
pathname
Checks if a config file is available
Parameters:
-
pathname
String
Returns:
config File path
get
-
item
Fetches & returns a config item
Parameters:
-
item
StringKey of the item to load
Returns:
data Requested config data
load
-
defaults
-
pathname
-
opts
Loads a file & merges the results with the commandline options & the default config
Parameters:
-
defaults
ObjectDefault config
-
pathname
StringFilename of the config file to load
-
opts
ObjectCommand line options
Returns:
config Merged config data
loadFile
-
pathname
Loads a config file & parses it based on the file extension
Parameters:
-
pathname
StringFilename of the config file to load
Returns:
data Config data
readcoffee
()
Object
Loads a coffescript config file
Returns:
data Parsed config data
readjs
()
Object
Loads a javascript config file
Returns:
data Parsed config data
readjson
()
Object
Loads a json config file
Returns:
data Parsed config data
readJson5
()
Object
Loads a json5 config file
Returns:
data Parsed config data
readyaml
()
Object
Loads a yaml config file
Returns:
data Parsed config data
verifyDrivers
()
Array
Verifies if a driver is given, exists & is valid
Returns:
data List of verified drivers
verifyReporters
()
Array
Verifies if a reporter is given, exists & is valid
Returns:
data List of verified reporters


I was browsing the Raspberry Pi forums these days and I came across a very interesting thread titled PC’s Are Boring. I read all the posts until that moment and started reflecting about that statement. The thread starter was completely right about this, PC’s (which I understand for computers that run Windows or Linux, excluding Macs) are really boring, that’s why the mobile industry is so amazing these days, because people stopped changing their computers every ½ years and started changing their mobiles.
A lot of the users on the forum were talking about “the old times” of the Commodore and Atari when you felt like you had power over the machine and today you’re just part of a mainstream movement. Also they were talking about how “normal people” are discouraged to program because are afraid they can break the computer (which isn’t true of course, but that’s what the average user thinks) and how the price of the Raspberry Pi could help people to get into Linux or programming. They are completely right, as soon as the Pi comes out a lot of programmers are going to rush to get their hands on one (I am very excited to get my hands on one too) and possibly a lot of people that want to start programming will get it too.
The RPi will make the feeling of having power over the machine come back again. The best example I can give is my own. I’ve never been so excited for a “computer” since the first dual cores came out, I’m thinking about the awesome things that I could do with it like: Making my own Linux-powered tablet (which is completely possible), porting new Linux distros to it, porting other OSes to it and even making my own distro only for the Raspberry Pi.
I’m sure all the geeks are very excited waiting for the release and wondering all they could do as soon as they get their hands on it. Leave a comment below with your opinion or ideas. If you want to keep in touch to the latest news about the board just visit their blog and don’t forget to contribute on the forums.
This is an old article from my old blog that I moved to here


Preparation time
over 2 hours
Cooking time
30 mins to 1 hour
Serves
Serves 8-10
Dietary
Make rosemary-topped focaccia the traditional way, kneading and knocking back the dough by hand.
Pour a little of the tepid water into a small bowl. Add the yeast and blend using your fingers. Leave the yeast for five minutes to soften and dissolve.
Mix the flour and salt together in a large mixing bowl. You may like to transfer your mixture to a pastry board or other flat work surface at this stage and prepare the dough there, in traditional Tuscan style. Otherwise, mix the dough in the bowl.
Make a well in the centre of the flour and salt mixture. Pour the blended yeast and water into the well along with the olive oil. Mix thoroughly. Gradually add the rest of the tepid water until a sticky dough is formed.
Transfer the dough onto a floured surface. Gather any stray pieces. Knead the dough for about 10 minutes, adding a little extra flour if necessary, until smooth and elastic and the dough no longer sticks to your hand. To see if it is ready, you can carry out the stretch test: pull off a piece of dough, it should be elastic enough not to break quickly when stretched out.
Next accumulate any stray ends and rough sections by 'chafing' your ball of dough. Hold it and curve your hands around it, use your palms to pull at its sides gently while you slowly rotate it, letting your little fingers meet underneath. Do this for five minutes. You should be left with a neat, smooth ball.
Oil a bowl and place the dough inside and cover with either oiled cling film or a damp tea towel. Leave in a warm place to rise until doubled in size - about 1½ hours depending on the room temperature.
Use your fist to knock it back, then knead it again for a further two minutes.
Leave to rest again, but only for 5-10 minutes.
Shape by placing into a shallow baking tray, using your hands to spread it out to a depth of about 1.5cm/¾in, then allow to rise again, covered with a tea towel, until doubled in size - this will take about 30 minutes. Preheat the oven to 200C/400F/Gas 6.
Create a dimpled effect by repeatedly pushing your fingertips gently into the surface of the dough. Drizzle a generous amount of extra virgin olive oil evenly over the dough. Sprinkle over the sea salt and push the small pieces of rosemary into the dough.
Bake for 25-35 minutes or until the top is crusty and cooked through to the base. Serve.


public abstract class KeyStoreSpi extends Object
KeyStore
class.
All the abstract methods in this class must be implemented by each
cryptographic service provider who wishes to supply the implementation
of a keystore for a particular keystore type.KeyStore
| Constructor and Description |
|---|
KeyStoreSpi() |
| Modifier and Type | Method and Description |
|---|---|
abstract Enumeration<String> |
engineAliases()
Lists all the alias names of this keystore.
|
abstract boolean |
engineContainsAlias(String alias)
Checks if the given alias exists in this keystore.
|
abstract void |
engineDeleteEntry(String alias)
Deletes the entry identified by the given alias from this keystore.
|
boolean |
engineEntryInstanceOf(String alias,
Class<? extends KeyStore.Entry> entryClass)
Determines if the keystore
Entry for the specified
alias is an instance or subclass of the specified
entryClass . |
abstract Certificate |
engineGetCertificate(String alias)
Returns the certificate associated with the given alias.
|
abstract String |
engineGetCertificateAlias(Certificate cert)
Returns the (alias) name of the first keystore entry whose certificate
matches the given certificate.
|
abstract Certificate[] |
engineGetCertificateChain(String alias)
Returns the certificate chain associated with the given alias.
|
abstract Date |
engineGetCreationDate(String alias)
Returns the creation date of the entry identified by the given alias.
|
KeyStore.Entry |
engineGetEntry(String alias,
KeyStore.ProtectionParameter protParam)
Gets a
KeyStore.Entry for the specified alias
with the specified protection parameter. |
abstract Key |
engineGetKey(String alias,
char[] password)
Returns the key associated with the given alias, using the given
password to recover it.
|
abstract boolean |
engineIsCertificateEntry(String alias)
Returns true if the entry identified by the given alias
was created by a call to
setCertificateEntry ,
or created by a call to setEntry with a
TrustedCertificateEntry . |
abstract boolean |
engineIsKeyEntry(String alias)
Returns true if the entry identified by the given alias
was created by a call to
setKeyEntry ,
or created by a call to setEntry with a
PrivateKeyEntry or a SecretKeyEntry . |
abstract void |
engineLoad(InputStream stream,
char[] password)
Loads the keystore from the given input stream.
|
void |
engineLoad(KeyStore.LoadStoreParameter param)
Loads the keystore using the given
KeyStore.LoadStoreParameter . |
abstract void |
engineSetCertificateEntry(String alias,
Certificate cert)
Assigns the given certificate to the given alias.
|
void |
engineSetEntry(String alias,
KeyStore.Entry entry,
KeyStore.ProtectionParameter protParam)
Saves a
KeyStore.Entry under the specified alias. |
abstract void |
engineSetKeyEntry(String alias,
byte[] key,
Certificate[] chain)
Assigns the given key (that has already been protected) to the given
alias.
|
abstract void |
engineSetKeyEntry(String alias,
Key key,
char[] password,
Certificate[] chain)
Assigns the given key to the given alias, protecting it with the given
password.
|
abstract int |
engineSize()
Retrieves the number of entries in this keystore.
|
void |
engineStore(KeyStore.LoadStoreParameter param)
Stores this keystore using the given
KeyStore.LoadStoreParmeter . |
abstract void |
engineStore(OutputStream stream,
char[] password)
Stores this keystore to the given output stream, and protects its
integrity with the given password.
|
public abstract Key engineGetKey(String alias, char[] password) throws NoSuchAlgorithmException, UnrecoverableKeyException
setKeyEntry
,
or by a call to setEntry
with a
PrivateKeyEntry
or SecretKeyEntry
.alias
- the alias namepassword
- the password for recovering the keyNoSuchAlgorithmException
- if the algorithm for recovering the
key cannot be foundUnrecoverableKeyException
- if the key cannot be recovered
(e.g., the given password is wrong).public abstract Certificate[] engineGetCertificateChain(String alias)
setKeyEntry
,
or by a call to setEntry
with a
PrivateKeyEntry
.alias
- the alias namepublic abstract Certificate engineGetCertificate(String alias)
If the given alias name identifies an entry
created by a call to setCertificateEntry
,
or created by a call to setEntry
with a
TrustedCertificateEntry
,
then the trusted certificate contained in that entry is returned.
If the given alias name identifies an entry
created by a call to setKeyEntry
,
or created by a call to setEntry
with a
PrivateKeyEntry
,
then the first element of the certificate chain in that entry
(if a chain exists) is returned.
alias
- the alias namepublic abstract Date engineGetCreationDate(String alias)
alias
- the alias namepublic abstract void engineSetKeyEntry(String alias, Key key, char[] password, Certificate[] chain) throws KeyStoreException
If the given key is of type java.security.PrivateKey
,
it must be accompanied by a certificate chain certifying the
corresponding public key.
If the given alias already exists, the keystore information associated with it is overridden by the given key (and possibly certificate chain).
alias
- the alias namekey
- the key to be associated with the aliaspassword
- the password to protect the keychain
- the certificate chain for the corresponding public
key (only required if the given key is of type
java.security.PrivateKey
).KeyStoreException
- if the given key cannot be protected, or
this operation fails for some other reasonpublic abstract void engineSetKeyEntry(String alias, byte[] key, Certificate[] chain) throws KeyStoreException
If the protected key is of type
java.security.PrivateKey
,
it must be accompanied by a certificate chain certifying the
corresponding public key.
If the given alias already exists, the keystore information associated with it is overridden by the given key (and possibly certificate chain).
alias
- the alias namekey
- the key (in protected format) to be associated with the aliaschain
- the certificate chain for the corresponding public
key (only useful if the protected key is of type
java.security.PrivateKey
).KeyStoreException
- if this operation fails.public abstract void engineSetCertificateEntry(String alias, Certificate cert) throws KeyStoreException
If the given alias identifies an existing entry
created by a call to setCertificateEntry
,
or created by a call to setEntry
with a
TrustedCertificateEntry
,
the trusted certificate in the existing entry
is overridden by the given certificate.
alias
- the alias namecert
- the certificateKeyStoreException
- if the given alias already exists and does
not identify an entry containing a trusted certificate,
or this operation fails for some other reason.public abstract void engineDeleteEntry(String alias) throws KeyStoreException
alias
- the alias nameKeyStoreException
- if the entry cannot be removed.public abstract Enumeration<String> engineAliases()
public abstract boolean engineContainsAlias(String alias)
alias
- the alias namepublic abstract int engineSize()
public abstract boolean engineIsKeyEntry(String alias)
setKeyEntry
,
or created by a call to setEntry
with a
PrivateKeyEntry
or a SecretKeyEntry
.alias
- the alias for the keystore entry to be checkedpublic abstract boolean engineIsCertificateEntry(String alias)
setCertificateEntry
,
or created by a call to setEntry
with a
TrustedCertificateEntry
.alias
- the alias for the keystore entry to be checkedpublic abstract String engineGetCertificateAlias(Certificate cert)
This method attempts to match the given certificate with each
keystore entry. If the entry being considered was
created by a call to setCertificateEntry
,
or created by a call to setEntry
with a
TrustedCertificateEntry
,
then the given certificate is compared to that entry's certificate.
If the entry being considered was
created by a call to setKeyEntry
,
or created by a call to setEntry
with a
PrivateKeyEntry
,
then the given certificate is compared to the first
element of that entry's certificate chain.
cert
- the certificate to match with.public abstract void engineStore(OutputStream stream, char[] password) throws IOException, NoSuchAlgorithmException, CertificateException
stream
- the output stream to which this keystore is written.password
- the password to generate the keystore integrity checkIOException
- if there was an I/O problem with dataNoSuchAlgorithmException
- if the appropriate data integrity
algorithm could not be foundCertificateException
- if any of the certificates included in
the keystore data could not be storedpublic void engineStore(KeyStore.LoadStoreParameter param) throws IOException, NoSuchAlgorithmException, CertificateException
KeyStore.LoadStoreParmeter
.param
- the KeyStore.LoadStoreParmeter
that specifies how to store the keystore,
which may be null
IllegalArgumentException
- if the given
KeyStore.LoadStoreParmeter
input is not recognizedIOException
- if there was an I/O problem with dataNoSuchAlgorithmException
- if the appropriate data integrity
algorithm could not be foundCertificateException
- if any of the certificates included in
the keystore data could not be storedpublic abstract void engineLoad(InputStream stream, char[] password) throws IOException, NoSuchAlgorithmException, CertificateException
A password may be given to unlock the keystore (e.g. the keystore resides on a hardware token device), or to check the integrity of the keystore data. If a password is not given for integrity checking, then integrity checking is not performed.
stream
- the input stream from which the keystore is loaded,
or null
password
- the password used to check the integrity of
the keystore, the password used to unlock the keystore,
or null
IOException
- if there is an I/O or format problem with the
keystore data, if a password is required but not given,
or if the given password was incorrect. If the error is due to a
wrong password, the cause
of the
IOException
should be an
UnrecoverableKeyException
NoSuchAlgorithmException
- if the algorithm used to check
the integrity of the keystore cannot be foundCertificateException
- if any of the certificates in the
keystore could not be loadedpublic void engineLoad(KeyStore.LoadStoreParameter param) throws IOException, NoSuchAlgorithmException, CertificateException
KeyStore.LoadStoreParameter
.
Note that if this KeyStore has already been loaded, it is reinitialized and loaded again from the given parameter.
param
- the KeyStore.LoadStoreParameter
that specifies how to load the keystore,
which may be null
IllegalArgumentException
- if the given
KeyStore.LoadStoreParameter
input is not recognizedIOException
- if there is an I/O or format problem with the
keystore data. If the error is due to an incorrect
ProtectionParameter
(e.g. wrong password)
the cause
of the
IOException
should be an
UnrecoverableKeyException
NoSuchAlgorithmException
- if the algorithm used to check
the integrity of the keystore cannot be foundCertificateException
- if any of the certificates in the
keystore could not be loadedpublic KeyStore.Entry engineGetEntry(String alias, KeyStore.ProtectionParameter protParam) throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableEntryException
KeyStore.Entry
for the specified alias
with the specified protection parameter.alias
- get the KeyStore.Entry
for this aliasprotParam
- the ProtectionParameter
used to protect the Entry
,
which may be null
KeyStore.Entry
for the specified alias,
or null
if there is no such entryKeyStoreException
- if the operation failedNoSuchAlgorithmException
- if the algorithm for recovering the
entry cannot be foundUnrecoverableEntryException
- if the specified
protParam
were insufficient or invalidUnrecoverableKeyException
- if the entry is a
PrivateKeyEntry
or SecretKeyEntry
and the specified protParam
does not contain
the information needed to recover the key (e.g. wrong password)public void engineSetEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam) throws KeyStoreException
KeyStore.Entry
under the specified alias.
The specified protection parameter is used to protect the
Entry
.
If an entry already exists for the specified alias, it is overridden.
alias
- save the KeyStore.Entry
under this aliasentry
- the Entry
to saveprotParam
- the ProtectionParameter
used to protect the Entry
,
which may be null
KeyStoreException
- if this operation failspublic boolean engineEntryInstanceOf(String alias, Class<? extends KeyStore.Entry> entryClass)
Entry
for the specified
alias
is an instance or subclass of the specified
entryClass
.alias
- the alias nameentryClass
- the entry classEntry
for the specified
alias
is an instance or subclass of the
specified entryClass
, false otherwiseDracula Javadoc Sample, Made with Allan Im.


Locations - Call 1-800-SALMON
- Seattle
420 Pike St
Seattle, WA 98112
United States
Hours: 6am - 8pm daily
- Tokyo
2-17, Hayabusacho
Chiyoda, Tokyo
Japan 102-0092
Hours: 6am - 8pm daily
- Dubai
4c Street 86
Dubai
United Arab Emirates
Hours: 6am - 8pm daily
- Paris
Rue de Rivoli
75058 Paris
France
Hours: 6am - 8pm daily
- Lima
Tarata Street
Lima
Peru
Hours: 6am - 8pm daily


ia636 - Python Toolbox for Teaching Image Processing
Description
This is a collection of general image processing functions written in Python with a collection of lessons used in the IA636 course (Image Processing) taught at School of Electrical and Computer Eng., University of Campinas, Brazil.
Requirements
This toolbox requires the adpil toolbox. (pip install adpil)
Documentation
The documentation of this toolbox is available at: http://adessowiki.fee.unicamp.br/adesso/wiki/ia636/view


Name
{{player.name}}
{{player.name}}
Rank
0">{{player.rank}}
Location
{{player.profile?.location}}
Shared Games
{{player.reputationStats?.games}}
Negative Rep.
|
{{player.reputationStats?.negativeReputation}}
|
thumb_down
|
Positive Rep.
|
{{player.reputationStats?.positiveReputation}}
|
thumb_up
|
Total Games
{{player.gameStatsNormalized?.totalGames}}
PRIVATE ACCOUNT
[{{player.gameStatsNormalized?.totalGames}}]
Win Ratio
{{player.gameStatsNormalized?.winRatio}}%
[{{player.gameStatsNormalized?.winRatio}}%]
Drop Ratio
{{player.gameStatsNormalized?.dropRatio}}%
[{{player.gameStatsNormalized?.dropRatio}}%]
Stop the session when you are no longer going to play. Start the lobby manually when the game has started.
Copy player stats (CTRL + ALT + 1)
- Calculate balanced teams based on player:
Rank (CTRL + ALT + 2),
Total Games (CTRL + ATL + 3),
Win Ratio (CTRL + ALT + 4)
| Seal the lobby when you are finished and have assigned reputations using |
thumb_down |
and |
thumb_up |
buttons. |


public class RobustPCA
extends java.lang.Object
| Constructor and Description |
|---|
RobustPCA(double lambda)
Constructor for Robust PCA.
|
| Modifier and Type | Method and Description |
|---|---|
void |
feedData(Matrix D)
Feed an observation matrix.
|
Matrix |
GetErrorMatrix()
Get the error matrix between the original observation matrix
and its low-rank recovered matrix.
|
Matrix |
GetLowRankEstimation()
Get the low-rank matrix recovered from the corrupted data
observation matrix.
|
static void |
main(java.lang.String[] args) |
void |
run()
Run robust PCA.
|
static Matrix[] |
run(Matrix D,
double lambda)
Compute robust PCA for an observation matrix which solves the
following convex optimization problem:
min ||A||_* + lambda ||E||_1
s.t.
|
public RobustPCA(double lambda)
lambda
- a positive weighting parameter, larger value leads to sparser
error matrixpublic static void main(java.lang.String[] args)
args
- public void feedData(Matrix D)
D
- a real matrixpublic void run()
public Matrix GetLowRankEstimation()
public Matrix GetErrorMatrix()
public static Matrix[] run(Matrix D, double lambda)
D
- a real observation matrixlambda
- a positive weighting parameter, larger value leads to sparser
error matrixMatrix
array [A, E] where A is the recovered low-rank
approximation of D, and E is the error matrix between A and D


Logic implementations of the game.
This package can be taken to build a GUI upon it. No assumptions about the structure od the GUI are made. The GUI
must only have the {@link GameManager} as reference. This class is responsible for the communication between the core
logic
and any GUI. For communication some classes are defined in the package
communication_data
.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/help.20with.20.60unify.60.html ---
I'm running into the following problem. I've built an expression
@equiv.arrow_congr.{1 1 1 ?l_1} α α ?m_2 ?m_3 ?m_4 ?m_5
which Lean tells me has type
equiv.{1 (imax 1 ?l_1)} (α → α) (?m_2 → ?m_3)
I want to unify this with another expression
?m_1
with type
equiv.{1 ?l_1} (α → α) ?m_2)
.
To me that looks good, and unification should succeed. But it doesn't. :-( Can anyone guess what is going on?
(deleted)
@Alex J. Best sorry, copy-paste error which I've just fixed.
Ah, I seem to have found the problem. With set_option pp.purify_metavars false
, we instead see that the two types are:
equiv.{1 (imax 1 ?l__fresh.1092.218230)} (α → α) (?m__fresh.1092.218696 → ?m__fresh.1092.218697)
and
equiv.{1 ?l__fresh.1092.218230} (α → α) ?m__fresh.1092.218370
and we can see why unification fails: the two ?l_1
s must be the same, so (imax 1 ?l_1)
isn't unifying with ?l_1
.
That's a bit weird, actually. Aren't they always equal, for any ?l_1
?
I guess Lean can't see that ?l_1 = (imax 1 ?l_1)
. Can anyone who knows universe level unification confirm that this is a plausible explanation?
I guess my workaround is going to be to avoid Sort
.
Page 2 of Mario's thesis has the universe unification rules. I can't find a way of deducing ?l_1 = (imax 1 ?l_1)
from the rules given.
Using the universe unification rules in my thesis, you can prove that and many other things, but crucially you have to use the split rule to case on whether ?l_1
is 0 or not, and lean doesn't have that rule, it has a fixed finite set of simplifications and that's it
The way the proof goes is that imax 1 0 = 0
and imax 1 (suc u) = max 1 (suc u) = suc (max 0 u) = suc u
, so imax 1 v = v
this is the way trepplein does universe checking
This was a really confusing and hard to debug issue. :-( I understand the issue now, but it took me forever to work out that the problem I was having (solve_by_elim refusing to apply a lemma that worked fine by hand) had as its root cause a universe issue.
What is the actual goal? I'm curious how this unification constraint can come up
Hmm... it will be a bit hard to re-extract, actually. I'll see if I can dig it out.
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


Engineering is creating things, whether they be physical such as robots and mechanisms, or virtual, like computer coding and even this very website. Engineers aim to create things to make the world better.
Anybody can be an engineer, as long as they have a passion for creating things and an imagination. All you need is a strong work ethic, so go ahead!
Of course! You can make whatever you want and find uses for anything. Plus, you get to work with talented individuals and collaborate on interesting projects!
If you would like to join the engingeering club, just contact us! There is no fee, just go to our contact page and send us an email.


|
jubilant-funicular
|
Collection of threads for running scheduled functions. More...
#include <ThreadPool.h>
Classes | |
| struct | worker |
| One thread available to the pool. More... | |
Public Member Functions | |
| ThreadPool (size_t num_threads) | |
| Constructs a ThreadPool with specified number of threads. | |
| void | schedule (const Thunk &thunk) |
| Schedules a function to be executed. | |
| void | wait () |
| Waits for all scheduled functions to finish execution. | |
| ThreadPool (const ThreadPool &)=delete | |
| ThreadPool & | operator= (const ThreadPool &)=delete |
Private Member Functions | |
| void | dispatcher () |
| Function run by dispatch thread. More... | |
| void | worker_func (size_t wid) |
| Function run by worker threads. | |
| size_t | getAvailableWorker () |
| Returns id of an available worker. | |
| bool | allWorkFinished () |
| Returns whether or not all work is finished. | |
Private Attributes | |
| struct { | |
| std::condition_variable_any | cv |
| std::mutex | m |
| } | m_empty |
| Used to keep track of when the pool is empty. | |
| std::vector< worker > | m_workers |
| The workers. | |
| std::atomic< bool > | m_kill |
| Sign to kill the pool. | |
| Semaphore | m_scheduled |
| Record of scheduled workers. | |
| Semaphore | m_available |
| Record of available workers. | |
| std::queue< Thunk > | m_funcs |
| The functions to be executed. | |
| std::thread | m_dispatch_thread |
| The thread for managing the pool. | |
Collection of threads for running scheduled functions.
Definition at line 36 of file ThreadPool.h.
|
private |
Function run by dispatch thread.
Definition at line 28 of file ThreadPool.cpp.
Referenced by ThreadPool().


From Date
To Date
Destination
We would like to officially welcome you to BCKN Trip Planner Builder's page. In here, you will have the opportunity
to start building your customized list of points of interest for the selected date. Once done, confirm your
list with the button below so you can see all the lists you have built as well as start planning activities
for another date and/or destination.
Remember: Make use of our added weather feature to assist you in choosing which activities you'd like to
participate in.
Click here if you already know the name of the place you are looking for!
Click here for a general search.


|
lubyk
0.5
|
#include <Action.h>
Inherits mimas::QAction, and lubyk::ThreadedLuaObject.
Public Member Functions | |
| Action (const char *name, QObject *parent=0) | |
| void | setShortcut (const char *sequence) |
| void | setMenuRole (int role) |
| ~Action () | |
Private Slots | |
| void | triggeredSlot () |
An Action can be connected to a menu or and will trigger it's callback on call (or shortcut).
| mimas::Action::Action | ( | const char * | name, |
| QObject * | parent = 0 |
||
| ) | [inline] |
Definition at line 49 of file Action.h.
References MIMAS_DEBUG_CC, and triggeredSlot().
| mimas::Action::~Action | ( | ) | [inline] |
Definition at line 69 of file Action.h.
References MIMAS_DEBUG_GC.
| void mimas::Action::setMenuRole | ( | int | role | ) | [inline] |
| void mimas::Action::setShortcut | ( | const char * | sequence | ) | [inline] |
| void mimas::Action::triggeredSlot | ( | ) | [inline, private, slot] |
Definition at line 74 of file Action.h.
References lubyk::ThreadedLuaObject::lua_, pushLuaCallback, and status.
Referenced by Action().


--- html_id: electrum title: electrum ---
Axe Electrum is a lightweight client for AXE network. Check with AXE wiki for more details. The source code is available at @AXErunners' GitHub repository.
Download binaries or follow this guide to install Axe Electrum from source on your system.
wget https://raw.githubusercontent.com/bauerj/electrumx-installer/master/bootstrap.sh -O - | bash
Finish the configuration by adding your AXE node's RPC login/pass in DAEMON_URL as user:pass@:/
Sample:
# REQUIRED
DB_DIRECTORY = /db
# AXE node RPC credentials
DAEMON_URL = axerunner:m3hk86m8vw@<IP_ADDRESS>:9337/
DB_ENGINE=rocksdb
SSL_CERTFILE=/etc/electrumx/server.crt
SSL_KEYFILE=/etc/electrumx/server.key
TCP_PORT=50001
SSL_PORT=50002
# Listen on all interfaces:
HOST=91.65.291.42
COIN=AXE
#BANNER_FILE = /etc/electrumx/electrum.banner
#Uncomment the above line if you want to have a banner and create the banner file
Add the ports in the firewall exception:
sudo ufw allow 50001
sudo ufw allow 50002
service electrumx start
service electrumx start


... and slides. https://speakerdeck.com/jasonrclark/a-cautionary-tale-threads-and-forks #cascadiaruby
10/22/2013, 4:03:55 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
... and slides. https://speakerdeck.com/jasonrclark/a-cautionary-tale-threads-and-forks #cascadiaruby
10/22/2013, 4:03:55 PM
Favs: 0
Retweets: 0
link


var game = new Phaser.Game(800, 600, Phaser.AUTO, 'phaser-example', { preload: preload, create: create });
function preload() {
game.load.atlas('seacreatures', 'assets/sprites/seacreatures_json.png', 'assets/sprites/seacreatures_json.json');
game.load.image('undersea', 'assets/pics/undersea.jpg');
game.load.image('coral', 'assets/pics/seabed.png');
}
function create() {
game.add.sprite(0, 0, 'undersea');
// Here we create our group and populate it with 6 sprites
var group = game.add.group();
for (var i = 0; i < 6; i++)
{
// They are evenly spaced out on the X coordinate, with a random Y coordinate
sprite = group.create(120 * i, game.rnd.integerInRange(100, 400), 'seacreatures', 'octopus0000');
}
// These are the frame names for the octopus animation. We use the generateFrames function to help create the array.
var frameNames = Phaser.Animation.generateFrameNames('octopus', 0, 24, '', 4);
// Here is the important part. Group.callAll will call a method that exists on every child in the Group.
// In this case we're saying: child.animations.add('swim', frameNames, 30, true, false)
// The second parameter ('animations') is really important and is the context in which the method is called.
// For animations the context is the Phaser.AnimationManager, which is linked to the child.animations property.
// Everything after the 2nd parameter is just the usual values you'd pass to the animations.add method.
group.callAll('animations.add', 'animations', 'swim', frameNames, 30, true, false);
// Here we just say 'play the swim animation', this time the 'play' method exists on the child itself, so we can set the context to null.
group.callAll('play', null, 'swim');
game.add.sprite(0, 466, 'coral');
}


 It looks like this isn't the first mail you've received from them, though. Why didn't you contact me right away?
Oh, well, the important thing now is to keep cool, and not let them know that we're on to them. I could block them from the site, but that would mean losing out on a golden opportunity to advance both our careers. You need to play along and make them believe that you're on their side.
Therefore, I am authorising you to do whatever the hackers want you to do, and whatever you feel is necessary to win their trust. Don't worry about causing any damage. I will intercept your input from my side and make sure that no harm is done. They will just think that I managed to spoil their plans, in spite of your excellent work.
IAM operatives always work in pairs, with an experienced "Omega" mentoring a less experienced "Alpha". You will probably have contact with both of them, but pay special attention to the "Omega". He/She is bound to be the most dangerous.
I hope you are up for this. Good luck!
Oskar Jönsson
Managing Consultant
Head of IT security


Where to find the best sushi in Snohomish County
Your top choice and two runners up.
Every year we take your nominations and let you vote for our Readers’ Choice awards. There are dozens of categories, and you can see the full list of winners here.
Today, we look at Sushi.
Best Sushi
WINNER: Sushi Ring, 11419 19th Ave SE # B101, Everett,<PHONE_NUMBER>
SECOND PLACE: Katana Sushi, 2818 Hewitt Ave., Everett,<PHONE_NUMBER>
RUNNER UP: Kai Sushi Fusion Roll & Sake, 2811 Colby Ave. #A, Everett,<PHONE_NUMBER>


Is update enabled: {{ updateEnabled$ | async | json }} Are you serving page on https?
Is update available: {{ updateAvailable$ | async | json }} Reload page


The Open Source Protocol is a way of telling developers where to access the source code for your website, if the source code is hosted in an open source repository on the public internet.
The OS Protocol uses metatags. To include an open source metatag on your website, simply add <meta />
tags for the following properties:
os:repo
- This should be a link to the repository web page, for instance the project page on GitHub, Bitbucket, or Sourceforge.os:rcs_type
- This should be the name of the revision control system used, for instance Git, Mercurial, Bazaar.os:src
- This is the repository url that can be used to obtain a copy of the source.This is not a place to link to code that is described on your website; rather, this is for the code for the actual website. That way, if anyone reading your website sees an error - a spelling mistake, broken CSS, etc. - or something they want to examine - a cool paralax library, etc. - they can quickly fetch the source code.
The os
protocol is loosely based on the Open Graph protocol, which in turn is based on RDFa. os
stands for "open source".
A link
element must be added in order to adhere to the standard. This is similar to the now deprecated profile
attribute, which used to go into the <HEAD />
.
<link rel="profile" href="http://osprotocol.com" />
<meta property="os:repo" content="https://github.com/RichardLitt/open-source-protocol" />
<meta property="os:rcs_type" content="git" />
<meta property="os:src" content="git@github.com:RichardLitt/open-source-protocol.git" />
Other tags that can be used:
os:issue
- This links to a place to report issues for the website.os:commit
- This is the commit id that the current site is based upon, as that may not always be the same as HEAD.os:branch
- This is the branch where the live code for the website lives.<meta property="os:issue" content="https://github.com/RichardLitt/open-source-protocol/issues" />
<meta property="os:commit" content="1sda73d" />
<meta property="os:branch" content="gh-pages" />
For use in the repository, to show your compliance and spread the word:
https://img.shields.io/badge/OSMT-passing-green.svg
https://img.shields.io/badge/OSMT-failing-red.svg
This is a work in progress. Please open an issue to discuss how the Open Source Protocol can be improved. PRs are encouraged!
To automatically copy README.md
from master
to gh-pages
, use the hook on gh-pages
in dev
. (Note: It doesn't like git add -p
).
This project is maintained by RichardLitt.


Hello friends and family! We have less than 50 days left to go!
Updates 4/21: Invitations are out and the RSVP page is now live! Click here to RSVP with the credentials you received with your invitation. If you have any problems or concerns, feel free to shoot us an email at<EMAIL_ADDRESS>Information on transportation has also been updated. You may view that below!
Updates 3/9: We have updated our website to include information on travel, hotel, registries, and our wonderful city of Kansas City. Please see below for all of the details regarding our
event,
where to stay,
and what to do when you’re not celebrating with us!
Megan will be posting updates on Facebook as we get closer to the event, so feel free to add me! Also, we have decided our wedding hashtags are #Russellmania2018 #OneRuthLessWedding and #marmerwedding if you’re into that sort of thing.
We are so excited to see everyone!!
- Megan and Matt
If you have any questions don't hesitate to reach out!


Do you really want to unsubscribe from IDT weekly?
Please stand by for a little moment as we are activating your subscription.
Loading ...
Your IDT weekly subscription is now deactivated.
Unfortunately your subscription could not be deactivated. Maybe it already is deleted or you have clicked the wrong link. If neither is the case please try again later.


11
1 Now as they came to Jerusalem, they were close to Bethphage and Bethany, at the Mount of Olives, and Jesus sent out two of his disciples
2 and said to them, "Go into the village opposite us. As soon as you enter it, you will find a colt that has never been ridden. Untie it and bring it to me.
3 If any one says to you, 'Why are you doing this?' you should say, 'The Lord has need of it and will immediately send it back here.'"
4 They went away and found a colt tied at a door outside on the open street, and they untied it.
5 A few people stood there and they said to them, "What are you doing untying that colt?"
6 They spoke to them as Jesus told them, and the people let them go their way.
7 The two disciples brought the colt to Jesus and threw their garments on it so Jesus could ride it.
8 Many people spread their garments on the road, and others spread branches they had cut from the fields.
9 Those who went before him and those who followed shouted,
"Hosanna! Blessed is the one who comes in the name of the Lord.
10 Blessed is the coming kingdom of our father David!
Hosanna in the highest!"
11 Then Jesus entered into Jerusalem and went into the temple area. He looked around at everything. It was now late in the evening, and he went out to Bethany with the Twelve.
12 The next day, when they returned from Bethany, he was hungry.
13 He saw a fig tree off in a distance that was showing leaves, so he went to see if he could find any fruit on it. When he came to it, he found nothing but leaves, for it was not the season for figs.
14 He spoke to it, "No one will ever eat fruit from you." His disciples heard what he said.
15 They came to Jerusalem, and he entered the temple area and began to cast out the sellers and the purchasers in the temple. He turned over the tables of the money changers and the seats of those who sold pigeons.
16 He did not allow anyone to carry anything through the temple that could be sold.
17 He taught them and said, "Is it not written,
'My house will be called a house of prayer for all the nations'?
But you have made it a den of robbers."
18 The chief priests and the scribes heard what he had said, and they were trying to kill him. For they feared him because the entire crowd was amazed at his teaching.
19 Every evening they left the city.
20 As they walked by in the morning, they saw the fig tree withered away to its roots.
21 Peter remembered and said, "Rabbi, look! The fig tree you cursed has withered away."
22 Jesus answered them, "Have faith in God.
23 Truly I say to you, whoever says to this mountain, 'May God lift you up and cast you into the sea,' and if he does not doubt in his heart but believes that what he said will happen, that is what God will do.
24 Therefore I say to you, Everything for which you ask in prayer, believe that you received it, and it will be yours.
25 When you stand and pray, you must forgive whatever you have against anyone, so that your Father who is in heaven will also forgive you your transgressions.
26 4The best ancient copies omit this verse (see Mt. 6:15). Mk. 11:26 But if you do not forgive, neither will your Father who is in heaven forgive your sins.
27 They came to Jerusalem again. As Jesus was walking in the temple, the chief priests, the scribes, and the elders came to him.
28 They said to him, "By what authority do you do these things, and who gave you the authority to do them?"
29 Jesus said to them, "I will ask you one question. Tell me and I will tell you by what authority I do these things.
30 The baptism of John, was it from heaven or from men? Answer me."
31 They discussed between themselves and argued and said, "If we say, 'From heaven,' he will say, 'Why then did you not believe him?'
32 But if we say, 'From men,' ..." They feared the people, for they all held that John was a prophet.
33 Then they answered Jesus and said, "We do not know." Then Jesus said to them, "Neither will I tell you by what authority I do these things."


{{ details.name }}-{{ details.version }} is not a library.
{# If the release has been yanked and is a library #}
{%- elif details.yanked -%}
{{ details.name }}-{{ details.version }} has been yanked.
{# If the build succeeded, isn't yanked and is a library #}
{%- elif details.build_status -%}
{# If there are no docs display a warning #}
{%- if not details.rustdoc_status -%}
{{ details.name }}-{{ details.version }} doesn't have any documentation.
{%- endif -%}
{# If there's a readme, display it #}
{%- if details.readme -%}
{{ details.readme | safe }}
{# If there's not a readme then attempt to display the long description #}
{%- elif details.rustdoc -%}
{{ details.rustdoc | safe }}
{%- endif -%}
{# If the build failed, the release isn't yanked and the release is a library #}
{%- else -%}
{# Display a warning telling the user we failed to build the docs #}
docs.rs failed to build {{ details.name }}-{{ details.version }}
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
{# If there is one, display the most next most recent successful build #}
{%- if details.last_successful_build -%}
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build:
{{ details.name }}-{{ details.last_successful_build }}
{%- endif -%}
{%- endif -%}


{{quote.author}}
{{quote.publisher}}
{{quote.completeDate|date}}
This quote will be completed in {{quote.completeDate|dateCount}} days


Zip Preview
To download the complete zip file, please use the
Access File
button above.
Downloading and unpacking...
Filename placeholder
0 %


The chipKIT Uno32 by DigilentThe chipKIT™ Uno32™ is based on the popular Arduino™ open source hardware prototyping platform, but it adds the performance of the Microchip PIC32 microcontroller. The Uno32 is the same form factor as the Arduino Uno board and is compatible with many Arduino shields. It features a USB serial port interface for connection to the IDE and can be powered via USB or an external power supply. The Uno32 board takes advantage of the powerful PIC32MX320F128 microcontroller. This microcontroller features a 32-bit MIPS processor core running at 80 MHz, 128K of flash program memory, and 16K of SRAM data memory. The Uno32 can be programmed using MPIDE, which is an integerated development environment based on the original Arduino IDE, but it has been modified to support PIC32 (while still supporting Arduino boards). In addition, the Uno32 is fully compatible with the advanced Microchip MPLAB® IDE and the PICKit3 in-system programmer/debugger. The Uno32 can be programmed using an environment based on the original Arduino™ IDE modified to support PIC32. In addition, the Uno32 is fully compatible with the advanced Microchip MPLAB® IDE and the PICKit3 in-system programmer/debugger. |


SAMMODE Research & Development Center / FREAKS Architecture
- Curated by Paula Pintos
- about 17 hours
Research Center · Lamotte-Beuvron, France
- version="1.0" encoding="UTF-8"? Architects: FREAKS Architecture
- AreaArea of this architecture projectArea: 1000.0 m2
- version="1.0" encoding="UTF-8"?YearCompletion year of this architecture project Year: 2019
- version="1.0" encoding="UTF-8"?PhotographsPhotographs: David FOESSEL
- version="1.0" encoding="UTF-8"?ManufacturersBrands with products used in this architecture project Manufacturers: sammode
- Lead Architect Pia Berge
More Specs Less Specs
Text description provided by the architects. Sammode - Société d’Application des Méthodes MODernes d’Éclairage électrique - is a French family lighting company founded in 1927, historically located in the Vosges and whose head office is in Paris, largely known and recognized for its ultra-resistant light tubes. In order to support the company in the development of its research activities, a third site has just opened within an old printing warehouse in Lamotte Beuvron, south of Orléans. The Sammode Research and Innovation Center is a research and development center completing the marketing and sales offices located in Paris and the manufacturing division in the Vosges.
FREAKS was commissioned to design the rehabilitation project which had to meet the technical requirements of a research and development center by offering generous office spaces (open-space or more isolated). The interior is composed of four boxes built in wood structure covered with spruce, distributed in the building. Their supporting structure is visible from the open spaces. In these closed boxes, which are sometimes completely airtight and light-proof, numerous tests of resistance of the luminaires are carried out: thermal shock, waterproofness with talc, longevity, vibration, electromagnetic measurement ... Open spaces are the result of the positioning of the boxes in the shed. Thus three open spaces form an area of ??offices and shared spaces, a zone of assembly and a zone for prototyping.
While the majority of the windows and doors remain unchanged, new openings generate natural light. An emergence on the roof, that can be seen from the street, accommodates a 5 meters high photogoniometer used to calculate the light intensity. The whole building is covered with a double skin of corrugated stainless steel sheets. The alternation of solid and perforated sheets allows a transparency that lets punctually guess volumes in the background. This transparency also allows a qualitative highlighting of the facade that refers to the activity of Sammode itself. The surroundings of the existing building are also treated: the vegetation that has grown spontaneously provides a very pleasant work environment while an a landscape intervention has been realised inside the new patio. A terrace has been built as an extension of the facade with extra trees, hedges and grasses, for the comfort of the site occupants and their visitors.


Match Play. Red leads 4-2 to 5 (post-Crawford). How should Red play 54?
pips Red=134 White=185
(CorrectAnswer= 0/0, ErrorScore= 0)
An awkward roll for Red. He needs to put the second White checker on the bar with 6/1* to gain a tempo and also to force White forward.
After that, 11/7 is the best four as it starts the useful bar-point which will be used as a landing spot for Red’s checkers as they come home. This is much more useful than 13/9.
After that, 11/7 is the best four as it starts the useful bar-point which will be used as a landing spot for Red’s checkers as they come home. This is much more useful than 13/9.
1. Cubeful 2-ply 11/7 6/1* Eq.: +0.153 0.653 0.265 0.012 - 0.347 0.077 0.002 2. Cubeful 2-ply 13/9 13/8 Eq.: +0.146 (-0.007) 0.645 0.233 0.013 - 0.355 0.073 0.001 3. Cubeful 2-ply 13/9 6/1* Eq.: +0.133 (-0.020) 0.645 0.253 0.012 - 0.355 0.078 0.002 4. Cubeful 2-ply 16/7 Eq.: +0.113 (-0.040) 0.634 0.220 0.012 - 0.366 0.078 0.002 5. Cubeful 2-ply 11/7 11/6 Eq.: +0.110 (-0.043) 0.637 0.243 0.013 - 0.363 0.082 0.002


public class Area extends Object implements Shape, Cloneable
Area
object stores and manipulates a
resolution-independent description of an enclosed area of
2-dimensional space.
Area
objects can be transformed and can perform
various Constructive Area Geometry (CAG) operations when combined
with other Area
objects.
The CAG operations include area
addition
, subtraction
,
intersection
, and exclusive or
.
See the linked method documentation for examples of the various
operations.
The Area
class implements the Shape
interface and provides full support for all of its hit-testing
and path iteration facilities, but an Area
is more
specific than a generalized path in a number of ways:
Area
objects constructed from unclosed paths
are implicitly closed during construction as if those paths
had been filled by the Graphics2D.fill
method.
Area
resembles the path from which it was
constructed only in that it describes the same enclosed
2-dimensional area, but may use entirely different types
and ordering of the path segments to do so.
Area
include:
Area
from an unclosed (open)
Shape
results in a closed outline in the
Area
object.
Area
from a Shape
which encloses no area (even when "closed") produces an
empty Area
. A common example of this issue
is that producing an Area
from a line will
be empty since the line encloses no area. An empty
Area
will iterate no geometry in its
PathIterator
objects.
Shape
may be split into
two (or more) sub-paths each enclosing one of the
non-intersecting portions of the original path.
Area
may take more path segments to
describe the same geometry even when the original
outline is simple and obvious. The analysis that the
Area
class must perform on the path may
not reflect the same concepts of "simple and obvious"
as a human being perceives.
| Constructor and Description |
|---|
Area()
Default constructor which creates an empty area.
|
Area(Shape s)
The
Area class creates an area geometry from the
specified Shape object. |
| Modifier and Type | Method and Description |
|---|---|
void |
add(Area rhs)
Adds the shape of the specified
Area to the
shape of this Area . |
Object |
clone()
Returns an exact copy of this
Area object. |
boolean |
contains(double x,
double y)
Tests if the specified coordinates are inside the boundary of the
Shape , as described by the
definition of insideness. |
boolean |
contains(double x,
double y,
double w,
double h)
Tests if the interior of the
Shape entirely contains
the specified rectangular area. |
boolean |
contains(Point2D p)
Tests if a specified
Point2D is inside the boundary
of the Shape , as described by the
definition of insideness. |
boolean |
contains(Rectangle2D r)
Tests if the interior of the
Shape entirely contains the
specified Rectangle2D . |
Area |
createTransformedArea(AffineTransform t)
Creates a new
Area object that contains the same
geometry as this Area transformed by the specified
AffineTransform . |
boolean |
equals(Area other)
Tests whether the geometries of the two
Area objects
are equal. |
void |
exclusiveOr(Area rhs)
Sets the shape of this
Area to be the combined area
of its current shape and the shape of the specified Area ,
minus their intersection. |
Rectangle |
getBounds()
Returns a bounding
Rectangle that completely encloses
this Area . |
Rectangle2D |
getBounds2D()
Returns a high precision bounding
Rectangle2D that
completely encloses this Area . |
PathIterator |
getPathIterator(AffineTransform at)
Creates a
PathIterator for the outline of this
Area object. |
PathIterator |
getPathIterator(AffineTransform at,
double flatness)
Creates a
PathIterator for the flattened outline of
this Area object. |
void |
intersect(Area rhs)
Sets the shape of this
Area to the intersection of
its current shape and the shape of the specified Area . |
boolean |
intersects(double x,
double y,
double w,
double h)
Tests if the interior of the
Shape intersects the
interior of a specified rectangular area. |
boolean |
intersects(Rectangle2D r)
Tests if the interior of the
Shape intersects the
interior of a specified Rectangle2D . |
boolean |
isEmpty()
Tests whether this
Area object encloses any area. |
boolean |
isPolygonal()
Tests whether this
Area consists entirely of
straight edged polygonal geometry. |
boolean |
isRectangular()
Tests whether this
Area is rectangular in shape. |
boolean |
isSingular()
Tests whether this
Area is comprised of a single
closed subpath. |
void |
reset()
Removes all of the geometry from this
Area and
restores it to an empty area. |
void |
subtract(Area rhs)
Subtracts the shape of the specified
Area from the
shape of this Area . |
void |
transform(AffineTransform t)
Transforms the geometry of this
Area using the specified
AffineTransform . |
public Area()
public Area(Shape s)
Area
class creates an area geometry from the
specified Shape
object. The geometry is explicitly
closed, if the Shape
is not already closed. The
fill rule (even-odd or winding) specified by the geometry of the
Shape
is used to determine the resulting enclosed area.s
- the Shape
from which the area is constructedNullPointerException
- if s
is nullpublic void add(Area rhs)
Area
to the
shape of this Area
.
The resulting shape of this Area
will include
the union of both shapes, or all areas that were contained
in either this or the specified Area
.
// Example: Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]); Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]); a1.add(a2); a1(before) + a2 = a1(after) ################ ################ ################ ############## ############## ################ ############ ############ ################ ########## ########## ################ ######## ######## ################ ###### ###### ###### ###### #### #### #### #### ## ## ## ##
rhs
- the Area
to be added to the
current shapeNullPointerException
- if rhs
is nullpublic void subtract(Area rhs)
Area
from the
shape of this Area
.
The resulting shape of this Area
will include
areas that were contained only in this Area
and not in the specified Area
.
// Example: Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]); Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]); a1.subtract(a2); a1(before) - a2 = a1(after) ################ ################ ############## ############## ## ############ ############ #### ########## ########## ###### ######## ######## ######## ###### ###### ###### #### #### #### ## ## ##
rhs
- the Area
to be subtracted from the
current shapeNullPointerException
- if rhs
is nullpublic void intersect(Area rhs)
Area
to the intersection of
its current shape and the shape of the specified Area
.
The resulting shape of this Area
will include
only areas that were contained in both this Area
and also in the specified Area
.
// Example: Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]); Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]); a1.intersect(a2); a1(before) intersect a2 = a1(after) ################ ################ ################ ############## ############## ############ ############ ############ ######## ########## ########## #### ######## ######## ###### ###### #### #### ## ##
rhs
- the Area
to be intersected with this
Area
NullPointerException
- if rhs
is nullpublic void exclusiveOr(Area rhs)
Area
to be the combined area
of its current shape and the shape of the specified Area
,
minus their intersection.
The resulting shape of this Area
will include
only areas that were contained in either this Area
or in the specified Area
, but not in both.
// Example: Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]); Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]); a1.exclusiveOr(a2); a1(before) xor a2 = a1(after) ################ ################ ############## ############## ## ## ############ ############ #### #### ########## ########## ###### ###### ######## ######## ################ ###### ###### ###### ###### #### #### #### #### ## ## ## ##
rhs
- the Area
to be exclusive ORed with this
Area
.NullPointerException
- if rhs
is nullpublic void reset()
Area
and
restores it to an empty area.public boolean isEmpty()
Area
object encloses any area.true
if this Area
object
represents an empty area; false
otherwise.public boolean isPolygonal()
Area
consists entirely of
straight edged polygonal geometry.true
if the geometry of this
Area
consists entirely of line segments;
false
otherwise.public boolean isRectangular()
Area
is rectangular in shape.true
if the geometry of this
Area
is rectangular in shape; false
otherwise.public boolean isSingular()
Area
is comprised of a single
closed subpath. This method returns true
if the
path contains 0 or 1 subpaths, or false
if the path
contains more than 1 subpath. The subpaths are counted by the
number of SEG_MOVETO
segments
that appear in the path.true
if the Area
is comprised
of a single basic geometry; false
otherwise.public Rectangle2D getBounds2D()
Rectangle2D
that
completely encloses this Area
.
The Area class will attempt to return the tightest bounding box possible for the Shape. The bounding box will not be padded to include the control points of curves in the outline of the Shape, but should tightly fit the actual geometry of the outline itself.
getBounds2D
in interface Shape
Rectangle2D
for the
Area
.Shape.getBounds()
public Rectangle getBounds()
Rectangle
that completely encloses
this Area
.
The Area class will attempt to return the tightest bounding box possible for the Shape. The bounding box will not be padded to include the control points of curves in the outline of the Shape, but should tightly fit the actual geometry of the outline itself. Since the returned object represents the bounding box with integers, the bounding box can only be as tight as the nearest integer coordinates that encompass the geometry of the Shape.
getBounds
in interface Shape
Rectangle
for the
Area
.Shape.getBounds2D()
public Object clone()
Area
object.public boolean equals(Area other)
Area
objects
are equal.
This method will return false if the argument is null.other
- the Area
to be compared to this
Area
true
if the two geometries are equal;
false
otherwise.public void transform(AffineTransform t)
Area
using the specified
AffineTransform
. The geometry is transformed in place, which
permanently changes the enclosed area defined by this object.t
- the transformation used to transform the areaNullPointerException
- if t
is nullpublic Area createTransformedArea(AffineTransform t)
Area
object that contains the same
geometry as this Area
transformed by the specified
AffineTransform
. This Area
object
is unchanged.t
- the specified AffineTransform
used to transform
the new Area
Area
object representing the transformed
geometry.NullPointerException
- if t
is nullpublic boolean contains(double x, double y)
Shape
, as described by the
definition of insideness.public boolean contains(Point2D p)
Point2D
is inside the boundary
of the Shape
, as described by the
definition of insideness.public boolean contains(double x, double y, double w, double h)
Shape
entirely contains
the specified rectangular area. All coordinates that lie inside
the rectangular area must lie within the Shape
for the
entire rectangular area to be considered contained within the
Shape
.
The Shape.contains()
method allows a Shape
implementation to conservatively return false
when:
intersect
method returns true
and
Shape
entirely contains the rectangular area are
prohibitively expensive.
Shapes
this method might
return false
even though the Shape
contains
the rectangular area.
The Area
class performs
more accurate geometric computations than most
Shape
objects and therefore can be used if a more precise
answer is required.contains
in interface Shape
x
- the X coordinate of the upper-left corner
of the specified rectangular areay
- the Y coordinate of the upper-left corner
of the specified rectangular areaw
- the width of the specified rectangular areah
- the height of the specified rectangular areatrue
if the interior of the Shape
entirely contains the specified rectangular area;
false
otherwise or, if the Shape
contains the rectangular area and the
intersects
method returns true
and the containment calculations would be too expensive to
perform.Area
,
Shape.intersects(double, double, double, double)
public boolean contains(Rectangle2D r)
Shape
entirely contains the
specified Rectangle2D
.
The Shape.contains()
method allows a Shape
implementation to conservatively return false
when:
intersect
method returns true
and
Shape
entirely contains the Rectangle2D
are prohibitively expensive.
Shapes
this method might
return false
even though the Shape
contains
the Rectangle2D
.
The Area
class performs
more accurate geometric computations than most
Shape
objects and therefore can be used if a more precise
answer is required.contains
in interface Shape
r
- The specified Rectangle2D
true
if the interior of the Shape
entirely contains the Rectangle2D
;
false
otherwise or, if the Shape
contains the Rectangle2D
and the
intersects
method returns true
and the containment calculations would be too expensive to
perform.Shape.contains(double, double, double, double)
public boolean intersects(double x, double y, double w, double h)
Shape
intersects the
interior of a specified rectangular area.
The rectangular area is considered to intersect the Shape
if any point is contained in both the interior of the
Shape
and the specified rectangular area.
The Shape.intersects()
method allows a Shape
implementation to conservatively return true
when:
Shape
intersect, but
Shapes
this method might
return true
even though the rectangular area does not
intersect the Shape
.
The Area
class performs
more accurate computations of geometric intersection than most
Shape
objects and therefore can be used if a more precise
answer is required.intersects
in interface Shape
x
- the X coordinate of the upper-left corner
of the specified rectangular areay
- the Y coordinate of the upper-left corner
of the specified rectangular areaw
- the width of the specified rectangular areah
- the height of the specified rectangular areatrue
if the interior of the Shape
and
the interior of the rectangular area intersect, or are
both highly likely to intersect and intersection calculations
would be too expensive to perform; false
otherwise.Area
public boolean intersects(Rectangle2D r)
Shape
intersects the
interior of a specified Rectangle2D
.
The Shape.intersects()
method allows a Shape
implementation to conservatively return true
when:
Rectangle2D
and the
Shape
intersect, but
Shapes
this method might
return true
even though the Rectangle2D
does not
intersect the Shape
.
The Area
class performs
more accurate computations of geometric intersection than most
Shape
objects and therefore can be used if a more precise
answer is required.intersects
in interface Shape
r
- the specified Rectangle2D
true
if the interior of the Shape
and
the interior of the specified Rectangle2D
intersect, or are both highly likely to intersect and intersection
calculations would be too expensive to perform; false
otherwise.Shape.intersects(double, double, double, double)
public PathIterator getPathIterator(AffineTransform at)
getPathIterator
in interface Shape
at
- an optional AffineTransform
to be applied to
the coordinates as they are returned in the iteration, or
null
if untransformed coordinates are desiredPathIterator
object that returns the
geometry of the outline of this Area
, one
segment at a time.public PathIterator getPathIterator(AffineTransform at, double flatness)
PathIterator
for the flattened outline of
this Area
object. Only uncurved path segments
represented by the SEG_MOVETO, SEG_LINETO, and SEG_CLOSE point
types are returned by the iterator. This Area
object is unchanged.getPathIterator
in interface Shape
at
- an optional AffineTransform
to be
applied to the coordinates as they are returned in the
iteration, or null
if untransformed coordinates
are desiredflatness
- the maximum amount that the control points
for a given curve can vary from colinear before a subdivided
curve is replaced by a straight line connecting the end pointsPathIterator
object that returns the
geometry of the outline of this Area
, one segment
at a time.Dracula Javadoc Sample, Made with Allan Im.


This example uses a mix of tile styles from Stamen and OSM to demonstrate the use of different layers on the map and the magnifying glass. It also shows the effect of the fixedPosition option.
Check the code!


class: center, middle, inverse, title-slide # Visualizing and Analyzing Text Data ## with tidytext and ggwordcloud ### Kivalina Grove ### 02/04/2019 --- background-image: url(LegoGradStudent.jpg) class: center, bottom, inverse "Enjoying his work, the grad student solemnly ponders whether he has fallen victim to Stockholm syndrome. #gradschool" Image credit: [Lego Grad Student](https://legogradstudent.tumblr.com/image/177771200086) --- ## Getting Twitter Data: rtweet package Install the [**rtweet**](https://cran.r-project.org/web/packages/rtweet/rtweet.pdf) package. Now we can easily search and pull tweets directly from Twitter: ```r #can search hashtags directly data <- search_tweets("#gradschool", n = 18000, include_rts = FALSE) #spaces between words operate like boolean "AND" operator data <- search_tweets("grad school", n = 18000, include_rts = FALSE) #use "OR" to search for tweets with one of a list of words data <- search_tweets("grad OR school", n = 18000, include_rts = FALSE) ``` Some things to note: - Only returns recent tweets: from past 6-9 days (due to Twitter's Search API) - Limit of 18,000 tweets on a single call, but can set *retryonratelimit = TRUE* to get more. - Can choose to include retweets with *include_rts = TRUE* --- ## Getting Data in a Tidy Text Format Before we can analyze our data, we need to get it into a tidy text format: a table where there is **one token per row**, per [Text Mining With R](https://www.tidytextmining.com). A token is a meaningful unit of text we are interested in for analysis (word, phrase, sentence, paragraph). Let's start by pulling out the columns we are interested in: ```r gs_data <- gs_data %>% select(screen_name, created_at, text, hashtags) head(gs_data) ``` ``` ## # A tibble: 6 x 4 ## screen_name created_at text hashtags ## <chr> <dttm> <chr> <list> ## 1 rutgersGSA 2019-01-30 03:39:39 "📚 Grad Student Life and @… <chr [6… ## 2 rutgersGSA 2019-01-22 17:35:41 "Happy first day of class!… <chr [4… ## 3 extra_jordanary 2019-01-30 03:29:41 I'm ready for this quarter… <chr [4… ## 4 DuenoTatiana 2019-01-30 03:29:15 I will not drop out. I wil… <chr [1… ## 5 A_L_F_Writes 2019-01-30 03:27:12 Time to start my #first #e… <chr [9… ## 6 aprilmbrown8 2019-01-30 03:25:36 40% done! #gradstudent #gr… <chr [6… ``` --- ## Getting Data in a Tidy Text Format Next, we can use the **unnest_tokens()** function (from package [**tidytext**](https://cran.r-project.org/web/packages/tidytext/vignettes/tidytext.html)) to split the words in the "text" column apart into a new column called "word" where each word is on its own row (tidytext format!). ```r gs_words <- gs_data %>% unnest_tokens(word, text, token = "words") head(gs_words, n = 4) ``` ``` ## # A tibble: 4 x 4 ## screen_name created_at hashtags word ## <chr> <dttm> <list> <chr> ## 1 rutgersGSA 2019-01-30 03:39:39 <chr [6]> grad ## 2 rutgersGSA 2019-01-30 03:39:39 <chr [6]> student ## 3 rutgersGSA 2019-01-30 03:39:39 <chr [6]> life ## 4 rutgersGSA 2019-01-30 03:39:39 <chr [6]> and ``` - Note that we could use different tokens here: built in options for "characters", "words", "ngrams", "sentences", "lines" etc. - "ngrams" are adjacent words, use argument *n = 2* to select word pairs, for example. --- ## Word Counts Now that our data is in a tidytext format, we can count the number of occurrences of each word. ```r gs_counts <- gs_words %>% count(word, sort = TRUE) head(gs_counts, n = 10) ``` ``` ## # A tibble: 10 x 2 ## word n ## <chr> <int> ## 1 gradschool 1398 ## 2 https 1018 ## 3 t.co 1018 ## 4 to 885 ## 5 the 833 ## 6 a 706 ## 7 and 622 ## 8 i 571 ## 9 of 488 ## 10 for 471 ``` --- ## Quick Graph of Word Counts (n > 400) ![](Text_Analysis_Presentation_files/figure-html/gs_graph1-1.png) Issue: seeing lots of common words (and hyperlinks) - not very informative! --- ## Stop Words We can remove these common words ("a", "the", "and", etc.) using an anti_join with the *stop_words* dataset from the **tidytext** package. ```r gs_words <- gs_words %>% anti_join(stop_words) ``` To remove the "t.co" and "https" words we are seeing (remnants of twitter links!), we can just use bind_rows to add them to our stop_words list. ```r c_stop_words <- bind_rows(data_frame(word = c("t.co", "https", "i’m"), lexicon = c("custom", "custom", "custom")), stop_words) gs_words <- gs_words %>% anti_join(c_stop_words) ``` ``` ## Joining, by = "word" ``` --- ## Graph Without Stop Words Now when we graph the word count, it is much more informative. ![](Text_Analysis_Presentation_files/figure-html/wordcountgraph2-1.png) --- ## A Slight Tangent: Other Stop Words You can customize the stop_words list, but for some data, you might want an entirely different stop_words list. For example, say you were interested in mapping word frequency in Shakespeare's "The Comedy of Errors". Using the [**gutenbergr**](https://cran.r-project.org/web/packages/gutenbergr/vignettes/intro.html) package, we can easily import text available through Project Gutenberg. Using the *gutenberg_works()* function allows us to search by many parameters (author, title, etc.) only among those texts that are in English, can be downloaded, etc. Using the ID#, we can then download the text. ```r library(gutenbergr) gutenberg_works(title == "The Comedy of Errors") ``` ``` ## # A tibble: 1 x 8 ## gutenberg_id title author gutenberg_autho… language gutenberg_books… ## <int> <chr> <chr> <int> <chr> <chr> ## 1 1504 The Co… Shakesp… 65 en <NA> ## # ... with 2 more variables: rights <chr>, has_text <lgl> ``` ```r comedy_errors <- gutenberg_download(1504) ``` --- ## A Slight Tangent: Other Stop Words Replicating what we did before with the twitter data, we can then use the *unnest_tokens()* function, *anti_join()* with stop_words, and then count and sort. ```r ce_words <- comedy_errors %>% unnest_tokens(word, text) %>% anti_join(stop_words) %>% count(word, sort = TRUE) head(ce_words, n = 8) ``` ``` ## # A tibble: 8 x 2 ## word n ## <chr> <int> ## 1 syracuse 227 ## 2 dromio 222 ## 3 antipholus 216 ## 4 ephesus 169 ## 5 thou 134 ## 6 sir 115 ## 7 adriana 90 ## 8 thee 66 ``` We can see that there are still several common words ("thee", "thou") that weren't removed by the *anti_join()* with stop_words. --- ## Elizabethan Stop Words Luckily for us, [Bryan Bumgardner](http://bryanbumgardner.com/elizabethan-stop-words-for-nlp/) has created a list of [Elizabethan Stop Words](https://github.com/BryanBumgardner/gutenburg_nlp/blob/master/stopwords_elizabethan) for this very use. Thus, we can easily download Bryan's elizabethan_stop_words file, and use that to remove common words and create a WordCloud for "The Comedy of Errors". ```r eliz_stop_words <- import("stopwords_elizabethan.html", class = "tbl_df") eliz_stop_words$V1[127:150] ``` ``` ## [1] "art" "doth" "dost" "'ere" "hast" ## [6] "hath" "hence" "hither" "nigh" "oft" ## [11] "should'st" "thither" "thee" "thou" "thine" ## [16] "thy" "'tis" "'twas" "wast" "whence" ## [21] "wherefore" "whereto" "withal" "would'st" ``` ```r ce_words <- comedy_errors %>% unnest_tokens(word, text) %>% anti_join(eliz_stop_words, by = c("word" = "V1")) %>% count(word, sort = TRUE) ``` --- ## The Comedy of Errors Word Cloud  --- ## Back on Track: Assembling a Word Cloud Now that we have the counts, we can use the package [**ggwordcloud**](https://cran.r-project.org/web/packages/ggwordcloud/vignettes/ggwordcloud.html) to create a wordcloud of the most common words. ```r #filter to remove really large count for gradschool, and words with small counts gs_filter <- gs_counts %>% filter(n > 40 & n < 1000) #create wordcloud set.seed(12) ggplot(gs_filter, aes(label = word, size = n)) + geom_text_wordcloud_area(rm_outside = TRUE) + scale_size_area(max_size = 25) + theme_minimal() ``` - Note: use *set.seed()* command to avoid random fluctuation in word placement within cloud. - *scale_size_area()* sets true proportionality (so the words are scaled proportional to the value), and allows for better font size control. - set *rm_outside = TRUE* to avoid overlapping words (removes words that don't fit). --- ## Basic Word Cloud  --- ## Some Wordcloud Options: Angles To rotate some words, set the *angle* aesthetic. Here, example of having 50% of the words randomly be turned 90 degrees. ```r gs_filter_angle <- gs_filter %>% mutate(angle = 90 * sample(c(0, 1), n(), replace = TRUE, prob = c(50, 50))) wc1 <- ggplot(gs_filter_angle, aes(label = word, size = n, angle = angle)) + geom_text_wordcloud_area(rm_outside = TRUE) + scale_size_area(max_size = 25) + theme_minimal() ``` --- ##Angled Word Cloud  --- ## Some Wordcloud Options: Shaped Clouds You can change the shape the wordcloud is presented in. Default shape is a circle, but you can also use other shapes in the *shape* option within the *geom_text_wordcloud_area()* function. - cardioid - diamond - square - triangle-forward - triangle-upright - pentagon - star ```r wc2 <- ggplot(gs_filter, aes(label = word, size = n)) + geom_text_wordcloud_area(rm_outside = TRUE, shape = "diamond") + scale_size_area(max_size = 20) + theme_minimal() ``` --- ## Shaped WordClouds: Diamond  --- ## Shaped WordClouds: Star  --- ##Some Word Cloud Options: Color You can assign colors to the words in a cloud both randomly, and based on a value. Random color assignment: ```r color <- factor(sample.int(10, nrow(gs_filter), replace = TRUE)) wc3 <- ggplot(gs_filter, aes(label = word, size = n, color = color)) + geom_text_wordcloud_area(rm_outside = TRUE) + scale_size_area(max_size = 25) + theme_minimal() ``` Color assignment by the value of n: ```r wc4 <- ggplot(gs_filter, aes(label = word, size = n, color = n)) + geom_text_wordcloud_area(rm_outside = TRUE) + scale_size_area(max_size = 25) + theme_minimal() + scale_color_distiller(palette = "Spectral") ``` --- ## Word Cloud in (Random) Color  --- ## Word Cloud in Color (by n)  --- ## Sentiment Analysis We can also filter the words in our cloud according to their sentiment using the sentiment lexicons in the **sentiments** dataset within the **tidytext** package. I'm going to use the "bing" lexicon, which categorizes words into positive or negative categories, and then we can use an *inner_join()* to combine this sentiment information with our tidytext data. ```r gs_words <- gs_words %>% inner_join(get_sentiments("bing")) %>% count(word, sentiment, sort = TRUE) set.seed(15) sentcloud <- gs_words %>% group_by(sentiment) %>% top_n(15) %>% ggplot(aes(label = word, size = n, color = sentiment)) + geom_text_wordcloud_area(rm_outside = TRUE) + scale_size_area(max_size = 30) + theme_minimal() ``` --- ## Sentiment Analysis Word Cloud