text:
On-Demand Webinar
SAS® Viya® and the cloud: How SAS is changing the game it invented
Join this webinar to learn how to make the most of cloud migration with SAS Viya.
In partnership with:
About the webinar
For most enterprises, the cloud presents an opportunity to rethink how to manage your business and best apply technology.
While enterprises could simply "lift and shift" their current systems to the cloud, most will embark on an approach to steadily transform their operations.
SAS Viya takes full advantage of the cloud's scalability, providing a solution that delivers the latest capabilities, with the first release running on Microsoft Azure.
We will explore:
- How trends in cloud computing have evolved to support digital transformation.
- Why analytic solutions, if designed properly, are perfectly suited to run on cloud infrastructure.
- How SAS Viya on Microsoft Azure will allow you to build your next generation of analytic solutions.
Have a SAS profile? To complete this form automatically Sign In

subset: commoncrawl


text:
Equifax last week disclosed a historic breach involving Social Security numbers and other sensitive data on as many as 143 million Americans. The company said the breach also impacted an undisclosed number of people in Canada and the United Kingdom. But the official list of victim countries may not yet be complete: According to information obtained by KrebsOnSecurity, Equifax can safely add Argentina — if not also other Latin American nations where it does business — to the list as well.
Equifax is one of the world's three-largest consumer credit reporting bureaus, and a big part of what it does is maintain records on consumers that businesses can use to learn how risky it might be to loan someone money or to extend them new lines of credit. On the flip side, Equifax is somewhat answerable to those consumers, who have a legal right to dispute any information in their credit report which may be inaccurate.
Earlier today, this author was contacted by Alex Holden, founder of Milwaukee, Wisc.-based Hold Security LLC. Holden's team of nearly 30 employees includes two native Argentinians who spent some time examining Equifax's South American operations online after the company disclosed the breach involving its business units in North America.
It took almost no time for them to discover that an online portal designed to let Equifax employees in Argentina manage credit report disputes from consumers in that country was wide open, protected by perhaps the most easy-to-guess password combination ever: "admin/admin."
We'll speak about this Equifax Argentina employee portal — known as Veraz or "truthful" in Spanish — in the past tense because the credit bureau took the whole thing offline shortly after being contacted by KrebsOnSecurity this afternoon. The specific Veraz application being described in this post was dubbed Ayuda or "help" in Spanish on internal documentation.
Once inside the portal, the researchers found they could view the names of more than 100 Equifax employees in Argentina, as well as their employee ID and email address. The "list of users" page also featured a clickable button that anyone authenticated with the "admin/admin" username and password could use to add, modify or delete user accounts on the system. A search on "Equifax Veraz" at Linkedin indicates the unit currently has approximately 111 employees in Argentina.
Each employee record included a company username in plain text, and a corresponding password that was obfuscated by a series of dots.
However, all one needed to do in order to view said password was to right-click on the employee's profile page and select "view source," a function that displays the raw HTML code which makes up the Web site. Buried in that HTML code was the employee's password in plain text.
A review of those accounts shows all employee passwords were the same as each user's username. Worse still, each employee's username appears to be nothing more than their last name, or a combination of their first initial and last name. In other words, if you knew an Equifax Argentina employee's last name, you also could work out their password for this credit dispute portal quite easily.
But wait, it gets worse. From the main page of the Equifax.com.ar employee portal was a listing of some 715 pages worth of complaints and disputes filed by Argentinians who had at one point over the past decade contacted Equifax via fax, phone or email to dispute issues with their credit reports. The site also lists each person's DNI — the Argentinian equivalent of the Social Security number — again, in plain text. All told, this section of the employee portal included more than 14,000 such records.
Jorge Speranza, manager of information technology at Hold Security, was born in Argentina and lived there for 40 years before moving to the United States. Speranza said he was aghast at seeing the personal data of so many Argentinians protected by virtually non-existent security.
Speranza explained that — unlike the United States — Argentina is traditionally a cash-based society that only recently saw citizens gaining access to credit.
"People there have put a lot of effort into getting a loan, and for them to have a situation like this would be a disaster," he said. "In a country that has gone through so much — where there once was no credit, no mortgages or whatever — and now having the ability to get loans and lines of credit, this is potentially very damaging."
Shortly after receiving details about this epic security weakness from Hold Security, I reached out to Equifax and soon after heard from a Washington, D.C.-based law firm that represents the credit bureau.
I briefly described what I'd been shown by Hold Security, and attorneys for Equifax said they'd get back to me after they validated the claims. They later confirmed that the Veraz portal was disabled and that Equifax is investigating how this may have happened. Here's hoping it will stay offline until it is fortified with even the most basic of security protections.
According to Equifax's own literature, the company has operations and consumer "customers" in several other South American nations, including Brazil, Chile, Ecuador, Paraguay, Peru and Uruguay. It is unclear whether the complete lack of security at Equifax's Veraz unit in Argentina was indicative of a larger problem for the company's online employee portals across the region, but it's difficult to imagine they could be any worse.
"To me, this is just negligence," Holden said. "In this case, their approach to security was just abysmal, and it's hard to believe the rest of their operations are much better."
I don't have much advice for Argentinians whose data may have been exposed by sloppy security at Equifax. But I have urged my fellow Americans to assume their SSN and other personal data was compromised in the breach and to act accordingly. On Monday, KrebsOnSecurity published a Q&A about the breach, which includes all the information you need to know about this incident, as well as detailed advice for how to protect your credit file from identity thieves.
[Author's note: I am listed as an adviser to Hold Security on the company's Web site. However this is not a role for which I have been compensated in any way now or in the past.]


text:
1If ye then be risen with Christ, seek those things which are above, where Christ sitteth on the right hand of God. 2Set your affection on things above, not on things on the earth. 3For ye are dead, and your life is hid with Christ in God. 4When Christ, who is our life, shall appear, then shall ye also appear with him in glory.
5Mortify therefore your members which are upon the earth; fornication, uncleanness, inordinate affection, evil concupiscence, and covetousness, which is idolatry: 6for which things' sake the wrath of God cometh on the children of disobedience: 7in the which ye also walked some time, when ye lived in them. 8But now ye also put off all these; anger, wrath, malice, blasphemy, filthy communication out of your mouth. 9Lie not one to another, seeing that ye have put off the old man with his deeds; 10and have put on the new man, which is renewed in knowledge after the image of him that created him: 11where there is neither Greek nor Jew, circumcision nor uncircumcision, Barbarian, Scythian, bond nor free: but Christ is all, and in all.
12Put on therefore, as the elect of God, holy and beloved, bowels of mercies, kindness, humbleness of mind, meekness, longsuffering; 13forbearing one another, and forgiving one another, if any man have a quarrel against any: even as Christ forgave you, so also do ye. 14And above all these things put on charity, which is the bond of perfectness. 15And let the peace of God rule in your hearts, to the which also ye are called in one body; and be ye thankful. 16Let the word of Christ dwell in you richly in all wisdom; teaching and admonishing one another in psalms and hymns and spiritual songs, singing with grace in your hearts to the Lord. 17And whatsoever ye do in word or deed, do all in the name of the Lord Jesus, giving thanks to God and the Father by him.
18Wives, submit yourselves unto your own husbands, as it is fit in the Lord. 19Husbands, love your wives, and be not bitter against them.
20Children, obey your parents in all things: for this is well pleasing unto the Lord. 21Fathers, provoke not your children to anger, lest they be discouraged.
22Servants, obey in all things your masters according to the flesh; not with eyeservice, as menpleasers; but in singleness of heart, fearing God: 23and whatsoever ye do, do it heartily, as to the Lord, and not unto men; 24knowing that of the Lord ye shall receive the reward of the inheritance: for ye serve the Lord Christ. 25But he that doeth wrong shall receive for the wrong which he hath done: and there is no respect of persons.


