1 The word of the LORD which came unto Zephaniah the son of Cushi, the son of Gedaliah, the son of Amariah, the son of Hizkiah, in the days of Josiah the son of Amon, king of Judah.
2 I will utterly consume all things from off the land, saith the LORD.
3 I will consume man and beast; I will consume the fowls of the heaven, and the fishes of the sea, and the stumblingblocks with the wicked; and I will cut off man from off the land, saith the LORD.
4 I will also stretch out mine hand upon Judah, and upon all the inhabitants of Jerusalem; and I will cut off the remnant of Baal from this place, and the name of the Chemarims with the priests;
5 And them that worship the host of heaven upon the housetops; and them that worship and that swear by the LORD, and that swear by Malcham;
6 And them that are turned back from the LORD; and those that have not sought the LORD, nor inquired for him.
7 Hold thy peace at the presence of the Lord GOD: for the day of the LORD is at hand: for the LORD hath prepared a sacrifice, he hath bid his guests.
8 And it shall come to pass in the day of the LORD's sacrifice, that I will punish the princes, and the king's children, and all such as are clothed with strange apparel.
9 In the same day also will I punish all those that leap on the threshold, which fill their masters' houses with violence and deceit.
10 And it shall come to pass in that day, saith the LORD, that there shall be the noise of a cry from the fish gate, and an howling from the second, and a great crashing from the hills.
11 Howl, ye inhabitants of Maktesh, for all the merchant people are cut down; all they that bear silver are cut off.
12 And it shall come to pass at that time, that I will search Jerusalem with candles, and punish the men that are settled on their lees: that say in their heart, The LORD will not do good, neither will he do evil.
13 Therefore their goods shall become a booty, and their houses a desolation: they shall also build houses, but not inhabit them; and they shall plant vineyards, but not drink the wine thereof.
14 The great day of the LORD is near, it is near, and hasteth greatly, even the voice of the day of the LORD: the mighty man shall cry there bitterly.
15 That day is a day of wrath, a day of trouble and distress, a day of wasteness and desolation, a day of darkness and gloominess, a day of clouds and thick darkness,
16 A day of the trumpet and alarm against the fenced cities, and against the high towers.
17 And I will bring distress upon men, that they shall walk like blind men, because they have sinned against the LORD: and their blood shall be poured out as dust, and their flesh as the dung.
18 Neither their silver nor their gold shall be able to deliver them in the day of the LORD's wrath; but the whole land shall be devoured by the fire of his jealousy: for he shall make even a speedy riddance of all them that dwell in the land.
1 Gather yourselves together, yea, gather together, O nation not desired;
2 Before the decree bring forth, before the day pass as the chaff, before the fierce anger of the LORD come upon you, before the day of the LORD's anger come upon you.
3 Seek ye the LORD, all ye meek of the earth, which have wrought his judgment; seek righteousness, seek meekness: it may be ye shall be hid in the day of the LORD's anger.
4 For Gaza shall be forsaken, and Ashkelon a desolation: they shall drive out Ashdod at the noon day, and Ekron shall be rooted up.
5 Woe unto the inhabitants of the sea coast, the nation of the Cherethites! the word of the LORD is against you; O Canaan, the land of the Philistines, I will even destroy thee, that there shall be no inhabitant.
6 And the sea coast shall be dwellings and cottages for shepherds, and folds for flocks.
7 And the coast shall be for the remnant of the house of Judah; they shall feed thereupon: in the houses of Ashkelon shall they lie down in the evening: for the LORD their God shall visit them, and turn away their captivity.
8 I have heard the reproach of Moab, and the revilings of the children of Ammon, whereby they have reproached my people, and magnified themselves against their border.
9 Therefore as I live, saith the LORD of hosts, the God of Israel, Surely Moab shall be as Sodom, and the children of Ammon as Gomorrah, even the breeding of nettles, and saltpits, and a perpetual desolation: the residue of my people shall spoil them, and the remnant of my people shall possess them.
10 This shall they have for their pride, because they have reproached and magnified themselves against the people of the LORD of hosts.
11 The LORD will be terrible unto them: for he will famish all the gods of the earth; and men shall worship him, every one from his place, even all the isles of the heathen.
12 Ye Ethiopians also, ye shall be slain by my sword.
13 And he will stretch out his hand against the north, and destroy Assyria; and will make Nineveh a desolation, and dry like a wilderness.
14 And flocks shall lie down in the midst of her, all the beasts of the nations: both the cormorant and the bittern shall lodge in the upper lintels of it; their voice shall sing in the windows; desolation shall be in the thresholds: for he shall uncover the cedar work.
15 This is the rejoicing city that dwelt carelessly, that said in her heart, I am, and there is none beside me: how is she become a desolation, a place for beasts to lie down in! every one that passeth by her shall hiss, and wag his hand.
1 Woe to her that is filthy and polluted, to the oppressing city!
2 She obeyed not the voice; she received not correction; she trusted not in the LORD; she drew not near to her God.
3 Her princes within her are roaring lions; her judges are evening wolves; they gnaw not the bones till the morrow.
4 Her prophets are light and treacherous persons: her priests have polluted the sanctuary, they have done violence to the law.
5 The just LORD is in the midst thereof; he will not do iniquity: every morning doth he bring his judgment to light, he faileth not; but the unjust knoweth no shame.
6 I have cut off the nations: their towers are desolate; I made their streets waste, that none passeth by: their cities are destroyed, so that there is no man, that there is none inhabitant.
7 I said, Surely thou wilt fear me, thou wilt receive instruction; so their dwelling should not be cut off, howsoever I punished them: but they rose early, and corrupted all their doings.
8 Therefore wait ye upon me, saith the LORD, until the day that I rise up to the prey: for my determination is to gather the nations, that I may assemble the kingdoms, to pour upon them mine indignation, even all my fierce anger: for all the earth shall be devoured with the fire of my jealousy.
9 For then will I turn to the people a pure language, that they may all call upon the name of the LORD, to serve him with one consent.
10 From beyond the rivers of Ethiopia my suppliants, even the daughter of my dispersed, shall bring mine offering.
11 In that day shalt thou not be ashamed for all thy doings, wherein thou hast transgressed against me: for then I will take away out of the midst of thee them that rejoice in thy pride, and thou shalt no more be haughty because of my holy mountain.
12 I will also leave in the midst of thee an afflicted and poor people, and they shall trust in the name of the LORD.
13 The remnant of Israel shall not do iniquity, nor speak lies; neither shall a deceitful tongue be found in their mouth: for they shall feed and lie down, and none shall make them afraid.
14 Sing, O daughter of Zion; shout, O Israel; be glad and rejoice with all the heart, O daughter of Jerusalem.
15 The LORD hath taken away thy judgments, he hath cast out thine enemy: the king of Israel, even the LORD, is in the midst of thee: thou shalt not see evil any more.
16 In that day it shall be said to Jerusalem, Fear thou not: and to Zion, Let not thine hands be slack.
17 The LORD thy God in the midst of thee is mighty; he will save, he will rejoice over thee with joy; he will rest in his love, he will joy over thee with singing.
18 I will gather them that are sorrowful for the solemn assembly, who are of thee, to whom the reproach of it was a burden.
19 Behold, at that time I will undo all that afflict thee: and I will save her that halteth, and gather her that was driven out; and I will get them praise and fame in every land where they have been put to shame.
20 At that time will I bring you again, even in the time that I gather you: for I will make you a name and a praise among all people of the earth, when I turn back your captivity before your eyes, saith the LORD.
| << Habakkuk | Contents | Haggai >> |


h1>Heading
Paragraphs are separated by a blank line.
Text attributes Italic, bold, monospace.
monospace
Shopping list:
Numbered list:
The rain—not the reign—in Spain.


Getting Started¶
Follow the instructions to quickly get started with using easy_perception_deployment.
The steps are meant to be executed in sequence. Please follow the steps strictly.
Build Camera using ROS2¶
A ROS-supported camera device is required.
If you are using a laptop with an integrated camera, follow these steps to transform it a necessary ROS node.
We will continue to use the workspace we created in Setup
cd ~/epd_ros2_ws/src
git clone https://github.com/clydemcqueen/opencv_cam.git
git clone https://github.com/ptrmu/ros2_shared.git
cd ~/epd_ros2_ws
source /opt/ros/foxy/setup.bash
rosdep install --from-paths src --ignore-src -y --rosdistro "${ROS_DISTRO}"
colcon build
So you have a simple ROS2 camera package ready to go using your laptop camera.
Launch Camera ROS2¶
Run the following commands to verify if your camera setup is working.
# Open a new commandline terminal
cd ~/epd_ros2_ws/
source /opt/ros/foxy/setup.bash
source install/setup.bash
ros2 run opencv_cam opencv_cam_main
# Open a new commandline terminal
source /opt/ros/foxy/setup.bash
ros2 run image_tools showimage -r /image:=/image_raw
By running the commands in the 2 terminals, the Camera Setup is working if you see a window labelled, showimage displaying your camera feed.
Launch Easy Perception Deployment ROS2 Package¶
Modify the following line in run.launch.py under the following directory:
~/epd_ros2_ws/src/easy_perception_deployment/easy_perception_deployment/launch/
Change from:
output='screen',
remappings=[('/processor/image_input', '/virtual_camera/image_raw')]
Change to:
output='screen',
remappings=[('/processor/image_input', '/image_raw')]
This sets the necessary link between any input ROS2 cameras and the easy_perception_deployment package.
2. Double-click on easy_perception_deployment.desktop file on your Desktop. This file is generated by following the instructions under Setup.
A GUI window labelled, easy_perception_deployment, should appear.
Click on the button labelled, Deploy.
A GUI window labelled, Deploy, should appear.
Click on the button labelled, ONNX Model, and select FasterRCNN-10.onnx file under the following directory.
~/epd_ros2_ws/src/easy_perception_deployment/easy_perception_deployment/data/model/FasterRCNN-10.onnx
Click on the button labelled, Label List, and select coco_classes.txt file under the following directory.
~/epd_ros2_ws/src/easy_perception_deployment/easy_perception_deployment/data/label_list/coco_classes.txt
Click on the DropDown menu labelled, Use Case, and select Classification.
A window should appear, informing you that there are no further configurations required.
Click on the button labelled, Run.
The easy_perception_deployment ROS2 package should start running and you should see your camera feed with bounding boxes showing the model inference result.


Predict digits
Write a digit with your mouse and see output of a neural net
0:%
1:%
2:%
3:%
4:%
5:%
6:%
7:%
8:%
9:%


