Among the Budget Hotels in Mumbai Hotel Nagina, Mumbai has created a niche for itself because of its location. The nearest airport is just 20 kms away and the Railway Station is at a distance of 4 kms. The Victioria Garden one of the important places of interest is just at a distance of 1/4 kms. The hospitable services and the elegant decors make Hotel Nagina in Mumbai one of the desired places among Hotels in Mumbai.
- Television with cable connectivity.
Hotel Nagina in Mumbai India has a good restaurant that caters to your taste buds by providing the best of dishes which range from Indian to Continental. The bar in the Hotel Nagina in Mumbai has some good wine to offer and you can try out some snacks also.
Hotel Nagina, Mumbai has a Business centre that has facilities like Fax and Telephone to take care of your corporate needs. There are also conference facilities in Hotel Nagina in Mumbai India.
There is a well facilitated travel desk in Hotel Nagina, Mumbai which helps you make your trip to the places of interest like Esselworld, Joggars Park, Water Kingdom and other tourist spots.


Squats are most definitely one of the best exercises you can do. Not only do they increase your heart rate thus helping to burn fat but they give you a really good bum!
Far too many times I see people not doing squats properly, now I don't claim to be the queen of squats and sometimes I've heard the 'no rep' from my coach but It is important to squat properly, to reap the benefits and to avoid injury.
I used to squat when I went to the gym by myself but never really knew how to complete a squat properly. You might think oh a squats easy, anyone can do it but you'd be wrong there can be lots of factors that prevent people from being able to squat.
After I started crossfit, I began to follow a programme with my partner Josh and soon saw my squat numbers increase by quite a margin. After all a good squat is crucial in so many crossfit movements from wall balls, olympic lifts to thrusters and even box jumps. If you know how to move well through a squat movement then you have a good base.
I followed the Smolov program whilst training with my other half and my 1rm went from 100kg to 115kg which I was super happy with. If you want a link to Smolov have a look here, you work out your percentages and then go from there it's a great programme that can help to increase your numbers. I followed the junior program.
Ok so tips for a good squat. First you need to begin with a basic air squat.
Feet on the floor standing straight. Then push your bum backwards and squat down, you need to make sure your knees track in alignment with your toes and that your hips break parallel. If you struggle with the latter then try working on your ankle range and if you really find it tricky try squatting onto a bench or med ball first to develop better range. The ought the movement keep your weight on your heels and your back straight, try to engage your core.
If you have a good air squat then build this up until your confident to move with a bar. Now I go for a high bar hold meaning I balance the bar quite high up on my back but this is just what feels comfortable for me you may prefer to have the bar resting lower.
Here my left knee in particular is not where it should be!
Make sure you increase the weight only when you are comfortable with what you are doing. I rarely attempt 1rm but spend a lot of time working around 65-85% of my max.
If you can squat and keep your heels flat on the floor then great, if you think you may need some help then invest in some lifting shoes but remember they don't do all the work for you!
I'm writing this post because I recently posted a couple of photos on to my Instagram page hannah_j_lewis and was happily surprised at the response I got. I didn't post it to get comments or anything but more to try and inspire other women.
The above is the photo! On the left I was 60kg and 20% body fat, I made sure I ran everyday and spent a lot of the time poorly. I skipped meals on a regular basis with the sole aim to be 'skinny.' That was my goal, I wanted to be under 60kg and punished myself for even eating a square of chocolate, not a healthy mind set at all.
Jump to the photo on the right, I'm now 10kg heavier at 70kg, I'm much healthier, I have more energy, better skin and nails and my body fat is even lower at 14%!
What I've come to realise on my journey through weightlifting and crossfit is that skinny is not actually healthy. I used to look up to singers such as Cheryl Cole and think they look great but actually they're a bag of bones, if that's what you aspire to be then that's fine but I want young women and girls to look up to be something healthy, strong and beautiful.
I had lots of responses to my post, many girls thanking me for public ally saying it's ok to put on weight/ muscle and to be heavier. I also had messages from girls who had eating disorders who also thanked me and that was really nice to see.
The other day a girl I used to teach walked past me in my crossfit class. The next day her mum handed me a pencil drawn picture of me lifting weights with the words 'when I grow up I want to lift weights and be strong like you Miss Lewis.' This meant the world to me, if I can inspire any female no matter how old or irregardless of ability then I've done my job!
I'm not saying it's been easy, I still have mini freak outs that I'm heavier now but then i remind myself of what I can do, how functional I am and how healthy and I feel enpowered. I'm also lucky to be surrounded by a wonderful boyfriend, friends and family.
If you're reading this and struggle with your weight or body issues then please remember it's more important to make yourself happy and to be healthy. Look up to those female sport stars not the catwalk models!
After all if we were in the hunger games… Who would survive?!
Last weekend I competed with 5 other members from my Crossfit gym, Crossfit Bournemouth at The Super Team Cup in London.
There were 100 teams competing and they could literally be 'super teams' where members didn't have to come from the same box.
The first work out was a 3km ski erg between 4 of us and it was horrible and our worst finish! We then had another 5 workouts and after each workout we climbed higher up the leaderboard. The competition continued to Sunday which saw handstand push ups, 4 x 200m sprint and a big final.
Yes we made the final top 20 so had 1 more workout! Between 4 of us we had to do Fran, Grace, Elizabeth & Amanda as the 'weightlifter' I was given Grace! 42.5kg clean & jerk x 30 reps which I managed to do in 2mins 30 and absolutely loved it! Our team smashed it and came 16th in the final, meaning we finished in 19th!
An amazing weekend and I would highly recommend doing team event in the future, it was so exciting and so nice to have your team mates with you supporting and cheering you on.
Thanks to our amazing sponsors Elite Gear who kitted us out and cheered in every workout. If you need any crossgit supplies then check them out!
Sorry for being quiet recently, I've just gone back to work and teaching has been pretty crazy!
Anyway I'm here to tell you about the recent cleanse I've been on, C9.
I decided to do this cleanse because I wanted to lose a bit of weight but mainly wanted to give my body a really good detox.
The first 2 days you don't eat a meal, you have lots of aloe Vera gel, fibre tablets and can snack on fruits and vegetables which in the booklet are called 'free foods.' To say I was hungry was an understatement, by the second day I really wanted to eat and I found that I lacked energy when working out.
Days 3-9 you can introduce a 600 calorie meal and I chose to have mine as an evening meal. I was so looking forward to this meal and it didn't disappoint, however I felt the next day I was hungry and counting down the hours.
I was pleased with my weight loss I lost 2.5-3kg in 4 days and 1.5inches off my waist. But I do think this was due to a severe lack of food and the fact I was starving!
All in all I wouldn't really recommend C9 to people who train and who are in shape already. If you have a holiday coming up and have a bit to lose then it's worth trying it because I think it does cleanse and give a kick boost in losing weight.
I regret doing it now as my training has suffered but at least I have given it a go. I need to learn to be happy and be confident that what I eat is good for me and that I'm happy with my body.
Good luck if you do the cleanse but I honestly would recommend just eating healthy, drinking water and exercising.
I want to show everyone that you don't necessarily need a gym or any high tech equipment in order to be able to complete a successful workout.
Today the gym was closed so myself and my partner headed to our local park. Here they have put up equipment that the public can use, which I think they do at a lot of local parks in the UK.
There was no one on it when we got there and we agreed to complete a partner workout of 150 pull ups, 150 press ups and 400 air squats. If you're just getting started then these are quite big numbers, I would start out with the aim to do much smaller sets of 20 and see how you feel after each set. If you haven't got pull ups then there will be probably be a bar low enough to have a go at jumping pull ups.
Air squats are a brilliant exercise as they really work the large muscle groups in your legs and ladies they're brilliant for the bum!
If you struggle with press ups then again break it down try as many as you can, then have a go at going on to your knees. Try to keep your hips inline when doing this though to ensure your arms get a work out.
If you go to your local park and there isn't any equipment at all then try to incorporate some sprints. In addition if there are benches then try some steps ups, or jump ups if your feeling brave. Tricep dips can also be done using a bench.
Other exercise you can include are lunges, jumping jacks, sit ups, skipping etc. There are loads and I hope to post some videos soon.
Now recently you may have noticed the explosion of socks onto the crossfit arena! They have become a vital item in the crossfit wardrobe for both men and women.
The crazier the better, with colours being splashed all over socks as well as pictures such as these Dollar or Gorrilla ones below which are available from my sponsors Ares at the bargain price of £8.99.
I was hesitant to join in the sock game but I actually love them and love how they can finish off an outfit, I don't wear them fully pulled up but just enough to see the pattern or colour.
Another brand that is rocking the sock work is Stance socks who stock a massive range.
Foundation, High end or high street?
Like Hannah I am mixed race which makes finding foundations which match my skin tricky ,whenever I do find a match thy're out of stock or they just don't provide a colour as dark as my skin. This is when high end places such as MAC, where my first foundation is from, they make life easier as they can perfectly match a foundation to your skin colour. They go from snow white pale, to chocolate brown with professionals helping and advising you.
£25.50 Max studio sculpt SPF 15 foundation, colour NC42.
I like this foundation as when I go to the beach or outdoors it provides protection from the sun.
This foundation is very thick and high coverage, this means that it can cover spots and blemishes well. It's quite matt so if you like a dewy finish you will not like this foundation. I would apply this foundation with a sponge not a brush as a brush usually leaves marks like little streaks on your face. Furthermore, I would apply a moisturiser before using this foundation as it can cling to dry patches of skin. I would recommend this for dry skin but I feel it would be too thick on oily skin.
I would say it lasts around 5 hours and after this it seem to separate and leave in patches and it can look shiny, so I would bring a powder to blot your face throughout the day. I would wear this product as a 'going out, or party foundation as it is pretty flawless and high coverage.
One thing about the packaging is that you have to squirt out the product which means somethings you're left with massive puddle of foundation that you can no longer use, which is also a pain as the product is so expensive.
Furthermore this foundation smells a bit strong, almost like children's face paint, and if you apply to much it can feel like face paint on your skin.
I like this foundation as it is dewy and makes me look radiant as the name would suggest. Unlike many drugstore foundation it is radiant without having chunky glitter and sparkles. However it only takes 1-2 hours without oxidising –this means the colour changes over time and this happens to look orange on me. Furthermore it isn't as much coverage as the MAC foundation which can be annoying when you're trying to cover spots etc. Unlike the MAC foundation this applies well with both sponge and brush. Additionally I prefer this foundation bottle as it comes with a pump which makes things easier and cleaner.
As I mentioned before it's hard to find a colour which matches you perfectly and there isn't someone there to help, so this makes things tricky.
If you don't like foundations which smell this isn't one for you this is a highly perfumed foundation which I don't mind because it's quite nice and not like the face paint smell of MAC.
Thanks for reading I hope you've enjoyed the post.