text:
Source Code Makeover: Square Shooter, Part 2
Fri 10 August 2012 Al Sweigart
UPDATE: Felix, the original author of Square Shooter, has made some comments in the comment section that are pretty insightful. I recommend you check them out.
This is a continuation from Part 1, where I go through the source code of Square Shooter, an Asteroids clone, and try to redesign the code to be more readable. (Part 3 is also up.)
All of the changes I make can be viewed on github. You can also download the original source code for Square Shooter.
Just to say this again, readability and software design have an element of subjectivity. The changes I make here aren't necessarily the one true way for this code to be written, and may even be worse (I'm sure you'll be able to check the comments section for people pointing out my errors.)
Note that any line numbers mentioned refer to the line numbers in the original source code.
Renaming some variables and re-spacing code
(These changes can be seen in the github history.)
Grepping to see where GameWorld
gets instantiated, I see that the constructor is only called once from line 528 and placed into a global variable named model
. Hmmm. I get how the GameWorld
is a sort of model, but since the class name is GameWorld
, let's rename the model
variable to "world
" by doing a find-and-replace.
Now let's look at the init_level()
method. I'm going to change line 142 from a combination if
statment and block to separate lines for the if
statement and block:
if (level > self.max_level): self.max_level = level
I think this is a bit more readable. I used the combined approach for the if
statement and blocks in the wrap_around()
method because the blocks were almost identical to each other, having them on the same line (and lined up) makes it easier to compare each other:
def wrap_around(self): """Change the position of the bubble to toroidally "wrap around" if it goes off one edge of the map.""" if self.pos.x < 0: self.pos.x += 1 if self.pos.y < 0: self.pos.y += 1 if self.pos.x > 1: self.pos.x -= 1 if self.pos.y > 1: self.pos.y -= 1
In fact, I'll do the same thing to the Ship
's update()
method for those timer decrements (and update the comment, something I forgot to do last time):
# powerups degrade over time until it reaches 0. if self.has_shield(): self._shield_timer -= delta_t if self.has_super_bullets(): self._super_bullet_timer -= delta_t if self.has_freeze(): self._freeze_timer -= delta_t
The death_timer
member in GameWorld
is the timer that is set after the player dies but before the level is restarted. This name is a bit ambiguous, so I'll rename it to afterdeath_timer
. I'll do the same with finish_timer
, which counts down after the last bubble has been shot but before the next level begins.
That looks pretty good. I'll just add some comments to init_level()
and then check in my changes with the log message, "Formatting changes and comments to init_level()."
Added comments to the GameWorld class
(These changes can be seen in the github history.)
Now let's look at the GameWorld
class's update()
method (which is separate from the Ship
class's update()
method). This is a lot of code that has no comments to help summarize them. All the comments below are mine:
def update(self, delta_t): self.handle_collisions(delta_t) # expand the explosions and delete them once they get too big if len(self.explosions) > 0: if self.explosions[0].radius > 0.5: self.explosions.pop(0) for i in self.explosions: i.radius += delta_t # "age" the powerups on the map, and delete them if they get too old if len(self.powerups) > 0: if self.powerups[0].age > 9: self.powerups.pop(0) for i in self.powerups: i.age += delta_t # check if all the bubbles have been destroyed if len(self.bubbles) == 0: if self.afterfinish_timer > 0: # the afterfinish timer is still counting down self.afterfinish_timer -= delta_t; else: # the afterfinish timer is done, add a life and set up the next level self.level += 1 self.lives += 1 self.init_level(self.level) return elif not self.ship.has_freeze(): # update all the bubbles for i in self.bubbles: i.update(delta_t) # update the bullet if self.bullet != None: bullet_wrapped = self.bullet.update(delta_t) if bullet_wrapped: # delete the bullet if it has hit the edge of the map self.bullet = None # update the ship if self.ship == None: if self.afterdeath_timer > 0: # player is dead and afterdeath timer is still counting down self.afterdeath_timer -= delta_t elif self.lives > 0: # create a new Ship for the next level self.ship = Ship() self.ship.add_shield() # add shields at the start of a life else: # player has run out of lives, level 0 will make the start screen display self.level = 0 # Game over return self.ship.update(delta_t)
Checking this in with log message, "Added comments to GameWorld.update()."
Refactoring the GameWorld class
(These changes can be seen in the github history.)
Now that it has some documentation, let's see how we can improve the GameWorld
class. One thing that is odd is that the powerups and explosions are removed if they are too old, and then they are aged. This means that old explosions and powerups won't be removed until the next call to update()
. Let's swap the order of that and age them first before doing the age check:
# expand the explosions and delete them once they get too big for i in self.explosions: i.radius += delta_t if len(self.explosions) > 0: if self.explosions[0].radius > 0.5: self.explosions.pop(0) # "age" the powerups on the map, and delete them if they get too old for i in self.powerups: i.age += delta_t if len(self.powerups) > 0: if self.powerups[0].age > 9: self.powerups.pop(0)
Also, there seems to be a slight bug with this code. It only checks if the first explosion or power up in the explosions
and powerups
lists is too old. (You can tell by the self.explosions[0]
and self.powerups[0]
part.) We should add a loop to these if
statements so that every explosion and powerup is checked. (The reason we don't see this bug in the game is because update()
is called so frequently that the powerups and explosions are quickly removed in future update()
calls.) Notice that we iterate from the end of the self.explosions
and self.powerups
list to the beginning, because we are modifying the items in the list as we iterate.
# expand the explosions and delete them once they get too big for i in self.explosions: i.radius += delta_t for i in range(len(self.explosions - 1, -1, -1)): if self.explosions[i].radius > 0.5: self.explosions.pop(i) # "age" the powerups on the map, and delete them if they get too old for i in self.powerups: i.age += delta_t for i in range(len(self.powerups - 1, -1, -1)): if self.powerups[i].age > 9: self.powerups.pop(i)
Let's also replace the 0.5
and 9
magic numbers with global constants MAX_EXPLOSION_SIZE
and MAX_POWERUP_AGE
MAX_EXPLOSION_SIZE = 0.5 # set between 0.0 and 1.0 MAX_POWERUP_AGE = 9 # in seconds ... # expand the explosions and delete them once they get too big for i in self.explosions: i.radius += delta_t for i in range(len(self.explosions) - 1, -1, -1): if self.explosions[i].radius > MAX_EXPLOSION_SIZE: self.explosions.pop(i) # "age" the powerups on the map, and delete them if they get too old for i in self.powerups: i.age += delta_t for i in range(len(self.powerups) - 1, -1, -1): if self.powerups[i].age > MAX_POWERUP_AGE: self.powerups.pop(i)
It is more Pythonic to just use not len(self.bubbles)
instead of len(self.bubbles) == 0
for conditions, since the integer value 0
evaluates to False
# check if all the bubbles have been destroyed if not len(self.bubbles):
And the variable name i
is usually used to mean "index". Since the for loop for updating the bubbles is iterating over Bubble
objects instead of an integer index, let's rename i
to bubble
# update all the bubbles for bubble in self.bubbles: bubble.update(delta_t)
Let's put the self.ship.update()
call into an else
block. Technically, if we call self.ship.update()
unconditionally, then we're simulating delta_t
seconds for the ship even though it was just created (on line 205). (This is such a small bug, though, that we haven't noticed it before.)
else: self.ship.update(delta_t)
I'll check in these changes with the comment "Improved the GameWorld.update() code." after testing my changes.
Refactoring init_level()
(These changes can be seen in the github history.)
Going back to the init_level()
code, I realize that rather than use del
on the items in the bubbles
, explosions
, and powerups
lists, we can just set those members to blank lists and Python's garbage collector will delete the objects for us.
# clear out the bubbles, explosions, and power ups from the last level. self.bubbles = [] self.explosions = [] self.powerups = []
Also, we can get rid of the for
loop and simply use a list comprehension to create all the starting bubbles. This shows us that the self.bubbles = []
line wasn't need before:
# clear out the explosions, and power ups from the last level. self.explosions = [] self.powerups = [] # create a number of starting big bubbles as the level number. self.bubbles = [Bubble("big") for i in range(level)]
Checking this in with the message, "Simplifying init_level() code."
Fixing some bugs I introduced
(These changes can be seen in the github history.)
I didn't test my changes too thoroughly, and introduced a couple of bugs. There are some times when the player has died and the self.ship
member in GameWorld
is set to None
, but an attribute of self.ship
is checked. I've added some self.ship != None
checks to these if
The render_ship()
method also has a place where we need to do a check for the ship being set to None
if self.world.ship != None and self.world.ship.has_super_bullets(): pygame.draw.rect(self.screen, RED, bbox, 1)
I got ahead of myself by accident, I also checked in a change I made to handle_collisions()
. Instead of calling b.collides_with(self.bullet)
I changed it to self.bullet.collides_with(b)
, since it reads better as "the bullet collided with the bubble" rather than "the bubble collided with the bullet".
I've checked these in here and here and here.
Improving handle_collisions()
(These changes can be seen in the github history.)
I'm going to add a new comment that explains that non-super bullets go away when they hit a bubble:
self.bullet = None # delete the non-super bullet when it hits a bubble
Also, there's another place we can change len(self.bubbles) == 0
to just not len(self.bubbles)
if not len(self.bubbles): self.afterfinish_timer = 3
The code that follows the elif self.ship != None:
statement can be simplified. This code checks that if a bubble has hit the ship and handles the player dying. Let's simplify lines 235 to 244:
# check if the bubble has hit the ship if self.ship != None and b.collides_with(self.ship) and not self.ship.has_shield(): self.spawn_explosion(self.ship) self.ship = None self.lives -= 1 self.afterdeath_timer = 3; break
We can also get rid of the if self.ship == None:
return line on line 246. The point of this line is to exit the function if ship
is set to None
, that way the code that checks if the ship and powerups have collided won't cause errors. But if we want to add code after the powerups collision check, then this function might prematurely exit.
Instead of returning, let's set the code to just skip the powerups collision checks:
if self.ship != None: for p in self.powerups[:]: if p.collides_with(self.ship): self.apply_powerup(p) self.powerups.remove(p)
That's good for now. Let's check this in with the log message, "Refactoring handle_collisions()"
Refactoring the rest of GameWorld
(These changes can be seen in the github history.)
The spawn_explosion()
method looks okay. We'll leave it as is.
The code in mark_score()
is a bunch of if
statements that change the same variable by different values. Let's put this info in a "kinds" dictionary like we did in the Bubble class:
def mark_score(self, bubble): # score kinds = {'big': 1, 'medium': 2, 'small': 5} self.score += kinds[bubble.kind]
We'll do the same thing for the apply_powerup()
method, but instead of mapping a bubble kind string value to a score integer value, we will use a dictionary to map a powerup kind string value to a function. (Python lets us store functions just like any other value.)
def apply_powerup(self, powerup): # function to call kinds = {'shield': self.ship.add_shield, 'bullet': self.ship.add_super_bullets, 'freeze': self.ship.add_freeze} kinds[powerup.kind]()
I thought about replacing this code:
if self.score > self.high_score: self.high_score = self.score
...with this code:
self.high_score = max(self.score, self.high_score)
...but decided against it. It's one less line, but it doesn't necessarily improve readability.
Checking these changes in with the log message, "Refactored mark_score() and apply_powerup()"
Fixing a regression
(These changes can be seen in the github history.)
In the process of fixing a bug, I've accidentally introduced a new bug. These kinds of bugs are known as regressions. In GameWorld's update() method, I have this code:
elif self.ship != None and not self.ship.has_freeze(): # update all the bubbles for bubble in self.bubbles: bubble.update(delta_t)
This updates the position of all the bubbles, causing them to move around the game map. I added the self.ship != None
check so that the not self.ship.has_freeze()
wouldn't cause an exception due to the value of self.ship
being None
(and thus attempting to call None.has_freeze()
(The second part of the condition, not self.ship.has_freeze(), is not evaluated if the first part, self.ship != None, is True because of short-circuit evaluation. In the expression False and blahblahblah
, it doesn't matter if blahblahblah
is True
or False
because the first part is False
, so Python skips checking the second part.)
However, this means that when the ship doesn't exist, the bubble positions don't update. You can see this when the ship gets destroyed: all the bubbles freeze until the player's next life begins. The code should be changed to this:
elif self.ship == None or not self.ship.has_freeze(): # update all the bubbles for bubble in self.bubbles: bubble.update(delta_t)
Because of short-circuiting, if self.ship
is None
, then the not self.ship.has_freeze()
part of the condition won't be evaluated. (There's no reason to check: the expression True or blahblahblah
will evaluate to True
no matter if blahblahblah
is True
or False
, so Python skips it.)
Now when we run the program and die, you can see the bubbles keep moving.
I'll check these changes in under the log message, "Fixed a regression where the bubbles freeze after the player dies."
Refactoring GameScreen
(These changes can be seen in the github history.)
The first thing I notice is that there is code that does exactly what our WINDOW_WIDTH
and WINDOW_HEIGHT
constants do:
self.width, self.height = screen.get_size()
We can just delete this line since we don't need it anymore, and replace the uses of self.height
with WINDOW_HEIGHT
self.hud_font = pygame.font.SysFont( font_name, WINDOW_HEIGHT / 10) self.msg_font = pygame.font.SysFont( font_name, WINDOW_HEIGHT / 20)
The code that bases the font size on the window height isn't ideal, because the font sizes are in points and the window size is in pixels, and they don't increase proportional. You can see this for yourself by increasing WINDOW_HEIGHT
(and MAP_HEIGHT
) and running the program.
Actually, it's a bit annoying that we have to change both WINDOW_HEIGHT
and MAP_HEIGHT
. Let's add code to the top of the file that sets MAP_WIDTH
and MAP_HEIGHT
based on the values of WINDOW_WIDTH
and WINDOW_HEIGHT
Also, the render_backround()
method is misspelled. Let's fix that.
Checking this in with the log message, "Refactoring GameScreen's constructor."
Refactoring GameScreen.render()
(These changes can be seen in the github history.)
The first line in the render()
method is a bit of syntactic sugar:
m = self.world
This is so that we only have to type m
instead of self.world
in this function. The m
made sense before we replaced the "model
" variable with "world
". So we should change this m
to w
. But really, I think it's more readable just to use self.world
instead of m
. Let's get rid of this line and change all the m variables to self.world
The same bit of syntactic sugar is in render_game_world()
, so we'll replace m
with self.world
there too.
The render()
code has this weird green-box drawing code:
if self.world.level == 0: self.render_title_screen() # Hide the [P]ause text. self.screen.fill(GREEN, (MAP_WIDTH + 20, 424, 140, 24)) else: self.render_game_world() # Hide the [P]lay text. self.screen.fill(GREEN, (MAP_WIDTH + 20, 400, 140, 24))
This code is here because the background layer pygame.Surface
object has both [P]lay and [P]ause drawn on it, but it only makes sense to show one or the other while the game runs. So this code draws a green box to hide one of the pieces of text.
This is a less than graceful way to handle this. Felix probably wanted to skip rendering the background pygame.Surface
object each time the game map was rendered and make the code run faster. But adding a call to self.render_background()
in the render()
method doesn't introduce any noticeable performance issues, so I'd say this is a case of premature optimization.
Let's add a call to self.render_background()
in render()
, and also modify the render_background()
method to have a parameter that tells it whether or not to render [P]lay or [P]ause. That way we can skip this silly green-box drawing code. (Also, this means we can remove the self.render_background()
line from __init__()
, since now the background is rendered with the rest of the map.)
Also, I'm going to separate the combined if-and-block line on line 380 into two lines.
def render(self): self.screen.blit(self.bglayer, (0, 0)) self.render_background(self.world.level) if self.world.level == 0: self.render_title_screen() else: self.render_game_world() if self.game_paused: self.render_pause_text()
(Ideally, we'd have some other variable set to track the state of whether or not we show the status screen or the game play screen. But I'll just leave in the convention of level 0 being the status screen for now.)
The render_background()
method is altered to either display [P]lay or [P]ause:
def render_background(self, level): ... text = self.msg_font.render('[Q]uit', False, WHITE) self.bglayer.blit(text, (MAP_WIDTH + 20, 424)) if level == 0: msg = '[P]lay' else: msg = '[P]ause' text = self.msg_font.render(msg, False, WHITE) self.bglayer.blit(text, (MAP_WIDTH + 20, 400))
Also, let's delete these two commented out lines, since even if we uncomment them they wouldn't work due to a lack of a self.fps
#fps_text = self.msg_font.render(str(self.fps), False, GREEN) #self.screen.blit(fps_text, (0, 0))
I'll check this in with the log message, "Refactored the GameScreen.render() method, and got rid of the green box drawing code."
(These changes can be seen in the github history.)
I accidentally checked in the code before deleting those commented out lines. I'll remove them in this check in.
Moving render_ship() and render_bullet()
(These changes can be seen in the github history.)
The render_title_screen()
method looks fine. But the other render methods like render_ship()
, render_bullet()
, and render_powerup()
would be better if they were in the Ship
, Bullet
, and Powerup
classes respectively. I'll move them there and simply rename them all render()
(just like how the update()
name is used by the ObjectOnMap
subclasses.) These render()
methods will need a parameter for the pygame.Surface
object to draw themselves on.
These lines in render_ship()
can be removed once this method can be removed after the code is moved to the Ship
class, since self.world.ship
will just be self
and ship.pos
will simply be self.pos
ship = self.world.ship pos = ship.pos
Here's the code for the Ship.render()
method, compare it to the old render_ship()
def render(self, surface): bbox = pygame.draw.circle( surface, SILVER, scale_and_round(self.pos.x, self.pos.y), int(round(self.radius * MAP_SIZE))) pygame.draw.circle( surface, BLACK, scale_and_round(self.pos.x, self.pos.y), int(round(self.radius * 0.5 * MAP_SIZE)), 1) if self.has_shield(): pygame.draw.rect(surface, SILVER, bbox, 1)
And here's the code to the new Bullet.render()
method, compare it to the old render_bullet()
def render(self, surface): bbox = pygame.draw.circle( surface, RED, scale_and_round(self.pos.x, self.pos.y), int(round(self.radius * MAP_SIZE))) if self.shield: pygame.draw.rect(surface, RED, bbox, 1)
I'll check this in as "Moved render_bullet() and render_ship() to the Bullet and Ship classes."
Creating render() methods for Bubble and a new Explosion class
(These changes can be seen in the github history.)
Let's continue the trend of giving classes their own render()
methods with the Bubble
def render(self, surface): pygame.draw.circle( surface, self.color, scale_and_round(self.pos.x, self.pos.y), int(round(self.radius * MAP_SIZE)), 1)
Currently explosions are just ObjectOnMap
objects, since we only needed them to have a radius and position. But we should give them their own class so they can have their own render()
and update()
methods. Currently this code is handled by the GameWorld
and GameScreen
classes instead of a unified place.
The new Explosion
class looks like this:
class Explosion(ObjectOnMap): def __init__(self): super(Explosion, self).__init__(0) # explosions start at size 0 def update(self, delta_t): self.radius += delta_t def render(self, surface): pygame.draw.circle( surface, RED, scale_and_round(self.pos.x, self.pos.y), int(round(self.radius * MAP_SIZE)), 1)
I'll check in these changes with the log message, "Added an Explosion class, and created Bubble.render()"
Creatind a render() method for Powerup.
(These changes can be seen in the github history.)
The render() method for Powerup has a lot of code in it since it has to draw three different types of Powerup. We could split the Powerup class into three subclasses, but I think that's object-oriented overkill.
I've created a scaled_x
and scaled_y
variable inside render()
to replace all the scale_and_round(self.pos.x, self.pos.y)
calls. The utility of this is negligible. I almost made a scaled_r
to replace the int(round(self.radius * MAP_SIZE))
expressions. Other than that, the code is mostly untouched.
I've also replaced the i
in the for
loop with "powerup
" since it is not an index:
for powerup in self.world.powerups: powerup.render(self.screen)
"Created a render() method for Powerup."
And I made another check in: "Whoops. Left in a high powerup chance while testing."
At this point, our render_game_world()
method in the GameScreen
class looks very straightforward:
def render_game_world(self): self.screen.set_clip((0, 0, MAP_WIDTH, MAP_HEIGHT)) if self.world.ship != None: self.world.ship.render(self.screen) if self.world.bullet != None: self.world.bullet.render(self.screen) for bubble in self.world.bubbles: bubble.render(self.screen) for explosion in self.world.explosions: explosion.render(self.screen) for powerup in self.world.powerups: powerup.render(self.screen) self.screen.set_clip(None)
The code in the render_pause_text()
method looks fine, I'll just leave it like that.
Adding a debug switch for displaying FPS
(These changes can be seen in the github history.)
Whoops. Those two commented out lines actually did do something useful. The catch is it required you to uncomment a third line that was in the main game loop.
This code displays the current frames per second (FPS) in the upper left corner, which can be useful for measuring performance. Instead of commenting and uncommenting these lines whenever you want to see them, let's add a DISPLAY_FPS
global variable that can be set to True
or False
, and then put an if DISPLAY_FPS:
statement in front of these lines:
DISPLAY_FPS = True ... if DISPLAY_FPS: fps_text = self.msg_font.render(str(self.fps), False, GREEN) self.screen.blit(fps_text, (0, 0)) ... if DISPLAY_FPS: renderer.fps = int(round(clock.get_fps()))
I'll check in this code with the log message, "Adding DISPLAY_FPS for debugging."
No need for a running variable
(These changes can be seen in the github history.)
The main game loop in the global scope at the bottom of the file continues handling events as long as the running
variable is set to True
. All of the code that needs to end the program do so by setting running
to False
. However, since there is no code that runs inside the loop if running
is set to False
, we can get rid of this variable entirely.
Instead, we'll just have the loop be a while True:
infinite loop and the code that previously set running to False
will just execute a break
instead. That's one less variable we have to deal with.
Checked in with log message, "Get rid of the running variable."
End of Part 2
That's all for now. We're almost done refactoring the code. I think the GameScreen
code should probably be merged into GameWorld
, and I'd like to take a lot of the GameWorld
-specific code out of the globally-scoped game loop. We'll cover that in Part 3, as well as making UX (user experience) design changes (instead of just the code design changes we've made in the first two Parts.)
Remember, you can see the full list of git check ins I've made for the code changes on the github page for this blog post and compare it to the original source code for Square Shooter.