Investment Thesis for Life
Everybody against me. Why? Why me? I have not brought violence to you. I have not brought Thug Life to America. I didn't create Thug Life. I diagnosed it. -Tupac Shakur
When I saw Reid Hoffman speak to a small group at StartX, he stated that he used an investment thesis for everything he does. An investment thesis helps investors set up goals and metrics for their investments. It helps investors determine whether the investment is on track for success.
Reid stated that after some time, he'll revisit his investment thesis to measure how he's doing. If a project he's working on is still inline with his original goals, he'll continue working on it. If he determines the project is not doing what it originally intended, he abandons it.
I can only remember a single time in my life where I've made a new year resolution, although, I make resolutions all the time. I don't wait to advance myself only once a year. I'd rather be constantly changing and bettering myself. Sebastian Marshall tries to improve himself 1% per day.
You shouldn't be focusing on things because they're new. There are two reasons for new year's resolutions not sticking. You aren't serious about them and you don't have enough practice implementing change in our lives.
We should continually practice changing ourselves. We need to invest in making ourselves better. We need to continue with investments that propel us forward. If we practice changing ourselves often, we will get better at doing it. But, we need to measure how you are doing.
Measuring the performance of resolutions is smart. You can use measurements to understand if you should continue with the resolution. But, how do you know you should abandon a resolution? This is where Reid Hoffman's life investment thesis is interesting.
By writing down the intended goal and metric before beginning a resolution, you have a way of understanding whether your should continue, double-down, or abandon the change.
Make sure that you give yourself enough time to see changes before abandoning ideas. Make sure you aren't just stuck in a dip. Once you realize an idea is bad, abandon fast.
Why not attempt a change once a month or once a week? How many more things could you do if you attempted to make changes in your life more than once a year?
What do you think? Do you think having an investment thesis for everything in your life is a good or bad idea?


You can create a website very quickly with Bootstrap, giving you more time to focus on the content or the styling.
You can put anything in a card
You'll probably have to look up the Grid system in Bootstrap's documentation
This is a very simple implementation of the grid system
Footer


Develop a governing docuemnt (Costitution/Code of Conduct/etc.) for your organization that includes the guidelines for members to follow
The document should clearly define leadership opportunities (ex. President, VP, Chairman, Secretary, etc.)
The document should be reviewed once a year
Meetings
Provide the day, time, and location of your meetings and update it at the beginning of every quarter
Organizations should meet a minimum of once a quarter
A tracker sheet should be completed and returned after every meeting/event
Finances
All funds raised, gifted, or allotted to the club should be deposited into the student organization's account within 48 hours
Any money needed from the account may be acquired through a reciept or check request
Any items purchased through the PTC Cafe can be acquired with a voucher from Student Activities
Fundraising
All organizations must complete the Guidelines for Student Organizations Fundraising form prior to organizing the event, activity, etc.
Signage, Rooms, and Tables
Signage can be made by an organization member or through our Marketing Department. Signage should be submitted to Student Activities for prior approval before given to Marketing
All room reservations requests should be made by the advisor
If you would like to reserve a table on level 4, notify Student Activites to put on the Reservation Calendar
Social Media
Do not create Pittsgurgh Technical College social media properties. Do not create social media pages or groups affiliated with Pittsburgh Technical College. If you or your PTC organization has news to share via social media, please submit that information to Student Activites
Campus Environment
Each organization will participate in four PTC sponsored events per year (PTC Carnival, Alchohol Mix-Off, Activities Fairs, etc.)
Community Service
Each club will sponsor a minimum of one community service project per year
All community service events must be approved by the faculty/staff advisor
The Community Service Event Form should be completed and submitted to the Community Service Coordinator prior to the event
Off Campus Trips
Any organization wishing to sponsor a trip to an off-campus activity (conference, workshop, and special event) must register the trip with the Student Activities Office
A designated advisor must accompany students on off-campus trips
Inactive Status
It is expected that PTC student organizations follow the guidelines listed above. An organization will be deemed "inactive" if at least one quarter of total inactivity has been experienced or does not complete the campus environment/community service expectation
All further benefits associated with PTC and the organization are rescinded and any funds will be forfeited
Fundraising Guidelines
Student Organizations are subject to following rules and regulations
All student organizations wanting to fundraise must obtain approval from both their advisor and Director of Student Activities. This approval process is accomplished through the submission of the Fundraising Request Form two weeks prior to the date of the proposed fundraiser
The student organization must have a collection box ot bank bag on-site to store the money. If you do not have one, Student Activities will provide one for you
At the location of the fundraiser, the registered organization must post visible information regarding the details of the fundraiser
Money raised and/or collected must be deposited with the Student Activites Department within 48 hours of the completion of the fundraiser. Money may also be deposited in Student Activities throughout the duration of the fundraiser for safe keeping
In is suggested that organizations keep a two person system with the money. Two people should sign off on money collected
All checks must be writted out to PTC
An individual ot individual of the student organization may not participate for private financial gain
Door-to-door sales/solicitation to the academics/administration is strongly prohibited. Upon request, Student Activites will provide a table on Level 4 for no longer than 2 weeks for the fundraiser or 1 continuous week for a raffle


Visual Interface Designed for the Animation of Compartment Models
The program is available here. It will
run in Chrome, Edge, Internet Explorer or Firefox. Once the program is activated all operations and file storage
are on the local computer. It will animate compartment mass and flux data provided by you. It does not compute
or predict data beyond what you provided.
Authors: Kimberley Grobien, Joel Stauffer, Beomjin Kim, Douglas Townsend, Stephen Coburn
Department of Computer Science,
Department of Mathematical Sciences,
Department of Chemistry,
Purdue University Fort Wayne, Fort Wayne, IN.
Correspondence to<EMAIL_ADDRESS>Table of Contents - Instructions
- Creating a new Model
- File Format Specifications
- Labeling your Compartments
- Automatic Model Generation
- Adjusting the Model
- Flux Arrows
- How to Specify Model Animation Values
- Controlling the Animation
- Scrolling
- Saving the Model
- Exporting Models
- Importing Models
- Important Notes
Creating a new Model
To create a new model click on Model Editing
to expand the folder. Then click on
Edit Mode
to enable editing. Nothing in the white space can be changed unless
Edit Mode
is checked. Compartments are created by clicking on Add Compartment
and then
entering the name of the compartment. You must click on Add Data Point
every time you want to add a
compartment.
File Format Specifications
The input for compartment data is a single page Excel file with time in the first column and compartment masses
to the right. Row 1 contains labels. The first compartment created on the screen will be associated with the
data in column 2; the next compartment with column 3, etc.
Labeling your Compartments
Compartment labels may be entered manually or by checking the Import Labels
box. If no data file
has been imported, click Upload Compartment Data
to provide an Excel file with the label
information in row 1 as noted above. To change an existing label, click on the compartment, and then enter the
new name in the Comp. Label
field.
Automatically Generate a Model
To save the user time, a model layout can be inferred from the data uploaded by the
Upload Compartment Data
and Upload Flux Data
processes. To ensure maximum
effectiveness, ensure each column of data in the excel upload begins with a text label (i.e. row one should be
composed of all the labels for the compartments). A SPECIAL format must be followed for the flux arrows to be
generated effectively. The first row of the flux data in excel will be considered the label of "Originating"
compartment. The second row of the flux data will be considered the label of the "Destination" compartment. To
begin automatic generation, upload the excel data via Upload Compartment Data
. Then click
Generate Comps.
to generate a compartment for each column of data in the excel document. Currently
these compartments are generated in a straight line with equal spacing. Optionally, upload flux data via
Upload Flux Data
and then click Generate Flux.
. When the Generate Flux.
operation begins, the system will attempt to locate an existing compartment with a label that matches the
"Origination" label and then locate an existing compartment with a label that matches the "Destination"
compartment. If both compartments can be located, a flux arrow will automatically be created between the origin
compartment and the destination compartment.
Adjusting the Model
The compartments can be dragged to any location in the white space. The size of the compartments can be
adjusted using the slider labeled Size
. Click Show Indices
to render gray numbers
representing the compartments or flux arrows data index. An arrow's index number is rendered at its origin . For
instance, if a compartment has a gray '1' digit, that compartment will correspond to the first compartment
column found in the uploaded excel data. This index can be changed by clicking on a compartment, and then
entering a new index number into the the field right of Data Index
.
Flux Arrows
Arrows can be added by clicking on Add Arrow
. Then click on the From compartment and drag to the
To compartment. Arrows can be added without any flux data. This will not affect the animation of the compartment
circles. The only effect of omitting the flux data is that the arrows will not change color. The input for flux
data is an Excel file with time in the first column and data in the columns to the right. As with the
compartments, the first arrow created on the screen will be associated with column 2; the next arrow with column
3, etc.
How to Specify Model Animation Values
All specifications are under the Interpretation
folder. Click the Interpretation
folder to expand it. The user must set the maximum value for compartment mass in the box to the right of
Comp. Maximum
. A maximum flux value must be entered in the box to the right of
Flux Maximum
. The compartment color at any given time will be based on its percentage of the
maximum value. Therefore, the maximum value does not have to be the exact maximum value of the compartments. The
chosen maximum value applies to all compartments. If there is a wide variation in compartment masses, the
animation could be repeated with different maximum values to visualize large and small compartments. The color
of the compartments ranges from white when empty to black when at or above the maximum value. The arrows change
in gray scale from lighter to darker as the flux increases. The hue and intensity of the intermediate color can
be set by holding the cursor over the bar to the right of 50% Max Color
moving the circle to get
the desired result. The initial color shown in the compartments and the color chooser box represents 50% of the
maximum value.
Controlling the Animation
All animation controls are nested under the Animation
folder. Click Animation
to
expand the folder. To start the animation click on Start
. If the animation does not start, click
the Reset
button. The speed can be adjusted by moving the slider labeled
Delay (in ms)
. Increasing the delay will slow the animation. Individual steps can be shown by
clicking the appropriate time value on the gray bar in the white space label "Progress Bar". If there is a very
large number of data points, the animation could also be shortened by skipping some data points. Click on
Step Size
and then enter the number of points to increment by. An entry of 5, would result in every
5th data point (excel row) being utilized. The reset
button sets the time index of the animation
back to start time.
Scrolling
A user may scroll or pan using the arrow keys on their keyboard. This allows for compartments larger than
current white field to be created.
Saving the Model
Clicking Save
by Default Storage saves the current model diagram in the browser. Clicking that
Save button after changing the model will over-write the previous file. Clicking New Model
allows
you to name the model which will be stored in the browser. The name will be listed below
Default Storage
. Only the diagram is stored. The data is not stored and must be uploaded each time
the program is opened.
Exporting Models
Clicking on the Export Models
button will save all models to an external file in your local
Downloads
folder.
Importing Models
Clicking on Upload Compartment Models
opens a file explorer so that you can import a saved file.
Importing overwrites all current models so be sure to save and export current work before importing new files.
Uploading the model does not upload the associated data. The mass and flux data must also be uploaded. If the
animation does not start when clicking the Start button after an upload, click on Reset.
Important Notes
If the browser shows a window asking Prevent page from creating additional dialogue?
close the
window. Activating that command will prevent proper functioning of the program.
As indicated above, the first compartment created on the screen is associated with the second column of data in
the spread sheet. Subsequent compartments are associated with the third, fourth columns, etc. Similarly, the
first arrow is associated with the second column of flux data, etc. At this time, removing and replacing
compartments or arrows may upset that relationship. Therefore, it is essential that the compartments and arrows
be added in the same sequence as the data columns. In the current state of affairs, corrections cannot be made.
A new model diagram must be created.