text:
Communication & Media/
The Ministry of Trade and Industry of the Federal Democratic Republic of Ethiopia (FDRE) has said that the first half of 2013 will focus on the performance of the trade and industry sectors and the issues to be addressed in the second half of the year. They also held talks with government officials in Hawassa. Director General of the Textile and Garment Industry Development Institute of the Federal Ministry of Trade and Industry, Sileshi Lema Lehukan. He said the main purpose of the meeting was to consult with private sector owners and actors on issues that could improve and ensure the effectiveness of the private sector, so that the private sector can focus on its plans for the next fiscal year, both individually and collectively. He said it is a field visit and discussion designed to further expand our positive and strong strengths in the process of identifying the obstacles that are being encountered in the process of the private sector.
Leather factories need special support to be able to produce at full capacity
Bulbula Integrated Agro-Industrial Park will be operational this year
The Ministry of Trade and Industry supported the CVD 19 defense equipment
Regarding working to reduce greenhouse gas emissions from industries
The executive and stakeholders are urged to strengthen their coordination to solve the manufacturing sector problem
The FDRE Minister of Trade and Industry Melaku Alebel, thanked those who completed the production of Belayneh Kinde edible oil factory in Bure town.
Regarding the implementation of the chemical registration system
In order to continue the fight against corruption must be understand the law properly.
The small and medium-sized manufacturing industry plays an important role in the country's economic development.
We are working to increase our export earnings

redpajama_set_name: RedPajamaCommonCrawl


text:
Today's Stichomancy for Leonardo DiCaprio
The first excerpt represents the element of Air. It speaks of mental influences and the process of thought, and is drawn from The Lone Star Ranger by Zane Grey:
served as a bar and stared at Duane. But when he met Duane's glance he turned hurriedly to go on serving out liquor.
"What have you got against him?" inquired Duane, as he sat down beside Euchre. He asked more for something to say than from real interest. What did he care about a mean, haunted, craven- faced criminal?
"Wal, mebbe I'm cross-grained," replied Euchre, apologetically. "Shore an outlaw an' rustler such as me can't be touchy. But I never stole nothin' but cattle from some rancher who never missed 'em anyway. Thet sneak Benson--he was the means of puttin' a little girl in Bland's way."
The Lone Star Ranger The second excerpt represents the element of Fire. It speaks of emotional influences and base passions, and is drawn from The Dynamiter by Robert Louis Stevenson and Fanny Van De Grift Stevenson:
haste.'
He hurried to obey, marvelling at these changes, but not daring to trouble her with questions; and when the cab had been brought round, and the box mounted on the front, she passed a little way off upon the pavement and beckoned him to follow.
'Now,' said she, still in those mechanical and hushed tones that had at first affected him, 'you must go on to Holyhead alone; go on board the steamer; and if you see a man in tartan trousers and a pink scarf, say to him that all has been put off: if not,' she added, with a sobbing sigh, 'it
The third excerpt represents the element of Water. It speaks of pure spiritual influences and feelings of love, and is drawn from The Pupil by Henry James:
boy to her side. "You must know what to expect," she went on to Pemberton.
"The less you expect the better!" her companion interposed. "But we ARE people of fashion."
"Only so far as YOU make us so!" Mrs. Moreen tenderly mocked. "Well then, on Friday - don't tell me you're superstitious - and mind you don't fail us. Then you'll see us all. I'm so sorry the girls are out. I guess you'll like the girls. And, you know, I've another son, quite different from this one."
"He tries to imitate me," Morgan said to their friend.
"He tries? Why he's twenty years old!" cried Mrs. Moreen.
The fourth excerpt represents the element of Earth. It speaks of physical influences and the impact of the unseen on the visible world, and is drawn from The Merry Adventures of Robin Hood by Howard Pyle:
again he shot, and again he hit the clout; a third shaft he sped, but this time failed of the center, and but struck the black, yet not more than a finger's-breadth from the white. At this a shout went up, for it was the best shooting that Hubert had yet done that day.
Merry Robin laughed, and quoth he, "Thou wilt have an ill time bettering that round, Will, for it is thy turn next. Brace thy thews, lad, and bring not shame upon Sherwood."
Then Will Scarlet took his place; but, because of overcaution, he spoiled his target with the very first arrow that he sped, for he hit the next ring to the black, the second from the center.
The Merry Adventures of Robin Hood


text:
package jsystem.treeui.sobrows;

import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

import javax.swing.JOptionPane;

import jsystem.extensions.report.html.HtmlCodeWriter;
import jsystem.framework.FrameworkOptions;
import jsystem.framework.IgnoreMethod;
import jsystem.framework.JSystemProperties;
import jsystem.framework.TestProperties;
import jsystem.framework.TestRunnerFrame;
import jsystem.framework.common.CommonResources;
import jsystem.framework.scenario.RunnerTest;
import jsystem.framework.sut.Sut;
import jsystem.framework.sut.SutFactory;
import jsystem.framework.system.SystemManagerImpl;
import jsystem.framework.system.SystemObject;
import jsystem.runner.ErrorLevel;
import jsystem.runner.loader.LoadersManager;
import jsystem.treeui.WaitDialog;
import jsystem.treeui.error.ErrorPanel;
import jsystem.treeui.sobrows.Options.Access;
import jsystem.utils.FileUtils;
import jsystem.utils.StringUtils;
import jsystem.utils.build.BuildUtils;
import junit.framework.SystemTestCase;

import org.w3c.dom.Node;

import com.thoughtworks.qdox.JavaDocBuilder;
import com.thoughtworks.qdox.model.Annotation;
import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.JavaField;
import com.thoughtworks.qdox.model.JavaMethod;
import com.thoughtworks.qdox.model.JavaParameter;
import com.thoughtworks.qdox.model.Type;

/**
 * The SOProcess contain static method to process
 *
 * @author guy.arieli
 *
 */
public class SOProcess {
	private static final Logger log = Logger.getLogger(SOProcess.class.getName());
	/**
	 * The main class method, process a system object. Will create 2 class one
	 * is abstract that is auto generate, the second extends the first and is
	 * for user inputs. By overwrite existing methods.
	 *
	 * @param testClassBase
	 *            the abstract base class
	 * @param testClass
	 *            the class for user inputs.
	 * @param sut
	 *            the setup sut object.
	 * @param soPath
	 *            the path to the sut in the xml file
	 * @param soClassName
	 *            the system object class name
	 * @param builder
	 *            the builder contain all the project sources
	 * @throws Exception
	 */
	public static void processSystemObject(Class testClassBase, Class testClass, Sut sut, String soPath,
			String soClassName, JavaDocBuilder builder) throws Exception {
		/*
		 * Get the class to be process
		 */
		JavaClass soClass = builder.getClassByName(soClassName);

		/*
		 * Get the class javadoc
		 */
		String comment = soClass.getComment();

		/*
		 * set the package name to be used
		 */
		String packageName = soPath.replace('/', '.');

		/*
		 * the last element in the package name is the system object name
		 */
		String soName = packageName.substring(packageName.lastIndexOf('.') + 1);
		String soNameFirstCharUpper = StringUtils.firstCharToUpper(soName);

		/*
		 * Set the package for the user class and for the base class
		 */
		testClassBase.setPackage(new Package(packageName));
		testClass.setPackage(new Package(packageName));

		/*
		 * Imports SystemTestCase
		 */
		testClassBase.imports.addImport(SystemTestCase.class.getName());

		/*
		 * Set the name of the base and user classes
		 */
		testClassBase.setClassName(soNameFirstCharUpper + "ManagerBase");
		testClass.setClassName(soNameFirstCharUpper + "Manager");

		/*
		 * Set the extended name. The user class extended the base and the base
		 * extended SystemTestCase
		 */
		testClassBase.setExtendsName(StringUtils.getClassName(SystemTestCase.class.getName()));
		testClass.setExtendsName(testClassBase.getClassName());

		/*
		 * Add the system object to the imports and add it as a member
		 */
		testClassBase.imports.addImport(soClassName);
		testClassBase.members.put(soName, new Member(soName, StringUtils.getClassName(soClassName), "null",
				Access.PROTECTED));

		/*
		 * Set the base class to be abstract
		 */
		testClassBase.setAbstract(true);

		/*
		 * Init the javadoc of the base
		 */
		StringBuffer javaDoc = new StringBuffer();
		javaDoc.append("Auto generate management object.\n");
		javaDoc.append("Managed object class: ");
		javaDoc.append(soClassName);
		javaDoc.append("\n");
		javaDoc.append("This file <b>shouldn't</b> be changed, to overwrite methods behavier\n");
		javaDoc.append("change: ");
		javaDoc.append(soNameFirstCharUpper);
		javaDoc.append("Manager.java\n");
		if (comment != null) {
			javaDoc.append("Object javadoc:\n");
			javaDoc.append(comment);
		}
		testClassBase.setJavadoc(javaDoc.toString());

		/*
		 * Add the setUp method that init the system object
		 */
		Method setUpMethod = new Method();
		setUpMethod.setAccess(Access.PUBLIC);
		setUpMethod.setMethodName("setUp");
		setUpMethod.setMethodCode(soName + " = (" + StringUtils.getClassName(soClassName)
				+ ")system.getSystemObject(\"" + soName + "\");");
		setUpMethod.setThrowsName("Exception");
		testClassBase.methods.add(setUpMethod);

		/*
		 * Build the xpath to the system object
		 */
		StringBuffer xpath = new StringBuffer();
		xpath.append("/sut/");
		xpath.append(soName);

		/*
		 * Call the main recuse method
		 */
		processSo("", builder, soClassName, testClassBase, soName, new ArrayList<String>(), xpath, sut);
	}

