text:
YMMT Presents: Redwood, Drawstring, Ian Charles Carter and Morning Tourist
Tue 28 Feb
7:45 pm
Ymmt Presents:
Redwood and Drawstrings London date of their upcoming UK tour.
Ian Charles Carter
Morning Tourist
Doors 7.30pm
RSVP to the Facebook event page here and invite your friends!
Poster by Sam Watson
Vintage Fashion Illustration!
Mon 27 Feb
7:45 pm
Drop in drawing class hosted by Paper Dress Drawing Salon
We will be drawing from a live model, starting with the basics of fashion illustration including proportion, weight and balance.
The class will focus on the fashions within a specific decade, looking at the characteristics of the styles, such as silhouette, waistline, hemline etc
We will explore a range of short and longer poses through a variety of observation techniques and rendition exercises designed to suit the era of the fashions covered in the class.
Limited tickets available £12 in advance / £15 on the door
All levels welcome – no previous experience necessary
About the tutor: Mel Rye has over 10 years of teaching experience. She is Head of Art & Design at St Charles Sixth Form College, and is also a visiting Illustration tutor at Central Saint Martins.
More info about the tutor: https://www.behance.net/
Tickets here:
Itchy Teeth, Blueprint Blue & Flying Mojito Bros LIVE SHOW
Sat 25 Feb
7:45 pm
Basement Tapes are back at Paper Dress Vintage for the latest instalment of their monthly residency with grooves to make you move!
This month features live performances from tripped out guitar popsters Itchy Teeth, 60s folk rockers Blueprint Blue and the debut live 'VJ' performance from resident DJs and country disco bandoleros Flying Mojito Bros.
As usual Basement Tapes (Sam Ra & Howlin' Walsh) will be spinning some fine FUNK, SOUL, AFROBEAT, DISCO and much more till late..
Live sets from:
Itchy Teeth
Fresh off the back of a mammoth European tour and their self titled album release in 2016, Itchy Teeth return to London for a homecoming show filled with trademark guitar pop, psych and avant garde. A real Basement Tapes favourite – expect fireworks!
Check out their latest single 'Terrible Thing' here: https://www.youtube.com/
Blueprint Blue
Intertwining raw 60s psych with folk rock, Blueprint Blue are a modern day throwback to Zuma-era Neil Young. Having recently been asked to head over to Texas to play SXSW the band are rasing funds to make this trip a reality. You can donate and check them out right here: http://
Flying Mojito Bros
The debut show from country disco bandoleros and Basement Tapes residents the FMBs is not to be missed! Live visuals tied in with sample triggers cut to some of their renowned remixes of slick late 70s AOR. We are damn excited for this so get to know their remixes before they blow you away live right here: http://www.propermag.com/
£5 suggested donation on the door
RSVP to the Facebook event page and invite your friends here: https://www.facebook.com/events/1263317083764797/
Nat & The Noise Brigade / Moonshyne Runners / Giles Likes Tea / AllegraShock
Fri 24 Feb
7:45 pm
Paper Dress Presents an evening of wonderful live music from our unique shop window stage in Hackney Central. On Friday 24 February we welcome…
Hailing from East London, Nat and the Noise Brigade make eclectic, upbeat tunes infested with brass, flutes, and whatever else they can get their hands on.
Inspired by the great vocalists from the golden age of jazz, Miss Rosie assembled The Moonshyne Runners to resurrect the spirit of swing. With a repertoire rooted in the music of the 1930s and 1940s, this sextet will bring the bounce back to your steps.
Gypsy-tinged pop with boy-girl vocals that culminates in a good time.
"Mixing the best of the American songbook with clever and original self-penned numbers, Allegra brings the startling beauty of the harp and the human passion of the folk tradition to a generation bored of the predictable.." Tom GK
We're running this event on a 'Pay What You Want' / Donations basis on the door – If you want to read more about why we're doing that then have a quick read here: http://
Suggested donation £5
RSVP to the Facebook event page here and invite your friends!
Keep live music alive!
PD x
Exciting News Part One!
Fri 24 Feb
11:36 am
We've been getting our hands dirty for the past few weeks and are delighted to unveil our newly improved & expanded upstairs event space! Look how pretty she is!
We're going to be celebrating that this weekend with our biggest Fill a Bag Vintage Sale ever on Saturday and 2 rocking parties on Friday & Saturday till 2am – come in and say hello and have a look for yourselves.
PD x


text: If the warm weather's not enough, there's another danger for those venturing onto the frozen waters of Little Bay de Noc. The Coast Guard says icebreaking operations start Friday on the bay. The area being broken up runs from Escanaba south to the Rock Island passage. The Coast Guard says ice fisherman should remove their shacks from the bay and snowmobilers and A-T-V riders need to avoid shipping channels as the operation continues through Sunday.

subset: commoncrawl


text:
The Philadelphia Eagles acquisition of former Houston Texan middle linebacker, DeMeco Ryans, was supposed to be the answer for the team's middle defensive woes. The Eagles' front office, coaches and fans believed Ryans would be the middle linebacker the team was lacking for the last five years. Sometimes, a marquee name may be just a marquee name and not the player everyone expected. Is DeMeco Ryans that guy?
During his tenure, Andy Reid has never put a premium on the linebacker position. This ideology seemed strange because many other NFL teams consider the middle linebacker position extremely important. In fact, the middle linebacker is most often considered the 'Quarterback' of the defense, and in most cases the definitive leader.
In DeMeco Ryans, the Eagles added a former 2006 defensive rookie of the year and a two-time pro-bowler. Ryans was drafted 33rd overall by the Texans out of the University of Alabama. In his rookie season, Ryans started all sixteen games, accumulating 155 tackles with 3.5 sacks along the way. From 2006-2009, DeMeco Ryans averaged 129.5 tackles per season.
The Eagles have not had that kind of production out of the middle linebacking position under the Andy Reid regime. Former Eagles middle linebacker, Jeremiah Trotter, peaked out at 119 tackles in his heyday.
In 2010, Ryans ruptured his Achilles tendon six games into the season. Ryans was able to quickly bounce back to start the 2011 season. An Achilles injury typically takes an entire year to fully heal, however, DeMeco played in all 16 games for the Texans last season. His production was considerably down (64 tackles), however, Ryans leadership was admired by the Texans front office, coaches and players.
In fact, many Texan players consider Ryans the heart and soul of the team. In Houston, Ryans departure was met with great surprise and lament. Eagles fans can relate when former safety, Brian Dawkins, left the team.
The Eagles felt that with a year removed from the injury, DeMeco Ryans could be forceful player. During this preseason, Ryans has shown little impact. In fact, some insiders like 97.5 The Fanatic's Brian Baldinger, question if DeMeco is the same player he was. On his afternoon radio show (12pm-2pm weekdays), Baldinger has repeatedly stated that he expects the Eagles to replace Ryans on third down with linebacker Jamar Chaney. Baldinger's concerns are with DeMeco's sideline to sideline explosion coming off of major knee surgery and his ability to shed blocks in the running game.
The 2012 regular season is just around the corner. The question will be if the Eagles have gotten a pro-bowl caliber player or just a pro-bowl caliber name.
contact: firstname.lastname@example.com


text:
Weather Grabber is a great, free software only available for Windows, that is part of the category Home & hobby software with subcategory Meteorology.
More about Weather Grabber
Weather Grabber is a not that heavy software that will not require as much storage space than the average program in the section Home & hobby software. It's a program often downloaded in United States, India, and Saudi Arabia.
The current version of the software is 1.0.3b and the latest update happened on 10/21/2005. It's available for users with the operating system Windows 98 and prior versions, and you can download it only in English.
Since we added this program to our catalog in 2005, it has obtained 36,561 downloads, and last week it had 14 installations.


text:
Can you provide a thesis statement for dyslexic children in Reading?
- print Print
- list Cite
Your main question is about a thesis statement which is really an essay question. Thesis statements are the sentence or sentences in your introduction paragraph(s) which define your essay and let the reader know your focus and what you plan to prove. Since I don't know what you plan to prove, this answer will have to be generic. Think about what your own interests are in this topic. Do you want to prove that dyslexic children can still learn to read at a certain pace with help? Are you looking at whether dyslexia is a trait you are born with and which gene controls its appearance? Are you trying to prove which method of teaching reading helps dyslexic children the most? Choose your own idea, and then clearly state what you are trying to prove with at least three ideas to discuss and prove your statement. For example,"Many theories exist about which method of teaching reading helps dyslexic children the most." I believe the __________ method is the most effective because it is the simplest, dyslexic children grasp the ideas quickly, and teachers like this method as it requires no tutors to absorb the information." I hope this helps you figure out what your own thesis statement should be and what you are trying to prove. See the enotes link to the essay lab for further help if needed.


text:
With only one week left before the release of Super Mario Odyssey I have been watching every video I can of the gameplay and it has left me severly jonesing for the platforming challenges that Mario games can provide. The in-store demos of Mario Odyssey are great but I have spent over 3 hours on the demo and it was starting to feel like Groundhog Day since you have to restart after 10 minutes from the beginning of Tostarena. The other day I decided to go back and replay Mario Galaxy 2 to get my fix and I have not been disappointed. There is an incredible amount of variety and creativity that is packed into Super Mario Galaxy 2. Every level feels so unique and challenging in a good way. Yesterday, in co-op mode my daughter and I beat a level where we had to guide a Chain Chomp head across some train tracks while being chased by a collection of Cosmic Mario Clones who repeat your every move until they catch up to you. My daughter stopped the Chain Chomp at just the right time so I could cause platforms to rise and fall at just the right time so the Chain Chomp wouldn't hit a wall and disintegrate so he could make it to his final destination where we were rewarded with a star. If you somehow missed Mario Galaxy 2 and have a Wii or Wii U do yourself a favor and pick it up. It's a masterpiece that has received a score of 97 on Metacritic.
My adventures with Python, functional programming, Korean, Test Driven Development and more
Mario Galaxy 2 is a great game to play while waiting for Mario Odyssey
Over 1 billion tricks played - Information Set Monte Carlo Tree Search Euchre simulation database
Over Memorial Day weekend I took my toy Euchre AI that plays using Information Set Monte Carlo Tree Search and ran it on a VPS with 20 CPUs and recorded the first level of child nodes (which presumably contained all the best moves). There are 42,504 (24 choose 5) Euchre hands. To cut down on computations required I actually skipped hands that had the same set of "outside" cards the second time they were encountered and filled in the details from the previous run that had the same outside cards (with the suits swapped). This reduced the possible number of hands from 42,504 to 22,398. I kept track of each unique hand based on trump (which for the simulations I always kept as hearts) and diamonds (because the distribution of cards in the suit with the same color as trump is different because the jack of the same color becomes the left bower). But for these outside hands I assumed the results would be the same. For example if you have an outside ace and 10 in one suit and and outside jack and queen in the other suit your chances of winning are the same either way.
Monte Carlo Tree Search is a very simple algorithm. In order to use it you need to implement the game rules including a method that returns legal plays that can be made given a game state. MCTS searches the game tree depth-first which means it plays games over and over again to completion from the state it started with. Each time it visits a node where not all the moves have been tried it randomly picks a move it has not yet tried. (This step can be made smarter if you add some heuristics and/or deep learning to prune out suboptimal moves.) If all the moves have been tried it uses an equation to choose which play it should try next. This equation weighs how often it should exploit plays that have led to wins and how often it should explore other moves that appeared to be less optimal but might only have appeared that way.
In order to better understand this equation, called UCT (Upper Confidence Bound 1 applied to Trees), I simulated a game with moves that had a fixed win rate and then graphed the results. The game I simulated is very simple - it has 3 moves. The orange move wins 75% of the time, red 50% and blue 25%. The visits graph is straightforward. UTC exploits the orange (75% win rate) move more often than the red (50% win rate) move and it exploits the blue (25% win rate) move the least:
Here is the graph of the UCT values for that same simulation. You can see how it is chaotic at first but then as it figures out that the orange move has a high win rate it visits it more than the others but still checks in with them occasionally.
Once its allotted number of runs is done MCTS returns the most visited node as the move to make.
Since Euchre is a game with hidden information I used Information Set Monte Carlo Tree Search which is just a little more complicated than vanilla MCTS. Since you can't be sure which cards your opponents will have for each simulation you randomly distribute cards based on the possible hands a given player could have based on their past play history. So, for example, if a player trumped on spades during the hand their hand must not contain spades (since no cheating is allowed in the simulation).
Here is an example graph from a sample run (with just 1,000 plays) of the Euchre simulation:
The width of each node represents the number of times it was visited. So for this hand the jack of hearts was the most chosen card and the simulation would choose to play this card first. A green bar in the final row at the top indicates that the blue team (the computer's team) won and a red bar indicates that they lost. This is a strong hand so it wins a lot.
It took about 200 CPU hours (20 CPUs times 10 hours) to complete the simulation for all possible hands though about half way through I realized I had an issue where multiple workers might be working on the same hand so I started writing a flag to to the database before workers took their randomly selected hand. It would have been much better to do this with a queuing system. I love queues so I'm not sure why I did it the way I did - just wanted to keep things simple I guess.
Some random pictures of what was happening on the machine and some random numbers:
|22,398 de-duplicated hands
|(out of 42,504 total hands)
|223,980,000 total simulations
|(10,000 per hand)
|1,119,900,000 total tricks
|(5 per simulation)
|720,000 CPU seconds
|(10 hours)
|1555 tricks per second
|311 hands per second
|15.5 hands per second per core
I got this notice right after I started the simulation (well before 2 hours had passed):
Your node has exceeded the notification threshold (90) for CPU Usage by averaging 1597.0% for the last 2 hours.
To be honest 311 hands per second across 20 cores is pretty pathetic (or my math could be totally wrong). Either way I probably could have made it much more efficient if I put some effort into profiling and optimizing before running this experiment. Catching the potential duplicate work issue faster would have also probably decreased the overall time.
To sanity check the database I looked through a bunch of the top search results for card leading strategies in Euchre. A lot of this strategy deals with situations that this simulation wasn't aware of, like whether or not your partner called up trump. It just starts in a situation where trump is known and everyone has 5 cards to play and it has the lead. One article in particular had some great advice that seems to line up with the database:
Generally speaking, it's worth leading the right bower here if you have it. Yes, you may theoretically be stepping on your partner's left bower, but you can't know for sure, and if you are long in trump then it's a good idea to guarantee yourself this trick, as well as more remaining trump than anyone else at the table.
This is correct! When we query the database we see that out of all hands that had the right bower we see that it is the number one recommended card to play in 3552 total hands with the next highest being the ace of clubs which is the recommended lead for 852 hands.
Lead with a singleton off-suit ace, if you have one. A singleton ace is a strong lead for two reasons. First of all, if no other cards of that suit are in your hand, there is a higher probability that they are in your opponents' hands, preventing them from trumping your ace. Your best chance for an ace to make it around the table and win a trick is on the opening lead.
Pay special attention to the "next" suit, the same-color suit as trump. Since the left bower switches suits, this suit only has five cards, and thus even if you hold only an ace and one other card in that suit, leading the ace will often be an invitation for your opponents to trump you.
In this case, save your ace for later and hope it can win a trick once trump is all drawn out.
This website is 2/2. This is totally backed up by the simulation. Here is a hand with a singleton ace.
So I paid about 10 dollars to run a 20 core VPS for 10 hours to be just a little bit more confident that what we already knew about Euchre was correct. Ah well - it was fun nonetheless. Maybe someone else can find more interesting information in the database. It's available on GitHub. And you can query it on euchredb.bravender.net.
React Native Chess Puzzle Game Work in Progress
React Native is pretty amazing. I started getting excited about frontend development again when React came out and now that you can use the same concepts to create native mobile interfaces. Here is a video from a puzzle game I'm working on:
A Basic Statistical Analysis of Castles of Burgundy Games on Yucata
Sooyeon and I have been playing the Castles of Burgundy (CoB) a lot recently. We play it in real life and also on online at Yucata. Sooyeon often beats me so I wanted to figure out what I was doing wrong by looking at some of the better players on Yucata and analyzing their games.
I'm not going to spell out how the game works here. If you are unfamiliar with the game I would recommend checking out the rule book and maybe even some BoardGameGeek reviews of the game.
The data I used consists of 1,742 games from the top 20 rated players on Yucata.de.
There has been a lot of discussion about the power of each of the player boards and an analysis of board usage on boite-a-jeux. Board 8 was found to be so overpowered that Yucata doesn't allow it anymore. It was only used in 19 games in the data set. I'll start my analysis with the boards that have been used in the data set I have.
Overall board usage
Boards 5, 1 and 6 are the most popular among the top 20 players on Yucata.
Board win rate
The board with the highest win rate is the notorious banned board 8 followed by 5 and then 6. (Sooyeon's favorite board is 7 by the way.)
Points possible from regions per board
Each board has its own set of region sizes. These are the maximum theoretical bonus points you could get just by filling each region of a board (I'm not sure if it's possible to fill in every region in a game against a mildly competent opponent).
Winner points by board
Runner-up points by board
Turn order in COB can change each round depending on the position of ships which players can advance. Going first lets you take tiles you want or your opponent needs before other players.
Overall first turns
Winners take more first turns than runners up on average.
First turns at the start of a phase
Board 6 has all blue spaces connected which might explain why players using it are able to go first so often (you can always play a boat if you get one whereas on the other boards you might need to expand before you can play a boat).
Some tiles in CoB (Castles, Carpenter's Workshops, City Halls and Churches) give you the ability to take extra actions. You can also take an extra purchase action once per turn. The maximum number of actions seen was 7 but it is extremely rare (it only happened 6 times in the 114,074 turns that were made).
Occurrences of action count
7-action turn example
- play City Hall
- [bonus] play Church
- [bonus] take Castle
- [bonus] play Church
- purchase Carpenter's Workshop
- play Castle
- [bonus] play Carpenter's Workshop
- [bonus] take Carpenter's Workshop
- [bonus] play Carpenter's Workshop
Actions per turn winners vs. runners up
Winners take 1.43342472817 more actions than the runner-up in a game. It doesn't look like there is a significant action advantage for any particular board.
Average tiles played winners vs runners up
Winners play 0.426907452706 more tiles than runners up on average.
Placed tiles distribution
The most tiles that were seen played was 32 (out of 37 spaces).
Tiles played breakdown
Note that the tile code in Yucata is different than the number on the tiles themselves.
Knowledge tiles
2-player knowledge tiles played by winner - times played by runner up
3-player knowledge tiles played by winner - times played by runner up
4-player knowledge tiles played by winner - times played by runner up
Other tiles
2-player tiles played by winner - times played by runner up
3-player tiles played by winner - times played by runner up
4-player tiles played by winner - times played by runner up
Unfortunately it turned out to be really difficult to find out how many points came from each action since points are recorded per turn instead of per action and points from knowledge tiles are earned the turn when the effects of the knowledge tile take place and are not recorded separately in the game data. I believe this is all happening on the server so calculating how many points were earned by each action would require essentially reimplementing the game (but it would be awesome data).
Simple Zero Downtime Blue Green Deployments
Having worked on six e-commerce websites (half of which make millions of dollars in revenue every year) I can safely say that downtime is a sure fire way to upset the business side of any company. Time, after all, is money. I've worked with teams that have tried minimizing downtime incurred by releases in many different ways. Here are some of the extremes:
On one end of the spectrum you can avoid downtime during deployments by only deploying during maintenance windows. The downside here is pretty obvious - what if the release introduces a bug and you don't find out about it until during a peak traffic period? I've seen people throw their hands in the air and say "I guess our customers can't use functionality X and will get that error until we can deploy tomorrow morning" in shops where this was the way deployments were done. I've also had a front row seat when a site I was working on was brought down for an emergency deployment and we were inundated with customer complaints.
The other side of the spectrum I've seen tried is blue/green phoenix deployments - rebuilding each and every VM with the same software but a new version of the application. After testing is done on the new VMs you can cut over either a hardware switch or software like HAProxy so it points to the new version. Needless to say using this method takes a very long time if all you want to do is deploy a one line fix. If you aren't familiar with blue/green deployments be sure to check out Martin Fowler's article about them.
There is a Goldilocks solution to this problem which won't take down a site and won't take as long as a full blue/green phoenix deployment. That said, as with all technical solutions, it isn't without its own drawbacks and might not be right for all deployments.
Here is the ridiculously simple Flask application I'll be deploying as an example:
import os, time
from flask import Flask
app = Flask(__name__)
def hello():
return "Hello 0-downtime %s World!" % os.environ.get('BLUEGREEN', 'bland')
Here is the fabfile we will use:
import os
import sys
from StringIO import StringIO
from fabric.api import task, local, run
from fabric.operations import put
from fabric.state import env
from gitric.api import ( # noqa
git_seed, git_reset, allow_dirty, force_push,
init_bluegreen, swap_bluegreen
def prod():
env.user = 'test-deployer'
env.bluegreen_root = '/home/test-deployer/bluegreenmachine/'
env.bluegreen_ports = {'blue': '8888',
'green': '8889'}
def deploy(commit=None):
if not commit:
commit = local('git rev-parse HEAD', capture=True)
env.repo_path = os.path.join(env.next_path, 'repo')
git_seed(env.repo_path, commit)
git_reset(env.repo_path, commit)
run('kill $(cat %(pidfile)s) || true' % env)
run('virtualenv %(virtualenv_path)s' % env)
run('source %(virtualenv_path)s/bin/activate && '
'pip install -r %(repo_path)s/bluegreen-example/requirements.txt'
% env)
put(StringIO('proxy_pass http://127.0.0.1:%(bluegreen_port)s/;' % env),
run('cd %(repo_path)s/bluegreen-example && PYTHONPATH=. '
'BLUEGREEN=%(color)s %(virtualenv_path)s/bin/gunicorn -D '
'-b 0.0.0.0:%(bluegreen_port)s -p %(pidfile)s app:app'
% env)
def cutover():
run('sudo /etc/init.d/nginx reload')
The updates in deploy should be idempotent (that is to say that you can run deploy multiple times and the result should be the same each time (except for the pids of the workers that are started)). One tricky bit here when you are harnessing git for your deployments is that you want to clean up your remote working copy. I didn't do this in the example but you can use git clean to make sure only the things in the repository end up in the working copy. I did this with Python but you can substitute any language that doesn't require a binary build step and has a way of installing isolated packages. I guess it could be done with Ruby and RVM. I also have a nodejs example in the gitric repository.
The directory structure that gets built out looks like this:
├── blue
│ ├── env
│ ├── etc
│ └── repo
├── green
│ ├── env
│ ├── etc
│ └── repo
├── live -> /home/test-deployer/bluegreenmachine/green
└── next -> /home/test-deployer/bluegreenmachine/blue
To do the initial build-out all you need is an automator user on your remote server and an nginx host entry set up something like this:
server {
listen 80;
server_name server.name.here;
location / {
include /home/test-deployer/bluegreenmachine/live/etc/nginx.conf;
server {
listen 80;
server_name next.server.name.here;
location / {
include /home/test-deployer/bluegreenmachine/next/etc/nginx.conf;
Then you can run
fab prod deploy
fab prod cutover
These steps are intentionally separated so you can check the next environment before cutting over to the new release.
I cut over to a new release while running ab and continuously hitting the server with curl to see what the server was returning:
% ab -c 100 -n 5000 http://my.server.here/
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking my.server.here (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests
Server Software: nginx/1.4.1
Server Hostname: my.server.here
Server Port: 80
Document Path: /
Document Length: 28 bytes
Concurrency Level: 100
Time taken for tests: 33.180 seconds
Complete requests: 5000
Failed requests: 2576
(Connect: 0, Receive: 0, Length: 2576, Exceptions: 0)
Total transferred: 922576 bytes
HTML transferred: 142576 bytes
Requests per second: 150.69 [#/sec] (mean)
Time per request: 663.607 [ms] (mean)
Time per request: 6.636 [ms] (mean, across all concurrent requests)
Transfer rate: 27.15 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 164 326 87.5 321 1393
Processing: 161 308 188.7 284 4045
Waiting: 161 307 186.5 284 4045
Total: 338 635 216.9 646 4409
Percentage of the requests served within a certain time (ms)
50% 646
66% 675
75% 689
80% 699
90% 723
95% 758
98% 789
99% 899
100% 4409 (longest request)
My server is the tiniest VM Linode offers and I'm on the other side of the Earth from it so I'm not really concerned about the performance. I am checking that all the incoming requests were served while a release was deployed without any downtime. You can see that ab counted 2576 failing length requests - those aren't actually failures - ab counts different content from the initial response it receives as a failure and halfway through the load test I cut over to a new release:
% for x in $(seq 100); do curl -s -S http://my.server.here/ && echo; done
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime blue World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
Hello 0-downtime green World!
The special sauce is leveraging the reload functionality that most webservers (Apache, nginx) offer. Existing workers are told that they should not handle new requests and the new workers that are spawned proxy all traffic to the new version. Here is a trace from my server right after a cutover:
nginx 13636 root 8u IPv4 11283302 0t0 TCP *:80 (LISTEN)
nginx 29426 www-data 8u IPv4 11283302 0t0 TCP *:80 (LISTEN)
nginx 29427 www-data 8u IPv4 11283302 0t0 TCP *:80 (LISTEN)
nginx 29428 www-data 8u IPv4 11283302 0t0 TCP *:80 (LISTEN)
nginx 29429 www-data 8u IPv4 11283302 0t0 TCP *:80 (LISTEN)
nginx 29381 www-data 14u IPv4 16961706 0t0 TCP SERVER_IP:80->PING_IP:46083 (ESTABLISHED)
nginx 29381 www-data 15u IPv4 16961707 0t0 TCP localhost:48628->localhost:8889 (ESTABLISHED)
nginx 29429 www-data 5u IPv4 16961753 0t0 TCP SERVER_IP:80->PING_IP:46084 (ESTABLISHED)
nginx 29429 www-data 6u IPv4 16961754 0t0 TCP localhost:33233->localhost:8888 (ESTABLISHED)
gunicorn 29223 test-deployer 5u IPv4 16953570 0t0 TCP *:8888 (LISTEN)
gunicorn 29340 test-deployer 5u IPv4 16953579 0t0 TCP *:8889 (LISTEN)
gunicorn 29345 test-deployer 5u IPv4 16953579 0t0 TCP *:8889 (LISTEN)
gunicorn 29345 test-deployer 9u IPv4 16962807 0t0 TCP localhost:8889->localhost:48628 (ESTABLISHED)
gunicorn 29391 test-deployer 5u IPv4 16953570 0t0 TCP *:8888 (LISTEN)
gunicorn 29391 test-deployer 9u IPv4 16960496 0t0 TCP localhost:8888->localhost:33233 (ESTABLISHED)
root 13636 0.0 0.3 12920 3208 ? Ss Jun16 0:00 nginx: master process /usr/sbin/nginx
www-data 29381 0.0 0.2 12904 2104 ? S 14:51 0:00 nginx: worker process is shutting down
www-data 29426 0.0 0.1 12920 1888 ? S 14:52 0:00 nginx: worker process
www-data 29427 0.0 0.1 12920 1888 ? S 14:52 0:00 nginx: worker process
www-data 29428 0.0 0.1 12920 1888 ? S 14:52 0:00 nginx: worker process
www-data 29429 0.0 0.2 12920 2380 ? S 14:52 0:00 nginx: worker process
nginx PID 29381 (labeled "nginx: worker process is shutting down") is handling an old request to the previous release and will shut down once it is finished. A request that came in after the release is going to port 8888 (the new release). All future requests will go to the new nginx workers which forward traffic to port 8888. These are the details of how nginx handles graceful reloads but a complete understanding this isn't necessary to harness the power of this deployment method.
Using git to deploy code for languages which don't require builds like Python and Ruby shortens the time it takes to build packages and deploy. I wrote about this a few years ago. Coupling that with blue/green deployment techniques on the same server has led to a very pleasant deployment experience for me and my team for the past year and a half. Everyone takes turns deploying and as our fleet of servers grows our deployment process won't get any slower now that we use the @parallel decorator during the update phase.
It takes a tiny extra amount of planning to write code and migrations that can be deployed without bringing down a live service but with experimentation and practice you will find that it is not that much work. This video from the Disqus team is an amazing resource. You should prefix your memcache keys with a short git ref and warm up your cache before cutting over. With Postgres you can usually add new tables and even add new NULL-default columns without problems but you'll definitely want to test your migrations on a staging environment which is simulating locked rows (if you use SELECT FOR UPDATE to ensure consistency). If you use a background worker like Celery tasks might linger from previous versions so you need to handle cases where the old API is called with a default:
def process_order(order_id, resent=None):
If there is a scheduled process_order with the old function signature in the queue it could fail unless you give the new parameters you add default values. These are just a few of the caveats I could think of. Always test deployments and rolling back on staging when in doubt until you get the hang of it.
There are numerous reasons why you would want to deploy updates to an API or website without downtime using the blue/green deployment method:
- Customer satisfaction - living and working on the other side of the world (Korea) I find it very frustrating that services I depend on to get my work done think that "maintenance hours" are in the middle of my day just because the sun has set on their side of the world.
- You can roll back from bad releases without re-deploying - the old release is still there so you can cut back to it in case you find problems in the new release.
- Ability to fix unforeseen problems quickly - should you determine that there is a problem which isn't large enough to warrant cutting back to the old release you can still deploy a fix even while there are thousands or millions of customers using your service without interrupting them.
- You are one step closer to continuous deployment.
As I said above there are countless techniques that can be used to deploy software and they all have their trade-offs. OS-level packages can't be upgraded in isolation like virtualenv and the application can. Critics might say that this only works for language-level packages and not OS-level packages or even OS upgrades. I fully understand this point and I guess it's just a trade-off. The future looks very bright when it comes to techniques that provide even further isolation and faster deployments like docker and other similar projects. I look forward to using tools like this to make it so there is even less downtime on the projects I work on in the future. In the meantime this porridge is just right for the type of projects I'm working on.
June 2012 update
Sooyeon and I have been very busy for the past 7 months with our brand new baby daughter Haereen. When I get a few spare seconds I still work on my personal projects but it's been pretty slow going as of late. I'm definitely not complaining since Haereen is totally worth it. Anyway, here is a summary of some of the things I've worked on in my free time.
dongsa.net 2.0 preview
dongsa.net is a Korean verb conjugation algorithm that explains the contractions and exceptional rules for many tenses and levels of politeness. The current version is written in Python but there was a whole rewrite of the engine into JavaScript over two years ago to make it easier to port to Android and iOS. I've had the rewrite sitting in a branch for around a year now but it's only been a month or so since I pushed up preview.dongsa.net.
- English definitions and search
- http://preview.dongsa.net/?search=fly
- http://preview.dongsa.net/?search=하다
- This was made possible by Kyubyong Park graciously allowing me to use his database of English definitions of Korean verbs.
- Stemmer - the new stemmer reverses the conjugation process. You can see how it works here. Basically, there is list of flattened out Korean verbs (so "춥다" is stored as "ㅊㅜㅂㄷㅏ". It goes through the flattened version of the conjugated form (say "추웠어요" -> "ㅊㅜㅇㅜㅓㅆㅇㅓㅇㅛ") that is passed in and strips one bit off at a time and looks for all verbs that match it. It requires that the verb is in the database and doesn't yet work for some forms of irregulars (ㄹ dropping verbs) but it's a start.
- I've had these changes sitting in a branch for almost a year now. There are only a few items left on the todo list before I can switch dongsa.net over to this new version. The biggest todo item is to make it look better. I am clearly not a designer. If that's your thing and you want to help out I would greatly appreciate it.
qc a QuickCheck implementation in Python
- Added support (in the python-3 branch) for checking annotations (a new Python 3 feature):
>>> def simple_adder(a : int, b : int) -> int:
... return a + b
>>> from qc import check_annotations
>>> check_annotations(simple_adder)
>>> def lying_adder(a : int, b : int) -> int:
... return 'result: %d' % (a + b,)
>>> check_annotations(lying_adder)
Traceback (most recent call last):
File "
", line 1, in
File "qc/__init__.py", line 137, in check_annotations
f.__name__, output, response_type, test_args))
AssertionError: Was expecting lying_adder to return <class 'int'> but got <class 'str'> with these arguments: {'a': 0, 'b': 0}
- Added support for Postgres.
git-based fabric deploys are awesome
When I was pointed to Python Deployment Anti-Patterns by a colleague I was a little shocked to see that the way we had been deploying applications with fabric and git over the past two years (over 1500 deployments) with no problems was being called an Anti-Pattern. There are definitely many ways to deploy software applications and they all have their pros and cons. Our process is by no means perfect but the way that we use git within fabric is definitely one of the best parts of our deployment process.
In his follow-up article Hynek made the case that deploying with native packages is better. On my team we actually started out deploying packages but since developers deploy we got sick of waiting for the packages to build and upload so we switched to git-based deploys. Packages are, of course, a valid way to deploy software, but I think the criticisms leveled against fabric git-based deploys might have been against doing these deploys in a specific way. I'm writing this article to show you how we have been successful using git-based fabric deployments.
I agree with many of his points:
- "Don't use ancient system Python versions"
- "Use virtual environments"
- "Look into alternatives to Apache + mod_wsgi setups"
- "Don't run your daemons in a tmux/screen"
Upstart is my personal favorite because it is very stable and the configuration is succinct. Here's an example of a daemon that I've had running on one of my personal projects for several years with no issues:
start on runlevel [12345]
stop on runlevel [0]
exec sudo -u www-data PATH=path/to/app VIRTUAL_ENV=path/to/virtual_env path/to/python_server_script
Why anyone would want to write a billion line init script now that upstart exists is beyond me. Perhaps they don't know about upstart. It could also be that they are stuck on CentOS or RedHat. My heart goes out to you if that's the case. I know how that feels.
Here are some of the points I disagree with:
- Configuration is not part of the application
I've seen others make this same claim and on the face of it it makes sense up to a point. On my team developers deploy so we keep templates of configurations and the differences are kept in context variables that are passed into the templates. If there is sensitive information we keep it outside of version control. Really, if you want to test changes from dev through staging and onto production why not keep the configuration as similar as possible? On projects where teams are creating very generic apps that are being deployed with many different configurations I understand the need for this but most web application developers are deploying to a very specific target (production). It makes sense to keep your development settings as close to that target as possible. For example, if staging and production have the ENCRYPT_STUFF setting set to TRUE then your development environment should have it set too. But they should all have different keys and the production setting should be kept out of version control.
- What's wrong with Fabric+git-pull?
It doesn't scale. As soon as you have more than a single deployment target, it quickly becomes a hassle to pull changes, check dependencies and restart the daemon on every single server. A new version of Django is out? Great, fetch it on every single server. A new version of psycopg2? Awesome, compile it on each of n servers.
Fabric will roll through all commands on all servers in a predictable manner one after the other. That way they can be taken out of the load balanced pool before the service is HUP'd and put them back in after it comes back. If this is done automatically with unattended package upgrades (as proposed later in the article) isn't there the possibility that all your servers become unavailable at the same time?
You should always run pip and if there is nothing to upgrade it will simply do nothing. There's no need to download all of the packages - you can have them seeded on each server before starting the upgrade.
It's hard to integrate with Puppet/Chef. It's easy to tell Puppet "on server X, keep package foo-bar up-to-date or keep it at a special version!" That's a one-liner. Try that while baby sitting git and pip.
I can't speak to integrating fabric with Puppet and Chef but it's basically a one-liner to update a remote target with fabric:
cd path/to/git/repo && git reset --hard [deployment-sha1] && pip install -r path/to/requirements.txt
It can leave your app in an inconsistent state. Sometimes git pull fails halfway through because of network problems, or pip times out while installing dependencies because PyPI went away (I heard that happens occasionally cough). Your app at this point is – put simply – broken.
A git pull will not leave your app in an inconsistent state. If the network fails it won't change your working copy and fabric will stop the script because git will return an error. That said I don't think you should use git pull anyway since it is one more moving part that can fail during deployment and it requires that your private repository be open to the world. Since git is distributed a developer can push their repo's immutable store to the target using git push during deployment. Running git reset --hard [deployment-sha1] after the push is finished will update the working copy. Since there is a repo on the other end you'll only be sending the new objects since the last push to the target. This is why git-based deploys beat packages speed-wise. Most of our code deploys take a fraction of a second.
Even a private PyPI mirror can fail. Why not upload the packages to the target and run pip like this?
pip install --no-index --find-links file:///[local-path-to-packages] -r requirements.txt
You could even store your packages in a git submodule and sync your submodules at the same time. (We sync submodules as well, it's only a little extra work.)
Weird race conditions can happen. Imagine you're pulling from git and at the same time, the app decides to import a module that changed profoundly since its last deployment. A plain crash is the best case scenario here.
When you install with a package you have to stop and restart the app. You need to do the same thing if you use git and fabric. With git, it takes much less time to update because only the modified files are swapped out. Packages copy whole trees of files many of which are most likely not modified between releases so the app will be down longer while this disk IO takes place.
Check out the gitric fabric module I wrote that performs git deployments in the way I've described above.
One other valid problem I've heard raised about git-based deploys is that you can end up with cruft in your working copy that sticks around like .pyc files where the original .py file is deleted and there is the chance that this file could still be imported even though the original .py was deleted. Since cloning a local git repository uses hard links you can seed your remote repository and then clone it locally on the same machine (even for slightly large projects this only takes a little extra time). Stop your server, move the old repository out of the way and move the new cloned repo where the old one was (or use a current symlink) and then restart the server.
Git-based deployments make sense for scripting languages where there isn't a compile step so the repo can be sent as-is to production (so it wouldn't make sense for a Java application). It's worth harnessing git to make deployments faster. If we only had to deploy once a month we might've settled for package-based deployments but we push often and got sick of waiting for packages to build and upload.
- Packages are, of course, a legitimate way to push out changes but the downside of deploying with packages is that it takes time to build them and upload them
- Git + fabric is suitable for deployments (my team has deployed using it over 1500 times)
- git-based deployments are lightning fast to deploy and roll back
- There is no build step
- You only have to upload objects that have changed
- Use git push, don't use git pull
- It's one less moving part that can fail during deployment
- You don't have to open your git repository to the world
- You can pre-seed git's immutable object store without affecting your running application
- You can have pip use local packages which are more reliable and you also avoid having to set up a PyPI mirror
Why I don't use git's staging area as part of my normal workflow
Git has a lot of bells and whistles and there are a lot of different ways to achieve any given task. I've seen several workflow documents explaining how to use the staging area and git add --patch to only commit some of the changes in your working copy so you can keep nice clean logical commits. I love the idea of having a clean history and logical commits but I think there are some drawbacks to using the index as part of a normal workflow.
The problem with the staging area
I always want to commit working code (if possible) because I could switch to another task and I don't want to come back to broken code (or even worse - pass along broken code to a colleague). That's why I always try to commit all changes in my working copy. When you start getting fancy and using the index to commit partial changes your working copy and your index get out of sync and it's possible for your code to appear as though it's working when you are using it or running your tests but the code that you commit might not work. One thought-experiment example: it's possible to commit a new test but not the new function or method that the test is checking even though the test is passing. Whenever your tests or tools are running they are running against your working copy. Whenever you are running your code interactively you are exercising the code that is in the working copy. Your file system does not understand that you only have some chunks of your changes staged for a commit. When I want to remove in-progress or half-baked code I use (and recommend) git stash --patch. It is the opposite of git add --patch -- it removes changes interactively and creates a stash of the unfinished chunks of code. Like any other stash, the changes can be popped or applied later. Once you have removed the in-progress code you can run your tests and know that you are committing working code. Another benefit of patch stashing unfinished changes is that they become part of the immutable history which can be used as a backup for in-progress code.
There you have it. That's why I avoid the index and frequently use git stash --patch in my git workflow.
When Failure is the Best Option
In Python (and most sane scripting languages) when something unexpected happens an exception is raised and execution stops. Damien Katz calls this the "Get the Hell out of Dodge" error handling method in his seminal Error codes or Exceptions? Why is Reliable Software so Hard?. In his article Damien explains several different ways of handling errors. None of the options is to ignore that something went wrong. That's because ignoring problems only makes them worse. But that's exactly what PHP and MySQL do for certain classes of errors.
Here's how Python handles failure:
% python
>>> print a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
PHP's default behavior is to just keep chugging along ignoring problems that could cause huge issues:
% php 2> >(while read line; do echo -e "stderr> $line"; done)
printf("%d\n", $a);
stderr> PHP Notice: Undefined variable: a in - on line 2
stderr> PHP Stack trace:
stderr> PHP 1. {main}() -:0
A "notice", eh? Really? If you try to delete a record from a database using sprintf to ensure it is a decimal and accidentally pass in an undefined variable as the id PHP will happily tell the database to delete the record with the id of "0". In my opinion this deserves more than a "notice" in the logs. PHP's default error-handling behavior is a recipe for disaster.
Fortunately, if you must use PHP, there is a way to make PHP behave in a more sane manner and force every unexpected event to raise an exception (exception_error_handler from http://www.php.net/manual/en/class.errorexception.php):
% php 2> >(while read line; do echo -e "stderr> $line"; done)
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
printf("%d\n", $a);
stderr> PHP Fatal error: Uncaught exception 'ErrorException' with message 'Undefined variable: a' in -:7
stderr> Stack trace:
stderr> #0 -(7): exception_error_handler(8, 'Undefined varia...', '-', 7, Array)
stderr> #1 {main}
stderr> thrown in - on line 7
There is one huge problem with this. If you are building on an existing PHP project or have a ton of PHP code it's likely that you will see frequent breaks once you make failure the default. That's a direct result of the language designers choosing such lenient default behavior. If you are starting a new project using PHP you should get your head checked (see phpsadness.com). If you pass a psychological evaluation and you still for some reason want to build a new project using PHP you should turn on immediate failure by using the error handler mentioned above and write tests to exercise your code. You'll thank me later.
Now, let's look at default behaviors of some popular databases:
% psql
# create table simple_table (col varchar(10));
# insert into simple_table (col) values ('1234567890a');
ERROR: value too long for type character varying(10)
% mysql
mysql> create table simple_table (col varchar(10));
Query OK, 0 rows affected (0.23 sec)
mysql> insert into simple_table (col) values ('1234567890a');
Query OK, 1 row affected, 1 warning (0.08 sec)
mysql> select * from simple_table;
| col |
| 1234567890 |
1 row in set (0.00 sec)
Yup, by default MySQL just silently truncates your data. Ronald Bradford, a self-proclaimed MySQL Expert sums it up nicely: "By default, MySQL does not enforce data integrity." That should set off alarm bells in your head if you are using or considering using MySQL. The whole point of a database is to store valid data. The simple solution is to use a database that cares about your data like Postgres but if you must use MySQL you should set
For more on why this is necessary see Ronald Bradford's Why SQL_MODE is Important blog post.
PHP and MySQL are widely used. Maybe it is because their default settings are so lenient that it makes it easy for beginners to pick up. No one really cares if there was an error saving a hit on your personal homepage to your database. The problem is that these settings are not conducive to writing quality software. When starting from scratch it's better to choose technologies that have smarter defaults like Python and PostgreSQL because the libraries and software written using these technologies will properly fail instead of doing unexpected things and filling your database with garbage.
You can (and should in most cases) also force hard failure for bash scripts by running set -e at the top of the script. See David Pashley's Writing Robust Shell Scripts for more.
Why cherry-picking should not be part of a normal git workflow
Disclaimer: Many readers have noted that this is a straw man argument and git was not designed to use this workflow. I wrote this blog post because I had seen people at two different companies working this way so it's only addressed to people who find themselves working this way accidentally. When you have conflicts in the cherry-picking workflow you can lose track of what has been merged and what has not been merged into particular branches. I've seen teams lose emergency hotfixes and not be aware of it because of this. Cherry-picking has its uses and I don't mean to discourage it when necessary but it shouldn't be something you need to do more frequently than merging.
Cherry-picking Workflow
Changes are made in a maintenance branch off of the release where the bug was found. The commitid from this change is then cherry-picked into the current integration branch.
% git checkout -b maintenance-branch <release tag or commitid> # (if the maintenance branch doesn't yet exist)
% git checkout -t origin/maintenance-branch # (if the branch already exists)
% git commit -am "Made a bug fix" # note the commitid
% git push origin maintenance-branch
% git checkout integration-branch # (e.g. master)
% git cherry-pick <commitid>
# resolve conflicts
% git push origin integration-branch
Problems with the cherry-picking workflow
- When a change is cherry-picked into a branch and there is a conflict a new commitid is created (meaning that there are two commitids for the same change).
- All of git's diagnostic tools which determine differences between branches stop working when there are multiple commitids for the same change.
Because git's diagnostic tools don't work it is hard to determine if all the changes that were made in the maintenance branch made their way to the integration branch.
% git cherry -v <upstream> <head> # list of commit differences between branches % git branch --contains <commitid> # which branches contain the commitid % git branch --no-merge # list which branches haven't been merged in
For example:
Under the cherry-pick workflow, even though a bugfix was cherry-picked into the integration branch and there was a conflict git cherry -v reports that the integration branch is missing this commit from the maintenance branch.
% git cherry -v maintenance-branch integration-branch
+ 33de19776f4446d92b45e1fdfb2d9c37b3a867a7 Made a bug fix
Merge Workflow
Changes are made in a maintenance branch off of the release where the bug was found (same as in the cherry-picking workflow). The maintenance branch is then merged into the current integration branch.
% git checkout -b maintenance-branch <commitid> # (if the branch doesn't yet exist)
% git checkout -t origin/maintenance-branch # (if the branch already exists)
% git commit -am "Made a bug fix"
% git push origin maintenance-branch
% git checkout integration-branch # (e.g. master)
% git merge origin/maintenance
# resolve conflicts
% git push origin integration-branch
- The history of the changes made in the maintenance branch is preserved and there are no duplicate commitids for the same changes - just an extra merge commit.
- git's diagnostic tools work.
- It is much harder to lose work because all the commits from the maintenance branch make their way from the maintenance branch to the integration branch with each merge.
- You can have git automatically verify that the changes have all made their way from the maintenance branch to the integration branch.
Confusingly enough one of the most useful tools in the merge workflow to check that the state is correct is named "cherry". It shows the commits that were made in one branch and not the other. It should show no missing changes when following the merge workflow because all the changes from the maintenance should make their way into the integration branch:
% git cherry -v maintenance-branch integration-branch
- Same number of commands for both cherry-picking (neither is more complicated)
- You need to resolve conflicts either way (this might actually be a win for the merge workflow because there are some scenarios where having git understand the merge history will make multiple merges easier than multiple cherry-picks)


text:
The World Health Organisation (WHO), on Wednesday 6th of June, said drug-resistant strains of gonorrhoea have spread to Countries across the world.
It said millions of patients might run out of treatment options unless doctors catch and treat cases earlier, Reuter's report.
Scientists reported last year finding a 'superbug' gonorrhoea strain in Japan that is resistant to all recommended antibiotics and warned then that it could transform a once easily treatable infection into a global health threat.
WHO said those fears are now reality, with many more countries around the world, including Australia, France, Norway, Sweden and Britain, reporting cases of the sexually transmitted disease resistant to cephalosporin antibiotics – normally the last option for drugs against gonorrhoea.
"Gonorrhoea is becoming a major public health challenge. We are very concerned about recent reports of treatment failure from the last effective treatment option, the class of cephalosporin antibiotics.
"If gonococcal infections become untreatable, the health implications are significant," said Manjula Lusti-Narasimhan, from WHO's department of reproductive health and research.
Gonorrhoea is a bacterial sexually transmitted infection which, if left untreated, can lead to pelvic inflammatory disease, ectopic pregnancy, stillbirths, severe eye infections in babies, and infertility in both men and women.
It is one of the most common sexually transmitted diseases in the world and is most prevalent in South and South-East Asia and Sub-Saharan Africa.
In the United States alone, according to the Centres for Disease Control and Prevention, the number of cases is estimated at around 700,000 a year.
WHO called for greater vigilance on the correct use of antibiotics and more research into alternative treatments for so-called gonococcal infections.
The emergence of drug-resistant or superbug strains of gonorrhoea is caused by unregulated access to and overuse of antibiotics, which helps fuel natural genetic mutations within the bacteria.
Experts say an added problem with gonorrhoea is that its strains tend to retain their genetic resistance to previous antibiotics even after their use has been discontinued.
Experts say the best way to reduce the risk of even greater resistance developing – beyond the urgent need to develop effective new drugs is to treat gonorrhoea with combinations of two or more types of antibiotic at the same time.
This technique is used in the treatment of some other infections like tuberculosis in an attempt to make it more difficult for the bacteria to learn how to conquer the drugs.
Gonorrhoea can be prevented through safer sexual intercourse. WHO said early detection and prompt treatment, including of sexual partners, is essential to control sexually transmitted infections.
Source: Naija.ng


text:
Stories you shouldn't have missed this week
0. phoneArena posted on 28 Jul 2012, 13:28
Well, it is the weekend again. Perfect time to sit back, relax, and take another look at the stories none of our readers should have missed...
This is a discussion for a news. To read the whole news, click here
Comments for : Stories you shouldn't have missed this week


text:
Tweets by @Official_Ax4x
Latest topics
VTCC America
Page 1 of 1 • Share •
VTCC America
Its like Friday Night's, just in American Primetime!!
We have been asked if a midweek series would be possible, run in the same way as the Friday Night's, a more laid back and fun group of series, where we have a chatter, a race or two and well, it was hard to say no really!!
So commencing on Wednesday 13th July, at 21:00 EDT / 18:00 PDT / 02:00 BST, the UK time being very early Thursday Morning, we shall have a group of series to suit the drivers across the pond, as well as the nocturnal creatures in the UK & Europe.
Full details of the opening season will be announced in the near future, for the time being, check out the VTCC Driver's Numbers if you havent got one yet and enjoy a warm welcome from us at the VTCC.
Daytona Dreams
- Posts : 4
Join date : 2014-07-26
Re: VTCC America
Flyin Mikey J
- Posts : 2864
Join date : 2013-08-11
Age : 52
Location : Veneta, Oregon, USA
Similar topics
» VTCC America - A New Adventure!!
» Copa America !
» Games Day north America!
» LMS Round 8 - Road America - Discussion Thread
» MSM V8 Supercars Road America
» Copa America !
» Games Day north America!
» LMS Round 8 - Road America - Discussion Thread
» MSM V8 Supercars Road America
Page 1 of 1
Permissions in this forum:You cannot reply to topics in this forum


text:
Here's a first: This week's podcast victim reviews last week's podcast victim in the current issue of National Review. Andrew Roberts calls Among the Truthers by Jonathan Kay "hard-hitting, perceptive, and highly readable."
Roberts is the author of The Storm of War: A New History of the Second World War.
Next week's podcast: Two for the price of one! Ben Shapiro on Hollywood and Ken Blackwell on the Constitution.


text:
You may see advertisements which "guarantee finance" however the truth is no company can guarantee that you will be accepted. Every lender has their own criteria and will take into consideration your individual circumstances.
If you're worried about being declined then please read through the information below – remember we work with a wide range of lenders, some of which offer solutions for people who've experienced money problems in the past.
Who we can help
There are many causes of "bad credit" so our car buying experts will always look at your individual circumstance when you apply.
- Missed payments, defaults or arrears – Many of our customers have struggled with debt in the past, so don't feel put off applying to us. A bad or poor credit rating is often caused by falling behind with repayments. We've carefully selected the lenders we work with to include ones who are happy to consider applicants in this situation and we'll always try to find you a car finance deal that is right for you.
- Bankruptcy- If you have been discharged from bankruptcy for a clear 12 months then we're happy to consider your application.
- CCJs – We regularly help people who have County Court Judgement (CCJs). As long as they're over 4 weeks old we'll consider your application and have lenders who may be able to provide you with car finance.
- IVAs – If you've been under an Individual Voluntary Arrangement (IVA) in the past and it's now settled, we are happy to consider your application. If you have an IVA at the moment we might need written confirmation from your insolvency practitioner that you're allowed to borrow again. If you wish to apply it might be worth asking your IVA company first.
Does applying affect my credit rating?
When you first apply, your car buying expert will do a 'soft search' on your credit history, which is not visible to other lenders. If it's obvious that we can't help you, we won't pass your application to a lender, and your credit profile won't be affected. If we believe that you might be accepted by one of our lenders, we'll pass your application to the lender we believe best suits your circumstances. They'll then do a recorded (hard) search. On average two recorded searches are likely to be done during the process.
Ready to find out what's possible?
No commitment, just help to get a deal that's right for youStart your application now


text:
phone view phone(601) 948-3101 fax view fax(601) 960-6902 Address P O Drawer 119
Jackson, Mississippi 39205
United States
Jackson, Mississippi 39205
United States
http://www.brunini.com Send Email
|Areas of Practice
|1) Employment Law, 2) Commercial Litigation and 3) Health Care Litigation
|Law School
|University Of Mississippi School of Law
|Admitted Year
|Mississippi College (B.S., Business Administration
|Most recent firm
|Brunini Grantham Grower & Hewes
A. Harrison Barnes is a well-known attorney throughout the United States. As a member of the Malibu community, Harrison is committed to serving the needs of Malibu residents and businesses in legal matters.
Ms. Fitzgerald represents employers in a wide range of industries, including the entertainment, financial services, hospitality, manufacturing, retail, and transportation industries.


text:
Sunday Sootoro (prayed Saturday night)
The priest makes the sign of the cross and sings or recites:
Glory be to the Father and to the Son and to the Holy Spirit, as we begin and until we conclude.
May mercy and compassion be poured forth upon us
in this world and the next.
O Lord, our God, to you be glory for ever.
All respond: Amen.
The priest sings or recites the Opening Prayer:
Lord God,
as we trace upon ourselves the sign of your glorious cross,
grant that we may conquer all evil passions
and find a new source of strength to fight against the evil one.
May we draw help and strength from your cross
to confront our visible and invisible enemies;
and we shall exalt your glory,
and that of your Father, and your Holy Spirit,
now and for ever. Amen.
Psalm 91
You who dwell in the shelter of the Most High,
who abide in the shadow of the Almighty,
Say to the Lord, "My refuge and my fortress,
my God, in whom I trust."
for he will rescue you from the snare of the fowler,
from the destroying pestilence.
With his pinions he will cover you,
and under his wings you shall take refuge;
his faithfulness is a buckler and a shield.
You shall not fear the terror of the night
nor the arrow that flies by day;
Not the pestilence that roams in darkness
nor the devastating plague at noon.
Though a thousand fall at your side,
ten thousand at your right side, near you it shall not come.
Rather with your eyes shall you behold
and see the requital of the wicked.
Because you have the Lord for your refuge;
you have made the Most High your stronghold.
No evil shall befall you,
nor shall affliction come near your tent,
For to his angels he has given command about you,
that they guard you in all your ways.
Upon their hands they shall bear you up,
lest you dash your foot against a stone.
You shall tred upon the asp and the viper;
you shall trample down the lion and the dragon.
Because he clings to me, I will deliver him;
I will set him on high because he acknowledges my name.
He shall call upon me, and I will answer him;
I will be with him in distress;
I will deliver him and glorify him;
with length of days I will gratify him
and will show him my salvation.
Glory be to the Father, and to the Son, and to the Holy Spirit, now and for ever. Amen.
The priest puts incense into the censer and blesses it, saying:
I burn this incense to praise and honor the most holy Trinity.
The priest then sings or recites the Hoosoyo proper to the
particular day of the week as given below.
Praise, glory, and honor to the Most High,
he is exalted in his divinity and proceeded by the heavenly powers; he is adored and glorified by earthly beings,
honored and magnified by creatures in all things he has made; he is glorified and blessed by the ranks of ministers of fire.
To the Good One is due glory and honor this night,
and all the days of our lives, now and for ever. Amen.
Glory, praise, and honor to the eternal and glorified Father, to the Son, and to the Spirit and Consoler:
the Holy Trinity, the One God, the Truth in which the heavens and the earth stand;
to God, who has no beginning, is eternal, and whose kingdom has no end.
He is the One, who is respectfully blessed in his dwellings.
By the perfume of this incense, which our feeble and unworthy hands present,
may the dead be pardoned.
May it be the hope for mercies,
may sinners be justified and our minds be clothed with glory.
May our wills be strengthened so that we may observe all your commandments,
and may our evil instincts obtain pardon on the day of judgement.
May this incense erase all the sins we have committed from your book of justice.
May the churches be strengthened,
the monasteries and convents be protected,
and may the priests accomplish their duty of thanksgiving to you, O Hidden One.
May the sorrowful be consoled,
cowards have courage, children be protected, and mercy be offered to the aged.
May the young men rejoice and the young women exalt.
May mothers take delight in their children
and may the unborn have life.
May the whole year be filled with all kinds of blessings,
so that the poor and the hungry may be fed and offer you praise throughout the world.
All nations will adore you and all peoples glorify you.
The famished will be satisfied by your gifts
and the needy with your bounty
and thanksgiving will arise from everywhere to you, O Hidden One: Father, Son, and Holy Spirit, the One true God,
to whom is due glory an may your mercies rest upon us,
now and for ever. Amen.
O Lord,
may the sweet—smelling perfume
and the incense (our prayers) which we offer to your Majesty
be for the pardon of your flock,
the protection of your inheritance,
and the salvation of your sheep.
May it be for preservation of our souls and bodies
and the pardon and remembrance of all the faithful departed
who sleep in your blessed hope,
now and for ever. Amen.
ˇ All respond:
The office concludes in the following manner: the priest, facing the altar, bows deeply as he says:
Let us confess, adore, and praise the holy and glorious Trinity:
He rises and makes the sign of the cross as he continues:
Father, Son, + and Holy Spirit. Amen.
Then all sing or recite:
Lord, have mercy.
Lord, have mercy.
Lord, have mercy.
Holy are you, O God;
Holy are you, O Strong One;
Holy are you, O Immortal One;
have mercy on us
Holy are you, O God;
Holy are you, O Strong One;
Holy are you, O Immortal One;
have mercy on us
Holy are you, O God;
Holy are you, O Strong One;
Holy are you, O Immortal One;
have mercy on us
Lord, have mercy on us.
Lord, forgive us and have mercy on us.
Lord, hear us and have mercy on us.
Lord, accept our worship and our prayers.
Lord, come to our assistance and have mercy on us.
Our Father, who are in heaven,
hallowed be your name;
your kingdom come;
your will be done on earth as it is in heaven.
Give us this day our daily bread;
and forgive us our trespasses
as we forgive those who trespass against us;
and lead us not into temptation,
but deliver us from evil.
For the kingdom, the power and the glory are yours,
now and for ever. Amen.
O Lord,
as your rested on your cross you cried out:
"Father, into your hands I commend my spirit."
We, therefore, commend our spirits into your hands, O Lord,
tonight and all the days of our lives,
but especially at the hour of our death,
represented now by our sleep.
To you we abandon our bodies, thoughts, feelings and all the we are.
Keep us without stain
that our sleep may glorify you.
At the end of our days,
may a peaceful sleep carry us to you,
who neither slumbers nor sleeps.
To you be glory, for ever. Amen.
(Optional Marian Hymn)
Glory be to the Father, and to the Son, and to the Holy Spirit, now and for ever. Amen.


text:
USER EDITORlayle1
Plus: Glee hits a series low, HIMYM heads to the Actors Studio, and another comic book character will appear on Agents of S.H.I.E.L.D.
The Sex and the City alum and star of The Good Wife shares his five favorite shows and teases his new miniseries, Titanic: Blood and Steel.
Plus: Fake reality show Joe Schmo is returning, final Olympis numbers are in, and casting news for Bob Odenkirk, Seth Green, and Kathryn Erbe.
We had some time on our hands and we love Dick Wolf to pieces, so a Law & Order cast hierarchy was just what the summer doldrums ordered.
Plus: American Idol continues its slide, Fox likes a teen spy pilot, and Katherine Heigl wants back on Grey's Anatomy.
What to watch on Friday, June 17 through Sunday, June 19.
What to watch on Friday, June 10 through Sunday, June 12.
What to watch Friday, June 3 through Sunday, June 5.
What to watch from Friday May 20 through Sunday, May 22.
What to watch from Friday, May 13 through Sunday, May 15.
What to watch on Friday, May 6 through Sunday, May 8.
What to watch on Friday, April 29 through Sunday, May 1.
Is your favorite show returning next year? Did that stinker finally get canceled? We're keeping track of all the shows right here.
Plus: Friday Night Lights gets an NBC premiere date, some news for Vampire Diaries fans, and Beavis is back!
Plus: Hurley returns to ABC, NBC and ABC pick up a pair of new shows, and Discovery sues a pair of Deadliest Catchers.
Plus: Jeff Goldblum leaves Law & Order: CI, Sue Sylvester gets a Nazi-hunting mom, and reality show TV hosts are pissed.
Channel TEN has released its summer schedule and it is bringing back many television favourites to our screens.
TV.com's daily news round-up for Thursday, September 17.
Adam Sandler, meet Conan O'Brien -- and Triumph the Insult Comic Dog.
It happens. Contracts end, actors move on, people die, or maybe it's just time for a change. No matter what cause, in the course of producing popular TV shows, it sometimes becomes necessary to replace beloved characters with new talent. Executing a character transfusion is a delicate procedure, but when it works, replacement characters can give old shows new vitality. It's not that the originals were bad; it's just that the replacements are sometimes even better.


text:
Bohning® Tower System Fletching Jig lets you fletch three vanes in one simple operation!
A Jig that can do it all and do it all at once. With the Tower System, you can fletch 3 of almost any size vane in 3 different configurations, all at once. It comes with 3 sets of arms: 3° helical for up to 2 1/4" vanes; 2° offset to fletch up to 4" vanes; and straight for up to 4" vanes.
2 pressure rings allow you to apply the perfect amount of pressure on different diameter shafts. Accommodates all standard carbon, small and large diameter carbon and aluminum shafts.


text: Lovebird Report post Posted May 25, 2001 I would like to know what anyone thinks about Nadezhda Pavlova,Natalia Bessmertnova,and Yekaterina Maximova.In all the books I have read they are said to have been the most talented young Bolshoi ballerinas.Has anyone seen them perform live or on video? Maximova is the teacher of Svetlana Lunkina, but what are the other two doing? Share this post Link to post


text:
Given that the reality star switches up her style all the time, we never know what we can expect - except that it will be awesome. Seriously, Ky can do no wrong when it comes to her hair. Blue, gray, short, long, whatever. It all looks good.
In this case, though, Kylie's hair changed and it was NOT something that she wanted. We can't really say we blame her, either.
In a Snapchat video on Friday night, Kylie had a hat on and revealed that someone had full-on chopped off a section of hair when they were cutting out her wig. We would have totally freaked out (seriously, how are you going to grow that out?), but Kylie isn't freaking out...
Why? Probably because she knows that she's Kylie Jenner and that she'll somehow figure out a way to turn her hair mishap into something cool.
Want More? Like us on Facebook
Gallery | Kylie Jenner's Ever-Evolving Style


text: Background: Childhood stage is a very important stage of development. In this stage there will be the emotional bounding between a child and his\ her mother father or other care giver, for healthy psychological, physical, social development has been known for countries. The following children will develop the following sort of behavioral problem, in case of poverty, and death of mother or father, family problems, neglect or abuse, marriage during adolescent's, or when a mother or father cannot take care of their children. AIM: Of my study is to compare the behavioral problems among the orphan and non-orphan primary school age children. Material and Method: Research design of this study is comparative study and the sampling technique is purposive sampling technique. The sample size was 30 orphan and 30 non-orphan school age children. The tool used for this study was self-structured observational likert scale. Conclusion: The collected data was tabulated and analyzed using descriptive and inferential statistics. In unpaired't' test value is 5.48 it is the greater than the table value. So, it shows that there is the difference between the orphan and non-orphan behavioral problem.


text:
Lara's life and spirit demonstrate the power of a yoga which blends service and self care. Her full concept yoga approach is now a Movement. All Eight Limbs is an effort to bridge the gap between traditional yoga fundamentals and modern life. Using Patanjali's Yoga Sutras and the teachings of Ashtanga Yoga.
Lara demonstrates how we can alleviate stress and pain from our lives, meet our goals, and uplift others. After this talk/workshop yoga will become a part of each and every moment, movement, and choice in your life well beyond the yoga mat.
Train Your Brain I & II
You shouldn't feel that visualizing the future means you don't accept the now. It is in fact the opposite. As we hold in our mind both our peace with the present and dream of our future self, our desire shoots into the ether where the universe truly does align to help create it. Train Your Brain, is a creative visualization workshop that dissects this idea of the power of attraction, building on it and calling to attention where previous explanations have been lacking. Level One incorporates the yoga philosophy of Patanjali's sutras and other scientific sources to explain how the brain works and how we can use its functioning to bring us our desires. Level Two delves deeper answering more specific questions, and offering a chance for vision boarding. Both include short meditations and hand to paper writing.
Studio Consulting
Profitable in under six months, Lara's Harlem studio, Land Yoga serves as a model for studios across the world. Using her interpersonal skills from her theatre background, sales and management from her years in the health insurance industry, and incredible intuition from her yoga and meditation, Lara is able come in and rid your studio of any blocks that are inhibiting growth. Lara has served as a mentor and business builder for anyone from freelance yoga instructors looking to start their own space or program, to long established businesses stuck in a rut. Even non yoga businesses have used her consulting, especially female entreprenuers.
Jump Back Jump Through
Ashtanga Yoga is a balance between moments of movement and moments of stillness in asanas. In this workshop, we focus on breaking down the moving pieces that link the postures together. Learn to lift up and experience lightness in your practice. Master the elusive art of the 'vinyasa,' also known as jump backs or jump throughs. Lara's step by step approach works with the practitioner whatever his level and propels him forward!
Transform, Transcend, Surrender: How to uplift and enhance an entire community using All Eight Limbs of Yoga
In March 2014 Lara raised $10,000 for Odanadi International, an organization that rescues children from Human Trafficking. Taste of India was a massive success due largely to the trust and community that Lara and her studio Land Yoga had built during the previous three years. They have worked with the parks, schools, small businesses, and non-profits in their neighborhood lifting everyone to the next level. Learn how to turn your business into an institution that transforms lives! This course is perfect for yoga studios or for any business looking to make an impact!
Chloe the Yogi Teacher Training's
Teach yoga poses, games, songs and projects! Gauge what you can expect from Kids ages 2-12 yrs. Learn how to work with the Energy & Expectations of all kinds of parents & teachers. Introduce Concentration and Yoga Philosophy that is Kid Friendly. Design dynamic classes and series that flow and make sense for every level. Produce lessons for private, semi-private, small and large groups, yoga studios, gyms, schools & condos. Create captivating lessons, manage challenging behavior, and work with groups of all sizes.
Yoga for Teens and High Risk Youth
Learn the language, poses, and breathing techniques specific for impacting teens. This age group, especially those who have been through trauma, loss, and disappointment yearn for connection but have issues with trust. Lara will teach you step by step how to build that trust and how get even the toughest young person moving and using yoga techniques to control anger, find focus, and think before reacting. Testimonials on her work with this group on the testimonial page.


text:
This is the second year in a row we visited Rockwood. We have decided to make a yearly adventure. Loved hearing the loons in the morning. Stayed in the same cabin as last year and will be staying it again next year!
Getting you more information on this room
Getting you more information on this room
"Cabin 4 has excellent lake access, no stairs or rocks to navigate. Since I have mobility issues, this was..."
"All of the cabins are on the lake. We like Cabin #2 and #4; we think the loft bedroom is great for a..."


text:
Sustainable Florida began as a public-private governmental foundation and was administratively part of the Florida Department of Natural Resources. Its mission shifted and it became a program of the Governor's Office under Lawton Chiles. It became a stand-along non-profit organization in 1999. From 2004 through 2011, it was part of the Collins Center for Public Policy – a non-partisan think tank based in Miami. We continue our rich tradition of service as an independent non-profit organization.
Under the watch of Governor Bob Martinez, as part of the Environmental Education Act of 1989, the Legislature created the Environmental Education Foundation of Florida. The Foundation focused on showing Florida how to do it better – promoting environmental ethics and funding environmental education projects and programs.
In 1994 – more than 10 years ago – the Foundation expanded its scope to "sustainability" and changed its name to reflect the new direction serving as a non-partisan forum for diverse perspectives on the advantages and opportunities to be gained by adopting a sustainable development philosophy for Florida. Governor Lawton Chiles renamed the organization the Governor's Council for Sustainable Florida.
After a comprehensive review of state commissions and councils, the Governor's Council for Sustainable Florida became an independent organization that incorporated as a not-for profit organization in 2000 and was known as the Council for Sustainable Florida. In 2004, CSF merged with the Collins Center for Public Policy – an independent, nonpartisan, nonprofit organization named in honor of former Florida Governor Leroy Collins. The Collins Center closed its doors in 2007.
In 2006, Sustainable Florida become independent once more and remains committed to the interrelated issues of economic growth, environmental quality and social capital. We are dedicated to promoting and expanding sustainable practices and programs in Florida.
In partnership with the Department of Environmental Protection, the Educational Alliance for Sustainable Florida was established to encourage Florida's colleges and universities to incorporate sustainability issues into their curricula. By developing case studies for use in our classrooms, we can help tomorrow's leaders carry the sustainability banner into the corporate world.
With the Florida Department of Community Affairs Coastal Management Program, Sustainable Florida developed a public awareness campaign to protect and sustain our fragile coastal system and document successful practices in the Waterfronts Florida initiative that focused on coastal waterfront revitalization.
Additionally, Sustainable Florida sponsors Executive Leadership Forums that focus discussion on the progress and importance of long-term sustainability for Florida's future. These Forums focused on such themes as climate change, transportation, tourism and market-based incentives.
Our signature event is its annual awards program. These awards are an example of state-level recognition for accomplishments and leadership in sustainable development and are a respected measure of best performance standards in the integration of environmental, social and economic factors for the long-term sustainability of Florida. The Council has recognized and honored more than 100 businesses, organizations, governmental agencies and individuals over the last eight years.
Sustainable Florida is a unique alliance of business, government, higher education and citizen leaders committed to conserving Florida's vast natural and economic resources. Throughout its history, Sustainable Florida has exhibited a firm commitment to defining excellence for Florida's economic, environmental and social future.


text:
Submit News
Study: Problems with Surgical Robots Going Unreported to the FDA
Tiffany Kaiser
November 5, 2013 2:36 PM
Recipient E-mail
Sender E-mail
Some of these problems have resulted in the injury or death of patients
A new study shows that some problems and even deaths caused by
surgical robots
were not accurately reported (or in some cases, not reported at all) to the U.S. Food and Drug Administration (FDA).
According to PBS, the study looked at the da Vinci Robotic Surgical System specifically, which is made by
Intuitive Surgical
. It's designed to perform complex surgeries with a minimally invasive approach while being controlled by a surgeon from a console. Medical professionals say the system provides smaller incisions, shorter hospital stays and less pain post-operation.
The study searched through several data bases over about a 12-year period of use of the da Vinci Robotic Surgical System. The study found 245 incidents reported to the FDA, including 71 deaths and 174 nonfatal injuries.
However, they also found eight cases where reports were inaccurate, including five cases where no FDA report was filed at all.
This is a pretty big deal, considering hospitals are required to report the incident to the manufacturer if a device malfunctions in any way, and then the manufacturer reports it to the agency. From there, the FDA creates a report for its Manufacturer and User Facility Device Experience database.
Da Vinci Robotic Surgical System
"The Journal for Healthcare Quality article gives the misleading impression that Intuitive Surgical has systematically failed in its obligation to timely report known adverse events to the FDA," said Intuitive Surgical in a statement last month. "Intuitive Surgical can only report adverse events after it becomes aware of them. We take this requirement very seriously and make every effort to account for all reportable events--even those from several years prior."
One such case was a patient's injury and death in 2009, but the incident couldn't be found in the FDA's database for that year. The study's authors found a "very late" report matching the patient's case in 2010. The FDA received the report two weeks after
The Wall Street Journal
ran a story about it.
This has raised questions for the need of a better standardized system for reporting malfunctions and other problems regarding
the surgical robots
It also raises another important question: if problems occur during robotic surgery, is the doctor, the hospital or the manufacturer responsible? According to PBS, this introduces the potential issue of product liability.
Intuitive Surgical also called for the study's authors to conduct a study that compares the under reporting of traditional open and laparoscopic surgical issues with robotic-assisted surgery.
The use of robots for laparoscopic surgery, which uses smaller incisions than in traditional surgery, was approved by the FDA in 2000. From 2007 to 2011, the number of da Vinci systems installed was boosted by 75 percent in the U.S. (compared to about 800 to 1,400 prior).
"I modded down, down, down, and the flames went higher." -- Sven Olsen
Related Articles
Researchers Equip Robotic Surgery "Nurses" With Gesture Recognition
February 4, 2011, 11:02 PM
NASA Plans to Test Mobile Surgical Robot
April 20, 2007, 12:37 AM
Latest Headlines
Tesla delays Model 3 productions in its worst quarter
November 2, 2017, 9:42 AM
Not All the High-Tech Jobs Are in California
August 4, 2016, 8:29 PM
Google's Gleaming Glass HQ Gets Mountain View Snub, LinkedIn Gets the Love
May 7, 2015, 6:58 AM
Tech's Tax Day Fortunate Few: Qualcomm, Xerox, GE, et al. Pay Little or No Taxes
April 15, 2015, 11:30 AM
LinkNYC Terminals to Blanket New York City With Free WiFi, Free Calls, and Ads
November 17, 2014, 6:50 PM
Microsoft is Open-Sourcing Most of .NET, Adding OS X and Linux Support
November 12, 2014, 8:27 PM
More Headlines
Most Popular Articles
Latest Blog Posts
Google Amazon Feud affects Customers
Elroy Bethell
Dec 6, 2017, 6:55 AM
Amazon Marketplace – Now Features Pet Profiles
Elroy Bethell
Dec 5, 2017, 6:17 AM
Apple iOS 11.2 – Fixes bug in iOS 11
Elroy Bethell
Dec 3, 2017, 7:02 AM
Amazon Alexa – Recognizes Different Voices & Gives Different Reponsesma
Elroy Bethell
Dec 2, 2017, 9:25 AM
Kardiaband – FDA Approved Medical Device for Apple Watch
Elroy Bethell
Nov 30, 2017, 7:45 AM
Samsung Graphene Batteries – Promise 12 Minute Charging
Elroy Bethell
Nov 29, 2017, 7:20 AM
Samsung Galaxy S9 - May Launch with on-screen fingerprint sensor.
Elroy Bethell
Nov 28, 2017, 6:25 AM
Cyber Monday 2017 – Do's and Don'ts
Elroy Bethell
Nov 27, 2017, 7:38 AM
Givenchy VR Googles – Fashion Reality Meets Virtual Reality
Elroy Bethell
Nov 25, 2017, 8:40 AM
Firefox Quantum Browser – Soon to Detect Hacked Websites
Elroy Bethell
Nov 24, 2017, 8:45 AM
Elon Musk Completes World Largest Lithium Ion Battery
Elroy Bethell
Nov 23, 2017, 8:45 AM
Uber hacked – Pays Hackers for Secrecy
Elroy Bethell
Nov 22, 2017, 7:25 AM
German Regulators ban Children's smartwatches
Elroy Bethell
Nov 21, 2017, 7:30 AM
Fake Mobile Apps – Black Friday Shoppers Beware
Elroy Bethell
Nov 20, 2017, 6:54 AM
Quantum Chips and Google
Saimin Nidarson
Nov 12, 2017, 6:45 AM
More Blog Posts
Copyright 2018 DailyTech LLC. -
RSS Feed
About Us
Terms, Conditions & Privacy Information
Kristopher Kubicki


text:
YOUNG ballet dancers, singers, guitarists and even a puppet master showed they have what it takes for stardom.
Members of East Hampshire Youth Council organised a talent contest in Petersfield.
In all, 19 acts, including solo singers, bands, actors, dancers and a puppeteer, performed to a packed house at The Studio, The Petersfield School.
The judging panel included X-Factor finalist and NuVibe band member Stefan Romer, Tom Kates, of The Petersfield School, Helen Harlow, head of music at Newton Primary School, Gosport, and Joe Boon, a former winner of Show Off, a previous talent contest for the area.
Prize winners included Shannon Dodds, a solo singer from Horndean, who came second in the 14 to 18 category and Henry Crew, a guitarist and singer from Petersfield, who came third in the group.
Contemporary ballet dancer Charlie Day, of Bordon, won the older age group and gymnastic dancer Phoebe Barrow, of Alton, scooping top spot in the eight to 13 age group.


text:
Recent Posts
Recent Comments
lifelifedeathdeath on Nothing – Guilty of Ever… Vows on Nothing – Guilty of Ever… Brocktoberfest on On The Occasion Of The Day I E… Amber C Haines on For Seth Haines Leida on New Year's Day 2014
Category Archives: Fear and Trembling
From Zombies to Creed to Paula Deen : How Our Need For Communal Preferences Hinders Communication
8:54 AM – Wife's out of town. Dishes stacked in the kitchen. The records she request I not blast when she's home – In This Moment's Blood, Megadeth's Peace Sells, Neil Young's Harvest – blast in repeat on the home … Continue reading
A Celebration of One Student's Bitchiness, of Personal Hypocrisies, and of The Truest Part of Any Eulogy
10:12 AM – Pug-dog asleep on me as I read. Awakening, he stretches his paws into my face. They smell like corn chips. He is the Corn-Chip Chicken. *** "Rationality squeezes out much that is rich and juicy and fascinating." … Continue reading
Posted in Bird By Bird, Fear and Trembling, Stories, Writing Tagged Anne Lamott, Barnes-n-Nobles, Coffee, Fact Vs. Fiction, Hypocrisy, PBR, Philipp Meyer, Teacher Rant, writing 3 Comments
Making Sense of Youth(Group)ful Zeal : A Reflection on Being Lame in the Name of the Lamb
7:59 AM – Chicken Dinner eats his bed. Insert teeth. Pull. And doggie-bed innards scatter on his chin and in the air. It's a gruesome display. But I'm determined to teach this little bugger to be dainty. To treat his … Continue reading
Posted in Fear and Trembling, Stories Tagged Christian Culture, Christianity, Faith, God, Plankeye, Satan, Sesame Street, Youth Groups 3 Comments
Scary Rants Vol. 2 : The Silly Question of Reconciling Art and Faith
10:08 AM – Another Final Exam. Coffee. Entertainment Weekly. Grading. Phone calculator. Light in sight. *** "We all know we're going to die; what's most important is the kind of men and women we are in the face of this." … Continue reading
Posted in Bird By Bird, Fear and Trembling, Horror, Scary Rants, Stories Tagged Anne Lamott, Faith, Horror, Questions 3 Comments
Scary Rants Vol. 1 : Processing the Beauty of Untidiness in the Horrific Arts
7:50 AM – Sitting in first final at the semester's end. These younguns will grieve to know I am not on the Facetube. Today marks our goodbye. *** DISCLAIMER: What follows is the beginning of something that I need to … Continue reading
Posted in Bird By Bird, Fear and Trembling, Horror, Scary Rants, Stories Tagged Acoustic Guitars and Egg-Shakers, Anne Lamott, Faith, Horror 8 Comments


text:
Skin Truth by Em Petrova
Release Date: August 24, 2011
Publisher: Ellora's Cave
Pages: 65
Source: ebook provided by the publisher
When Kat's boyfriend takes her to an upscale restaurant, she's certain he's going to give her the two-carat princess cut she's always dreamt of. Instead she finds herself being dumped. Thrown into a downward spiral, she ponders his claim that he's looking for someone who needs him to take control so he can feel complete. Driven by personal tragedy and determined that she can at least be adventurous between the sheets, Kat embarks on a sexual journey involving titillating phone sex and a growing obsession with the toy catalog. Soon she's led into the darker world of bondage and whippings, only to be jumped by a group of men with a fascinating and fearless leader. Pushed to her limits, she struggles against the dark seduction. Until she discovers the leader's secret.
Reader Advisory: Story contains a wee bit of forced sex—or is it?
Review: Skin Truth by Em Petrova is a fantastic BDSM erotic romance. This short story is packed with mystery and suspense as well as sizzling hot passion.
Kat has been with her boyfriend, Daniel for nine months now and she's sure that she is really in love. When he takes her out to a fancy restaurant she thinks this is it, and she's about to get engaged. When things take a sudden and unexpected turn, she is left devastated. In the aftermath, Kat begins to explore new things and discovers things about herself she never knew. When she decides to check out a local club that she has always wondered about, has she gone too far?
I very highly recommend this book! I gave it 4 stars, but I would actually give it 4 ½ if I could. The writing is excellent and the story had me glued to my e-reader. At 65 pages it's a nice length for me because it's long enough to give the reader time to get into the story and characters, but it's not a full length novel that might take days to read.
I loved Kat and could really relate to her. She's a modern day strong and independent woman. The problem is that she's so liberated that she refuses to need anything from anyone. This story is high on the heat level, and has great characters and a compelling story, giving the reader more than just erotica. BDSM stories can range anywhere from light to hardcore and everywhere in between. I would consider this one a little further on the scale towards hardcore, and it also has just a bit of a dark feel to it. I thoroughly enjoyed this book and when I finished I wanted more!