I live in a j's podcast for monday most wonderful show is keeping up with the jones is miss Jones yes sir is it true statement that we're the best we've ever looked while recording a podcast yes it is and why is that
Because we were just at Blake and Elena's wedding.
We were, which we're going to talk about in a second.
Looking good takes a lot of work.
It does.
And you tend to be quite uncomfortable.
Yes.
I mean, depending on what you're wearing, like, well, I'm wearing shoes I never wear.
And there is your spanks.
I mean, they're pretty uncomfortable.
Takes me ages to get into those.
Right.
So worth it.
I know.
No, but for real, I took in a shirt.
I never wear a tucked in shirt.
Yeah.
I put a tie on.
Yeah.
I wore heels.
Yeah, we're just making sacrifices for everybody.
I know.
East National, you are welcome.
We'll talk tonight.
You know what?
I don't often get to say what feels like we talked about sex a lot this week.
Well, yes, I suppose we did speak about sex a lot this week.
I was teaching on the school this week about sex.
You were.
And the full spectrum of sex.
It was our sexual healing week.
Yes.
thank you for clarifying with the full spectrum of sex.
Well sex, sexuality,
God's design for sex, sexual sin, sexual demons, homosexuality,
deliverance, the whole shebang, the whole shebang.
It was a lot of fun. I love it.
I'm not sure how our students survived.
They always do survive though.
Yeah, it's rough going through it, but once we're done with the week,
everybody looks much brighter and happier.
It's true. Meanwhile, while I was teaching on sex, you got what?
Meanwhile, back at the ranch, I was speaking on the sunship.
How come you got sonship and I got sex?
Because I'm the one that does the scheduling.
Two shade.
Thank you.
Well, I had fun listening to all the students talking about how awesome your
sonship talk was this week.
Yeah, I had, uh, it was all new material.
And, you know, of course we've spoken on sonship before, um, but I just did an
enormous amount of research last week.
And the Lord showed me all this stuff that I'd just never seen before.
So it was quite funny because a number of the students were like, Oh, man, it
blew my mind and I'm thinking, "Blue my mind." I spent the week going, "Oh, that explains
so much, God."
Those are the best weeks, aren't they?
They're so fun to do.
You know what it feels like to me? It feels like one of those rollers that you kind of
roll on your sweater and get rid of fuzz.
A lint roller?
A lint roller. That's what sometimes teaching is like for me. You have a lint roller, which
is a collective body of work.
It's a terrible analogy.
I'm like, okay, sure.

It's all right.
And happy.
It can't be that good looking and be the analogy king.
It wouldn't be fair.
No, it would be wrong.
You have to have proportional distribution of all.
It's true.
And right now it's just my hair and my shirt, my tie.
Yeah.
I mean, wow.
I'm surprised I'm even sitting upright.
It's quite amazing.
I'm going to mess my hair up and see if my vocabulary will come back.
In other good news, yes, I have to intend the things to report on.
The first one is I can hardly wait.
The first one is I love to complete games before moving on to new games.
And I have, as you listen to the show, well, I already know I have finished
the super mario 3D world and I finished.
I realized that there's different ways of approaching games.
There's the way that I approach games, which I thought everybody did,
which is if you're going to finish the game, you got to complete every task, pick up every
extra, pick up stamps, golden flag poles, you know, do everything to the nth degree and
then you can call it finished. But then there's people who don't play it properly.
Well, or maybe they're just people that play it for fun.
Nope. Nope. They're weirdos. But anyway, this week I finished new Super Mario Bros.
You. And when I say I finished it, I mean, there is no way I could have finished it without
the supreme help of our friend Will Law. He is the Luigi to my Mario.
Oh, okay. And so me and him sat and played that for hours. Yes.
And it was incredibly satisfying to finish. Oh good.
On the other hand, I'm so proud as a father because my daughter, Abigail, has pretty much completed
Super Mario 3D World. She has gone through the whole game and collected all of the star coins,
collected all of the stamps, all of the golden flagpoles,
and done it without infinisibility.
-Amazing. -Perhaps we should bronze her.
-Oh, I just like, I'd keep her in carbonite,
if I could, that was a Hansel reference, baby.
-That was excellent. -Thank you.
-That was very good. -Yeah, I'd keep, you know,
I was so proud, I don't know.
-See, and I was proud of her for, like, her amazing report card
and for almost 23 miles and 30 minutes.
-That's not really achievement. -Oh.
[laughs]
-Anybody can do that. -Get to know.
But anyway, yeah, seriously, just do nothing in class and don't say anything wrong and you'll get good report card and then just keep it one foot in front of another a slightly faster pace big deal.
This kid is Nintendo magic.
Okay, what do you think podcast people should we film Alan running three miles in 30 minutes and just see how easy it is to do it.
Why did this get personal?
Let's see you play Super Mario 3D World.
No.
an apple store appointment yeah that isn't very interesting so i'll talk about it okay
slightly more interesting but not really that much you ate at a let me get this straight
a vegan restaurant i have to wonder what's the point raw vegan oh dear god i got worse i was
really excited because i was like oh good i'll get some new recipes there's nothing i ate that i
want to reproduce like it but what did you really say it wasn't very good it wasn't good honestly
And why would you think it would be?
It's a raw vegan restaurant.
That means what they're basically going to offer you is grass or carrots.
Yeah, but remember that place that was in the factory?
There there's was like raw vegan stuff and they had great food.
I did not like that restaurant either.
Well, I was disappointed to say the least.
And I never need to go back there.
It was a raw vegan restaurant that was in a storage container, like just a massive
storage container that kind of flipped on its side.
The hits just keep coming.
I know it was very strange, but the company was amazing.
So it was well worth it for that.
I just next time I'll go and drink coffee.
Good thinking this Sunday we had brother Yoon.
We did.
Some of you would have read his book, The Heavenly Man.
If you haven't, I'd really recommend you read it.
Brother Yoon is from China got saved very early on.
His book is all about being his book is all about the faithfulness of Jesus
amidst incredible persecution. It's a story that's kind of like the modern day
acts. He was telling stories today that I was like, this is kind of like having the
Apostle Paul here with us. Like the stories that he was telling were of such enormous
magnitude and he's a very humble man. And there's a second time at Grace Center, but
he was exceptional. I'll put a link in the show notes for you to watch the second service
that he spoke at Grace Center. It was exceptional. And if you haven't read the story, I'll put
a link to his book as well. Do you know what I'd like to talk about this week?
What would you like to talk about?
Well, I was all inspired by Blake and Elena's wedding. Yes.
Let me pause there because not everybody will know Blake and Elena, which is a tragedy for
you guys. It is. Blake and Elena, how would you describe them? They're both incredibly
good looking. They're very, yes. They're, they're super creative, trendy, super creative,
fit, lovely, love Jesus. Really in touch with their emotions.
very in touch with their emotions and their words.
They're great at friendship.
They're just very intentional, wonderful human beings.
Blake is part of the reason that we started podcasting.
It's true.
He helped us on the whole podcast journey.
And Elena, we got to know on the school, she came and did our school and we
fell in love with her and she did first year and then she came back on
staff and staff to our school and she's currently going through second year.
And they're just two delightful people in our community and they got married.
And I was really impressed.
I was we did their wedding, which was a huge privilege,
all was a privilege to be asked to do people's weddings.
And so we were going through their wedding,
and so they sent us their vows,
and actually reading their vows caused me to step back.
Because I was like, how do you have this much wisdom this young?
Yeah, it's amazing.
And so the premise of what I want to talk about
is future proofing your marriage.
Now, I realize not everybody listened to this as married.
So hopefully this is, well, it's called future proofing your marriage.
So store up now.
It's marriage in your future.
Then it should work for you.
And if it's not, send it to some friends of yours, there you go.
We're married and encourage them.
Here's the premise I was thinking of.
When preparing to get married, nobody's simultaneously preparing to get divorced.
Yeah.
That sounds blindingly obvious.
But like divorce shouldn't exist.
And yet the divorce rate in and out of the church is 50%.
Yeah, I mean, it seems like very much divorce is still on the table for Christians,
which is bizarre to me because if you weren't planning on getting divorced and you spent all
this time planning on getting married, what changed? At some point, people stop preparing to stay
married and start preparing to get divorced. Yeah, or they give up. Yeah, so I was thinking
about this. And when I was thinking about Blake and Elena's vows, because often when we're doing
doing like marriage prep or encouraging people like,
"Hey, these are the things to look for, blah, blah, blah, blah."
But their vows were just action-packed with wisdom.
And I thought it would be fun to,
and ask their permission us to take,
could we read some of your vows out on air?
And they were like, "Yeah, absolutely."
- Oh, that's awesome.
- So I've got their permission.
And I wanted to share with you some of their vows
and see if we can pull out some teaching notes on this.
All right, here's Blake's opening line.
So he says, "Alena, I choose you today."
Danny Seltz says this great thing.
most people spend more time planning their wedding than they do planning their marriage.
And so it's easy on a wedding to say, "I choose you."
It's much harder in your marriage to say, "I choose you every day."
And yet right there, his first line, he says, "Alena, I choose you today,
and I vow to choose you every day for the rest of my life."
Dear Lord, if we would just practice choosing one another each day,
the divorce rate would drop. Sounds an oversimplification, I know.
but somewhere along the line, we stopped choosing one another.