	/**
	 * Collect all the methods of the input class include the method of it
	 * supper classes.
	 *
	 * @param cls
	 *            the class to collect the method of.
	 * @return an array of all the methods found
	 */
	private static JavaMethod[] collectMethods(JavaClass cls) {
		ArrayList<JavaMethod> methods = new ArrayList<JavaMethod>();

		/*
		 * Add all the class method
		 */
		JavaMethod[] mlist = cls.getMethods();
		for (JavaMethod m : mlist) {
			methods.add(m);
		}

		/*
		 * Add all the super class methods
		 */
		JavaClass superClass = null;
		while ((superClass = cls.getSuperJavaClass()) != null) {
			String cn = superClass.getName();
			/*
			 * Stop when the super clas is SystemObjectImpl or java Object.
			 */
			if (cn.equals("Object") || cn.equals("SystemObjectImpl")) {
				break;
			}
			JavaMethod[] mm = superClass.getMethods();
			for (JavaMethod m : mm) {
				methods.add(m);
			}
			cls = superClass;
		}
		return methods.toArray(new JavaMethod[0]);
	}

	/**
	 * Collect all the fields of the input class include the method of it supper
	 * classes.
	 *
	 * @param cls
	 *            the class to collect the fields of.
	 * @return an array of all the fields found
	 */
	private static JavaField[] collectFields(JavaClass cls) {
		ArrayList<JavaField> fields = new ArrayList<JavaField>();

		/*
		 * Add all the class fields
		 */
		JavaField[] flist = cls.getFields();
		for (JavaField f : flist) {
			fields.add(f);
		}

		/*
		 * Add all the super class fields
		 */
		JavaClass superClass = null;
		while ((superClass = cls.getSuperJavaClass()) != null) {
			String cn = superClass.getName();
			/*
			 * Stop when the super clas is SystemObjectImpl or java Object.
			 */
			if (cn.equals("Object") || cn.equals("SystemObjectImpl")) {
				break;
			}
			JavaField[] ff = superClass.getFields();
			for (JavaField f : ff) {
				fields.add(f);
			}
			cls = superClass;
		}
		return fields.toArray(new JavaField[0]);
	}

	/**
	 * Check if the method parameters are of primitive type that supported by
	 * jsystem parameters.
	 *
	 * @param method
	 *            the method to check
	 * @return true if all parameters are ok.
	 */
	private static boolean isMethodParamsTypeSupported(JavaMethod method) {
		JavaParameter[] params = method.getParameters();
		for (JavaParameter p : params) {
			String type = p.getType().getValue();
			if (p.getType().isArray()) {
				return false;
			}
			if ("int".equals(type) || "long".equals(type) || "java.lang.String".equals(type) || "float".equals(type)
					|| "double".equals(type) || "java.io.File".equals(type)) {
				continue;
			} else {
				return false;
			}
		}
		return true;
	}

	private static void processSo(String lead, JavaDocBuilder builder, String soClassName, Class testClass,
			String soName, ArrayList<String> extParams, StringBuffer xpath, Sut sut) throws Exception {
		/*
		 * First init the system object class
		 */
		JavaClass cls = builder.getClassByName(soClassName);
		/*
		 * collect all the method include the methods of the super classes
		 */
		JavaMethod[] methods = collectMethods(cls);
		method: for (int mindex = 0; mindex < methods.length; mindex++) {
			/*
			 * ignore init/close/check (from system object), ignore constructors
			 * and method that are not public
			 */
			Annotation[] annotations = methods[mindex].getAnnotations();
			if(annotations != null){
				for(Annotation annotation: annotations){
					if(annotation.getType().getValue().equals(IgnoreMethod.class.getName())){
						continue method;
					}
				}
			}
			if ((!methods[mindex].getName().matches("init")) && (!methods[mindex].getName().matches("close"))
					&& (!methods[mindex].getName().matches("check")) && (!methods[mindex].isConstructor())
					&& (methods[mindex].isPublic())) {
				String mname = methods[mindex].getName();
				/*
				 * If the method is a getter or setter will ignore it, if it can
				 * be found in the sut as an xml tag. so setIp will be ignore if
				 * the tag <ip></ip> is found in the xml. Or if it dosn't throw exception.
				 */
				if (mname.toLowerCase().startsWith("set") || mname.toLowerCase().startsWith("get")
						|| mname.toLowerCase().startsWith("is")) {
					Type[] types = methods[mindex].getExceptions();
					if(types == null || types.length == 0){
						continue;
					}
					String xpathOfMember = xpath.toString() + "/" + StringUtils.firstCharToLower(mname.substring(3))
							+ "/text()";
					try {
						if (sut.getValue(xpathOfMember) != null) {
							continue;
						}
					} catch (Exception ignore) {
						// Ignored
					}

				}
				/*
				 * Check that all the method member are supported
				 */
				if (!isMethodParamsTypeSupported(methods[mindex])) {
					continue;
				}
				JavaParameter[] parameters = methods[mindex].getParameters();

				/*
				 * Build the test method
				 */
				Method method = new Method();
				method.setAccess(Access.PUBLIC);

				/*
				 * Set the name of the test, if exist will try new name with
				 * increment number testSomething, then testSomething2 ...
				 */
				int mfoundIndex = 1;
				String mn = null;
				while (true) {
					if (mfoundIndex == 1) {
						mn = "test" + StringUtils.firstCharToUpper(lead)
								+ StringUtils.firstCharToUpper(methods[mindex].getName());
						;
					} else {
						mn = "test" + StringUtils.firstCharToUpper(lead)
								+ StringUtils.firstCharToUpper(methods[mindex].getName()) + mfoundIndex;
					}
					if (testClass.isMethodExist(mn)) {
						mfoundIndex++;
					} else {
						break;
					}

				}
				method.setMethodName(mn);
				method.setReturnType("void");
				method.setThrowsName("Exception");

				StringBuffer paramsAsInfo = new StringBuffer();
				/*
				 * Go over the method parameters
				 */
				for (int pindex = 0; pindex < parameters.length; pindex++) {
					String pName = StringUtils.firstCharToLower(lead
							+ StringUtils.firstCharToUpper(parameters[pindex].getName()));
					Member p = (Member) testClass.members.get(pName);
					Type type = parameters[pindex].getType();

					/*
					 * Ignore method types that contain $
					 */
					if (type.getValue().indexOf('$') >= 0) {
						continue method;
					}

					/*
					 * Create the member
					 */
					p = new Member();
					p.setAccess(Access.PROTECTED);
					if (!type.isPrimitive()) {
						testClass.imports.addImport(type.getValue());
					}
					p.setType(StringUtils.getClassName(type.getValue()));
					p.setName(pName);
					p.setArray(type.isArray());
					p.setValue(getDefultValue(type.getValue()));

					/*
					 * If the member wasn't add by other method
					 */
					if (testClass.members.get(pName) == null) {
						testClass.members.put(pName, p);

						/*
						 * Add the getter and setter of the parameter
						 */
						testClass.methods.add(p.getSetter());
						testClass.methods.add(p.getGetter());
					}
					method.addParameter(p);
					if(paramsAsInfo.length() > 0){// not first
						paramsAsInfo.append(" ");
					}
					paramsAsInfo.append(p.getName() + "=${" + p.getName() +"}");
				}

				/*
				 * Set the documentation
				 */
				StringBuffer doc = new StringBuffer();
				String orginalDoc = methods[mindex].getComment();
				String methodDescription = null;
				if (orginalDoc != null && !orginalDoc.trim().equals("")) { // will take the description from the documentation
					doc.append(orginalDoc);
					String firstLine = orginalDoc.split("[\\r\\n]+")[0];
					int dotIndex = firstLine.indexOf('.');
					if(dotIndex >= 0){ // if a dot was found take it up to the dot.
						firstLine = firstLine.substring(0, dotIndex);
					}
					methodDescription = firstLine;
				} else {
					methodDescription = soName + " " + SOProcess.getMethodAsLine(mn);
				}
				if(paramsAsInfo.length() > 0){
					methodDescription = methodDescription + ", where " + paramsAsInfo.toString();
				}
				method.addAnnotation("@TestProperties(name=\"" + methodDescription.replaceAll("\"", "\\\"") + "\")");
				testClass.imports.addImport(TestProperties.class.getName());

				/*
				 * build the documentation @include annotation
				 */
				StringBuffer paramString = new StringBuffer(method.getParametersName());
				for (int i = 0; i < extParams.size(); i++) {
					if (!paramString.toString().equals("")) {
						paramString.append(",");
					}
					paramString.append(extParams.get(i));
				}
				String pString = "";
				if (paramString != null && !paramString.toString().equals("")) {
					pString = paramString.toString();
				}
				doc.append("\n");
				doc.append("@" + RunnerTest.INCLUDE_PARAMS_STRING + " " + pString);
				method.setJavadoc(doc.toString());

				/*
				 * Set the method code
				 */
				method.setMethodCode(soName + "." + methods[mindex].getName() + "(" + method.getParametersString(false)
						+ ");");
				method.setParameters(new LinkedHashMap<String, Member>());
				testClass.methods.add(method);
			}
		}
		/*
		 * Go over all the fieds (also in the super class)
		 */
		JavaField[] fields = collectFields(cls);
		for (int i = 0; i < fields.length; i++) {
			/*
			 * Look for public members that are system object
			 */
			if (fields[i].isPublic()
					&& !fields[i].getType().isPrimitive()
					&& SystemObject.class.isAssignableFrom(LoadersManager.getInstance().getLoader().loadClass(
							fields[i].getType().getValue()))) {
				/*
				 * If an array of system objects
				 */
				if (fields[i].getType().isArray()) {
					/*
					 * Create an index for the array
					 */
					String indexMember = lead + fields[i].getName() + "Index";
					extParams.add(indexMember);
					Member m = new Member();
					m.setAccess(Access.PROTECTED);
					m.setName(indexMember);
					m.setType("int");
					m.setValue("0");
					/*
					 * If not exit will add the array index setter and getter
					 */
					if (testClass.members.get(indexMember) == null) {
						testClass.members.put(indexMember, m);
						testClass.methods.add(m.getGetter());
						testClass.methods.add(m.getSetter());
					}
					/*
					 * add to the next object xpath
					 */
					xpath.append("/");
					xpath.append(fields[i].getName());
					xpath.append("[0]");
					/*
					 * Call to the requrs with the new system object field
					 */
					processSo(StringUtils.firstCharToLower(lead + StringUtils.firstCharToUpper(fields[i].getName())),
							builder, fields[i].getType().getValue(), testClass, soName + "." + fields[i].getName()
									+ "[" + indexMember + "]", extParams, xpath, sut);
				} else {
					/*
					 * add to the next object xpath
					 */
					xpath.append("/");
					xpath.append(fields[i].getName());

					/*
					 * Call to the requrs with the new system object field
					 */
					processSo(StringUtils.firstCharToLower(lead + StringUtils.firstCharToUpper(fields[i].getName())),
							builder, fields[i].getType().getValue(), testClass, soName + "." + fields[i].getName(),
							extParams, xpath, sut);
				}

			}
		}
	}