text:
Big parts of the western United States are in the middle of a drought that is only expected to get worse this summer. Farmers in particular are having a hard time. Anna King of the Northwest News Network reports that some are selling their cattle and watching their crops fail.
ANNA KING, BYLINE: Nicole Berg's wheat is so short and sparse, she doesn't think the combine can reach it without eating rocks.
NICOLE BERG: Combines don't like dirt and rocks at all (laughter). They don't like it. They don't like to eat them (laughter). They get indigestion (laughter).
A KING: Berg is a dryland wheat farmer in the sweeping Horse Heaven Hills of southeast Washington state. She plucks out one head amid a sea of wheat.
BERG: See how the wheat head is curled like that. And then you break into it. And you might have some berries down here, but this will be empty. It's all empty. There's no wheat inside the wheat head.
A KING: The Bergs aren't the only ones suffering. The region is bone dry from near the Canadian border clear to the edge of Nevada. And the drought is spreading west over the Cascades. Jeff Marti is a drought expert for the Washington State Department of Ecology. He says despite good snowpack, it hasn't been this dry since the 1920s.
JEFF MARTI: You know, it's the story of the irrigation haves and the irrigation have-nots, meaning those folks who get their water from rivers or storage are probably going to be fine for their irrigation needs. But the dryland users and the folks that have cattle that depend on forage on the rangelands, they may be more challenged.
A KING: Looking ahead, Marti says the warming climate may mean more rain for the Northwest but also much less snowpack that melts sooner. That could stress water supplies even more. This spring, it's also been windy here, further drying out the landscape like a blow dryer. On the east end of the Columbia River Gorge, cattle rancher Gary Hess is having a hard time, too.
A KING: He recently sold 70 mother cows with calves at their sides to another operator out of Wyoming. They had many more good calves in them and he hated to see them go, but he has no grass to keep them.
GARY HESS: When you have to sell younger cows, that's a disappointment. But that's something we had to do with the kind of weather we had the last couple of years and the drought and the lack of feed, lack of water. We were just finding we had to cut back.
A KING: Hess says it's hard to lose animals and bloodlines he's worked so hard to build up. His McBride Hereford ranch is now six generations old. He figures it could take him up to a decade to build his herd back up without going into debt. Hess sits in his muddy pickup and his eyes start to well up a bit.
HESS: It's just something we had to do.
A KING: Hess and other Northwest ranchers say they don't have time to dwell on the trucked-off cattle or lost crops. They're busy applying for federal disaster aid, and they're also keeping an eye out for the coming wildfires - always a concern but expect it to be worse because of this year's terrible drought.
For NPR News, I'm Anna King outside of Alderdale, Wash.
(SOUNDBITE OF SPIRO'S "LEVEL 2 SMALL BATS") Transcript provided by NPR, Copyright NPR.


text:
NanGuang CN-160 CN 160 LED Video Camera Light DV Camcorder Photo Lighting 5400K For Canon Nikon
Quick Overview:
This 160 LED Video Light can adapt to different types of digital video camcorders and cameras. It can work as Office table lamp, industrial lamp, power cut light, or even Barbecue at your garden, etc.
Shipping Method | COST | Shipping Time |
note: all products require processing before shipment. Processing includes selecting your products, quality assurance checks and careful packaging for shipment. Average processing time: 1-2 business days. |
When will my order arrive?


text:
Shipping flat rate $5 or FREE SHIPPING on orders over $75
Regular price $30.00 Sale
or make 4 interest-free payments of $7.50 AUD fortnightly with More info
My new favourite accessory! These are gorgeous and I'm very proud of them. The fabrics are lush and soft, they're very comfortable to wear because they just sit around the head - no tightness or fiddling with it.
The elastic at the back gives it a bit of stretch to fit your head.
Wear with your hair up or down and add a pair of fab earrings to complete the look.
Pink cotton fabric with white polkadots.


text:
Fair Warning (Abridged / CD-Audio)
Email or call for price
Email or call for price
Other Books in Series
- #1: The Poet (Jack McEvoy #1) (Mass Market): $9.99
- #2: The Scarecrow (Jack McEvoy #2) (Paperback): $16.99
- #3: Fair Warning (Jack McEvoy #3) (Paperback): $16.99
The hero of The Poet and The Scarecrow is back in this thriller from #1 New York Times bestselling author Michael Connelly. Jack McEvoy, the journalist who never backs down, tracks a serial killer who has been operating completely under the radar—until now.
Veteran reporter Jack McEvoy has taken down killers before, but when a woman he had a one-night stand with is murdered in a particularly brutal way, McEvoy realizes he might be facing a criminal mind unlike any he's ever encountered.
Jack investigates—against the warnings of the police and his own editor—and makes a shocking discovery that connects the crime to other mysterious deaths across the country. Undetected by law enforcement, a vicious killer has been hunting women, using genetic data to select and stalk his targets.
Uncovering the murkiest corners of the dark web, Jack races to find and protect the last source who can lead him to his quarry. But the killer has already chosen his next target, and he's ready to strike.
Terrifying and unputdownable, Fair Warning shows once again why "Michael Connelly has earned his place in the pantheon of great crime fiction writers" (Chicago Sun-Times).
A Kirkus Best Book of 2020
About the Author
Michael Connelly is the author of thirty-three previous novels, including the #1 New York Times bestsellers, The Night Fire and Dark Sacred Night. His books, which include the Harry Bosch series, the Lincoln Lawyer series, and the Renée Ballard series, have sold more than seventy-four million copies worldwide. Connelly is a former newspaper reporter who has won numerous awards for his journalism and his novels. He is the executive producer of Bosch, starring Titus Welliver, and the creator and host of the podcast Murder Book. He spends his time in California and Florida.
Praise For…
"Connelly is in terrific form here, applying genre conventions to the real-life dangers inherent in the commercial marketing of genetics research."—Marilyn Stasio, New York Times Book Review
"[A] fast-paced thriller, written by a master of the genre."—Christina Ianzito, AARP
"There is no better news than a new book from the great Michael Connelly... Fair Warning brings back reporter Jack McEvoy, a character I always liked every bit as Harry Bosch or Mickey Haller or Renee Ballard... Connelly [is] at the very top of his game."—Mike Lupica, New York Daily News
"A truly terrifying thriller... [Jack McEvoy] has appeared in only two previous novels, but they are two of Connelly's best: The Poet and The Scarecrow. McEvoy makes it three for three with this riveting tale."—Bill Ott, Booklist (starred review)
"Intruiging... Throughout his outstanding thrillers, Michael Connelly has expertly weaved contemporary issues into solid plots... Connelly also has achieved this in his novels about journalist Jack McEvoy, who makes his third most welcome appearance in Fair Warning."—Oline H. Cogdill, South Florida Sun-Sentinel
"Score another one for the dean of America's crime writers... Fair Warning sheds light on the murky billion-dollar world of DNA testing... the subject [is] ripe for a good mystery. And Michael Connelly is just the guy to write it."—Sandra Dallas, Denver Post
"Like all of Connelly's novels, Fair Warning is a satisfying adrenalin rush."—Colette Bancroft, Tampa Bay Times
"Darkly essential reading for every genre fan who's ever considered sending a swab to a mail-order DNA testing service."—Kirkus (starred review)
"A smart, propulsive thriller... Connelly excels in making investigative reporting as enthralling as any action scene. Fair Warning shines a spotlight on the shocking lack of government oversight in the field of DNA analysis and ancestry identification... Connelly spins a skin-crawling, cutting-edge mystery about the dangerous ways the data can be mined."—Shelf Awareness


text:
a | |||
Industry News - USA |
operating and combat systems will support USS Freedom when it deploys
later this year |
recently, the U.S. Navy has focused on getting the Littoral Combat Ship
(LCS) in the water. With the Lockheed
Martin-led team's LCS Freedom variant in full production,
the Navy's attention is turning toward vessel operations to see
what the nation's newest surface combatant can do on the high
seas. When the USS Freedom deploys to Singapore later this year, the Navy will count on Lockheed Martin to help keep the nation's first LCS and future ships fit for duty and ready for action. In addition to the sea frame, Lockheed Martin has developed a number of advanced systems that serve as the Freedom variant's nerve center for operations and combat readiness. Joe North, Lockheed Martin's vice president of Littoral Warfare, discussed the various systems during a briefing on Jan. 15 at the 25th annual Surface Navy Association's National Symposium in Arlington, Va. |
Lockheed Martin Video |
Freedom-variant features: » The COMBATSS-21 Combat Management System based on Lockheed Martin's Aegis Combat System integrates the ships' radar, electro-optical infrared cameras, gun fire control system, countermeasures and short-range anti-air missiles. » The MH-60R multi-mission helicopter designed and built by Sikorsky and Lockheed Martin extends the defensive perimeter to keep the ship and crew safer. » The Remote Minehunting System being developed by Lockheed Martin will serve as the ships' primary mine-warfare package. Unlike the ships it's replacing, the LCS requires minimal manning. With a core crew of 40 or so, the LCS relies on automation. Several Lockheed Martin systems will help ensure the ships' systems operate effectively and efficiently. » Beginning with LCS 5, Intelligent Ship Manager will manage the propulsion, electric plant, auxiliaries and engineering casualty/damage control systems, allowing one sailor to monitor them all from one central console on the bridge. » Oculus-X autonomously monitors ship systems for maintenance issues, collecting near real-time data, recording lifetime information and playing back operational events. » LaserNet Fines-Online uses laser technology that enables the crew to track and measure fluids in real time and instantly analyze oil, water and fuel. To support the minimal manning, the Navy for the first time is using a contractor to perform much of the routine maintenance, repair, supply and logistical work when the ship docks. Lockheed Martin's integrated approach streamlines LCS's sustainment by coordinating maintenance, planning and engineering to save the Navy significant time and money. When USS Freedom deploys, Lockheed Martin will support it with teams in Singapore and the U.S., acting as a fast response team to do repairs and maintenance. Link to Freedom class Littoral Combat Ship datasheet |
Innovative operating and combat systems will support USS Freedom when it deploys later this year
- Posted On


text:
This course can also be taken for academic credit as ECEA 5341, part of CU Boulder's Master of Science in Electrical Engineering degree.
This is our second course in our specialization on Embedding Sensor and Motors. To get the most out of this course, you should first take our first course entitled Sensors and Sensor Circuits. Our first course gives you a tutorial on how to use the hardware and software development kit we have chosen for the lab exercises. This second course assumes that you already know how to use the kit. After taking this course, you will be able to: ● Understand how to specify the proper AC or DC motor for a machine design. ● Integrate the motor to a machine, based on analysis of motor equations for voltage, current, torque and speed. ● Implement the motor and accompanying rotary sensor into a motor control circuit in both hardware and software. ● Add a motor and motor control circuit into a microprocessor based development kit. ● Create hardware and firmware to process motor feedback data to a microprocessor for further evaluation. You will need to buy the following components to do the two course projects based on the videos in this module. Note that if you have already purchased the PSOC 5LP PROTOTYPING KIT, you do not need to buy it again. These parts may be purchased off the Digikey web site, www. Digikey.com. Or, you may obtain the specs from the site, and purchase them elsewhere. These are the part numbers for the above table, the lab on Motor Voltage and Current Measurement. You can copy and paste them into the search engine on the Digikey web site. You need one of each except for the AA batteries (N107-ND), which you would need 3. 428-3390-ND P14355-ND FQU13N10LTU-ND N107-ND 1N5393-E3/54GICT-ND RNF14FTD1K00CT-ND P0.62W-1BK-ND Additional equipment needed: • Wire - various gauges and lengths • Breadboard • Oscilloscope – suggested models are: o PICOSCOPE 2204A-D2 available on www.digikey.com or o Digilent 410-324 | OpenScope MZ available on www.newark.com Depending on your budget, you can also investigate these models: o Hantek HT6022BE20MHz - https://www.amazon.com/dp/B009H4AYII o SainSmart DSO212 - https://www.amazon.com/dp/B074QBQNB7 o PoScope Mega50 USB - https://www.robotshop.com/en/poscope-mega50-usb-mso-oscilloscope.html o ADALM2000 - https://www.digikey.com/en/products/detail/analog-devices-inc./ADALM2000/7019661


text:
Information Possibly Outdated
The information presented on this page was originally released on October 7, 2014. It may not be outdated, but please search our site for more current information. If you plan to quote or reference this information in a publication, please check with the Extension specialist or author before proceeding.
MSU's foundation seed serves suppliers, growers
MISSISSIPPI STATE -- Mississippi State University's foundation seed program, a unit of the Mississippi Agricultural and Forestry Experiment Station, has provided seed to Mississippi seed distributors and growers for 55 years.
Brad Burgess, MSU director of research support for variety testing and foundation seed, oversees the program. Major crops include sweet sorghum, soybean and rice. MSU also produces foundation sweet potato slips and some minor crops as well.
"The purpose of our seed stock program is to provide a basic and practical link between public plant breeders and seed producers around the state," Burgess said. "Mississippi is our first priority, but we try to accommodate other states and even other countries if the need is there and supply is available."
The journey of certified seed is complex. There are three classes in the seed certification system, according to Burgess.
"Foundation seed is the highest class -- then registered seed and finally, certified seed," Burgess said. "Foundation seed is the closest progeny to breeder seed available to seed distributors and growers. Registered seed comes from foundation seed, and certified seed is grown from registered seed."
To be considered for foundation seed, breeders must first submit an application. From there, factors such as the seed's purity, germination and genetic identity are evaluated by the state seed certification agency to ensure high standards are met. Once the foundation seed process begins, the state seed certification agency assesses seed quality every step of the way.
MSU's foundation sweet sorghum seed fulfills need on a national level. During the 2014 season, seed orders of four varieties -- Dale, M81-E, Top 76-6 and Theis -- were filled for producers in 27 states.
This year, MSU's Foundation Seed Stocks also received an international request.
"In the mid-1990s, a new soybean variety was released from the USDA's Soybean Breeding Unit in Stoneville. In the few years that followed its release, MSU increased foundation seed of the variety, called Vernal, which was produced by numerous seed producers locally," Burgess said. "As most varieties do, demand gradually fell off after a few years until Vernal was no longer in sufficient demand to warrant continued production."
The variety has a wide area of adaptation, suitable for climates in other Southern states and Mexico, according to Burgess.
This past spring, a Mississippi native who now produces agricultural seed in Mexico requested that MSU once again produce Vernal foundation seed so he could grow, produce and sell it in Mexico.
"In order to accommodate this request, we needed a source of viable breeder seed," Burgess said. "Fortunately, USDA's Soybean Breeding Unit had a small supply. The field production is developing well and nearing maturity."
Once the seed matures and passes certification and inspection, it can be shipped to the producer in Mexico.
Two foundation seed crops that are in high demand in the state of Mississippi are rice and sweet potatoes.
MSU produced two varieties of rice seed for the 2015 season: Rex and Mermentau.
"Both varieties have progressed well, and we expect plentiful supplies of quality seed for producers in 2015," said MSU foundation seed assistant director Randy Vaughan.
MAFES administrates the foundation sweet potato seed program at the Pontotoc Ridge-Flatwoods Branch Experiment Station. Sweet potato foundation seed are actually roots produced from virus-tested stock plants called "mother plants," which are maintained in a sterile, isolated area under ideal environmental conditions. There are two phases of MSU's virus-tested foundation sweet potato seed program. The first is the development of slips from mother plants of specific varieties.
MSU produces 80,000 to 90,000 slips in the first phase, which a certified grower then propagates in his field as the second phase. Currently, MSU uses only one certified grower to propagate sweet potato slips.
Mark Shankle, plant and soil sciences research professor at MSU, oversees the program.
"We micro-propagate the slips in the lab and grow them in the greenhouse, which is equivalent to six acres planted in the field," Shankle said. "From there, the certified grower propagates additional plants from field cuttings to supply 50 acres of generation 1 foundation seed. After passing certification inspection, the seed can be harvested and sold to producers for use in their production fields the following year."
Depending on demand, MSU typically grows three varieties of sweet potatoes: two Beauregard varieties and a new variety called Orleans. However, over the past 14 years, the number of seed sources in the program has increased from two to 32 different varieties that can be produced from mother plants maintained in isolation.
MSU Foundation Seed Stocks recently launched a new website where seed distributors and growers can learn more about the program as well as place orders for future foundation seed. Rice orders are typically received by March of each year for delivery the following year. Sweet sorghum seed orders are accepted for immediate fulfillment from Feb. 15 through June 15 each year. Visit http://mafes.msstate.edu/foundation-seed/ to learn more.


text:
Formats and Editions
More Info:
On his new album, Samurai, Lupe retreats inward to give fans one of his most personal albums in his deep catalog. �I sometimes get tagged by my fans as not doing personal records,� Lupe says, �but I always tell people there's me in there if you listen closely enough. This album is one of my more personal records to date. It's not a full biography, but my personal experiences are tied up in all of my music. A lot of the records are me. Some are from the POV of a character. and some are me. The album weaves things from my life as an artist, touching on things other artists go through.� The narrative follows a battle rapper through various moments in his career, starting with how they honed their battle rap skills, following their career through different moments.
Musically, the new album finds Lupe delighting in the simple pleasures of assembling assonant syllables into playful and poignant narratives. The 8-track album is smooth, yet cerebral, brimming with ideas, but always radiating Lupe�s pure love for the art of emceeing and committing himself as a servant of the rap game. The album was produced in full by longtime collaborator and friend, Soundtrakk (�Superstar,� �Kick, Push,� �HipHop Saved My Life�), their second time linking up on a full album after 2022�s DRILL MUSIC IN ZION, and is also the first time Lupe, Trakk, and longtime manager Charles �Chill� Patton were in the studio together since Patton�s release from prison in 2023. �It felt great to be back in the studio again as a family,� Lupe says. It�s the first time they�d worked together in the studio since Lupe�s seminal album, The Cool in 2005.
�The word �samurai� means to serve,� Lupe says on the album�s title. �My relationship to that word has always meant that you need to be at the service of other people, either in the overall community, or in this instance, the rap community at large that I�ve been a part of for years. You have some duty, some purpose to serve. The title alone is very important to me. Before rap even, martial arts was my whole life, and it still plays a huge role in my life. The album is me, but also inspired by a quote I heard from one of my favorite artists. The overall themes of the album speak to the constant fight and the battle one goes through being in the entertainment industry. Some of the things we need to defend.�


text:
Sheen tours tornado damaged state
US actor Charlie Sheen has toured an Alabama neighbourhood levelled by tornadoes and says he wants to organise a relief event for victims in the state.
After going through the decimated Alberta neighbourhood in Tuscaloosa, Sheen told The Associated Press he was working with local officials to organise a benefit. He said a date has not been set.
"I want some money, hope, faith and healing to the area," said Sheen, the former star of the sitcom Two and a Half Men.
Sheen was fired from the show in March and has been in a bitter dispute with executive producer Chuck Lorre and Warner Bros Television. Since then, he's launched a stage tour that has captured attention.
The actor, wearing a University of Alabama baseball cap, said he decided to visit after receiving an invitation via Twitter from a University of Alabama student. David Harris of Mobile had asked in a tweet April 30 if he would be willing to perform a relief show in Alabama, Sheen said.
Sheen planned to spend the day in Tuscaloosa meeting with residents and first responders. He posed for photographs with police officers and National Guard soldiers, accompanied by one of his so-called goddesses - marijuana magazine model Natalie Kenly - and former major league baseball player Todd Zeile.
Tuscaloosa Mayor Walt Maddox said he welcomed Sheen's visit, which likely would focus even more national attention on the city of about 83,000.
"I hope he's sincere when he says he'll come back," Maddox said.
One of Sheen's stops was at a destroyed Kentucky Fried Chicken restaurant. He walked through the rubble amid the pungent odour of rotting food, and left through an opening in what had been a walk-in freezer. Later, while going through the ruins of an apartment complex, he said he hoped people could find sentimental possessions.
"Little personal items mean so much in this kind of devastation," Sheen said.
Sheen posted a photo on Monday on Twitter showing the wreckage of a home with a message: "I'm in Tuscaloosa. It's beyond words. Info coming soon on how you can all help."
Get the latest news from thewest.com.au in your inbox.
Sign up for our emails


text:
Matching Purple White 9 Flying Stars |
To use Matching Flying Stars function,
select Flying Stars from the menu bar,
then click the Matching Purple White Flying Stars item from the drop down menu, or
simply click the Flying Stars Square
icon on the tool bar. There are two ways to match the Flying Stars.
Click on the hot spots in the left menu (the hot spot pointer appears) to bring you to the pointed page. |
According to the advanced theory of Purple White Flying Stars in Feng Shui, when two particular Flying Stars are together (overlapping) in the same direction, the location may become a very lucky or unlucky area to people.
Fly Star | Fly Star | Luck or Bad Luck |
White 1 | Green 4 | Wisdom Luck |
White 6 | White 8 | Better Chance to have Baby Boy |
White 1 | Green 3 | Better Chance to have Baby Boy |
Black 2 | White 8 | Money Luck |
Black 2 | White 3 | Wealth Opportunity |
Black 2 | Green 4 | Romance and Love |
White 8 | Purple 9 | Love and Marriage Luck |
Green 3 | Red 7 | Bad Luck in Money |
Black 2 | Yellow 5 | Poor Health |
White 6 | Red 7 | Bad Health |
Brown 5 | Brown 5 | Bad Luck |
Red 7 | Purple 9 | Chance to have Fire Accident |
The way to use The Matching Purple White Flying Stars is to provide
Then click OK button, the location in the house and the month for that event will list on the screen.
The Matching Purple White Flying Stars component has two separate functions. One is to check the overlapping Flying Stars between a person and time. The other function is to check the overlapping Flaying Stars between a house and time. You can only select one function each time for the calculation.
The following information will display


text:
Midway through Barack Obama's first term as president, U.S. officials grew alarmed that Israel might launch a unilateral air strike against Iran's nuclear program. Iran had snubbed Obama's outreach after the 2008 election, and rejected an October 2009 international proposal to ship most of its enriched uranium out of the country—stirring pessimism about prospects for a future breakthrough.
"Militarily, I thought we needed to prepare for a possible Israeli attack and Iranian retaliation," former Defense Secretary Robert Gates writes in his new memoir, Duty. At a January 2010 Oval Office meeting, Gates told Obama "he needed to consider the ramifications of a no-warning Israeli attack," including whether the U.S. would assist Israel and how it would respond to Iranian retaliation.
(MORE: Hillary Clinton's Unapologetically Hawkish Record Faces 2016 Test)
Around the same time, senior officials met to discuss ways the U.S. might dissuade Israeli Prime Minister from taking unilateral action. In one such meeting, Secretary of State Hillary Clinton raised a bracing question, two former Obama administration officials tell TIME: Was it possible that, instead of trying to restrain Israel, the U.S. should instead provide what one of those official described as "a tacit green light to the Israelis to take care of the problem for us"? In other words, instead of begging Israeli Prime Minister Benjamin Netanyahu to give diplomacy more time, perhaps it was worth telling him to go proceed with airstrikes.
Clinton did not actually endorse the idea. She only raised the notion "as one option to consider," according to one former official, who adds that it gained no traction inside the administration. Clinton's current press secretary, Nick Merrill, did not respond to requests for comment this week on this matter.
While the very idea of a U.S.-approved Israeli strike on Iran is dramatic, Clinton's thought experiment was actually a responsible act of bureaucratic deliberation, says Kenneth Pollack, a former White House national security aide under Bill Clinton and author of a recent book on Iran.
"Anytime something like that comes up, you need to discuss it—and in fact it's irresponsible not to," says Pollack, who adds that he personally thinks a unilateral Israeli strike should be resisted. "Sometimes you just want to look at it, and if you decide it's a bad idea, that allows you to make the case against it more effectively. So it leads to a much better policy process in which you can figure out what to do instead."
Obama continues to pursue diplomacy with Iran. And Israel continues to hold its fire, however grudgingly.
MORE: Israel Renews Warnings of Military Action After Iran Nuclear Deal


text:
- Clean Classrooms: Include a personal place for your child's belongings, organized learning centers, disinfected toys and play areas, and child-sized sinks for washing hands
- Certified Teachers in: Infant/Child and Adult CPR, and First Aid
- Glass Walls: Unlike typical day care centers or childcare providers, our classrooms feature tempered glass walls for maximum visibility and safety. This promotes an open, bright atmosphere, as well as a clean environment
- Safety Guard on Door Hinges: Our doors are padded at the hinges so that little fingers don't get pinched when doors are opened and closed between classrooms
- Regular Drills for: Tornado, fire, hurricane and school lock-down
Our Preschool Childcare Program
Providing an advanced educational foundation for a higher level of success
Available to children beginning around 3 years old.
At Kids 'R' Kids, we understand your eager preschooler is ready to go all the time. Rest assured, our program is well-equipped for this energy and constant thirst for knowledge through our accredited Preschool program. Our Kids 'R' Kids Preschool Program provides your child with the environment, nutrition, safety, and tools they need to keep their active minds growing and learning.
Our accredited program ensures that every child receives an accelerated foundation for elementary school.
What We Provide Our Preschoolers
• Developmentally-appropriate practices — Each guided activity, station and procedure is tailored to fit a growing, eager preschooler. We prepare children for elementary school and beyond by building the foundation they need to thrive. Each day, the classroom participates in activities that are customized to each child's abilities and growth
• Hands-on involvement — By using teacher-directed and self-directed activities, children are encouraged to learn through engaging, hands-on approaches that allow each child to explore their surroundings
• Decision-making and problem-solving skills — Starting at this age, children learn not only to react to their surroundings, but to anticipate, decide, and solve the problems in front of them. Our program offers them a safe, nurturing environment for them to begin building these important skills
• Character development — Emotional, behavioral, and social skills are developed through our program to help your child grow into a healthy, happy, and well-adjusted citizen
• Vocabulary — Preschoolers in our program will learn to build and grow their vocabulary in preparation for Kindergarten and beyond
• Social-emotional activities — As they are growing, preschoolers are learning how to display their emotions and interact with their peers and teachers. Our program is developed to further guide your child's social-emotional growth through positive interactions with those around them
• Literacy skills — Learning to read is an exciting time in a child's life! Your preschooler will start putting their alphabet skills to work as we learn to read together in groups and individual times
• Small group instruction — Using small group time to explore new concepts and activities increases your preschooler's chances to explore with positive guidance while learning to cooperate and work together with their peers
Key Features of Our Preschool Childcare Program
Life is an adventure when you are a preschooler. Our Learning Academy provides plenty of opportunities for your preschooler to explore and grow. The sounds of children laughing and playing are the sounds of children learning at Kids 'R' Kids.
- Electronic Security: Coded entry so only authorized visitors may enter the facility
- Hiring Process: All staff undergo extensive state-mandated background checks
- Front Desk: Our front desk is always staffed so that a watchful eye is supervising the facility, ensuring authorized entries only
- Security Cameras: Every classroom in our facility has security cameras that are monitored at the front desk. The owners and staff can easily observe classroom activities throughout each day. Families can login to a secure, password-protected website to check in on their child periodically
- Children eat all meals together using family-style seating in our kid-friendly café
- Teachers monitor all eating times
- Meals are prepared in our commercial-grade kitchen, which is kept separated from the classrooms
- Each day, our in-house chef prepares nutritious meals that exceed USDA guidelines
- All allergies are documented and kept in the front office with administrators
- Our school is a nut-free zone
Jenni & Jett
"Jett struggled with food allergies in his first day care. Now with Kids 'R' Kids, I feel confident with his care."
Daily Activities in our Preschool Childcare Program
Our programs emphasize the development of every aspect of curious preschoolers through our whole-child approach! We facilitate Brain/Cognitive, Social, Emotional, Physical and Behavioral Development, while aiding in the enhancement of communication, language and literacy skills.
Brain & Cognitive Development
At the successful conclusion of our Preschool Program, your child will:
- Understand quantity and numbers, as well as the concepts of distance, weight, dimensions, and time
- Create patterns, understand spatial relationships, shape concepts and use mathematical problem solving
- Demonstrate scientific inquiry skills
- Demonstrate knowledge related to physical science
- Demonstrate an understanding of community, culture, ethnicity and geography
- Demonstrate an awareness of community economics and how events are related
- Participate in dance, visual arts, voice and drama while exploring the use of instruments and objects to express creativity
Social & Emotional Development
With the aid of our highly skilled teachers, your child will:
- Develop self-awareness
- Engage in self-expression
- Demonstrate self-control
- Develop relationships and social skills with adults
- Develop relationships and social skills with peers
Physical Development
Through a blend of engaging activities both inside and outside of the classroom, your preschooler will:
- Practice safe, healthy habits
- Participate in activities related to nutrition
- Demonstrate an awareness of the body in space and its relationship to objects in space
- Use senses to explore the environment and process information
- Develop gross motor skills
- Develop fine motor skills
Behavioral Development
Before moving on to Kindergarten, we'll ensure that your child:
- Demonstrates initiative and self-direction
- Demonstrates interest and curiosity
- Sustains attention to a specific activity and demonstrates persistence
- Engages in a progression of individualized and imaginative play
- Demonstrates a cooperative and flexible approach to play
Communication, Language & Literacy
By the successful conclusion of our Preschool Program, your child will:
- Listen to conversations and demonstrate comprehension
- Acquire vocabulary introduced in conversations, activities, stories, and/or books
- Use non-verbal communication for a variety of purposes
- Use increasingly complex spoken language
- Demonstrate increasing knowledge of the alphabet
- Demonstrate awareness of print concepts
- Use writing for a variety of purposes
- Acquire meaning from a variety of materials read aloud
- Develop early phonological awareness
Our Exclusive Fast Track Curriculum® for Preschool
Our preschoolers are on an accelerated track to acquire literacy and cognitive skills through our standards-driven, play-based Curriculum. They are immersed in an abundance of hands-on, multisensory activities designed to advance learning. Preschoolers thrive in orderly, well-organized classrooms with schedules that allow for a balance of active and quiet activities.
All subject areas are covered in the Fast Track Curriculum® so preschoolers experience language arts, science, math, social studies, health and physical education. They participate in whole-group, teacher-directed and skills-building learning experiences. These skills are further defined during independent, child-led learning station activities while the teachers are interacting to reinforce the learning acquired during whole group activities.


text:
So what is a lambda expression? It is a block of code that can be assigned to a variable or passed as an argument to a method or passed as an argument to another lambda expression just like any other data. The code can also be invoked whenever required. The main motivation behind supporting this in java is to remove a lot of boiler plate code in using certain API that require some code from the API user, but end up using inner classes just because of java's syntax requirements. The most common such API is the java threading API where we need to be able to tell the API which code to execute in a new thread, but end up implementing Runnable.
The specification is still under development and is continuously changing. This article just gives an idea as to what to expect.
Functional interfaces: The java specification developers hardly ever want to modify the JVM specification, and this case is no exception. So they are making the specification in a way so that lambda can be implemented without any modification in the JVM. So you can compile a class easily with source version 1.8 and target version 1.5.
So the lambda code will be kept in an implementation of an anonymous class implementing an interface that has only one method. Well not exactly, the interface can have more than one method, but it must be implementable by a class that defines only one method. We will call such an interface a functional interface. The following are some examples of functional interfaces.
//This is a functional interface
public interface Test1{
public void doSomething(int x);
//Defines two methods, but toString() is already there in
//any object by virtue of being subclass of java.lang.Object
//This is a functional interface
public interface Test2{
public void doSomething(int x);
public String toString();
//The method in Test3 is override compatible with
//the method in Test1, so the interface is still
public interface Test3 extends Test1{
public void doSomething(int x);
//Not functional, the implementation must
//explicitly implement two methods.
public interface Test4 extends Test1{
public void doSomething(long x);
Lambda expressions: In java 8, the lambda expressions are just a different syntax to implement functional interfaces using anonymous classes. The syntax is indeed much simpler than that for creating anonymous classes. The syntax mainly is of this form:
argumentList -> body
The argumentList is just like java method argument list - comma separated and enclosed in parentheses, with one exception - if there is only one argument, the parentheses are optional. Also it is optional to mention the types of the arguments. In case the types are not specified, they are inferred. The body can be of two types - expression body and code block body. An expression body is just a valid java expression that returns a value. A code block body contains a code block just like a method body. The code block body has the same syntax as the method body including the mandatory pair of braces.
The following example shows how a new thread is implemented using lambda syntax.
new Thread(() -> { while(true){ System.out.println("Hello"); }}).start();
The expression syntax is shown in the following example
public long randomLong();
RandomLongs randomLongs = () -> ((long)(Math.random()*Long.MAX_VALUE));
Generics and lambda: But what if we want to implement a generic method using lambda? The specification developers have come up with a nice syntax, the type parameters are declared before the type arguments. The following shows an example -
public <T extends Cloneable> List<T> getCopies(T seed, int num);
//Inferred types for arguments also supported for generic methods
NCopies nCopies = <T extends Cloneable> (seed, num) -> {
List<T> list = new ArrayList<>();
for(int i=0; i<num; i++)
return list;
A point to note: The actual interface and method implemented by a lambda expression depends on the context in which it is used. The context can be setup by the existence of either an assignment operation or by the passing of parameter in a method invocation. Without a context, the lambda is meaningless, so its not correct to simply call a method directly on a lambda expression. For example, the following will give a compilation error -
public <T extends Cloneable> List<T> getCopies(T seed, int num);
//This code will give a compilation error,
//As the lambda is meaningless without a context
(<T extends Cloneable> (seed, num) -> {
List<T> list = new ArrayList<>();
for(int i=0; i<num; i++)
return list;
}).getCopies(new CloneableClass(), 5);
However, the following would be perfectly alright, because there is an assignment context for the lambda.
List<T> list = new ArrayList<>();
for(int i=0; i<num; i++)
return list;
nCopies.getCopies(new CloneableClass(), 5);
The stripped down lambda: Lisp's support for lambda is much more flexible than this. The whole lisp language is based on lambda. However, java has to restrict the syntax to fit into its own syntax. Besides, lisp is an interpreted language, which has the advantage of doing stuff in the runtime when all informations are available. Java being a compiled language, it has to stick to much more stringent rules for types and control-flow etc., so as to avoid surprises at runtime. Considering this, the stripped down lambda in java 8 does not look that bad.


text:
The brand new lending protocol introduces the next generation in DeFi concepts; cross-margin yield farming
NEW YORK, NY / ACCESSWIRE / October 5, 2021 / Apricot Finance has announced the public launch of its mainnet for this month. Apricot is a next generation lending protocol built on Solana that provides users with cross-margin farming and programmable protection against liquidation. It comprises three separate products, Apricot Lend, Apricot X-Farm, and Apricot Assist that combine to give users a comprehensive decentralised lending experience. The security of Apricot smart contracts will be verified by Halborn Security, an independent blockchain security firm.
Apricot Finance is a suite of three tools that each fulfill a different function as part of a brand new lending protocol. The protocol grants investors access to cross-margin yield farming while protecting themselves from downside risk. The platform is built on Solana and aims to take advantage of the low fees and fast transactions to deliver an easy-to-use and user-friendly experience.
Apricot Lend is the first tool and unsurprising, is the tool that allows users to lend and borrow. This tool provides the framework that the rest of the protocol's features are built on. Users are able to deposit specific crypto assets and earn interest on them or alternatively to borrow stablecoins using the deposited asset as collateral. Notably, the protocol is cross margin, allowing users to deposit any asset as collateral for borrowing another.
Apricot X-Farm (Cross Farm) is the second tool that makes up the service. Users are able to enter into x3 leveraged yield farming of a stablecoin pair (USDC-USDT), the first pair to be offered as part of this function. Crucially, users do not have to own any of the underlying tokens in the pool. They can deposit any crypto asset as collateral to contribute to the liquidity pool.
Essentially, Apricot users will be depositing any crypto assets as collateral to contribute to a stablecoin liquidity pool with up to 3x leverage. The process is optimised by the fact that no conversion is necessary on other platforms, streamlining the user experience. The first pairs on X-Farm will be stablecoins or pegged assets to minimize the risk of impermanent loss.
The third and final tool is Apricot Assist. This is the tool that will protect users from a large loss if the price of the underlying collateral asset falls. Assist is fully customisable allowing investors to select at what price they should sell their collateral assets, which assets exactly should be sold, and how much of the asset should be sold. Assist is fully programmable and allows users to decide exactly how much risk they are prepared to take on when contributing to liquidity pools. Users can now manage their risk even when they are absent from apricot. Assist should strongly decrease the amount of liquidations that occur on the platform.
The latest financing round has yielded $4 million in investment, demonstrating the huge belief in this project from leading blockchain investors. This support was instrumental in Apricot launching its testnet in September.
Before the launch of Apricot's mainnet this month, Halborn Security will provide a security audit report that verifies the safety of Apricot's smart contracts. This will follow with further audits within the weeks after the launch. In order to guarantee the safety of investor funds, the contract will remain closed source until after additional audits have been completed.
About Apricot Finance
Apricot Finance is a next generation protocol built on Solana that gives users access to leveraged yield farming whilst simultaneously giving them the tools to minimize their downside risk. With the imminent release of security audits from two separate blockchain security firms, Apricot is committed to ensuring the safety of all value locked in their smart contracts.
Website | Twitter | Discord | Telegram | Telegram Announcement
Media contact: [email protected]


text:
WPNSTA Yorktown - Main NEX
Established in 1946, our mission is to provide customers with quality goods and services at a savings and to support Navy quality of life programs. The retail stores and many services offered by the NEX makes it an important quality of life benefit to customers... active duty, family members, retirees, national guard, and reservists, around the world, both ashore and at sea.
NEX Stores
NEXs, found on Navy installations worldwide, offers a wide variety of products and services to authorized customers. They offer prestige brands, national mass brands, and private brands, all at significant savings. NEX offers quality, value, and savings and is committed to delivering low prices every day on the merchandise and services customers want and need. On average, customers save more than 20 percent, not including sales tax, when shopping at a NEX.
Seventy percent of our profits are contributed to MWR. The remaining 30 percent is retained by the organization to build new stores as well as fund renovations and other capital and major improvement projects. In fact, since 1946, the NEX has contributed over $2.3 billion to MWR. A listing of all NEX locations worldwide can be found here.


text:
Request a quote for
Coffee Bean
Explore over 300 durable powder coat colors and textures, thoughtfully selected for both indoor and outdoor applications. We also provide premium finishes tailored to specific needs, including options for anti-graffiti and anti-microbial environments. Our coating processes include polyester powder coats, Kynar® coatings, PPG Duranar® coatings, and Superdurable powder coating, ensuring exceptional appearance in a variety of settings.
Tell us about your project and what you have in mind. We would love to discuss the many patterns, colors, mounting options, lead-times, pricing, and more.
And, of course, you can always call us at (714) 351-3234.
Meet us in person or schedule a meeting via Zoom.
Or, visit us right now via our virtual Google 360 Tour.


text:
Ram Dodge Hemi Chrome Plated Metal License Plate Frame Holder
This Offically Licensed, Dodge Branded Product is made from Chrome plated brass metal. The quality of this license plate frame exceeds all OE standards. Not only do you get a quality officially licensed product, but you will receive peace of mind knowing that you are going to receive a branded product that is officially licensed. Officially licensed merchandise is the only way to go to style your car the way you want. The license plate frame fits all standard license plates in the USA and Canada. If you live outside the USA & Canada, please measure your plate to be certain that this frame will fit your plate. (Standard Plate Size In USA & Canada: 12" in. x 6"in.)


text:
2x WPL Metal Steering Knuckle Cups
2x WPL Metal Steering Knuckle Cups
- Free Shipping for Orders Over $50!
- All Stock in Australia & Sent from Australia!
- Easy 30 day Returns!
Compatible with the original WPL Metal Axle Housing only.
Package Includes:
- 2x Steering Knuckles
Shipping & Returns
Shipping & Returns
Shipment processing time
All orders are processed within 24 hours. Orders are not shipped or delivered on weekends or public holidays.
If we are experiencing a high volume of orders, shipments may be delayed by a few days. Please allow additional days in transit for delivery. If there will be a significant delay in shipment of your order, we will contact you via email or telephone.
Shipping rates & delivery estimates
Shipping charges for your order will be calculated and displayed at checkout.
Shipment method |
Estimated delivery time |
Standard Shipping |
3-6 Business Days |
Express Shipping |
1-3 Business Days |
Domestic Courier (For Bulky Items) |
3-6 business Days |
Delivery delays can occasionally occur due to current pandemic situation and during peak seasons.
Shipment to Australia Post own properties
We ship to P.O. boxes / Parcel Locker / Parcel Collect addresses at no additional cost for items under 1kg. If you are choosing standard shipping option and items you are ordering weight over 1kg, please provide physical address as we may not use Australia post for shipping.
Shipment confirmation & Order tracking
You will receive a Shipment Confirmation email once your order has shipped containing your tracking number(s). The tracking number will be active within 24 hours.
Refund Policy
We have a 30-days return policy due to the nature of use remote-control products, which means you have 30 days after receiving or collecting your item to request a return. RC Box Australia aims for 100% customer satisfaction with all of our products or services.
Please note that 'Hobby' grade high-performance remote-control Cars, Planes, Helicopters, Drones and Boats are not toys and must be used with care and safety in mind.
Most of the remote control products comes with age recommendation, under age recommended to play only with adult supervision (Subject to Care and Warranty Policy) .
Damages incurred by crashes, impacts and misuse are not covered by any form of warranty. In most cases replaceable spare parts can be purchased and the product can be re-used, except for products classified as 'Toys'. Please contact us via email should you require a part not listed on our website.
All warranty claims are assessed on a case by case basis as per our Warranty Terms and Conditions and complying with Australia Consumer Law.
You can always contact us for any return question at firstname.lastname@example.com or via our 'contact us' form.
Damages and issues:
Any product damaged during transit or not working on arrival must be reported to us within 7 days of delivery or from collection date for click & collect orders. A replacement product will be shipped to you promptly after RC Box received the faulty product together with your proof of purchase of the product.
This warranty does not cover if:
- Damages incurred to the product caused by misuse or abuse such as impacts, crashes or using with a defective component.
- Tampered, modified or any attempt to open or dismantle the product in any manner.
- Use of unapproved aftermarket parts or accessories on the product.
- Poor battery maintenance. (See Battery maintenance section below)
RC Box reserves the right to charge you for any repairs, services and shipping cost in respect of a product that you have provided to RC Box under warranty, if it is found that the repair of that product is not covered under this warranty.
Battery Maintenance Guide:
- Charge the battery fully before first use, after any use, before storage or use after storage.
- Disconnect the battery from product when not in use. Leaving the battery connected to the product when not in use, can cause damage to the battery due to gradual discharging.
- Do not run RC products supplied with LiPo or Li-Ion batteries until the battery power becomes very low or fully discharged. This will cause permanent damage to the battery.
- Allow for battery to cool down prior to charging again. This will help long battery life.
Change of mind returns:
We welcome returns if you have changed your mind since your purchase. All returns will be accepted as long as the product meets the following conditions. The product:
- Is returned within seven days of delivery or collection date for click & collect orders; and
- Is unused and in its original condition; and
- Is returned by registered mail with all original packaging and proof of purchase from RC Box.
- Sorry - Gift Vouchers are non-refundable.
Exceptions / non-returnable items:
Certain types of items cannot be returned, like custom products (such as special orders or personalized items). We also do not accept returns for hazardous materials, flammable liquids or gases. Please get in touch if you have questions or concerns about your specific item.
The fastest way to ensure you get what you want is to return the item you have, and once the return is accepted, make a separate purchase for the new item.
We will notify you once we've received and inspected your return, and let you know if the refund was approved or not. If approved, you'll be automatically refunded on your original payment method. Please remember it can take some time for your bank or credit card company to process and post the refund too.
To start a return, you can contact us at firstname.lastname@example.com. If your return is accepted, we'll send you instructions on how and where to send your package. Items sent back to us without first requesting a return will not be accepted.
Thank you for your valued custom and purchasing from RC Box, Australia.
Care Instructions
Care Instructions
Battery Maintenance Guide
- Charge the battery fully before first use, after any use, before storage or use after storage.
- Disconnect the battery from product when not in use. Leaving the battery connected to the product when not in use, can cause damage to the battery due to gradual discharging.
- Do not run RC products supplied with LiPo or Li-Ion batteries until the battery power becomes very low or fully discharged. This will cause permanent damage to the battery.
- Allow for battery to cool down prior to charging again. This will help long battery life.


text:
This is the documentation site for the American Economic Association's registry for randomized controlled trials.
Randomized Controlled Trials (RCTs) are widely used in various fields of economics and other social sciences. As they become more numerous, a central registry that lists which trials are ongoing, complete, or withdrawn becomes important for various reasons, including, but not limited to, serving as a source of results for meta-analysis and as a one-stop resource to find out about available survey instruments and data.
Because existing registries were not well suited to the need for social sciences, in April 2012, the AEA executive committee decided to establish such a registry for economics and other social sciences.
If you are running or have run a trial: Registration is free and you do not need to be a member of the AEA to register. We encourage you to register any new study at its outset. However, given the backlog of existing trials, we invite you to also register past studies. If your trial is registered before the start of its intervention, we also encourage you to consider preparing a submission for pre-results review at the Journal of Development Economics before beginning data collection.
If you are searching for results: Please browse the database. More results are always forthcoming!
Back to Registry


text:
Wholesale Cymbidium Dyed Red Available For Bulk Purchase And Special Orders
Cymbidium Dyed Red and all other varieties of Cymbidium Orchids are available for wholesale purchase. They are popular wedding flowers for use in bouquets and centerpieces – The individual blooms of these amazing orchids are used for corsages and boutonnieres as well. Cymbidium Orchids are generally seen as a wedding flower due to the impressive and elegant statement they make. They are also a great flower to submerge in water at the base of a vase. Varieties include shades of white, purple, yellow, pink, lavender, burgundy, red, greens and yellows. Some Cymbidiums are considered "mini" while others are considered "large" depending on the length of the stem and the size of the bloom. All varieties generally come in with the bloom open and are available year round. It is recommended processing them 2 to 3 days before use in order to allow the bloom to hydrate. Average vase life of Cymbidium are over 5-10 days. We import Cymbidium from Holland, Ecuador, Australia – and when in season, we buy from local farms in the United States. Wholesale Cymbidium Orchids are sold as individual stems and the bloom count varies depending on the grade of the flower. Common grades are 5-7 blooms, 8-10 blooms, 10-12 blooms and 12-15 blooms. Cymbidium Orchids should be kept in a cool area for storage, or left at room temperature to allow to hydrate before use. We can accommodate special orders of bulk quantity of a specific color, please give us 10 days notice – often we can accommodate last minute orders as we keep many varieties in stock.
We specialize in custom orders of Cymbidium Dyed Red for Valentine's Day, Mother's Day, School and Church sales, weddings and special events.
Please contact us for current pricing and availability on all wholesale flowers – 201-794-4747
We are the NJ and NYC area's Top Source For Wholesale Flowers and Plants


text:
Resilient Greater Christchurch Plan [PDF, 8.8 MB]
Resilient Greater Christchurch Overview [PDF, 868 KB]
Resilience is a word we have heard a lot in Greater Christchurch over the past five years. No matter what extent to which we are familiar with this word in our day-to-day lives, it is important that we collectively understand the concept of resilience.
We know that we will encounter future challenges. This is not simply about preparing our infrastructure or our built environment and it's not about bouncing back to the way things used to be. For us, resilience will be about understanding the risks and challenges we face and developing ways to adapt and co-create a new normal. The strength of our resilience lies in us, not just as individuals, but as communities and whānau.
The Resilient Greater Christchurch Plan [PDF, 8.8 MB] enables us as city and district leaders to work together to enable and empower our communities to face the future with confidence. As a group of leaders we were already working together before the earthquakes struck.
Innovative businesses are welcome and can thrive supported by a wide range of attractive facilities and opportunities.
Prosperous communities can enjoy a variety of lifestyles in good health and safety, enriched by the diversity of cultures and the beautiful environment of Greater Christchurch.
The vision has not only survived our experience; it has been enhanced. We see this resilience plan as enabling the review of the strategy to occur with a resilience lens and an ongoing commitment from each of us to visible collaborative leadership.
As we shift from recovery to regeneration, we can restate the importance of collaboration; between the city, the districts and the region, Central Government, the Canterbury District Health Board and most importantly with the many and varied communities that make up this special part of New Zealand.
In October 2013 the City of Christchurch applied to The Rockefeller Foundation to take part in their 100 Resilient Cities Centennial Challenge.
The application envisioned an internal network within New Zealand, so that not only could Christchurch learn from what it had been through, but so it could also share its experiences with the rest of the world. Our application was based on a desire to increase our social capital and bring about real change by embracing participatory planning and collaborative decision-making. Our membership would be an enduring legacy to the city and the nation.
The first phase, starting in December 2014, was a consultative scoping exercise involving a broad range of stakeholder organisations. Workshop sessions explored the shocks and stresses facing Greater Christchurch, the experiences from the Canterbury earthquakes and the priorities to improve the future resilience of Greater Christchurch communities. The resulting Preliminary Resilience Assessment, published September 2015, identified eight resilience challenges and opportunities on which to concentrate.
Phase 2 – the development of the plan – is founded on four Focus Areas identified during the Preliminary Resilience Assessment. Project teams were set up for each of the four Focus Areas, led by individuals with subject expertise from the Canterbury District Health Board, Canterbury Development Corporation, Civil Defence and Emergency Management/NZ Transport Agency (jointly) and Christchurch City Council.
The authoring of Resilient Greater Christchurch [PDF, 8.8 MB] flowed from this body of work.