It's brilliant. He says, "I will prioritize receiving the father's love continually,
that my heart would be filled and overflow to you and our family."
Perfect.
It's amazing. He's purposing to be a receptacle of God's love so that he has enough to give away.
Jack Frost used to say, "Most marriages are like two ticks and no dog."

Right.
"You need a source and it has to be the Father's love."
I was like, "Blake, this is amazing."
I vow to pursue with all I have connection with you will always trump logistics.
Well, what do you what do you mean by connectedness? So connectedness is making and creating and
maintaining a heart to heart connection. So what I mean by that is me actually honoring you.
You start speaking to me, me actually giving you eye contact me meeting you where you are at,
me valuing the things that you value me, creating an environment where you feel cherished and
and loved and adored, you creating an environment for me where I feel loved, welcomed, valued
and honored.
It's just basically maintaining and prioritizing that intimate heart-to-heart connection.
And a lot of people just, I think they think that that should work automatically, but the
truth is it's sometimes hard work.
Because God made the opposite sex with completely different motivations.
Very true.
And completely different interests.
the things that you're naturally interested in, I just don't care about.
Like, I really don't care about advice of versa.
But if I just maintain, I don't care about it, then our marriage or our connection
in our marriage is going to deteriorate really rapidly.
Right.
Like, if I'm only interested in the things that I'm interested in, then I should have married myself.
Right.
Which is tricky to do.
Well, yeah.
I mean, yeah.
So for example, you come in and tell me about something that's significant to you.
It might not be significant to me, but because it is to you, I make it to me.
Right.
Just as they connected.
Yeah.
And that could be anything from, Hey, babe, you know, you would not believe that
Williams's mom has the sale and there's these new frying pans and I really love them.
And so I'm going to be engaged.
I'm not going to look at myself.
Well, I'm going to, it's important to use.
It's going to be important to me.
Just sometimes it's as simple as that.
Yeah.
And like you're really good at, I'm, we joke on AR about Nintendo, for example.
but you're very, very good at realizing, oh, you playing video games once or twice a week
actually nourishes you. I'm going to give you space to do that. I understand that you need time
to potter and you might not even be doing anything in those hours, but I'll watch the kids so you
can go out with Shannon, for example, and go buy a new top or potter round or just kind of browse
TJ Maxx. Whatever it is you want to do that just de-stresses you. Creating space for one another
fosters connectedness. Yes. Ridiculing other people's interests basically reduces that connection to
tons of static. And then basically instead of maintaining the connection, you're kind of
disinterested in the connection. Yeah. And that's when marriages are in real danger.
How about this line? Somebody taught this boy something. He said, "I will listen to you for the
sake of just knowing you before I try to fix any problems. Talk about that dynamic,
as you.
That's perfect.  They think that, I mean, I
think men are wired to want to fix things, but there's the whole thing of sometimes
as a woman, I don't want you to fix it.
Which to begin with in our marriage of like what is the point of that?
Like we could just, you could tell me this conversation fast and I could have a fix and
we never need to talk about this again.
Yes.
And now I don't think that.
No.
Now I understand you just, you literally need me to connect with you.
Yeah.
Well, you learned something really early on.

Right.

And depending on the thing, sometimes I want to just listen like a woman and say, "Yeah,
that's really hard.
I'm really sorry about that."
And sometimes I'd be like, "No, listen like a man.
Okay, well, this is what we're going to do.
We're going to love a lot."

Sometimes just doing reflective listening is the key.
I did that with T the other day, T is our six-year-old.
And we had a not very good situation where I did not handle it brilliantly.
She burst into tears.

And whatever she said, I just repeated back to her.
I didn't try and qualified and try and say it was silly.
I didn't try and fix it.
I just said, I just repeated exactly what she said.
And I must have done that for five minutes.
And at the end of that, I said, how does your heart feel now?
And she said, I feel less sad and I feel like I have a little more joy.
And I said, well, what would bring it?
What would bring you more joy?

It's going to be a hit.
And the sadness when enjoy returned.
But yeah, sometimes women, especially just speak to be heard.
And that's foreign for a man.
How about this line?
I will let God continue to heal my heart to drive out fear and cast off shame.
So good.
Basically, he's placing a high value on inner healing.
But I think I honestly don't know how anybody makes it through marriage without
inner healing. Like if you have no grid for inner healing and you have no way of,
or you have no knowledge of those kind of tools to help you deal with things,
I'm not surprised to divorce rate as high as it is.
Right. I don't know how you'd handle pain without Jesus.
I don't know how you'd handle the other dysfunctions of the other person. Forget the other person.
I don't know how you'd maintain or handle the dysfunction or the shame and just inside of yourself,
which is probably why people run to drugs and alcohol and addiction and pornography and you know, to mass that pain.
But if you don't understand, if you're married and you don't understand that you have, you often have significant issues that are feeding one another and all that kind of stuff and how to dismantle it and get free of that stuff.
So it's not robbing your marriage of life, even with Jesus.
If you don't have the tools, it can be really grim.
Totally.
Yeah.
And you can fall into hopelessness real, real quick.
Yes.

It's great to remind yourself when things are hard in marriage, that marriage is God's idea.
Yeah.
And then he knows what he's doing and he knows how to help you through what you're going through.
Yeah.
And but also get help like, you know, get help from other people who are further down the road,
who maybe do have a grid for interhealing and or a passion for, you know, seeing marriages healed
or whatever and get them to help you get the tools.
Absolutely.
Take the light off the dark parts of your marriage.
Like, just let somebody else into that hula hoop for a second say, "Okay, if we're honest,
this is what we're struggling with.
We don't want to tell anybody about it because we've got this reputation or I don't want
to uncover myself or my spouse or whatever."
But actually, sin grows in darkness.
Darkness is a breeding ground for sin.
it bring it into the light, get some help from really trusted wise people.
And oh my gosh, your marriage will be all the better for it.
Yeah, I mean, I love Delana's vows as well.
One of the things that stood out to me at the very beginning, it says, "I will approach
you with compassion, kindness, acceptance, and patience.
I will be an active participant in God's plans for your life.
I will believe in you, encourage you, and believe with you for the promises God has made to
you. I just love that, like even just from the very beginning. It's a team sport and
they're setting themselves up to be each other's cheerleaders and, you know, being this as
a team together. I love that. One of them said, I'll, I'll honor you for who you are without
stumbling over who you're not, which I thought was a really precious line. Yeah. Yeah, because
we do that way too often, don't we? Like in marriage, it's so easy to stumble over who
who your spouse isn't as opposed to being able to be thankful for who they are and the
stuff that is going really well.
And sometimes in our distress, we stumble over what they're not what we want them to be,
which is entirely unfair.
It's like, oh, I'm sorry.
I didn't realize it was my job to live up to your crazy expectations of me.
I don't know what you're talking about.
I just heard that from somebody else.
It was somebody else.
It was definitely somebody else.
I liked as well a little further on in her vow.
He says, "I commit myself to experience God's abundance, his joy, and his peace.
I commit myself to partnering with you as we partner with God to see his promises over
us come into fruition."
So good.
Yeah.

You do have to...
Oh, totally.
marriage is as much about being committed to God in the midst of it as it is to the other person.
 So it's a commitment
and a belief that God can do what he said he would do and that he can support you through this thing
and that the three of you were in it together. I just love that line. I commit myself to
experience God's abundance. It is interesting to note that the people who are experiencing
blessing and abundance from God have pursued blessing and abundance from God.
 That never happens to me." And I'm like, "Do you expect it to happen to
you?" And they're like, "Oh, I get, no, I guess I don't." And so somehow I think
somewhere along the line we've thought that God's blessing is like the lottery.
Some people are favored and some people are not. And that's just not the truth.
Right. But part of it is aligning yourself to believe about God, what He says about
himself. And so I love that right at the outset there just saying, Hey, in our
marriage, we're actually going to commit to experience God's abundance.
Yeah. Bill Johnson puts it this way. He said it's responsible Christian living
to pursue the blessing of God in every area of your life.
Right.
Just don't be passive when it comes to God's blessing.
No, I love that.
Be intentional. Yeah.
Anything else you want to comment on their vows?
No, I mean, I just thought they were beautiful, just really beautiful.
and they obviously really thought through what they were committing to.
Oh, and such powerful communication as well. Absolutely.
Amazing. No victim, no passivity, just totally full of intention and power.
And that's one of the reasons we love those guys so much that are super like that.
Yeah, so good.
You know, in addition to that, and if we're going to be talking about future proof of our marriage,
you know, the whole issue of connectedness is super important. We'd highly recommend Danny
Silksbook, keep your love on. Excellent book. And one of the greatest things you can do is learn
your spouse's life language and love language. And in the coming weeks, we're going to talk about
life languages, love languages you've probably already heard about, Gary Chapman's book, The Five
Love Languages. If that's new to you, please do yourself and your spouse a favor, read that,
grab a copy for them. And then also don't be surprised if in marriage you're dying.
Part of the process of marriage is killing off the stuff about you that doesn't need to be
hanging on anyway. And some people confuse that with like, Oh gosh, my marriage is really
hard. And you're like, is it hard because God's trying to kill something that you keep trying to
resurrect? Right. And if it is just die faster, and it will produce much better results.
This week, we're very excited. We have Dr. Brian Simmons, the author and translator of the
Passion Translation of the Bible, joining us this weekend for our Heaven declares conference,
along with Pastor Supreza all the way from South Africa.
These two men have fast become dear friends of Arsek Grace and are very excited to have them
for whole conferences this weekend. If you'd like to join us online go to heavendeclares.info
to find out information about that or just wait till next week when we'll give you a recap of the
conference. But super excited about that. I mentioned earlier that I was talking on sex this week.
If you would like to hear what I said go to alanonag.com/sex where you can download
our comprehensive teaching on sex and sexuality.