	private static String getMethodAsLine(String methodName){
		StringBuffer line = new StringBuffer();
		int currentIndex = 0;
		String toProcess = methodName;
		if(methodName.startsWith("test")){
			toProcess = methodName.substring("test".length());
		}
		boolean firstWord = true;
		while(true){
			String nextWord = getNextWord(toProcess, currentIndex);
			if(nextWord == null){
				return line.toString();
			}
			if(!firstWord){
				line.append(' ');
			} else {
				firstWord = false;
			}
			line.append(nextWord);
			currentIndex += nextWord.length();
		}
	}

	private static String getNextWord(String fromString, int from){
		StringBuffer buf = new StringBuffer();
		boolean firstUpper = true;
		boolean allUpper = false;

		for(int i = from; i < fromString.length(); i++ ){
			char c = fromString.charAt(i);
			boolean currentCharIsUpper = Character.isUpperCase(c);
			if(i == from){ // first char
				firstUpper = currentCharIsUpper;
				buf.append(c);
				continue;
			} else if(i == from + 1){ // second char
				if(firstUpper && currentCharIsUpper){
					allUpper = true;
				} else if(!firstUpper && currentCharIsUpper){ // first low and second upper
					return buf.toString().toLowerCase();
				}
				buf.append(c);
				continue;
			}

			if(allUpper){
				if(!currentCharIsUpper){ // if all upper when find lowwer char go 2 char back
					return buf.subSequence(0, buf.length() - 1).toString();
				}
			} else {
				if(currentCharIsUpper){
					return buf.toString().toLowerCase();
				}
			}
			buf.append(c);
		}
		if(buf.length() == 0){
			return null;
		} else {
			if(allUpper){
				return buf.toString();
			} else {
				return buf.toString().toLowerCase();
			}
		}
	}

	/**
	 * Init the builder object. init will load all the source zip file and,
	 * tests source directory to the builder.
	 *
	 * @param soDirs
	 *            list of directories contain zip files with java sources to
	 *            load
	 * @param srcDirs
	 *            the tests source dir to load
	 * @return the init builder
	 * @throws Exception
	 */
	public static JavaDocBuilder initBuilder(File[] soDirs, String[] srcDirs) throws Exception {
		JavaDocBuilder builder = new JavaDocBuilder();
		ArrayList<File> files = new ArrayList<File>();
		/*
		 * Collect all the source folders
		 */
		for (int i = 0; i < srcDirs.length; i++) {
			files.add(new File(srcDirs[i]));
		}
		String include = JSystemProperties.getInstance().getPreference(FrameworkOptions.PLANNER_JARS_INCLUDE);

		final String[] includeList = (include != null && !include.equals("")) ? include.split(";") : null;
		/*
		 * Collect all the zip files
		 */
		for (int i = 0; i < soDirs.length; i++) {
			File soDirFile = soDirs[i];
			File[] srcZips = soDirFile.listFiles(new FileFilter() {

				public boolean accept(File pathname) {
					if(includeList != null){
						for(String inc: includeList){
							if(pathname.getName().contains(inc)){
								return pathname.isFile() && pathname.getName().toLowerCase().endsWith(".zip");
							}
						}
					} else {
						return pathname.isFile() && pathname.getName().toLowerCase().endsWith(".zip");
					}
					return false;
				}

			});
			if (srcZips != null) {
				for (int j = 0; j < srcZips.length; j++) {
					files.add(srcZips[j]);
				}
			}
		}
		File[] srcZipFull = new File[files.size()];
		for (int i = 0; i < srcZipFull.length; i++) {
			srcZipFull[i] = files.get(i);
		}

		/*
		 * Init the builder with all the sources
		 */
		initBuilder(builder, srcZipFull);
		return builder;
	}

	/**
	 * Init the builder from a set of source pathes. The source path could be a
	 * zip of java source files or a directory include java source files
	 *
	 * @param builder
	 *            the builder to init
	 * @param sourcePaths
	 *            an array fo source files (zip file or source directory)
	 */
	public static void initBuilder(JavaDocBuilder builder, File[] sourcePaths) throws Exception {
		for (int i = 0; i < sourcePaths.length; i++) {
			if (!sourcePaths[i].exists()) { // check if the path exist
				continue;
			}
			if (sourcePaths[i].isFile()) { // A zip file
				try {
					ZipFile zipFile = new ZipFile(sourcePaths[i]);
					Enumeration<? extends ZipEntry> zipEnteries = zipFile.entries();
					while (zipEnteries.hasMoreElements()) {
						ZipEntry ze = (ZipEntry) zipEnteries.nextElement();
						if (ze.getName().toLowerCase().endsWith(".java")) {
							try {
								String code = readInputStreamToString(zipFile.getInputStream(ze));
								builder.addSource(HtmlCodeWriter.preProcessCode(code));
							} catch (Exception e) {
								log.log(Level.WARNING, "Fail to load source: " + ze.getName());
								log.log(Level.FINE, "Fail to load source: " + ze.getName(), e);
							}
						}
					}
				} catch (Exception e){
					log.log(Level.WARNING, "Fail to process file: " + sourcePaths[i].getAbsolutePath(), e);
					continue;
				}
			} else { // A source directory
				Vector<File> allFiles = new Vector<File>();
				FileUtils.collectAllFiles(sourcePaths[i], new FilenameFilter() {

					public boolean accept(File dir, String name) {
						return name.toLowerCase().endsWith(".java");
					}

				}, allFiles);
				for (int j = 0; j < allFiles.size(); j++) {
					try {
						String code = readInputStreamToString(new FileInputStream(allFiles.elementAt(j)));
						builder.addSource(HtmlCodeWriter.preProcessCode(code));
					} catch (Exception e) {
						log.log(Level.WARNING, "Fail to load source: " + allFiles.elementAt(j), e);
					}
				}
			}
		}
	}
	private static String readInputStreamToString(InputStream in) throws Exception{
		StringBuffer buf = new StringBuffer();
		int c;
		while ((c = in.read()) >= 0){
			buf.append((char)c);
		}
		in.close();
		return buf.toString();
	}

	/**
	 * Scan the sut and collect all the base system object to the map
	 *
	 * @param sut
	 *            the sut object
	 * @param sutMap
	 *            the map to collect to
	 * @throws Exception
	 */
	public static void scanSut(Sut sut, HashMap<String, String> sutMap) throws Exception {

		List<?> list = sut.getAllValues("sut/*/class");

		for (int i = 0; i < list.size(); i++) {

			String node = ((Node) list.get(i)).getParentNode().getNodeName();

			String clsName = sut.getValue("sut/" + node + "/class/text()");

			sutMap.put("sut/" + node, clsName);
		}

	}

	/**
	 * Get the default value depend on the input type. For int it will be 0: int
	 * x = 0; for String it will be null: String s = null;
	 *
	 * @param type
	 *            the type of the object
	 * @return the defualt value
	 */
	private static String getDefultValue(String type) {
		if ("java.lang.String".equals(type)) {
			return "null";
		}
		if ("long".equals(type) || "int".equals(type) || "byte".equals(type) || "char".equals(type)
				|| "double".equals(type) || "float".equals(type)) {
			return "0";
		}
		if ("boolean".equals(type)) {
			return "true";
		}
		return "null";
	}