I first smoked red rock opium just a few weeks ago. I wanted to try this peculiar substance that I had heard so much about. I went over to a friendís house, where he crushed up the red rock and layered it in a bowl with pot. We then proceeded to smoke. Red Rock has a very distinct flavor unlike anything I have ever tasted. I could not notice any taste of pot when I inhaled. Red Rocks flavor is similar to a burnt plastic kind of taste. It does not taste bad at all, but has a very distinct taste.
I then sat back and watched some TV as the pot and opium kicked in. At first, I noticed nothing different that what I usually experience with pot. I was very relaxed and sedated almost. I wasn't paranoid at all, even though I am usually am at this point. The Red Rock seemed to make me very relaxed and mellow. No paranoia what so ever.
As I moved out of my seat to the couch, I felt so overwhelmed, that I stumbled off balance and plopped down. I laid back and shut my eyes, as if I was going to go to sleep. Then the most strange thing happened. For whatever reason I wanted to open my eyes. I did so and looked around. Only I realized my eyes weren't open. It was as if I had a smoky screen in front of my eyes, which were my eye lids. I didn't need to open them I could just look through them. Very strange. Then I shut them again. Several Minutes later, I felt a strange pulling on my body. I felt like I was being pulled away from my body. Yet, something was holding me back. It wasn't forceful, but if felt like some kind of gravitational pull. All very strange.
A lot of debate has been going on about red rock. Whether it is real or not. Being that I have smoked red rock, I do believe it to be legitimate. However I have not smoked any other kinds of opium like black tar or anything. But red rock definitely has some quality about it that gets me more stoned than just pot. Whether it is opium or not, I don't know, but I do believe it to have significant effects.
I went home that night, slept normal and woke up a little groggy but thatís it.
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.


Across: 6,7,9,10,12,14,18,19,21,22. Why I nearly didn't bother. (Notes II: King won back, perhaps, with fetching drill piece (frequently exhausted), a snake-call, a crazy model (diagram I), chubby teachers and wild gate negation!) (7,1,4,3,2,7,1,3,5,2,4,4,3,4,1,2,5,2,3,2,2,3) Down: 1. For airy outside expedition ... (5) 2. ... what Mum loves is herb (ultimate big heads) (3,3) 3. One Italian game (3) 4,5,8. Ultimatum to snow stunt-man in skit he strangley found bore merit (3,3,5,2,2,5) 11,13. How a goat attacked the first little pig's house? (Try a wee hoof at a construction.) (3,4,3,4) 15. Abrupt and sullen before decimation of Roman figures (6) 16. Picks up nasty look with North & South (6) 17. Come close to being right into early vegetation (5) 20. One Italian bomber (3)


valueedit
This setting is optional when using the allocation action and required when using the cluster_routing action.
For the allocation action, the value of this setting should correspond to a node setting on one or more nodes in your cluster
For example, you might have set
node.tag: myvalue
in your elasticsearch.yml
file for one or more of your nodes. To match
allocation in this case, set value to myvalue
. Additonally, if you used one of
the special attribute names _ip
, _name
, _id
, or _host
for
key, value can match the one of the node ip addresses, names,
ids, or host names, respectively.
To remove a routing allocation, the value of this setting should be left
empty, or the value
setting not even included as an option.
For example, you might have set
PUT test/_settings { "index.routing.allocation.exclude.size": "small" }
to keep index test
from allocating shards on nodes that have node.tag: small
.
To remove this shard routing allocation setting, you might use an action file
similar to this:
--- actions: 1: action: allocation description: -> Unset 'index.routing.allocation.exclude.size' for index 'test' by passing an empty value. options: key: size value: ... allocation_type: exclude filters: - filtertype: pattern kind: regex value: '^test$'
For the cluster_routing action, the acceptable values for this setting depend on the value of routing_type.
action: cluster_routing description: "Apply routing rules to the entire cluster" options: routing_type: ... value: ... setting: enable wait_for_completion: True max_wait: 300 wait_interval: 10
Acceptable values when routing_type is either
allocation
or rebalance
are all
, primaries
, and none
(string, not
NoneType
).
If routing_type
is allocation
, this can also be new_primaries
. If
routing_type
is rebalance
, then the value can also be replicas
.
There is no default value. This setting must be set by the user or an exception will be raised, and execution will halt.


'Typical' - Norwich fans react to Unai Emery's Arsenal departure ahead of Premier League clash
The Arsenal boss has been shown the door at the Emirates Stadium following the 2-1 defeat to Eintracht Frankfurt
by Amie WilsonArsenal have sacked Unai Emery.
The announcement comes less than 12 hours after the Gunners fell to defeat in the Europa League, losing a goal lead against Eintracht Frankfurt, losing the game 2-1.
That defeat was the last straw for Arsenal, who announced the Spaniard's departure on Friday morning.
"The decision has been taken due to results and performances not being at the level required," the statement on the official website read.
"We have asked Freddie Ljungberg to take responsibility for the first team as interim head coach. We have full confidence in Freddie to take us forward.
"The search for a new head coach is underway and we will make a further announcement when that process is complete."
Arsenal face Norwich City in their next Premier League game, as they travel to Carrow Road on Sunday. The Canaries will be looking to pick up a valuable three points in their fight against relegation this season, and may have targeted an Arsenal side that were winless in seven matches under Emery - a 27-year-old record.
However, the news of the Spaniard's departure has caused fear among Norwich fans, who are worried about 'new manager bounce' under caretaker boss Freddie Ljungberg.
Canaries' fans took to social media to give their thoughts once the news broke.
Norwich vs Arsenal kicks off at 2pm GMT on Sunday.


audio
<audio controls> <source src="audio/jeffbob.mp3" type="audio/mpeg"> <source src="audio/jeffbob.ogg" type="audio/ogg"> </audio>
HTML5 audio element
Audio file: Spam call: Bob hangs up 7 mins into his survey by Bruce Lawson


RESEARCH PROJECTS
|
Bump Array We use an array of posts to sort cells, bacteria, particles or any other biological materials. We present a deterministic microfluidic ratchet where the trajectory of particles in a certain size range is not reversed when the sign of the driving force is reversed. This ratcheting effect is produced by employing triangular rather than the conventionally circular posts in a post array that selectively displaces particles transported through the array. The underlying mechanism of this method is shown to to be an asymmetric fluid velocity distribution through the gap between triangular posts that results in different critical particle sizes depending on the direction of the flow. |
|
|
Evolutionary Development Microfabricated environments are used to study the evolutionary dynamics of bacteria when subjected to metabolic or physical stress. It is known that, in bacteria, genes are expressed as a response to metabolic or any external stress in order to increase their chance of survival. One such gene in E.coli is the rpoS gene; it regulates the expression of a wide variety of stress- related genes which triggers entrance into stationary phase. We use a genetically engineered rpoS mutant to study the interaction of two competing species of bacteria. |
|
|
Microscopic Swimmers The behavior of bacteria undergoing topotaxis at the microscale is studied with the help of theoretical models and custom-made microstructures. Sub-Project 1: Asymmetric funnels have been used as passive pumps to concentrate $\textit{E. coli}$ in nanofabricated devices (Austin 2007). Funnel geometry changes pump efﬁciency, which could be important when driving cell sorters (Whitesides 2008). The large set of funnel geometries that could be considered when designing pumps motivated us to derive a path-integral- like formula to predict the flux produced by arbitrary funnel geometries. We applied this equation to a two-dimensional wedge-shaped funnel. Model and experiment agree that the steady-state ratio between concentrations on two sides of a funnel open to $60^{\circ}$ is 3 when the aperture is one ﬁfth the bacterial run length and 1 when the aperture is 16 times the run length, an example of how the run length here has a role loosely analogous to the wavelength in quantum mechanical path integrals. Sub-Project 2: The ballistic-like motion of self-propelled particles at low-Reynolds number can be exploited to influence their direction of motion. In particular, it has been demonstrated that by using the right topology (in this case a micro-fabricated array of funnel-like asymmetrical barriers), ${\it E.coli}$ bacteria can be ``pumped'' between two adjacent regions (Galajda 2007, Wan 2008). We built upon this idea and developed a micro-habitat array in which chemotaxis and topotaxis --nutrient- and topology-driven motion, respectively-- are in opposition, leading to an inherently unstable environment in which a bacterium is constantly pushed away from the ﬁtness landscape's summit in a Sisyphean fashion. Surprisingly, we ﬁnd that the bacterial population as a whole is able to overcome the rectifying array. An in-depth microscopic analysis of the swimmer's motion is used to quantify the strategies adopted by the bacteria. |
|
|
Physical Oncology Our aim is to study, from a physics point of view, the behavior of metastatic cancer cells in contact with normal tissues. We've recently started to study the behovior of prostate cancer cells inside microenvironments. Our aim is to be able to determine the phenotypic changes in a metastatic cancer cell that allows it to attack normal tissues. |
|
|
Fig.1 MDA-MB-231 cell formed "ﬁnger" in 100% Matrigel after 2 weeks |
Reconstructing cancer cell metastasis model in in-vitro Cancer metastasis is a major reason why cancer kills: about 90% of cancer patients die of metastasis. But we know very little about this fatal process, one important reason is in real tumor tissue, invasion and metastasis occurred in too complex extracellular matrix (ECM) environment to be elucidated. By well controled chemical gradients and ECM properties, we can construct invasion microenviroment in vitro to observe and study the invasion process in real time. Picture on right is a “ﬁnger” formed when high invasive breast cancer cells (MDA-MB-231) invade in the Matrigel after weeks, this “ﬁnger” form was also indicated by computer simulation. The models are expected not only to help understand the complete process and principles of the metastasis, but also help to testify the cell metastatic potentials from clinic samples as well as help classify their molecular mechanism. |
|
Fig.2 GFP label MDA-MB-231 cells on "cell running" track chip |
Cell collective behavior during invasion Tumor invasion and metastasis is not a single alone phenomenon. As a group, they may play games with each other and their strategy vary according to the environment changing. To study cell collective migration behavior during cancer invasion process, a “cell running track” microchip consists of parallel lanes with different width spaced by protein repellent coating (PRC, a gel can prohibit cell adherence on its surface) surface was fabricated. By long time track of individual cells movement in these different conﬁned space, we are expecting to ﬁnd competence/collaboration models of Cell. We are asking some basic but interesting questions: (1) Does the games of the cells really exist, or in another word, the cells have some kind of “intelligence”? (2) How will the cell game change with environmental conditions (resistance, chemical environment and temperature, etc), rivals’ behaviors and time? (3) Could we use and change the cells game someday as to withdraw the metastasis? Could the understanding of cell games have any clinic impact? The questions remain but are inspiring us to explore the answers. |


Try Foundation View Lessons Logout 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 There are times when you'll want to use groups of buttons (to offer several actions as a bar). All you have to do is wrap each button in a