	/**
	 * The method will generate unit tests for all the base system object, in
	 * the current SUT file. The tests can be use to create basic test scenario.
	 *
	 */
	public static void processSOGenerator() {
		/*
		 * Collect all the base system object from the current SUT.
		 */
		Vector<String> soNames = SystemManagerImpl.getAllObjects(true);
		/*
		 * if no objects were found
		 */
		if(soNames == null || (soNames.size() == 0)){
			ErrorPanel.showErrorDialog( "No system object were found in the current SUT file",(String) null, ErrorLevel.Info);
			return;
		}
		String soName = null;
		if(soNames.size() == 1){ // only single SO was found
			soName = soNames.elementAt(0);
		} else {
			soName = (String)JOptionPane.showInputDialog(
					TestRunnerFrame.guiMainFrame,
					"Please select the System Object you would like to process",
					"System Object Browser",
					JOptionPane.INFORMATION_MESSAGE,
					null,
					soNames.toArray(),
					soNames.elementAt(0));
			if (soName == null){ // it was cancled
				return;
			}
		}

		WaitDialog.launchWaitDialog("Process SUT System Objects", null);

		/*
		 * Initiate the builder. The builder load all the sources and enable
		 * object queries base on the sources.
		 */
		JavaDocBuilder builder = null;
		File testDir = null;
		try {
			testDir = new File(JSystemProperties.getInstance().getPreference(FrameworkOptions.TESTS_SOURCE_FOLDER));
			builder = SOProcess.initBuilder(CommonResources.getAllOptionalLibDirectories(), new String[] {
					testDir.getAbsolutePath(), (new File(testDir.getParentFile(), "src")).getAbsolutePath() });
		} catch (Exception e1) {
			ErrorPanel.showErrorDialog("Failed to initiate source builder", e1, ErrorLevel.Error);
			return;
		} finally {
			WaitDialog.endWaitDialog();
		}

		Sut sut = SutFactory.getInstance().getSutInstance();

		try {
			String soClass = sut.getValue("/sut/" + soName +"/class/text()");
			WaitDialog.launchWaitDialog("Process: " + soName, null);

			/*
			 * For every system object generate the base class - will
			 * include all the auto-generated tests. and the test class that
			 * can be used by the user to change the basic auto-generated
			 * implementation.
			 */
			Class testClassBase = new Class();
			Class testClass = new Class();
			SOProcess.processSystemObject(testClassBase, testClass, sut, "autogen/" + soName, soClass,
					builder);

			/*
			 * Save the 2 calsses as java file
			 */
			File srcJavaBase = new File(testDir.getAbsolutePath() + File.separatorChar
					+ testClassBase.getPackage().getPackageName().replace('.', File.separatorChar), testClassBase
					.getClassName()
					+ ".java");
			File srcJava = new File(testDir.getAbsolutePath() + File.separatorChar
					+ testClass.getPackage().getPackageName().replace('.', File.separatorChar), testClass
					.getClassName()
					+ ".java");
			Code c = new Code();
			testClassBase.addToCode(c);
			String src = c.toString();
			FileUtils.write(srcJavaBase, src, false);
			/*
			 * The tests file will be save only if it's not exists
			 */
			if (!srcJava.exists()) {
				c = new Code();
				testClass.addToCode(c);
				src = c.toString();
				FileUtils.write(srcJava, src, false);
			}
			BuildUtils.compile(
					JSystemProperties.getInstance().getPreference(FrameworkOptions.TESTS_SOURCE_FOLDER),
					JSystemProperties.getCurrentTestsPath(), System.getProperty("java.class.path"),
					testClassBase.getPackage().getPackageName().replace('.', File.separatorChar) +
					File.separatorChar + testClass.getClassName() + ".java");
		} catch (Exception er) {
			ErrorPanel.showErrorDialog("Fail to write to src file", er, ErrorLevel.Error);
			return;

		} finally {
			WaitDialog.endWaitDialog();
			builder = null;
		}
	}
	public static void main(String[] args){
		System.out.println(SOProcess.getMethodAsLine("testFindNewBug"));
		System.out.println(SOProcess.getMethodAsLine("testFindBUGInSystem"));

	}
}

redpajama_set_name: RedPajamaGithub


text:
The Official Site of the Mankato MoonDogs
Game-Day Employment
Muttnik
NWL Composite Schedule
Stats Archive (2009-2019)
MoonDogs of the Past
MoonDogs Major Leaguers
MoonDog Ticket Packages
Dog Pound Flex Plans
"Perfect 10" You-Pick-Em Package
Kwik Trip Five-Game-Pack
Pizza Ranch Family Four Pack
Dugout Club & River Valley Hearing Diamond Lounge
The Dog House Suites
Community Bank Ledger Lounge
Dog Pound Group Outing
MoonDogs Group Portal Package
Mini MoonDogs Program
Birthday Party Package
Stadium Layout
ISG MoonDog for a Day
2022 Digital Program
Live Radio Webcast (Road Games Only)
MoonDogs Online Store
ISG Field
Rain Policy
Traveling with the Team
MoonDogs All-Stars: All In
admin-mankato2023-01-25T13:00:11-06:00
Mankato MoonDogs announce five returnees for 2023
admin-mankato2023-01-25T13:00:11-06:00January 25th, 2023|
Mankato MoonDogs Announce 2023 Coaching Staff
MoonDog 2023 Schedule Breakdown
2023 Schedule is Released!
Former MoonDog Ryan Kreidler Debuts with the Tigers
admin-mankato2022-11-28T09:53:08-06:00September 6th, 2022|
Kenosha, WI — The Mankato MoonDogs sent three members of their 2016 roster to Kenosha to compete in the Northwoods League's version of the Mid-Summer Classic. This year's tilt between the North and South Division was a crowd pleaser at Historic Simmons Field, but the North Division went on to win the game 9-5 on Tuesday night.
Jake Shepski (Notre Dame) recieved a start in center field for the North Divison after competing in Monday's home run derby. Shepski started off the ballgame with an RBI single, slapping a ball right back up the middle to score Eau Claire's Daulton Varsho. The run was the third of the game, part of a seven-run first inning for the North. Shepski finished the night 1-for-3 with an RBI and a run scored. In the fourth, the switch-hitting outfield smashed a ball that died at the warning track, missing a home run by a matter of feet.
Ricky Digrugilliers (Western Illinois) appeared for the North in the bottom half of the fifth inning. Digrugilliers struck out home run derby champion Marty Bechina of the hosting Kenosha Kingfish during the inning, while allowing a run on two hits. The right hander did not issue a walk over his 0.2 innings of work for the North Divison, helping them exit the inning still up 7-3.
Jordan Kozicky (Minnesota) also entered the game in the fifth inning, replacing Willmar's Greg Lambert. During his first plate appearance in the sixth, Kozicky reached on a fielder's choice after htting the ball to third base. The ball would be thrown away allowing everyone to reach base safely. Kozicky would go first-to-third during the very next at-bat with a run scoring to give the North a commanding 8-3 lead. The University of Minnesota product finished the game 0-for-2 while playing well defensively at first base. He also gave a deep drive to left field, just missing a potential home run of his own.
With a 9-5 lead heading into the bottom of the ninth, Waterloo Bucks' and North Divison pitcher Brandon Downey loaded the bases, but was able to work out of the jam to cinch the win. Tomorrow will be a travel day for all teams, with play resuming on Thursday. Mankato will host the Waterloo Bucks for the first game of a four-game series with the Bucks.
Gates open at 6:05 PM with first pitch at 7:05 PM at Franklin Rogers Park. Don't forget to tune into The Fan Mankato (1230 AM and 103.1 FM), Northwoods League TV, or www.mankatomoondogs.com for all of the action!
The Mankato MoonDogs are a member of the finest developmental league for elite college baseball players, the Northwoods League. Playing its 23rd season of summer collegiate baseball, the Northwoods League is the largest organized baseball league in the world with 18 teams, drawing significantly more fans, in a friendly ballpark experience, than any league of its kind. A valuable training ground for coaches, umpires and front office staff, more than 150 Northwoods League players have advanced to Major League Baseball, including Cy Young Award winner Max Scherzer (WAS) and MLB All-Stars Chris Sale (CWS), Jordan Zimmermann (DET), Curtis Granderson (NYM), Lucas Duda (NYM) and Ben Zobrist (CHC). All league games are viewable live via the Northwoods League portal. For more information, visitwww.mankatomoondogs.com or download the new Northwoods League Mobile App on the Apple App Store and set the MoonDogs as your favorite team.
1221 Caledonia St.
Mankato MN, 56001
© Copyright Mankato MoonDogs. All Rights Reserved. | Privacy Policy


text:
Discover Milton Keynes
Global Outreach Foundation MK
This exhibition celebrates Black History Month, with a particular focus on the African community in Milton Keynes.
Living Archive MK worked with Global Outreach Foundation MK to raise awareness of the work they do in Milton Keynes.
Global Outreach Foundation MK (GOF MK) was established by Mike Kasibo in 2015 with the aim of supporting the social and cultural integration of all Milton Keynes community members
This exhibition looks at six aspects of the Global Outreach Foundation MK:
1. African Diaspora Day. This event was launched in August 2017, with the aim of uniting African communities in Milton Keynes and also offering them a platform to showcase their culture to a wider Milton Keynes audience. Its aim is also to support and inspire young people by educating them about their own identity and heritage.
2. African Forum is aimed at bridging the gap between the Police and the African community. The Forum gives the African community a platform to positively engage with the Police.
3. Breakfast Club runs every first Tuesday of the month from Great Linford Parish Council. Its aims are to provide a platform for people to voice issues that affect them, promote one-to-one conversations and offer support to build community cohesion.
4. GOF MK Football is aimed at getting young people off the streets and bringing them together for social and cultural integration. It also helps them to learn anger management skills, team-work, listening, respect and time keeping.
5. Black History Month 2017 will focus on the contribution of African people to the British society. Locally the focus will be on African people within Milton Keynes and the surrounding areas.
6. The Languages of Africa. Not only is Africa the second most populated continent in the world with over one billion people, it is also home to the highest linguistic diversity in the world, with over 1500 different languages.
This exhibition runs until 10th November 2017 at Milton Keynes Central Library