Class: Sprockets::DirectiveProcessor
| Relationships & Source Files | |
| Inherits: | Object |
| Defined in: | lib/sprockets/directive_processor.rb |
Overview
The DirectiveProcessor
is responsible for parsing and evaluating directive comments in a source file.
A directive comment starts with a comment prefix, followed by an “=”, then the directive name, then any arguments.
// JavaScript
//= require "foo"
# CoffeeScript
#= require "bar"
/* CSS
*= require "baz"
*/
This makes it possible to disable or modify the processor to do whatever you’d like. You could add your own custom directives or invent your own directive syntax.
Environment#processors
includes DirectiveProcessor
by default.
To remove the processor entirely:
env.unregister_processor('text/css', Sprockets::DirectiveProcessor)
env.unregister_processor('application/javascript', Sprockets::DirectiveProcessor)
Then inject your own preprocessor:
env.register_processor('text/css', MyProcessor)
Constant Summary
-
DIRECTIVE_PATTERN =
# File 'lib/sprockets/directive_processor.rb', line 47
Directives are denoted by a ‘=` followed by the name, then argument list.
A few different styles are allowed:
// =require foo //= require foo //= require "foo"
/ ^ \W* = \s* (\w+.*?) (\*\/)? $ /x
Class Method Summary
Instance Method Summary
- #_call(input)
- #call(input)
- #expand_accept_shorthand(accept) private
- #expand_relative_dirname(directive, path) private
- #link_paths(paths, deps, accept) private
- #require_paths(paths, deps) private
- #resolve(path, **kargs) private
- #resolve_paths(paths, deps, **kargs) private
- #to_load(uri) private
Constructor Details
.new(comments: []) ⇒ DirectiveProcessor
# File 'lib/sprockets/directive_processor.rb', line 60
def initialize(comments: []) @header_pattern = compile_header_pattern(Array(comments)) end
Class Method Details
.call(input)
[ GitHub ]# File 'lib/sprockets/directive_processor.rb', line 56
def self.call(input) instance.call(input) end
.instance
[ GitHub ]# File 'lib/sprockets/directive_processor.rb', line 51
def self.instance # Default to C comment styles @instance ||= new(comments: ["//", ["/*", "*/"]]) end
Instance Method Details
#_call(input)
[ GitHub ]# File 'lib/sprockets/directive_processor.rb', line 68
def _call(input) @environment = input[:environment] @uri = input[:uri] @filename = input[:filename] @dirname = File.dirname(@filename) # If loading a source map file like `application.js.map` resolve # dependencies using `.js` instead of `.js.map` @content_type = SourceMapProcessor.original_content_type(input[:content_type], error_when_not_found: false) @required = Set.new(input[: ][:required]) @stubbed = Set.new(input[: ][:stubbed]) @links = Set.new(input[: ][:links]) @dependencies = Set.new(input[: ][:dependencies]) @to_link = Set.new @to_load = Set.new data, directives = process_source(input[:data]) process_directives(directives) { data: data, required: @required, stubbed: @stubbed, links: @links, to_load: @to_load, to_link: @to_link, dependencies: @dependencies } end
#call(input)
[ GitHub ]# File 'lib/sprockets/directive_processor.rb', line 64
def call(input) dup._call(input) end
#expand_accept_shorthand(accept) (private)
[ GitHub ]# File 'lib/sprockets/directive_processor.rb', line 365
def (accept) if accept.nil? nil elsif accept.include?("/") accept elsif accept.start_with?(".") @environment.mime_exts[accept] else @environment.mime_exts[".#{accept}"] end end
#expand_relative_dirname(directive, path) (private)
[ GitHub ]# File 'lib/sprockets/directive_processor.rb', line 399
def (directive, path) if @environment.relative_path?(path) path = File. (path, @dirname) stat = @environment.stat(path) if stat && stat.directory? path else raise ArgumentError, "#{directive} argument must be a directory" end else # The path must be relative and start with a `./`. raise ArgumentError, "#{directive} argument must be a relative path" end end
#link_paths(paths, deps, accept) (private)
[ GitHub ]# File 'lib/sprockets/directive_processor.rb', line 383
def link_paths(paths, deps, accept) resolve_paths(paths, deps, accept: accept) do |uri| @to_link << to_load(uri) end end
#require_paths(paths, deps) (private)
[ GitHub ]# File 'lib/sprockets/directive_processor.rb', line 377
def require_paths(paths, deps) resolve_paths(paths, deps, accept: @content_type, pipeline: :self) do |uri| @required << uri end end
#resolve(path, **kargs) (private)
[ GitHub ]# File 'lib/sprockets/directive_processor.rb', line 420
def resolve(path, **kargs) # Prevent absolute paths in directives if @environment.absolute_path?(path) raise FileOutsidePaths, "can't require absolute file: #{path}" end kargs[:base_path] = @dirname uri, deps = @environment.resolve!(path, **kargs) @dependencies.merge(deps) uri end
#resolve_paths(paths, deps, **kargs) (private)
[ GitHub ]# File 'lib/sprockets/directive_processor.rb', line 389
def resolve_paths(paths, deps, **kargs) @dependencies.merge(deps) paths.each do |subpath, stat| next if subpath == @filename || stat.directory? uri, deps = @environment.resolve(subpath, **kargs) @dependencies.merge(deps) yield uri if uri && block_given? end end
#to_load(uri) (private)
[ GitHub ]# File 'lib/sprockets/directive_processor.rb', line 415
def to_load(uri) @to_load << uri uri end


AnaDroid
Anadroid is a tool capable of automating the process of analyzing and benchmarking Android applications’ energy consumption, using state-of-the-art energy analysis tools. Anadroid can be configured to use different energy profilers and test frameworks in its execution pipeline, being able to perform automatic instrumentation and building of application source code. It can be used to perform both white-box and black-box testing.
Documentation
https://greensoftwarelab.github.io/PyAnaDroid/anadroid.html#
Video Demo
https://www.youtube.com/watch?v=7AV3nrh4Qc8
Use cases
Application Benchmarking: Replicating test work/procedures on different applications to carry out comparative studies of energy consumption.
Detection of energy hotspots in application code;
Detection of energy-greedy coding practices;
Calibration of energy consumption prediction models;
Many others.
Supported Test Frameworks
JUnit-based frameworks (Robotium, Espresso, JUnit);
Application UI/Exerciser Monkey;
Monkeyrunner;
DroidBot;
App Crawler;
RERAN;
Monkey++ (soon).
Supported energy profilers:
Trepn Profiler;
Manafa;
GreenScaler;
Monsoon (soon);
Petra (soon).
Workflow
By default, Anadroid is configured to perform white-box testing of applications, instrumenting its code (Java and/or Kotlin), in order to collect tracing of the methods invoked during application execution and estimate the energy consumed by these. After the instrumentation phase, a project is created in the original directory, which is a copy of it, with the code and build scripts already instrumented. Then, the source code and apk are built from the sources of the instrumented project (both debug and release builds are supported), and the application is installed on the device. After installation, the energy profiler is enabled and the application tests are executed. At the end of the process, the monitoring process is stopped and its results collected, and the application is uninstalled.
Installation:
Using python-pip
$ pip install anadroid
From sauce
$ git clone --recurse-submodules https://github.com/greensoftwarelab/pyanadroid.git
Examples
Plug-and-play execution
$ usage: pyanadroid [-h] [-t {Monkey,Monkeyrunner,JUnit,RERAN,Espresso,Robotium,Crawler,Droidbot,Custom,Other}] [-p {Trepn,GreenScaler,Petra,Monsoon,E-manafa,None}]
[-b {Release,Debug,Custom}] [-i {JInst,Hunter,None}] [-it {MethodOriented,TestOriented,'ActivityOriented',),AnnotationOriented,None}]
[-a {MethodOriented,TestOriented,('ActivityOriented',,AnnotationOriented,None}] [-d DIRETORY] [-bo] [-record] [-run] [-rb] [-ri] [-ja] [-sc {USB,WIFI}]
[-ds DEVICE_SERIAL] [-td TESTS_DIR] [-n PACKAGE_NAMES [PACKAGE_NAMES ...]] [-apk APPLICATION_PACKAGES [APPLICATION_PACKAGES ...]] [-rec] [-cmd COMMAND]
[-nt N_TIMES]
optional arguments:
-h, --help show this help message and exit
-t {Monkey,Monkeyrunner,JUnit,RERAN,Espresso,Robotium,Crawler,Droidbot,Custom,Other}, --testingframework {Monkey,Monkeyrunner,JUnit,RERAN,Espresso,Robotium,Crawler,Droidbot,Custom,Other}
testing framework to exercise app(s)
-p {Trepn,GreenScaler,Petra,Monsoon,E-manafa,None}, --profiler {Trepn,GreenScaler,Petra,Monsoon,E-manafa,None}
energy profiler
-b {Release,Debug,Custom}, --buildtype {Release,Debug,Custom}
app build type
-i {JInst,Hunter,None}, --instrumenter {JInst,Hunter,None}
Source code instrumenter
-it {MethodOriented,TestOriented,('ActivityOriented',),AnnotationOriented,None}, --instrumentationtype {MethodOriented,TestOriented,('ActivityOriented',),AnnotationOriented,None}
instrumentation type
-a {MethodOriented,TestOriented,('ActivityOriented',),AnnotationOriented,None}, --analyzer {MethodOriented,TestOriented,('ActivityOriented',),AnnotationOriented,None}
results analyzer
-d DIRETORY, --diretory DIRETORY
app(s)' folder
-bo, --buildonly just build apps
-record, --record record test
-run, --run_only run only
-rb, --rebuild rebuild apps
-ri, --reinstrument reinstrument app
-ja, --justanalyze just analyze apps
-sc {USB,WIFI}, --setconnection {USB,WIFI}
set connection to device and exit
-ds DEVICE_SERIAL, --device_serial DEVICE_SERIAL
device serial id
-td TESTS_DIR, --tests_dir TESTS_DIR
tests directory
-n PACKAGE_NAMES [PACKAGE_NAMES ...], --package_names PACKAGE_NAMES [PACKAGE_NAMES ...]
package(s) of already installed apps
-apk APPLICATION_PACKAGES [APPLICATION_PACKAGES ...], --application_packages APPLICATION_PACKAGES [APPLICATION_PACKAGES ...]
path of apk(s) to process
-rec, --recover recover progress of the previous run
-cmd COMMAND, --command COMMAND
test command
-nt N_TIMES, --n_times N_TIMES
times to repeat test (overrides config)
From Sauce
Execute a simple Monkey test over an application
By default, Anadroid uses Manafa profiler to estimate energy consumption. The Monkey test (or any other test with other supported testing framework) and its parameters can be configured by modifying the .cfg present in the resources/testingFrameworks/
from anadroid.Anadroid import AnaDroid
folder_of_app = "demoProjects/SampleApp"
anadroid = AnaDroid(folder_of_app, testing_framework=TESTING_FRAMEWORK.MONKEY)
anadroid.defaultWorkflow()
Working Examples
Example 1 - Using DroidBot to automatically test an Android project(s) and monitor its energy consumption (from command-line)
$ pyanadroid -d projects_dir> -t Droidbot
Example 2 - Perform a custom test (e.g touch app screen)
$ pyanadroid -d <projects_dir> -t Custom -cmd 'adb shell input touchscreen tap 500 500'
Example 3 - Extend PyAnaDroid workflow to perform custom actions
1) Create a new subclass of the AnaDroid class and implement and override the default_workflow method
from anadroid.Anadroid import AnaDroid
class MyCustomAnaDroidWorkflow(AnaDroid):
def default_workflow():
# example: reboot device after each test suite
super(AnaDroid, self).default_workflow()
self.device.reboot()
2) Invoke the new custom workflow
custom_wkflow = MyCustomAnaDroidWorkflow()
custom_wkflow.defaultWorkflow()
Example 4 - Skip instrumentation and building phase and perform black-box analysis only over the apks.
Note: the process will still be monitored using the profiler but the performance metrics will only be given at the test level (e.g. the energy consumption of each test execution).
$ pyanadroid -d <projects_dir> -run -t Custom 'adb shell input touchscreen tap 500 500'
PyAnaDroid produces a large amount of results from the analysis it does on its execution blocks. These results are stored in the form of files in specific directories. For each execution of a certain version of a certain app, a subdirectory is created in the directory anadroid_results/<app-name>–<app-package>/<app-version> where all the results of the analyzes carried out on the applications will appear. For each execution of a test framework on an application, a subdirectory <testing-framework><instrumentation-type><timestamp> is created inside the previous directory and that contains the results related to that execution. The result files are as follows:
tests_index.json: contains the list of files associated with each test run, identified by test id.
test_<test-id>.logcat: contains device logs captured during test execution;
test_<test-id>logresume.json: contains a summary made from the analysis of the logs contained in the file test
.logcat. It has metrics such as the number of exceptions thrown, fatal or error log messages, etc. device.json: contains the specs of the device where the tests were conducted (brand, model, ram, cpu cores, serial nr, etc)
manafa_resume_<test_id>.json: contains test-level performance metrics reported by E-Manafa (if used);
functions_<timestamp>.json: contains performance metrics for each of the executed functions/methods of the app in a certain test.
trace-<timestamp>-<timestamp>.systrace: contains the cpu frequency changes logged during a certain test id;


Nowhere (1997) Review by Larry McGillicuddy Copyright Larry McGillicuddy 1997
1/2* (out of 4) Directed by Greg Arraki Starring James Duval, Rachel True, Kathleen Robertson, Ryan Phillippe, Sarah Lassez, Christina Applegate
Gregg Araki's The Doom Generation was possibly the very worst film ever made. So why did I see his latest teen bisexual angst opus? First of all, some of the reviews were fairly positive. Also, the cast, consisting of cameos from dozens of washed up ex tv stars (including Christopher Knight, Eve Plumb, Shannen Doherty, and David Leisure) was promising. Last of all, I wanted to give Arraki one more chance. I mean, the guy can't be THAT untalented, can he? The answer to that question is three letters long.
Nowhere follows the character Dark on his wild and odd journey through Los Angeles. Since Arraki doesn't know how to make anything coherent, it's hard to describe the plot.  The only remotely compelling storyline involves Sarah Lassez as a teen who has a chance encounter with a famous tv star. He turns out to be a nice guy who doesn't care for fame and wishes he could walk down the street without being mobbed by fans. This story has a shocking twist and a tragic end that I did not see coming. It is the first time I ever felt any compassion for a character created by Arraki, and this can be attributed to the appealing performance of Lassez.
I thought maybe Arraki was improving in his craft. He works better with the camera this time around, especially in the early scenes. Halfway through the film, I didn't necessarily find myself enjoying the film, but it seemed like a considerable improvement on The Doom Generation.
The performances are generally better than in The Doom Generation, which isn't saying much. At least we don't have to suffer Jonathan "I am the most hideous man in America" Schaech. We are, however treated to another round of James "I'm more wooden than Keanu" Duval. Sarah Lassez gives the best performance in the film, and Kathleen Robertson (formerly of 90210 and now Arraki's wife) and Rachel True are talented actresses caught up in this mess. Of the tv star cameos, John Ritter is the most interesting as a deranged right wing tv evangelist.
If I prefer Nowhere to The Doom Generation, it is only in the way that I would prefer being assassinated than receive constant physical torture. Maybe Greg Arraki doesn't want you to like his characters. Maybe he wants to laugh and make fun of those of us who try to care about them.  If so, he was successful.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Main Portfolio
On this page are projects which I have done in my spare time and since I have designed them from scratch so they are the ones I am most proud of. They are in chronological order from most recent to oldest.
KumaEngine Current Project
This is a project to combine both a compiler and a game engine in OpenGL. The aim is to allow people to create visual novels similar to the Danganronpa series (which involve both 2D and 3D environments and minigames making it more complex than a standard visual novel).
Source CodeDoom WAD Importer
Import Doom (original) levels into Unreal Engine. Not written much yet... Imports floors and walls and doors so far.
Facade
A prototype of a turn-based RPG similar to Persona, Pokemon or Final Fantasy. This project started off by me wondering how to implement a turn-based RPG/overworld state system in engines such as Unreal Engine or Unity (see blogposts here and here with my rambling).
Liked by Unreal Engine Twitter account!
99th Street Released on itch.io
A prototype of a skating engine, with grinding, wallrides and a lack of skating animations. Made in Unreal Engine 4. Grinding uses splines and the game is fairly fun to play with a controller.
Expand itch.ioUntitled Stealth Game On hold
Stealth FPS game intended to be in the same style as the original Thief games. Written in UE4, I was quite proud of implementing noise arrows. The player can fire a noise arrow at any part of the map and it emits a noise, if the enemy is close enough then they will walk towards it. The extremely difficult part was integrating the noise sound with the navigation mesh (the predefined area of the both the AIs can walk on). Since most of the time the arrow will be shot at a wall or a roof of a building where the NPC cannot reach, thus the position the AI would need to investigate would need to be projected to the nearest point on its navigation mesh. It was way harder to implement than explain! And also researching OpenGL and the UE4 source code to work out the lighting algorithm UE uses to compute the amount of light hitting the player (because you need to be able to hide in the shadows!)
ExpandRed Leaf Released on Google Play Store and itch.io
Although lacking music talent (it's the wrong side of the brain for me) I have loved music for as far as I can remember. After getting an Android phone I found myself getting addicted to the rhythm games similar to Guitar Hero where you tap the notes as they fall down the screen. While I was doing some coursework for University which involved creating games for Android phones, I had the idea to create one of those rhythm games for one of my favourite bands, LOST. Obviously the first hurdle would be to get permission to use the music.
Expand Google Play Store itch.ioJet Set Reverse Released and Open Source
This was an application I developed to allow texture changes in the game Jet Set Radio HD. Jet Set Radio HD was a HD port of a Dreamcast game released in 1999, this means that all the files used by the HD re-release are Dreamcast files. As far as I know, I am the first person to develop support for texture changes on this game. It involved a lot of trial and error as the game uses its own custom file formats lacking a specification (or even any info about them), also the use of Dreamcast textures is annoying as many tools that still remain on the internet (being that the Dreamcast existed pre-millenium).
Expand Download Source CodeElectric Rain Open Source
Electric Rain was an RPG which I attempted to create using the Slick2D engine from Java. It has a turn based battle system in the vain of the Final Fantasy series, and supports types of attacks/spells such as ones which can have a single target and others which can have an area of effect and hit multiple targets. Attacks/spells don't neccessarily need to be targetted at enemies, healing spells are in place which can heal your own team. All of the data the game uses are stored in XML files and thus can be easily parsed and amended. The main game is reminescent of Pokemon - a top down view of the world with wild encounters found in grass.
ExpandNeuron Warfare Open Source
Neuron Warfare was an open source game creating in C++ using Irrlicht. Originally I intended the project just to be demo to see if I could implement the A* algorithm. However, it has quickly increased beyond that. It's beginning to form into a turn based strategy game where you have a party of players who move across a map and must kill the ememies before they kill you.
Expand Source CodeBarricade Released
Barricade was a simple puzzle game I made for a competition in 2009. The prize for the winner was that the game's graphics were remade (by David Gervais), and as a awful artist myself that would mean I could have a decent looking game if I won. I had drafted up some not so great looking prototypes. The gameplay was simplistic yet it worked - it involved navigated throughout a map to reach the end, however things were in your way such as boxes, locked 'doors' and spike pits. This game won the competition...
Expand DownloadJet Set Radio Air Lost in the sands of time ;_;
This was the first large scale project I attempted. It was a game based upon the games Jet Set Radio (1999) and Jet Set Radio Future (2002) (brilliant games which both have a large cult following). It was evident at the time that SEGA wouldn't continue with the franchise (understandable from a business point of view as the games just didn't sell, but not from a gamer point of view) so I thought it would be a good idea (bad idea - way too large a scale of a project) to make a fangame and in the process hopefully not receive a cease and desist letter from SEGA. I really enjoyed programming this, probably my proudest achievement, although looking back it isn't much but to a 15 year old me it was a masterpiece.
Expand


Tatiana Bonnefoi
<EMAIL_ADDRESS>Enjoys hardware operations and website design and development.
Home
About Me
Portfolio
Contact Me
Home
About Me
Portfolio
Contact Me


This module will be used by all users to login to the system with authority, and to modify their profile and the password.
Enter the User Name and Password, and click "LOGIN" button to login the system.
To change profile and password, click the Username at the top of the page after you successfully login.
You can change any of the following fields:
* Note that your Email should be unique, which means that you cannot have the same Email with any other person in our database.
Click the "UPDATE" button at the bottom to save the changes.


In this module you will take your newfound knowledge of Context API
and refactor a e-commerce store to use Context API
as well as extend the functionality of the application making it more robust!
Read these instructions carefully. Understand exactly what is expected before starting this project.
Commit your code regularly and meaningfully. This helps both you and your team lead in case you ever need to return to old code for any number of reasons.
In this project you’ll take take an almost completed e-commerce store and refactor the application to use the Context API
.
cd react-shopping-cart
yarn
or npm install
yarn start
or npm start
<firstName-lastName>
.
<firstName-lastName>
branch, committing changes regularly.
<firstName-lastName>
.
Follow these steps for completing your project.
<firstName-lastName>
Branch into master (student’s repository). Please don’t merge your own pull request
Before you get started, please take a few minutes and get acquainted with this application. Understand what’s going on and how it’s working.
[X] If you look in the App.js
you’ll notice there are currently two state properties - products
to keep track of all available products, and cart
that will keep track of all the items in our cart
.
[X] You’ll also notice inside of our App.js
we have 3 components. A navigation component and two route based components. Each of those components are all being passed either our cart
state or product
state as props, when we start to scale our application and add more props our codebase is going to start to become very cumbersome and will make our application hard to work with.
[X] To combat this from happening we’re going to refactor our application to use Context API
, making it easier and more effiecent to access data across our application.
Step 1 - Add item functionality
App.js
there is a function called addItem
. Finish writing the logic in this function to be able to add the given item to the shopping cart
STEP 2 - Creating ProductContext
[X] In src
, create a new folder named contexts
, this folder is going to be used to hold all of context objects
we create.
[X] Inside that folder create a new file named ProductContext.js
[X] In this file, import the createContext
function from the react library and create our ProductContext
.
STEP 3 - Providing data with ProductContext
[X] Now that we’ve created our ProductContext
we can import into our App.js
. Now we can start providing data across our application!
[X] Wrap all of your components/routes in App.js
inside of ProductContext.Provider
component.
[X] Next pass a value prop to your Provider
.
[X] In the value prop we’ll pass in the products state, and an addItem function that will allow us to add books to the cart.
Before
AFTER
STEP 4 - Consuming data with ProductContext
[X] Now that our ProductContext
is now providing data we can finally consume it! To do so let’s head over to our Products
component and import the useContext
hook as well as our ProductContext
.
[X] In the component, call the useContext
hook and pass in the context object we want to use into it.
[X] When we do this, useContext
is going to return value passed by our ProductContext
Provider value
prop. In our case we’re getting back an object with two properties. A products
property and a addItem
property. We can go ahead and destructure those.
[X] Now that we have all of the data we need we can refactor our Products
component from using props.
[X] To do so we just need to remove every instance of props
.
[X] Now our Products
component is getting it’s data solely from Context API
😃.
STEP 5 - Create the CartContext
[X] Now that we have refactored our Products
component to utilize Context API
let’s refactor our Cart
and Navigation
Component to use Context API
as well.
[X] To start create a new file in our contexts folder named CartContext.js
, this context is going to be utilized by our ShoppingCart
and Navigation
component.
[X] Inside of our new CartContext
import createContext
and create a new context named CartContext
.
STEP 6 - Providing data with CartContext
[X] Let’s go ahead and bring our newly created CartContext
into our App.js
and wrap all of our components inside of our CartContext.Provider
. Make sure our ProductContext.Provider
is still the root provider.
[X] Now pass a value prop to our CartContext.Provider
, this value prop is going to contain our cart
state.
[X] Now that we’re providing our cart data, we can start to refactor our Navigation
and ShoppingCart
components.
[X] Let’s start with our ShoppingCart
component first. Go ahead and refactor the ShoppingCart
route to no longer use render props. This will throw us an error, but we’ll be able to resolve it quickly.
[X] While were at it let’s go ahead and remove the props from our navigation as well.
STEP 7 - The final stretch
[X] Our cart data is now being provided to us from our CartContext
time to consume it!
[X] First, let’s head to our ShoppingCart
component and import the useContext
hook and our CartContext
.
[X] Now in the component, pass CartContext
to the useContext
hook and assign it to a variable named cart.
[X] Inside of our component we now need to remove all instances of props.
props
parameter
props
portion in our getCartTotal
function
props
when we’re mapping over our cart
Navigation
component.
useContext
hook and our CartContext
CartContext
to the useContext
hook and assign it to a variable named cart.
props
props
from our parameters
props
from our cart length
We have now successfully converted our application into using Context API
🔥
ProductContext
and a CartContext
ProductContext
and CartContext
to provide data to child components
useContext
hook from ProductContext
and CartContext
Do not attempt stretch problems until MVP has been reached and a final commit has been made.
[X] Create a removeItem
function that allows you to remove an item from your cart with a click of a button. This removeItem
function should be able to be consumed from your ShoppingCartItem
component. Remember each item has an id
this will help out a lot while creating your removeItem function!
[ ] Persist Cart Items using localStorage
. (If you try this one, it will be a bit tricky to get our items to populate the shopping cart on a refresh. You’ll have to think about where the data actually lives, and how you can get data there from localStorage when the app is being mounted after a refresh. Good luck!)


HEADER by nestor, 2019
My todo list
"Hello World"
"todo items"
1.1 the basis
1.2 doctypes and metatags
1.3 accessibility
2.1 basis
2.2 selectors and properties


Worth it
Pick your dream job to find out if it's worth it.
choose position here
Location
30% of Salary
40% of Salary
50% of Salary
San Francisco
Studio
1 Bedroom
2 Bedroom
Oakland
1 Bedroom
2 Bedroom
3 Bedroom
Hayward
3 Bedroom
3 Bedroom
3 Bedroom
Rental housing data is from the Quandl API for Zillow Real Estate Research.


A descriptive language that allows the DBA or user to describe and name the entities required for the application and the relationships that may exist between the different entities.
A language that provides a set of operation to support the basic data manipulation operation on the data held in the database.
A language that allows the user to tell the system what data is needed and exactly how to retrieve the data.
A language that allows tile user to state what data is needed rather than how it is to be retrieved.


{% extends '_layouts/default.html' %}
{% set id = "home" %}
{% block main %}
We need a government that represents South Madison.
Help us get out the Vote!
Make your voice heard
{{ item.message | safe | urlize }}
{{feed|dump(2)}}
#}


Methods
addToFavorites(userNameMoviesEndpoint, expressValidator, callback) → {Object}
This method makes a call to the user's movies endpoint,
and pushes the movieID in the FavoriteMovies array.
Parameters:
| Name | Type | Description |
|---|---|---|
userNameMoviesEndpoint |
string | http://api-myflix.herokuapp.com//users/:Username/favorites/:MovieID |
expressValidator |
Array | Validate form input using the express-validator package. |
callback |
func | Uses Users schema to add movieID to list of favorite movies. |
Returns:
- Returns data about the updated favorite list.
- Type
- Object
addUser(usersEndpoint, expressValidator, callback) → {Object}
This method makes a call to the users endpoint and allow new user to register
validates the object sent through the request
and creates a user object.
Parameters:
| Name | Type | Description |
|---|---|---|
usersEndpoint |
string | http://api-myflix.herokuapp.com/users |
expressValidator |
Array | Validate form input using the express-validator package. |
callback |
func | Uses Users schema to register user. |
Returns:
- Returns user info object.
- Type
- Object
dleteUser(usersEndpoint, expressValidator, callback) → {Object}
This method makes a call to the users endpoint, request to delete a user (by username)
validates the object sent through the request
and creates a user object.
Parameters:
| Name | Type | Description |
|---|---|---|
usersEndpoint |
string | http://api-myflix.herokuapp.com/users |
expressValidator |
Array | Validate form input using the express-validator package. |
callback |
func | Uses Users schema to register user. |
Returns:
- Returns A text message indicating that the user was deleted
- Type
- Object
getDirectorByName(directorEndpoint, passportAuthentication, callback) → {Object}
This method makes a call to the movie director name endpoint,
authenticates the user using passport and jwt
and returns a director object.
Parameters:
| Name | Type | Description |
|---|---|---|
directorEndpoint |
string | http://api-myflix.herokuapp.com/movies/director/:Name |
passportAuthentication |
func | Authenticates JavaScript Web Token using the passport node package. |
callback |
func | Uses Movies schema to find director by name. |
Returns:
- Returns director info object.
- Type
- Object
getGenreByName(genreEndpoint, passportAuthentication, callback) → {Object}
This method makes a call to the movie genre name endpoint,
authenticates the user using passport and jwt
and returns a genre object.
Parameters:
| Name | Type | Description |
|---|---|---|
genreEndpoint |
string | http://api-myflix.herokuapp.com/movies/genres/:Genre |
passportAuthentication |
func | Authenticates JavaScript Web Token using the passport node package. |
callback |
func | Uses Movies schema to find genre by name. |
Returns:
- Returns genre info object.
- Type
- Object
getMovieByTitle(movieEndpoint, passportAuthentication, callback) → {Object}
This method makes a call to the movie title endpoint,
authenticates the user using passport and jwt
and returns a single movies object.
Parameters:
| Name | Type | Description |
|---|---|---|
movieEndpoint |
string | http://api-myflix.herokuapp.com/movies/:Title |
passportAuthentication |
func | Authenticates JavaScript Web Token using the passport node package. |
callback |
func | Uses Movies schema to find one movie by title. |
Returns:
- Returns single movie object.
- Type
- Object
getMovies(moviesEndpoint, passportAuthentication, callback) → {Array}
This method makes a call to the movies endpoint,
authenticates the user using passport and jwt
and returns an array of movies objects.
Parameters:
| Name | Type | Description |
|---|---|---|
moviesEndpoint |
string | http://api-myflix.herokuapp.com/movies |
passportAuthentication |
func | Authenticates JavaScript Web Token using the passport node package. |
callback |
func | Uses Movies schema to find list of movies. |
Returns:
- Returns array of movie objects.
- Type
- Array
removeFromFavorites(userNameMoviesEndpoint, expressValidator, callback) → {Object}
This method makes a call to the user's movies endpoint,
and deletes the movieID from the FavoriteMovies array.
Parameters:
| Name | Type | Description |
|---|---|---|
userNameMoviesEndpoint |
string | http://api-myflix.herokuapp.com//users/:Username/favorites/:MovieID |
expressValidator |
Array | Validate form input using the express-validator package. |
callback |
func | Uses Users schema to remove movieID from list of favorite movies. |
Returns:
- Returns data about the updated favorite list.
- Type
- Object
updateUser(userNameEndpoint, expressValidator, callback) → {Object}
This method makes a call to the users endpoint, request for update a user info (by username)
Update a user's info, by username.
validates the object sent through the request
and creates a updated user info object.
Parameters:
| Name | Type | Description |
|---|---|---|
userNameEndpoint |
string | http://api-myflix.herokuapp.com/users/:Username |
expressValidator |
Array | Validate form input using the express-validator package. |
callback |
func | Uses Users schema to update user's info by username. |
Returns:
- Returns updated User info.
- Type
- Object