text:
My railway back story
An outline of how railways have been my hobby, for more years than I like to admit to, is set out below, hence the page title of railways and me.
My family's railway interests began when I was bought a Hornby Dublo train set for Christmas by my Great-Grandfather in 1955. At age 3 I had limited interest but this blossomed thanks to an interested father who was sufficiently fired with enthusiasm himself to encourage my interest as I grew, and other knowledgeable family friends.
Although our family roots were in the north we lived near the Southern Region main-line to Southampton and I was regularly taken to the line side and have heady memories of the busy scenes of passenger and heavy van trains etc. We used the train for trips to London and to Southampton. One regular treat was coffee, served by a steward from proper silver coffee pots, in the Restaurant Car on the Up Royal Wessex to London. I also went on some school trips by train.
Family holidays with relatives in the West Riding also gave a good background to steam in the Pennines and over the Settle and Carlisle. Dad and I managed to get a trip to Doncaster Works Open Day from Leeds one summer holiday and managed to be hauled outward by the A3 Isinglass and back behind Mallard. Great Grandfather worked at Cortonwood pit near Barnsley and we would sometimes go down and see the shunting engines, the 8 coupled mainline engines and the Woodhead electrics at Wath. I also remember the massive viaducts of this area – now all gone. The industry in a whole region swept away by so called progress and the idea that using cheap imported coal and steel is better than employing your own countrymen!
Due to my father's job as an art school lecturer he had an official permit giving group access to the dockside in Southampton and this allowed me in with him as an accompanying "student" although, as I was considerably under college age, the dock gate police must have been fairly liberal. I now realise, looking back, just how lucky I was to see both the great Cunarders, and the other liners, from close up. In the docks there were the USA tanks shunting and boat-trains to/from their own station within the Ocean Terminal building. I recall Nelsons on these trains as well as the predictable Bullieds. M7s rattled along the Itchen Valley, moguls clanked past with strings of loose coupled vans and trucks and the diminutive B4 which shunted Winchester yard.
GW and LMS types were also seen on inter-regional trains and GW stock used to come off the Didcot line via Winchester Chesil and through Shawford Junction. City of Truro was in use for a while on this line to keep it in trim when first preserved. My mate Clive's Dad was signalman at the junction although we didn't go down that often to avoid getting him into trouble. The site of the box and junction is unrecognisable now under the M3 motorway although Hockley viaduct used by the DN&S trains remains preserved and is, I believe, a listed building due to being an innovative structure!
Steam was run down and faded out on the Southern, but there were a few last big bangs. I don't think I will ever forget seeing Mallard at full speed westbound through Andover (93 mph *) or Clan Line belting southbound through Shawford right at the end.(105? mph*) Fawley oil refinery sent loads out by rail and the 9Fs thrashing their 50 oil tanker trains from a standing start (Out of the Allbrook loop) and up the gradient through Shawford are also a not to be forgotten experiences. I did manage to "cop" all the Bullieds but Dad missed one. (I like to think it's appropriate to his memory somehow that this is one of the preserved ones – City of Wells)
One railway visit today that does make me feel old though is going to the Mid Hants – a railway which I traveled over for a while in BR days going to a holiday job in Alresford and also up to Aldershot to see them play York City (my team) at football. Most of the railway is preserved but Aldershot dropped out of the the league for a while as have York too.
For a while after the end of steam my interest waned even though I used the new electric trains daily to get to college in Eastleigh and later occasionally to get to work. However it was rekindled by the North Yorkshire Moors Railway after a move north in 1972. I worked regularly as a volunteer at Grosmont shed from 1973 until work and family commitments began to get in the way circa 1984. The NYMR is the best line in the country, without a doubt, and I still visit it every year for the summer holidays. Seven and eight coach trains at full chat up steep gradients through fantastic scenery – what more can you want!
With interest rekindled even modern traction began to be interesting in the 70s. However now these diesels have also gone, farewell Clayton's, 20s, 25s, 31s, 33s, 40s, 45s, 46s, 50s and 55s. Even the humble DMUs have gone and we have lost the grandstand view through the front windows.
Loco hauled is itself now fading out and 1999 was spent photographing the last season of 37s to Weymouth, pictures of 73s on the Gatwick's and 47s on the Saturday Virgins. The Mark I EMUs were also doomed and so on I went to chase CIGs, VEPS etc., all now gone too. Who would have thought that in July 1967 as we watched steam go out and cursed the new "trams" even the "trams" would become a nostalgia item!
Railway photography
My first railway photographs were taken at Leeds Central in August 1962 and featured the A4s Walter K Whigham and Silver Link – taken with a Box Brownie given to me by my Grandfather. I outgrew the Brownie and photography evolved through folding bellows cameras (Zeiss Ikonta & Nettar using 120 roll-film). I was not a regular photographer until I moved into 35mm in 1977 with an S1a Pentax and later Spotmatic and don't care to think about all the things I didn't photograph even into the 1980s. For a long time I used Nikon kit , but not auto-focus, and have how gone digital with an Olympus model to get auto-focusing and an eye-piece which is adjustable so I can photo without my glasses.
Although not a highly skilled modeller, I also dabble with model railways and show my Hornby-Dublo collection from time to time at model railway exhibitions. With model railways it is the planning and background research I enjoy the best, especially the planning of plausible "might have beens". You will also see from the content of other sections of this/related web-sites that I am involved in the administration side of the Waggonway Research Circle, The Stephenson Locomotive Society (SLS) and the York Model Railway Show so the hobby does keep me fully involved.
My current interests (2016) are early railways, in particular those dating from before the steam age. As you can see from my writing pages this has also led to published works on the Tudor and Stuart era mining at Wollaton in Nottinghamshire and the career of Huntingdon Beaumont. These interests feature elsewhere on the web-site.
Many years have passed since Christmas 1955 and railways remain my main, but not sole, hobby interest for which I thank my Great Grandfather, my Dad and his long standing friend Ken Macdonald, for firing my enthusiasm. Unfortunately they have all passed on; but yes I do still have the venerable Dublo Silver King and N2 tank I was given all those years ago – and what's more they still run. The Classic Train Set.
The "Anorak" tag.
My one annoyance is that due to the behaviour of a minority our hobby has been garnished with the tags of "sad" and "anorak" and the rest of us have to be careful in admitting to it and talking about it. Hopefully today's kids will be inspired by the Thomas revival, drift through their teens without completely loosing interest, and will return to the fold as they mature. Don't bore people rigid with debates on the number of rivets on the side of a tender, or other minutiae, because they don't care and will justifiably call you a nerd! Instead pass on the pleasant aspects of our hobby such as the joys of walking in the countryside to a line side spot for a quiet afternoon of photography, the gut churning sight and sound of a big steam engine working hard on lines like the NYMR, the satisfaction gained in good model making etc, – be positive – swing the balance our way.
Learn the minutiae by all means, such knowledge is needed and should be recorded for posterity, however don't use it to bore an inappropriate audience!
Last page update 14 October 2016.
* Mallard's speed, as quoted above, is that given in published sources, including driver Bert Hooker's memoirs and a contemporary log in Railway Magazine. One of the railway magazines later published a log showing Clan Line's speed, which I recall as 105. However I can't find my copy of this log to check and therefore that figure is included from memory only. However logs showing "end of steam" speeds of 100 plus by Bullied pacifics were published in editions of the Railway Magazine in 1967 & 68 (which I have original copies of) so it is not an implausible speed.


text:
Q: unpivot with counts in hive columns transpose I have table with data needs to unpivot and get aggregated counts.
Source table:
primary_id   sys_1   sys_2   sys3_   sy5     sys100
newa889 0   1   0   1   0
den7899 1   1   1   1   0
geo8988 1   1   1   1   0
atla8766    0   1   0   1   1
chic7898    0   1   0   0   1

Desired output:
sys_name    count(primary_key)  flag_0_or_1
 sys_1  129999  0
 sys_1  544545  1
 sys_2  23333   0
 sys2   23322323    1
 sys3_  332233  0
 sys3_  323232  1
 sy5    32332   0
 sy5    32323   1

Looking to get the data transpose get 0's and 1's counts from each sys_ column.

redpajama_set_name: RedPajamaStackExchange


2014: AAML Advanced Discovery Seminar: CBA Appellate Fundamentals: An Introduction to State & Federal Practices; CCND Staying on the Right Side of the Law: Ethics for Mediators & Collaborative Professionals; FCBA: What Every Attorney Should Know about Mental illness; Lunch with Family Law Judges; GAL Reform; A Review of the Impact of the 2007 Changes to Conservatorship Law; How to interview children; Understanding 18 US Code 2252A and its impact on family law cases; Basics of e-filing electronically; Understanding DCF.
2015: Family Law Arbitration: How it works, how it can benefit clients and counsel and what to expect from the arbitrator; What Judges wish you knew then…but at least you'll know now; The Judicial Perspective on Courtroom Litigation Skills & Techniques – the Do's and Don'ts; When Domestic Issues Result in Criminal Charges. Professional Organizers; Arbitrator Decision Making: Unconscious Psychological Influences and what you can do about them; DWI LAW: One for the Road! Connecticut's New Ignition Interlock Device Program for DUI Offenders; Mandatory Arrest Requirement provided for by Conn. Gen. Stat. Ann. § 46b-38b (A); Improving Lawyers' Judgment: Is Mediation Training De-biasing?
2016: FCBA: Distinctions/differences between Private Mediation and Court Mediation; Stamford J.D.: Open Discussion on Family and Civil procedures; CBA: Administrative Law Practice before Department of Children and Families.; Making Conflict Work; harnessing the power of disagreements; Connecticut Practice Book New Rules Revisions; AAML Advanced Financial Issues Seminar; Quinnipiac Law School Domestic Violence, Spring 2016, Hon. Judge Jane K. Grossman and Assistant State's Attorney Marc G. Ramia. Bench Bar Symposium on Professionalism.
2017: CBA: Cyberattacks: A Threat to Every Law Firm; FCBA: What every consumer lawyer should know about bankruptcy; Darien Library: Affordable Care Act Panel Discussion, Maura Carley, MPH and State Representative Terrie Wood; David Laitin, Professor, Stanford University, How Civil Wars End; Q LAW: Opportunities for Enhanced Practice: Family Court Response to Domestic Violence.
2018: CT AAML 2018 Anatomy of a Trial; Tax Cuts and Jobs Act, Deep Dive.
2019: Nassau County Surrogates Court: Contested Accounting Proceedings.


Discussion in 'Business Office' started by Office, Nov 6, 2018.
Tuesday, November 6th, 2018. The main risk will be damaging wind gusts and isolated tornadoes between 9 AM and 3 PM.
• A cold front will pass through our area today.
• A broken line of showers and a few thunderstorms is expected, and may cause isolated damaging wind gusts or a couple tornadoes, particularly near and east of Interstate 95 through early afternoon.
• Isolated severe thunderstorms are possible today.
• Gale force wind gusts are possible over the waters.
• Isolated wind damage west of the I-95 corridor may be confined to the higher terrain.
-The region has experienced extraordinary high rainfall over the past several months causing saturated soil. A significant rain event could cause numerous flood related incidents. High winds coupled with heavy rain could cause downed powerlines with property damage and power outages.


I am a people photographer, I photograph people most days of the week and in particular I photograph business portraits and headshots. If you need a business portrait for your website or marketing materials, staff portraits and headshots, staff portraits in a work environment, or perhaps visitors or residents at your place of work then please get in touch.
Candid or posed shots of people, showing natural expressions, are a speciality of mine and I'm also as happy photographing people indoors as outdoors, it depends on the look you're trying to achieve. I can bring a white backdrop and lighting if you need it (see also corporate photography).
Take a look at my people gallery for an idea of the kind of portraits I can take for you and please get in contact on 07825 549681 or victoria@vjtphotography.co.uk.


text:
Goh Ballet's iconic The Nutcracker returns to the stage in downtown Vancouver for the 2016 Holiday Season
October 16, 2018 November 26, 2016 by MyVanCity
One of British Columbia's most iconic traditions graces the stage once again this holiday season as Goh Ballet's The Nutcracker returns to The Centre in Vancouver for a limited run from December 15th to 20th, 2016. Tickets are currently available through Ticketmaster.
Under the leadership of Executive Producer Chan Hon Goh, former Prima Ballerina with the National Ballet of Canada and the artistic staging of Emmy-award winning choreographer Anna-Marie Holmes, The Nutcracker returns for its eighth year of spectacular magic and fun for the whole family.
"In eight short years, Goh Ballet's The Nutcracker has quickly become a not-to be- missed holiday tradition for thousands of families from across the Lower Mainland," says Chan Hon Goh, Executive Producer of The Nutcracker. "Come join our cast of hundreds of local and international performers as we take you away on a magical journey with Clara and her beloved Nutcracker."
Goh Ballet's The Nutcracker will feature performances by internationally renowned principal dancers from the prestigious National Ballet of Canada, Jurgita Dronina and Guillaume Côté, performing together as the Sugar Plum Fairy and the Cavalier Prince. Members of the Vancouver Opera Orchestra will provide live musical accompaniment of Tchaikovsky's world-renowned Nutcracker Suite.
Running nightly from December 15th to 20th, with matinee performances as well on weekends, The Nutcracker is sure to sell out so make sure to purchase your tickets before they're gone! You don't want to miss Goh Ballet's traditional rendition of this classical masterpiece.
Goh Ballet's The Nutcracker is also proud to announce the support of an all-new Production Title Sponsor, De Beers Diamond Jewellers.
"We would like to offer recognition and sincere thanks to De Beers Diamond Jewellers, for demonstrating corporate care and leadership in supporting the arts." adds Ms. Goh.
Dates and Times of Performances:
December 15, 16, 19 and 20 at 7:30pm December 17 at 2:00pm and 7:30pm December 18 at 3:00pm and 7:30pm
The Centre in Vancouver for Performing Arts 777 Homer Street
For more information and to purchase tickets, visit: www.GohNutcracker.com/
About Goh Ballet:
Since 1978, Vancouver, Canada has been home to the Goh Ballet, a vibrant, innovative and diverse dance organization. Under the direction of Chan Hon Goh since 2010, the organization is following the vision of its founders while expanding on current artistic aspirations. A company that pursues technical and artistic excellence while raising cultural awareness in our communities through performance productions, the Goh Ballet is synonymous with excellence, training talent and fostering the presentation of classical ballet. It provides extraordinary opportunities for dancers to reach their full potential, while contributing to the artistic well being of our city and country. At the forefront of the arts community, Goh Ballet has been invited to perform around the world, including tours to the People's Republic of China, Hong Kong, Malaysia, Singapore, Japan, France and the U.S.A.
#FridayFavourites from December 2 to New Year's Eve Vancouver Academy of Music Symphony Orchestra with Goh Ballet Presents the Children's Symphonic Classic #FridayFavourites what's happening this week November 24 – December 2 Ballet BC Gives Back This Giving Tuesday DIWALI IN B.C. TO TAKE PLACE OCTOBER 3 TO NOVEMBER 17
Categories Arts and Culture, Dance, Events, Family, Theatre Tags De Beers Diamond Jewellers, GOH Ballet, The Nutcracker
RING IN THE HOLIDAY IN WESBROOK VILLAGE
Sparkle this festive season with Redfish Kids' Holiday 2016 Collection


text:
Change Location × Luxembourg
Esch-sur-Alzette Events /
MARK KNOPFLER Event Time & Tickets
Mature Level: Machine-set Level 2
This event has been marked mature level 2 due to the following, "".
MARK KNOPFLER in Esch-sur-Alzette
ROCKHAL - CLUB
5 Avenue du Rock'n'Roll
Esch-sur-Alzette, Luxembourg 4083
The Rockhal and the artist want to ensure that tickets for this show are available in their entirety to genuine fans on a first come first served basis, at a normal price. Both are determined that for this show no tickets find their way to traders or appear on the secondary market at overpriced rates.
Thus the Rockhal applies for this concert a time delay in Print@Home tickets to minimise the time frame in which fraudulent activities could occur and keep the tickets off the secondary market. Bought tickets will be available to be printed at home 14 days prior to show day, starting on June 5th 2019. To make this as easy as possible for you we will then send you an email with the direct link to print your tickets. Thanks for your understanding, we are looking forward to welcome you to the show!
PLEASE MAKE SURE TO BUY YOUR TICKETS ONLY ON OFFICIAL TICKETING WEBSITES!
Mark Knopfler, one of the most critically and commercially successful artists of all time, has announced a world tour with his band in 2019. The 'Down The Road Wherever' tour commences in Barcelona in April and will continue all over Europe finishing in Verona in July before heading to the US through August and September. On June 20th 2019 he will be back at the Rockhal.
Knopfler, who will release his ninth solo studio album 'Down The Road Wherever' on 16th November, has always viewed touring as an integral part of the process of releasing an album, going from songwriting through recording and ending up on the road performing old and new songs. Says Mark:
'My songs are made to be performed live. I love the whole process of writing them alone and then recording them with the band, but ultimately the best part is playing them to an audience live. I enjoy the whole circus, travelling from town to town and interacting with this group of players is a total pleasure. I'm really looking forward to it.'
Knopfler, who recorded 'Down The Road Wherever' in his west London studio, British Grove, will be performing on tour with an expanded ten-piece band most of whom have been working with him for more than two decades: Guy Fletcher (keyboards), Richard Bennett (guitar), Jim Cox (piano), Mike McGoldrick (whistle and flute), John McCusker (fiddle and cittern), Glenn Worf (bass), Danny Cummings (percussion) and Ian Thomas (drums). New additions will be Graeme Blebins (saxaphone) and Tom Walsh (trumpet)
'Down The Road Wherever' features 14 unhurriedly elegant new Knopfler songs inspired by a wide range of subjects, including his early days in Deptford with Dire Straits, a stray football fan lost in a strange town, the compulsion of a musician hitching home through the snow, and a man out of time in his local greasy spoon cafe. Mark has a poet's eye for telling details that infuse his songs with his unique psychogeography – 'where the Delta meets the Tyne' as he describes it – and his warm Geordie vocal tone and his deft, richly melodic guitar playing are as breathtaking and thrilling as ever. The tour will see Mark and the band play a selection of new songs, mixed in with some well-known nuggets from his extraordinary back catalogue and one or two surprises from the far flung corners of his repertoire.
Hailed as one of the greatest guitarists of all time, Mark Knopfler has sold in excess of 120 million albums across his Dire Straits and solo career, and many of his songs have become standards, including 'Money For Nothing', 'Sultans Of Swing', 'Romeo & Juliet' and 'Walk Of Life'. He has released eight solo albums as well as recording 'Neck And Neck' with guitar great Chet Atkins, and collaborated with Emmylou Harris on 'All The Roadrunning'. He has created several film soundtracks, including 'Local Hero', 'The Princess Bride' and 'Altamira'. In addition to producing his own records Knopfler has also produced albums for Bob Dylan and Randy Newman amongst others. Knopfler was made an OBE in 1999 and was given the prestigious Lifetime Achievement Award at the Ivor Novellos in 2012.
Cost: Standing: 63€ + 5€ presale fee
Seated: 90€ + 5€ presale fee
Event details at rockhal.lu!
at ROCKHAL - CLUB
The Inside Info on the New ...
Chorale « Concordia - The V...
in Luxembourg (4083)
Volbeat Esch-Sur-Alzette
Sorry, you missed MARK KNOPFLER at ROCKHAL - CLUB.
Demand that ROCKHAL - CLUB gets added to the next tour!
Demand that Esch-sur-Alzette gets added to the next tour!
You missed MARK KNOPFLER at ROCKHAL - CLUB.
We're generating custom event recommendations for you based on MARK KNOPFLER right now!


text:
Michelle Shin to play in Symetra Tour
The Canterbury School graduate Michelle Shin has been added to the field of the Symetra Tour's the Chico's Patty Berg...
Michelle Shin to play in Symetra Tour The Canterbury School graduate Michelle Shin has been added to the field of the Symetra Tour's the Chico's Patty Berg... Check out this story on news-press.com: http://newspr.es/PNTeNa
ED REED, EREED@NEWS-PRESS.COM Published 4:56 p.m. ET April 8, 2014 | Updated 5:01 p.m. ET April 8, 2014
In this file photo, Michelle Shin tees off the 10th hole at the 2009 U.S. Women's Open in Bethlehem, PA., on June 9.(Photo: news-press.com file photo)
The Canterbury School graduate Michelle Shin has been added to the field of the Symetra Tour's the Chico's Patty Berg Memorial at Cypress Lake Golf Club from May 2-4.
The 144 players in the field will compete for a $100,000 total purse. The winner will take home a check for $15,000 and take a significant step towards an LPGA Tour card for the 2015 season.
"It's awesome that I get to play in a Symetra Tour event in my hometown, it's where I grew up for 15 years," said Shin. "It's one of the top courses in Fort Myers; it's definitely a hidden gem."
Shin graduated from Canterbury School in 2009. She was a three-time The News-Press All-Area Golfer of the Year.
10 Gators primed for breakout season in 2020


Regardless of which electronic healthcare record (EHR), clinicians are spending more time in front of the computer and less time face-to-face with patients. This hurts practices through lost revenue, reduced clinician and patient satisfaction, and decreased charting accuracy.
Augmedix gives clinicians a team of real-time, quality-controlled, and customized remote scribes. Our productivity platform takes care of many major administrative tasks.
Augmedix takes on documentation and administrative tasks so that clinicians can focus on what they care about most—helping patients. This additional time allows for more patient visits and more quality time with each person.
Augmedix is tied into all major electronic health records. We fit into existing workflows and alleviate the technology burden and friction for clinicians.
There are a lot of demands on a clinician's time today. We see that a lot of clinicians use the additional time to get home earlier and return balance to their lives.
With my remote scribe, I am able to spend more time with my family.
My remote scribe allows me to spend more time with my patients. I love it.
I cannot imagine my career without my remote scribe. It slashes my work in half.
Augmedix is a technology-enabled service for health systems and providers. We are on a mission to re-humanize the doctor-patient relationship and address many of the largest pain points in the US healthcare system. The Augmedix service saves doctors more than 10 hours per week, enabling them to focus more time on care with more patients.
© 2019 Augmedix, Inc. All Rights Reserved.


> from disks 2 through 4?
install program from passing the baton to Disks 2, 3, and 4.
bit of a baby about this.
> from disks 2 through 4?  The background follows.
> of this was an issue then.
> more efficient, deterministic path to a core-plus installation.
> Please help to ensure a seminal and enduring holiday summary.


text:
Wynonna Judd on Missing Mom Naomi: 'She's with Me' (Exclusive)
On Wednesday, Wynonna Judd hit the red carpet at the 2022 CMA Awards!
"Extra's" Alecia Davis spoke with Judd, who opened up about missing her late mother, Naomi Judd.
Wynonna shared, "I saw a picture of her the other day and it said, 'I've lost 10 pounds, Mom.' I still want her approval, I still look at her like, 'Oh my God. I'm trying.' She's with me."
"I don't think our relationships with our mom ever changes," Wynonna stressed.
As for what she was excited for to the most at the CMAs, Judd answered, "I'm looking forward to getting a picture with Peyton Manning because that's universal… It's my calling card to get out of trouble."
Wynonna was also looking forward to seeing Miranda Lambert, saying, "It's her birthday party tonight. She invited me and I'm gonna go and we'll see what happens."
When asked if she had any predictions for the Entertainer of the Year, Judd answered, 'I don't make predictions. It just never works."
Judd also opened up about how she feels performing at her concerts, saying, "When they love on me and sing back to me… I am transformed into something not of this world."
Pics! The 56th Annual CMA Awards View Gallery Gallery
#CelebrityNews #TrendingStories #WynonnaJudd


text:
Ex Machina. Review.
March 6, 2015 March 6, 2015 / markgorman	/ 2 Comments
You can lust after robots.
That is one thing this intelligent movie proves.
It's not just from the pen, it's now from the eye, of Alex Garland (The Beach, 28 Days Later scriptwriter) as he makes an impressive directorial debut.
The story is about Caleb, a star employee of Google (not exactly hidden), who wins a week's stay at the owner's secluded mansion in the country to work on a secret project. This turns out to be the latest iteration in Oscar Isaac's (Google boss) quest to create the perfect AI robot.
Caleb's role in all this is to perform a Turing test on the robot (The Turing Test is when a machine attempts to fool a human being into thinking it is human). This is helped by the fact that the robot in question is the dazzlingly beautiful Ava, played by Alicia Vikander. Her screen presence, often shorn of hair, is electrifying throughout.
Naturally the test escalates as Ava appears to seduce Caleb (and who can blame him for falling for her allure).
The film asks us to consider whether artificial intelligence can rise above the purely mechanistic and create genuine emotion and human thinking, doing so in rich, but sterile, surroundings.
Is Nathan (the boss) playing God and can Caleb (probably a deliberately biblical sounding name) stop what may be one step too far for humankind?
And if Ava really is capable of human thinking can she outwit the experiment and establish authority of her own. All is revealed.
Much has been made of the film's title – that it is a meaningless construct – but it seems fairly obvious to me.
Can the machine (Ava) become an ex-machine?
H is for Hawk. Book review
March 6, 2015 March 6, 2015 / markgorman	/ Leave a comment
H is for Help.
H is for Haunting.
Either could have been the title, but the fundamental of this book is the hawk that occupies it's central plot.
Mabel is a young goshawk bought by Helen MacDonald in the wake of her father's death. She sets herself a distraction from her profound grief to train this wild beast to the exclusion of everything else in her life.
It's a return to her childhood where she had a fascination for hawking, partly fuelled by a 1950's treatise on the subject written by closet homosexual T.H. White and author of what became both Camelot and The Sword in the Stone. It's a book she disliked intensely at the time but that she has come around to as she sets out to make Mabel a controllable accomplice (she'll never be a pet).
I've never read a book even remotely like this. Macdonald is a poet and that certainly comes through in some of the long descriptive chapters that capture her state of mind (not healthy) and the world she is drawn into.
Rarely can anyone have written such a loving description of the English countryside with its unwritten rules, its foibles and its power.
In fact rarely can a book like this have been written.
It operates on three levels. An unburdening of Macdonald's grief for the death of her beloved father. An unsympathetic biography of T.H. White and a rip-roaring coaching manual on goshawk rearing.
It's not an easy read but it's a profound one and it threatens to become a modern classic in a category all of its own.
I would highly recommend it.
Intelligent Horror. It Follows
It Follows begins how it ends.
Mysteriously.
A young woman runs from her suburban home half dressed, terrified, confused.
She crosses the road haphazardly, then runs back to her house picks up her bag and escapes in her car, with her father shouting after her trying to work out what the hell is going on.
It is not explained.
The movie then unfolds. No captions. No narrative. It just unwraps itself in a way I have never seen in horror.
Whilst it nods at convention (the music is unquestionably influenced by early John Carpenter and the cast is a bunch of Sorority kids) it is completely original in every other way.
It's beautifully shot, carefully scripted without a single ham line and has a plot that is entirely unpredictable.
The basic premise is this. A "thing" (monster, demon, zombie, entity: call it what you like) is passed between couples having sex. And then it follows the 'host' until it is passed on to the next host, again following sex.
It manifests itself as a sort of walking zombie that follows the host. Should it catch them it will not only kill them but possibly all those in the chain behind.
That's easy to understand. What isn't is how our heroine Jay, played beautifully by Maika Monroe, attempts to resolve her plight. Really, this is a rare horror performance, understated and properly acted. Her fear is palpable. And she doesn't go wandering into unlit basements every five minutes. It's up there with Jamie Lee Curtis in Halloween.
However, the plot becomes pretty confusing, but it kind of doesn't matter because throughout this great movie you're just taken in by its vitality, outstanding cinematography, freshness and the endless MacGuffins.
Seriously there must be 20 times you're expecting to be scared to death (Hitchcock style musical and SFX builds) only for nothing to happen.
Anyone walking slowly in this movie could be the 'entity' and that's repeatedly used as a trick.
Another great thing about it is the setting in Detroit. It's never overplayed but it adds a decaying creepiness that is entirely appropriate.
It's a great addition to the world of horror. Not as terrifying as some say, but absorbing and pure quality from start to startling finish.
Good luck Emperor Design