text:
The Muir Russell FAQ states:
Do any of the Review team members have a predetermined view on climate change and climate science?
No. Members of the research team come from a variety of scientific backgrounds. They were selected on the basis they have no prejudicial interest in climate change and climate science and for the contribution they can make to the issues the Review is looking at.
In respect to Team member Geoffrey Boulton, General Secretary of the Royal Society of Edinburgh, they say:
Professor Geoffrey Boulton has expertise in fields related to climate change and is therefore aware of the scientific approach, through not in the climate change field itself.
Boulton's unawareness of the "scientific approach … in the climate change field itself" – a complaint that others have also made about Team climate science – has not prevented him from talking at considerable length about climate change.
In addition to Boulton presentations listed elsewhere e.g. here here , I draw readers attention to his presentation at the Royal Society of Edinburgh on the eve of Climategate (Oct 29, 2009) as part of a program entitled "The impact of climate change on Scotland."
The three presenters were:
Professor Geoffrey Boulton OBE FRS FRSE, General Secretary, The Royal Society of Edinburgh, and Member PM's Council for Science and Technology.
Professor John Mitchell OBE FRS, Director Climate Science, The Met Office.
Dr Andrew Dlugolecki, Visiting Fellow, Tyndall Centre, University of East Anglia and Chartered Insurance Institute
Boulton's presentation was entitled Adapting to climate change: the space between science and politics ppt here. There is an online summary of Boulton's remarks here:
PROFESSOR BOULTON summarized the present position. We have the evidence, we have a consensus on scientific interpretation, we have the investment, we know (Stern) that mitigation now rather than later is cheaper. But, we have not sorted out the politics and started to adapt behaviour to minimize risks. We cannot do this without public support. If we fail, we will be risking the consequences of catastrophic climate changes. The problem is that these consequences will not be felt at first in polluting countries, such as Scotland. The objectives of the RSE inquiry are to map out the ground between where we are now and where we need to get to in order to achieve the targeted Greenhouse Gas (GHG) reductions; and understand how to engage the public so as to enable politicians to make the right choices. Change is happening now – see the studies of water flow in the Ganges and the effects on agriculture. Kyoto failed to reduce atmospheric CO2; Copenhagen needs to do much better. But will it?
Surveys show only 33% of the public are concerned about climate change, and only 18% alarmist. The issue is lower in priority than other seeming threats. A problem for public understanding is that climate change science is complex – not simple cause and effect with self evident outcomes. We cannot fully explain the relationship between and the extent of natural and anthropogenic variations in the atmosphere. The public think that computational modelling which underlies projections is only a technical tool thought up for the occasion; they do not understand the universal use of modelling to project likely consequences. A mitigation strategy must seek to meet emission targets, minimize costs, and maximize energy security. The policies which would enable us to meet these aims should include economic incentives, freedom to use all technical means, and full transmission to the public of the need to stop the misuse of resources. But we must be positive about the future, not simply fearful and negative.
Speakers agreed that it was vital to get children to understand the issues in climate change and discuss the actions needed to meet objectives. The Inquiry certainly proposed to involve schools. Children could not only pressure parents but could themselves imagine how things might be done differently, and how actions might improve life, not threaten it. But we need to be careful about how they are taught and the basis of their understanding. We must not attempt to tell teachers how to teach, but they must be able to appreciate the scientific method, the analytical tools that are used and the importance of exploring unexpected relationships
The role of the media was also raised. How much time should be spent attempting to educate them and rebutting the inevitable publicity generated by sceptics? Was the BBC, with its remit of fair coverage, too lenient with sceptics? Sceptics must be answered, but politely. Rancour and exaggeration would backfire, and result in loss of confidence in arguments.
The Scotsman today:
Prof Boulton said he had been open about having worked at the School of Environmental Sciences at UEA between 1968 and 1986.
"Since then, I have had no professional contact with the University of East Anglia or the Climatic Research Unit," he said. He added tha that he had "declared my current view of the balance of evidence: that the earth is warming and that human activity is implicated. These remain the views of the vast majority of scientists who research on climate change in its different aspects".
But he added: "As a sceptical scientist, I am prepared to change those views if the evidence merits it. They certainly do not prevent me from being heavily biased against poor scientific practice, wherever it arises."
The second speaker at the session was John Mitchell of the Met Office, who has been the topic of much discussion at CA. His obstruction of FOI requests was covered by David Rose of the Daily Mail last Sunday. As CA readers know, Mitchell, of course, was the Review Editor of Briffa's chapter in AR4. It was his Review Comments that were originally sought in David Holland's FOI. Mitchell notified Phil Jones and Keith Briffa (and Susan Solomon) of Holland's original pre-FOI inquiry in March 2006. On June 2, 2006, three days after Jones asked Briffa, Ammann, Mann and Wahl to delete correspondence pertaining to AR4, the Met Office said that Mitchell had deleted all his correspondence pertaining to AR4. It's not unreasonable to wonder whether there might be a connection. However, the Russell inquiry did not include this in its "distillation" of questions.
The third speaker was Andrew Dlugolecki, Visiting Fellow, Tyndall Centre, University of East Anglia – the university with which Boulton has had "no professional contact" with since 1986.
Bishop Hill reported that Boulton's office is three doors away from Gabi Hegerl. There's a definite dig-here. Hegerl and her husband Tom Crowley were hired by the University of Edinburgh in 2007 at a very senior level. They are authors of a Hockey Stick study (one that is used in a Royal Society of Edinburgh briefing paper on Copenhagen dated December 2009) – more on this later. Crowley is mentioned 125 times in the Climategate Letters and Hegerl 41 times. It seems implausible that Boulton was not involved in the decision to invite and/or hire Crowley and Hegerl to the University of Edinburgh while he was a Professor in the very department to which they were hired.
Boulton is quite entitled to hold his present views on climate change and to ask government to adopt policies based on the views of institutions like various Royal Societies. (I've said, on numerous occasions, that, if I were a Minister of the Environment, I too would be guided by advice from accredited scientific institutions.)
But I do not agree that Muir Russell can then say that Boulton holds "no prejudicial interest in climate change and climate science". Boulton clearly believes that climate change is an important issue and that policy changes are urgent and important. He's entitled to that belief.
Equally it's not unreasonable for third parties to be concerned that someone holding such beliefs will have a considerable temptation to overlook or minimize any transgressions that may have committed by the (Hockey) Team.
There are thousands of people in the world who are qualified to serve on this inquiry who have never met Jones, Briffa and/or Mitchell; who haven't worked for 18 years at the University of East Anglia and who aren't currently active in climate change policy advocacy – people who meet Muir Russell's criteria of having "no prejudicial interest in climate change and climate science". Boulton isn't one of them.


text:
The old-fashioned notion that honesty was an integral part of policing in the UK has been comprehensively swept away over the past few years, as corruption scandal after corruption scandal has emerged into the public domain.
Many of the worst public outrages concern police forces in Yorkshire. The Hillsborough Disaster, the Battle of Orgreave and Rotherham Abuse failings will forever stain those who wear the South Yorkshire Police uniform.
Their neighbours in West Yorkshire (WYP) have an unenviable record of 'fitting-up' innocent people for serious crimes they didn't commit and this stretches back for decades to Stefan Kiszko and Judith Ward. Investigative and prosecutorial misconduct come easily to this force and one of the worst case ever to come before the courts was also down to them. Never before – or since – has a police force been so roundly and completely condemned by law lords as they were in the Karl Chapman supergrass case. Probably better known now as Operation Douglas.
Most recently, the confirmation that the jailing of one of their own most promising young constables, PC Danny Major, was corruptly grounded, takes WYP to depths in policing criminality rarely plumbed before.
The discredited West Yorkshire Police also share with North Yorkshire Police (NYP) the unenviable distinction of allowing the country's most notorious child sex offender, Jimmy Savile, to go unchecked for almost 50 years on his home patches of Leeds and Scarborough.
North Yorkshire Police were, of course, out on their own in allowing another notorious and prolific paedophile, Peter Jaconelli to offend at will for a similar period.
Worse still, NYP tried very hard indeed, by way of two bogus investigations into themselves, to rubbish any claims that they knew about the nefarious activities of either of these hideous individuals. Indeed, but for the intervention of two citizen journalists, writing for a North Yorkshire internet news magazine, the police would have got clean away with hoodwinking the public over both Savile and Jaconelli.
This report by ACC Sue Cross (a former West Yorkshire Police officer and pictured below) took just nine days – and zero interviews – to dismiss over forty years of relentless sex offending by a man widely known as "Mr Scarborough". It's tone and content is directed much more to discrediting the two journalists than addressing the core issues. A trait much favoured by senior officers in the police service.
North Yorkshire Police were subsequently, and quite rightly, exposed as an incompetent, embarrassing and humiliated shambles. It seems more than a coincidence, therefore, that those same two journalists – Tim Hicks and Nigel Ward – have for the past fifteen months been facing civil court action both mounted and funded by the police (or more accurately the precept payer). This is the article by Mr Hicks that effectively dismantled the now discredited Cross Report.
I have investigated this matter of the claim concerning alleged harassment by the two journalists, extensively, since the issue of the court papers in January 2015 and have written a number of articles as a result:
Cost of silencing police force critics now approaches £1 million (click here)
Complete capitulation follows Fall of Rome (click here)
Key witness in police funded civil action is a proven liar (click here).
The North Yorkshire Police dilemma: Find a murderer or pursue journalists over harassment (click here)
This latest article focuses on just one single aspect of those investigations, upon which a large amount of time and money has already been spent:
North Yorkshire Police and the Police Commissioner, Julia Mulligan, have both quoted a figure of £409,970.90 as the alleged cost of a criminal investigation into the two journalists, and one other. The police investigation was styled Operation Rome and this is the published breakdown of their estimate:
- Police officer time from December 2011 to September 2014; 94.6 months – £386,347
- Legal services work from October 2010 to June 2014; 243.1 hours – £7,424.73
- Civil disclosure work from September 2011 to October 2014; 352 hours – £5,181.44
- Related complaints matters; 82 hours – £1,708.88
- Chief Officer time; 259.08 – £9,308.85
This costing of what is, at best, a notional spend was the cornerstone that underpinned the decision by the Chief Constable and the Police Commissioner to go ahead and disburse an estimated £202,000 of the public's money in legal fees, pursuing the civil harassment claim via the senior partner of one of the most expensive law firms in Leeds, and two barristers. One of whom is a well-known QC, with charge rates to match.
Indeed, Mrs Mulligan is quoted as saying: "Dealing with the actions of those involved in the civil case has tied up police resources to a significant extent, and it seemed reasonable to expect that further time and expense would be incurred if no action were taken".
In layman's terms, the PCC's muddled hypothesis appears to be: (i) We have come up with some notional, and fanciful, figures to say it has 'cost' North Yorkshire Police £409,970 trying to silence these people, by criminalising them via an embarrassingly bad investigation. (ii) Now, we can save a bit of face by actually spending £202,000 of hard cash, and chase the same three men through the civil courts at the public's expense. But, with no certainty of achieving anything more than the original failed police investigation (iii) It has actually cost a lot more than £202,000 so far, but we are keeping the lid tightly screwed down on that.
My investigations go a long way to proving that reliance on that particular foundation of the £409,970 calculation will bring the whole Operation Rome edifice to the ground:
- The inclusion in the calculations of 94.6 months of police officer time, allegedly costing £386,347, to pursue three members of the public on a harassment without violence investigation stretches the bounds of credibility, far beyond breaking point.
- That is the type of sum you would normally expect to see spent on a murder investigation where the perpetrator(s) remain undetected after six months.
- Compare Operation Rome's "£409,970" harassment enquiry, for example, with the recently wound up Operation Essence, a major crimes review of the Claudia Lawrence disappearance and murder. As many as 20 detectives and police staff worked full time for two and a half years. Cost: £800,000 Source: NYP.
- Even 94.6 hours would be well beyond the routine for a harassment investigation of this type. That would bring the 'cost' in at a more realistic £2,240.34.
- A harassment investigation would normally involve a neighbourhood police constable overseen by a sergeant, or possibly an inspector. The police hear what the complainant(s) have to say, speak to the suspects and make a charging decision based on the evidence. There is no forensic science involved, or complex issues to unravel. Even Heartbeat's PC Geoff Younger (pictured below) would shine in such probes.
- The police have declined to say how many detectives were actually involved. They rely on a total of 14 people including lawyers, civil disclosure officers, PSD officers and staff from the PCC's office as their answer.
- The link between the cost of dealing with complaints against the police, freedom of information requests, reported at £6890.32, and a harassment investigation would also appear very tenuous at best. The complaints against NYP officers and information requests either had merit, or not. No evidence has been produced to me to suggest they were outside the scope of the legislation under which such issues could, quite properly, be raised.
- The other 'big ticket' items on the costs estimate for Operation Rome also have the fishy odour of red herring. £16,733.58 is the combined total allegedly spent on Chief Officer time and the cost of Legal Services support. It begs the question as to what Chief Officers (who are most unhelpfully not identified by either name or job title) were actually doing that was connected to a criminal harassment investigation and involved 259.08hrs of their time?
- The same comment applies to lawyers who are employed by the police force to deal with civil claims, not criminal investigations. How did they manage to spend 243.1 hours on a criminal harassment probe and what were they actually doing?
- The bottom line here is that the TOTAL of £409,970 has very much the appearance of a figment of the imagination – and appears to be a figure largely plucked out of the air to justify raiding the public purse so that senior officers, including the Chief Constable and his Deputy could get their hands on free legal fees.
The next step in the process is to look at how the Operation Rome investigation was conducted and what it actually achieved:
- None of the three suspects have ever been issued with a Police Improvement Notice (PIN), more commonly known as a harassment warning. More on PIN's here.
- Only one of three suspects, Mr Hicks, was interviewed by the police. The focus of that 2012 interview was alleged damage to the reputation of North Yorkshire Police by his work as a citizen journalist, rather than harassment.
- No disclosure was made to Mr Hicks, or his solicitor who was present throughout, that would persuade an independent reviewer that the police claims of harassment were credible.
- The letter from Mr Hicks' solicitor to NYP following the interview can be read here. It amounts to another humiliation of those police officers involved in Operation Rome.
- Mr Ward, meanwhile, was completely unaware that any such investigation was in progress that involved him. He was never contacted by either a police officer, or any alleged 'victim', at any time concerning harassment allegations.
- There was no mention of Mr Ward in the interview conducted with Mr Hicks at Fulford Road police station.
- Meanwhile North Yorkshire Police actively canvassed other public officials from parish, borough and county councils, and the Independent Police Complaints Commission, to make complaints against the two citizen journalists.
- One of the public officials, York City Council social worker, Mark Bednarski, was found to have misled police in his own witness statement by withholding information that damaged his claim.
- Another public official, County and Borough Councillor Jane Kenyon lied in her CJA statement. A fact she has recently admitted after being cornered by documentary evidence.
- No arrest was made at any time during Operation Rome.
- The Crown Prosecution Service (CPS) twice refused to authorised the arrest and charging of Mr Hicks under Section 3 of the Protection from Harassment Act 1997.
- The CPS guidance on issue of harassment warnings can be read here.
- Following the second refusal by the CPS a 'leading specialist barrister', believed to be Simon Myerson QC, was consulted in an effort to make criminal charges stick. That was also a failure.
- With Bednarski and Kenyon as star witnesses there would be little prospect of a prosecution succeeding, in any event.
At the end of a near three year investigation, Operation Rome was closed down as an incompetent, embarrassing and humiliating shambles.
But there are a number of questions, asked via appropriate legal channels, that remain unanswered by North Yorkshire Police which cast further and serious doubt on the provenance of the information already supplied about the harassment investigation and its 'cost'.
- NYP have stated in response to a FoIA request that none of the elements of the £409,970 costings are broken down for the years 2011,2012, 2013 and 2014
- On the same request, the force cannot provide details of the incident that triggered the Operation Rome investigation. That suggests there is no policy log (sometimes called the policy book) in existence. The first sign of a poorly led, and badly directed, investigation
- It is further claimed by NYP that Operation Rome was led by an inspector. Yet, I have in my files letters written by CI Heather Pearson (to Tim Hicks) and DCC Tim Madgwick (to Jane Kenyon) concerning this investigation.
- Why was the Force Solicitor, Jane Wintermeyer, who essentially concerns herself with legal disputes in the civil courts tasked with collecting financial estimates for a three-year criminal investigation?
- Why is there no written request to Mrs Wintermeyer to carry out this work – upon which so much rested – in existence? The costing exercise was, allegedly, instigated following a verbal request from PCC Julia Mulligan and Chief Constable Dave Jones. Who both, separately, employ a highly qualified, and commensurately paid, Chief Financial Officer (Mike Porter and Jane Palmer respectively).
- How could a back of the envelope exercise, delivered in such sloppy form, take over three months to produce?
- Why did NYP reply to a FoIA request on 1st December, 2014 (almost at the centre point of the Wintermeyer cost collection exercise according to information she supplied to me by letter) saying that they could neither 'confirm nor deny' that such information existed?
- Why are NYP dragging their feet on a FoIA request asking them to justify the breakdown of hourly rates used in the calculations?
- More crucially, and in the interests of openness and transparency much touted by Mrs Mulligan, why does the Chief Constable, and the PCC, not simply publish the workings of Mrs Wintermeyer with the names of anyone lower than the managerial rank of inspector (or its civilian equivalent) redacted?
This all has the look of a third incompetent, embarrassing and humiliating shambles for North Yorkshire Police. Yet the mindset of its Chief Constable, and his lap dog Police Commissioner, is to dig both him, her and themselves ever deeper into a hole. Rather than confront the fact that they have been caught with their fingers in the till, so to speak, and deal with it in an honest, ethical and professional manner
More importantly, for a police force and a police commissioner to be prepared to relentlessly break the law to try, in vain, to cover its tracks over some distinctly shady territory mean that questions need to be urgently asked, at the Home Office: How can Dave Jones and Julia Mulligan justify conducting police operations in this manner – and for whose benefit are these 'investigations' actually being run?
There are, currently, at least 409,970 reasons for the Secretary of State, or the Home Affairs Select Committee, to seek answers to these questions.
Both Chief Constable Jones and Mrs Mulligan have been approached for comment on this article. None has yet been forthcoming from Jones, but a spokesman for the Commissioner said: 'It would be inappropriate to comment on an ongoing legal matter'.
North Yorkshire Enquirer's Nigel Ward said this: "At the material time, I was passing North Yorkshire Police a large volume of information regarding SAVILE and JACONELLI and was profusely thanked, by detectives, for my contributions. But during that same period, it seems, the police were plotting (unsuccessfully) to nail me on criminal harassment allegations made by Jane Kenyon. I refute those accusations made by her, entirely".
But the last words should belong to Lord Maginnis of Drumglass who most presciently commented in Parliament, about North Yorkshire Police, in 2012:
"That particularly dubious Constabulary merits careful investigation".
Page last updated Tuesday 10th May, 2016 at 1205hrs
© Neil Wilby 2015-2016. Unauthorised use or reproduction of the material contained in this article, without permission from the author, is strictly prohibited. Extracts from and links to the article (or blog) may be used, provided that credit is given to Neil Wilby, with appropriate and specific direction to the original content.
Photo credits: North Yorkshire Enquirer, Yorkshire Television, Darlington and Stockton Times and Office of Police and Crime Commissioner for North Yorkshire

subset: commoncrawl


text:
Test post with Math in it
This is an equation: 2 \sin \theta. How does it look? I used the WP-KaTeX plugin for WordPress. WordPress is the web software that runs this blog. I tried the Simple MathJax plugin but it displayed at about half the point size of the surrounding text. WP-KaTeX also has the same problem but not nearly as bad. My company, Design Science, helped found MathJax and supported it for a couple of years. Makes me sad that I didn't get a better out-of-box experience. Oh well.
Welcome to my new blog!
I'm starting to think seriously about what I want to do in retirement. One thing is expressing my thoughts on a wide range of subjects in a more complete and coherent fashion than I have in the past, something that is not possible via tweets, Facebook posts and comments, etc. Hence this blog.


text: Temple Quarry is a beautiful setting up Little Cottonwood Canyon. This is one of the best mountainous settings we go to here. Temple Quarry is great anytime of the year. Summer, spring, fall and winter as well. Fall and winter are definitely the most popular seasons to take pictures at this location. Temple Quarry is great for family sittings, couple sittings, missionary portraits, child sittings, you name it. We can do fairly large groups, anything 20 people and up would be pushing it. Temple Quarry is located right at the mouth of the canyon, so you do not have to drive far at all. It is near Sandy, Utah. Call us to go over any questions you have.


text:
When you call a generic function, with a particular set of arguments,
GOOPS builds a list of all the methods that are applicable to those
arguments and orders them by how closely the method definitions match
the actual argument types. It then calls the method at the top of this
list. If the selected method's code wants to call on to the next method
in this list, it can do so by using
(define-method (Test (a <integer>)) (cons 'integer (next-method))) (define-method (Test (a <number>)) (cons 'number (next-method))) (define-method (Test a) (list 'top))
With these definitions,
(Test 1) ⇒ (integer number top) (Test 1.0) ⇒ (number top) (Test #t) ⇒ (top)
next-method is always called as just
(next-method). The
arguments for the next method call are always implicit, and always the
same as for the original method call.
If you want to call on to a method with the same name but with a
different set of arguments (as you might with overloaded methods in C++,
for example), you do not use
next-method, but instead simply
write the new call as usual:
(define-method (Test (a <number>) min max) (if (and (>= a min) (<= a max)) (display "Number is in range\n")) (Test a)) (Test 2 1 10) -| Number is in range ⇒ (integer number top)
(You should be careful in this case that the
Test calls do not
lead to an infinite recursion, but this consideration is just the same
as in Scheme code in general.)


text:
Jacoby is on the Hockey Team. His treeline temperature reconstruction was made by picking the 10 most "temperature-influenced" of 36 sites studied. Only these 10 sites were archived. I sought information on the other 26 through Climatic Change, the publishing journal. Jacoby refused, stating:
The inquiry is not asking for the data used in the paper (which is available), they are asking for the data that we did not use.
Imagine this argument in the hands of a drug trial. Let's suppose that they studied 36 patients and picked the patients with the 10 "best" responses, and then refused to produce data on the other 26 patients on the grounds that they didn't discuss these other patients in their study. It's too ridiculous for words. Yet Climatic Change saw no problem with this refusal. Jacoby went on to say that his research was "mission-oriented" and that:
As an ex- marine I refer to the concept of a few good men. A lesser amount of good data is better without a copious amount of poor data stirred in.
Imagine ex-marines with this philosophy in charge of drug trials. Maybe they already are.
Jacoby Response to Data Request
Jacoby and d'Arrigo [Clim. Chg. 1989], together with d'Arrigo and Jacoby [1992], is a temperature reconstruction, which is applied in many multiproxy studies (e.g. Jones et al [1998], 11 series used individually in MBH98, as an "adjustment" to the North American PC1 in MBH99, Jones and Mann [2004]). Jacoby is a member of the Hockey Team.
Jacoby and d'Arrigo [1989] states on page 44 that they sampled 36 northern boreal forest sites within the preceding decade, of which the ten "judged to provide the best record of temperature-influenced tree growth" were selected. No criteria for this judgement are described, and one presumes that they probably picked the 10 most hockey-stick shaped series.
I have done simulations, which indicate that merely selecting the 10 most hockey stick shaped series from 36 red noise series and then averaging them will result in a hockey stick shaped composite, which is more so than the individual series. The process is not dissimilar to what happens in the MBH98 PC1. In the MBH98 PC1, the 14 most hockey stick shaped series account for over 93% of the variance. There is very little difference in appearance between a simple average of these 14 series and the EOF-weighted composite (PC1).
I was interested in testing whether Jacoby's selection process imparted a bias to the data set under consideration. In order to test whether Jacoby's selection of the 10 most "temperature-influenced" series had any significance relative to comparable selection from red noise series, I looked for the archived information of the 36 sites. I had previously located the 10 most "temperature-influenced" sites at WDCP archives (and have elsewhere discussed inconsistencies between this archive and the versions used in MBH98), but was unable to locate archived versions of the other 26 series.
As a result of some previous exchanges with Climatic Change (which I will probably discuss on another occasion), they adopted a policy in which authors were required to provide supporting data, but decided not to adopt a policy requiring authors to provide source code. Under this policy, I asked them to obtain the other 26 series from Jacoby (since I had had no success directly).
Jacoby refused to provide the 26 series and I found his reasoning as set out to Climatic Change quite interesting (my bolds).
The inquiry is not asking for the data used in the paper (which is available), they are asking for the data that we did not use. We have received several requests of this sort and I guess it is time to provide a full explanation of our operating system to try to bring the question to closure.
Speaking for myself and immediate colleagues who have been involved with my research: Most of our research has been mission-oriented, dendroclimatic research. That means to find climatically-sensitive, old-aged trees and sample them in order to extend the quantitative record of climatic variations. Also, to relate these records to the real world and investigate the climate system and its functioning.
The first part produces absolutely-dated time series of tree-ring variations. We try to sample trees at sites where there is likely to be a strong climatic signal, usually temperature or precipitation. Sometimes we are successful, sometimes we are not. We compare the tree-ring series to climate records to test what the climate signal is. We sample latitudinal treeline and elevational treeline looking for temperature-sensitive trees with both a high-frequency and low-frequency response to temperature. A high-frequency temperature response to summer is most frequently found at these extreme locations. However, trees have much more information if one finds trees with a good communal high and low frequency variations that correspond or correlate to local or regional temperatures for longer seasons. There is abundant information to explain the physiological processes in cooler seasons and why trees can respond to more than just summer season. The sampling and development of a tree-ring chronology is an investment of research energy, time, and money.
The best efforts in site selection and sampling do not always produce a good chronology. It is only as the samples are processed and analyzed that the quality, or lack thereof becomes evident. First is the dating: this is enabled by high-frequency common variation among the trees. The dating is achieved and tested by various methods. Then the chronology is developed from the correctly dated ring-width measurements and evaluated. Testing: Is there a common low-frequency signal among the trees? At a good temperature- sensitive site with good trees, there is. We conduct common period analyses of the low- frequency variation within the cores samples from a site.
Sometimes, even with our best efforts in the field, there may not be a common low-frequency variation among the cores or trees at a site. This result would mean that the trees are influenced by other factors that interfere with the climate response. There can be fire, insect infestation, wind, or ice storm etc. that disturb the trees. Or there can be ecological factors that influence growth. We try to avoid the problems but sometimes cannot and it is in data processing that the non-climatic disturbances are revealed.
We strive to develop and use the best data possible. The criteria are good common low and high-frequency variation, absence of evidence of disturbance (either observed at the site or in the data), and correspondence or correlation with local or regional temperature. If a chronology does not satisfy these criteria, we do not use it. The quality can be evaluated at various steps in the development process. As we are mission oriented, we do not waste time on further analyses if it is apparent that the resulting chronology would be of inferior quality.
If we get a good climatic story from a chronology, we write a paper using it. That is our funded mission. It does not make sense to expend efforts on marginal or poor data and it is a waste of funding agency and taxpayer dollars. The rejected data are set aside and not archived.
As we progress through the years from one computer medium to another, the unused data may be neglected. Some [researchers] feel that if you gather enough data and n approaches infinity, all noise will cancel out and a true signal will come through. That is not true. I maintain that one should not add data without signal. It only increases error bars and obscures signal.
As an ex- marine I refer to the concept of a few good men.
A lesser amount of good data is better without a copious amount of poor data stirred in. Those who feel that somewhere we have the dead sea scrolls or an apocrypha of good dendroclimatic data that they can discover are doomed to disappointment. There is none. Fifteen years is not a delay. It is a time for poorer quality data to be neglected and not archived. Fortunately our improved skills and experience have brought us to a better recent record than the 10 out of 36. I firmly believe we serve funding agencies and taxpayers better by concentrating on analyses and archiving of good data rather than preservation of poor data.
I guess I won't be getting the data. It would be my position that, if they picked 10 of 36 sites, they used all 36 sites in their study. Imagine this argument in the hands of a drug trial. Let's suppose that they studied 36 patients and picked the patients with the 10 best responses, and then refused to produce data on the other 26 patients on the grounds that they didn't discuss these other patients in their study. It's too ridiculous.


text:
Project Status
2008 June 29
The booter now has the ability to load additional kernel extensions from a ramdisk supplied by a multiboot loader. The ramdisks are supplied in the form of Multiboot modules. The ramdisks must be in flat format with a partition table (APM, GPT, or MBR) and an HFS or HFS+ partition. Inside the partition you should have a /Library/Application Support/DarwinBoot/Extra/Extensions/ directory containing extensions just like /System/Library/Extensions/ does on a real system. You could also theoretically have a single file /Library/Application Support/DarwinBoot/Extra/Extensions.mkext being an archive of any extra kernel extensions you'd like to pass in to the kernel.
Note that the extensions or the extension archive from the ramdisk is loaded in addition to the extensions or extension archive on the boot volume. For example, you might place ACPIPS2Nub and the ApplePS2Controller extensions on the ramdisk and thus add support for PS/2 devices. You cannot reliably provide modified versions of existing extensions on the boot volume nor can you cause the booter not to load the extensions on the boot volume.
That said because of the way IOKit works it is usually possible to add kernel extensions which match better than other kernel extensions. It is also possible to add kernel extensions which cause existing driver classes in existing kernel extensions to match on more hardware. One example is that of NullCPUPowerManagement which matches on IOResources with the AppleIntelCPUPowerManagement IOMatchCategory and a slightly higher probe score. This ensures that AppleIntelCPUPowerManagement does not load without requiring it to be removed from the system. Another example is LegacyAppleIntelPIIXATA which does not actually contain any binary code. Instead it contains only an Info.plist which matches on legacy PIIX ATA hardware and specifies that the AppleIntelPIIXATARoot class from the com.apple.driver.AppleIntelPIIXATA extension should be used to drive the hardware.
This method can be generally used to add support for a variety of hardware. Unlike the current "hackintosh" methods, this method does not break when Apple updates the OS.
To use this new support you will need something capable of loading the booter as if it were a Multiboot kernel and loading a flat disk image file as if it were a multiboot module. The Multiboot specification is part of the larger GRUB project so obviously GRUB does a fine job. For CDs you might prefer something slimmer like ISOLINUX. You will need the mboot.c32 program that comes as part of the syslinux distribution and unfortunately you will need to make a small patch to it because the existing code does not pass the booted BIOS device through to the booter. This is critical for El Torito "no emulation" boot because the BIOS is free to use any number it wishes. In practice it's typically 0x9f but various reports indicate it can be anything.
You will need a recent syslinux (I used 3.63 although I think 3.53 can work as well) and this patch. You will also need to copy com32/lib/syslinux/dsinfo.c from the latest syslinux git into your 3.63 working copy.
Those of you who have been using my booter in Multiboot mode may remember the 2-second delay giving you an opportunity to enter a different BIOS device. I have ripped this out and replaced it with a biosdev=XX option where XX is two hexadecimal digits (e.g. 80 to boot the first hard drive). Furthermore, once you are in the booter at the boot menu pressing the escape key will now drop you to the drive selector instead of booting the default entry. The drive selector is basically the same as before but it's nice that you can enter it as many times as you wish instead of having to reboot the machine.
Obviously this user-interface is still a work in progress. However, when used correctly it is fully capable of booting an unmodified OS X Leopard DVD. To do so you merely need to provide whatever extensions you need to make OS X work in your initrd file. When you run the booter you won't have any choices on the boot menu. Simply press escape to bring up the drive selector. With the drive selector up and waiting for your input eject the CD and insert the OS X DVD into the same drive. Wait about 10 seconds then press enter to restart the menu without changing the device. You should see the booter do the usual press any key to boot from the CD or press F8 to enter startup options. So do as you wish and in a minute or two you should be up and running Leopard. If you see an EBIOS read error, don't be concerned. The booter will retry the read and it usually works the second time. If not then perhaps you didn't wait for the drive to recognize the disk before hitting enter. If so, press escape and then enter and hopefully this time the drive will have spun up the new disc.
There is more to come soon as well. I am planning to merge in some of the changes from Chameleon that support more hardware and I plan to merge in some changes from some other people that support the kernels from Snow Leopard.
2008 May 25
Yes, I'm still alive! Thanks for asking. It's worth the wait for you though because I come bearing a new version of the bootloader including a number of enhancements and bugfixes. Some of this work is general stuff I had been hacking on in my working copies and some of it is work that I did for VMware. Yes, VMware was kind enough to pay me to do some work on this bootloader. Kudos to the folks at VMware, in particular Regis Duchesne (HPReg) who spearheaded the effort. His hard work on the virtualizer makes VMware Fusion 2 Beta 1 capable of running an unpatched Darwin 9 system. Obviously this is with the goal of officially supporting the virtualization of OS X which will be coming at some point in the future. As Regis mentions on his website, VMware is not doing a "Hackintosh" but a real installation of OS X from a factory-sealed DVD.
The changes I've made are varied. First of all, I've taken some time to make some very low-level changes to the code. As more things are added to the booter it tends to grow in size which becomes problematic because the original code had problems when certain uninitialized static and global variables were located outside of the base 2000h segment. Through a variety of changes to the thunking code I've enabled the booter to grow to exactly 65024 bytes which is the most that the first-stage bootsectors are capable of loading. Furthermore, there will no longer be any guessing as to whether or not the code might or might not work with certain data located above the real-mode segment. So long as all code and initialized data fits within the first segment the bootloader will run correctly. All uninitialized (e.g. zeroed at early starutp) data can be located wholly or partially in the next physical segment without any ill effects.
On the build system side of things I removed the -fomit-frame-pointer option. Without it, that is letting the compiler use the frame pointer, the code generated by the compiler is actually smaller. Beyond that, the frame pointer is required if you want to do any sort of debugging with the code. VMware provides a very nice debug stub that you can attach to with gdb. This makes debugging the code fairly easy although debugging real-mode portions is a bit tricky. At least you can step through instructions and examine registers though you have to do the segment/offset arithmetic yourself to know where in memory the registers are referring to. This is a limitation of gdb expecting a flat32 model.
I've done a few bugfixes to the HFS and HFS+ code. The first was a very nasty memory overwrite bug caused during the decompression of the HFS+ case tables. That bug was extremely annoying as it caused completely unrelated code to fail due to bogus data. In addition to that I discovered a bug in the HFS code. Who cares right? Well, wrong. Although hdiutil makehybrid will generate a hybrid ISO-9660 and HFS+ disk, the open source mkisofs tool generates a hybrid ISO-9660 and HFS disk. Again, this is a particularly nasty bug since the HFS code worked so long as you knew the file you were looking for. In the normal case the booter loads /mach_kernel and then compares the timestamp of /System/Library/Extensions and /System/Library/Extensions.mkext. So long as Extensions.mkext exists and Extensions either does not exist or is exactly 1 second older than Extensions.mkext, the booter will simply read Extensions.mkext. Otherwise it will enumerate the individual .kext bundles from the Extensions directory. The code as shipped by Apple misused strncpy and failed to NUL-terminate the strings. Therefore, enumerating the files in a directly would rarely, if ever, work. It is only because Apple's Darwin ISO's always included a valid Extensions.mkext that this bug was never encountered.
Now what you're probably really wondering is what cool new stuff I added. Well, I added GPT support which is quite useful because OS X will not install to anything other than a GPT disk out of the box. Perhaps not so useful for people dual-booting Darwin with other traditional x86 operating systems but very useful for people booting OS X in a virtualizer. Alex Graf has been using this bootloader with QEMU which he is slowly but surely making capable of running OS X.
I've also finally added FSB detection. This works only for Intel chips which return the multiplier information from a read to MSR 198h. This is exactly what xnu does during its early startup so if you have an Intel system everything works as expected. If you are running Darwin on an AMD machine the booter itself will cause the machine to reboot almost immediately after you attempt to start the kernel. One way to check for this is to use the new ?clocks command which will tell you the speed of the TSC, the multiplier, and the FSB speed that is calculated from those two pieces of information. If executing ?clocks causes the machine to reboot then you will never be able to run an unpatched xnu as it exists today. However, assuming you have built your own patched xnu you can override the check using the new fsbmhz= option. In this case which value you specify depends on what you did to the kernel. It may be that you've patched the kernel such that it ignores whatever the bootloader passes it. In this case you can specify any non-zero value for fsbmhz to keep the booter from trying to determine it.
The booter also checks one additional case which is MSR198h returning 0. This happens in shipping versions of VMware (aside from Fusion 2 betas). In this case it prints a big fat warning reminding you that you had better be using a patched xun. Again, specify any non-zero fsbmhz to bypass this check. In that case your patched kernel should just ignore the value it gets from the bootloader.
I've also made a small change to the way CD-ROM bootup occurs. It no longer defaults to booting the hard drive when it's booting from the CD. I always thought that was stupid. Instead it now boots the CD when you are booting from the CD. If you are for some strange reason using the CD to boot the hard drive then you can simply press 'h'.
The new revision is 122. Yes, that's a huge jump from 28. The reason is that a lot of branching and merging occured in the same svn repository unrelated to the bootloader source. Right now, everything is all rolled into one big patch although I'm working on putting together a changelog. That said, I don't think there's anything I changed that you wouldn't want so you might as well take it all. If for some reason you require the details, let me know. firstname.lastname@example.com
2007 November 8
I've had some reports that the code is not building on a standard OS X installation. One reason is that Apple has never included the uuid/namespace.h header in an OS X install, you have to grab it from Libc. I had basically forgotten that I'd done this. Rather than require users to do this I've now done what BootX's fs.c does and simply define kFSUUIDNamespaceSHA1 directly in the source.
In addition, the md5.h header has changed on Leopard. It is now libkern/crypto/md5.h and one of the function prototypes has a slightly changed signature (const void* instead of const unsigned char*). The new code builds on Leopard and should theoretically still build on pre-Leopard systems, so long as the max allowed OS X version is set properly (actually, maybe min is more appropriate?).
Another cool feature of the new release is the ability to run it under Apple's EFI CSM (e.g. Boot Camp). In addition, I've also made some enhancements to the Multiboot code path (which is, BTW, the only one that I test). The our_printf hack has been replaced with a simple hack of providing a temporary bootArgs good enough for the real libsaio printf to work in the time before the usual boot() entrypoint is called. Also, I've added some preliminary support for chain booting although I'm aware it's incomplete (it does not set ES:SI appropriately) and fixing that would involve some serious changes to the code.
The new release is r28. You can find it at the bottom of this page.
Booting OS X (10.5) with this booter does not seem to consistently work on my MacBook Pro. It seems if I boot to Windows, warm restart, and then boot into this loader I can _sometimes_ get the machine to boot into OS X. Other times it hangs for an indeterminate amount of time, from a few seconds to a few minutes to longer than I cared to wait before holding the power button, then displays some message about not getting an HPET, another message about failing to start the CPU, and then promptly reboots the machine. What bothers me most is that it's very indeterminate as to whether it will or will not boot.
The one time I did get it to successfully boot, OS X worked, albeit with amusingly stretched 1024x768 graphics with no acceleration.
So where does that leave the project? Why am I booting Darwin on a real Mac? Well, the answer is that Darwin no longer includes a license to use critical portions like AppleACPIPlatformExpert. Granted, there is AppleI386GenericPlatform but to function properly on modern hardware, an ACPI runtime is much more ideal. Therefore, in order to check that the booter is maximally compatible with existing code, the only legal way to do it as far as I can tell is to use my OS X license which stipulates that I don't run the OS X code on non-Apple hardware.
Now, I am no lawyer and so my interpretation could be wrong. It could be that the old Darwin binary license still applies, but I've asked Apple for clarification with no response yet so by default I am taking the safe position. I suggest you do the same.
At the moment, my plan is to leave things where they are now and see what happens. There's word that VMware will be making real OS X run under their virtualization products when running on Apple hardware now that the OS X Server license allows this. Being able to boot Darwin under VMware would of course be much nicer than rebooting my MacBook Pro. And who knows, maybe VMware will find this booter useful. Or maybe they won't and they'll just add EFI firmware to their VM and use Apple's booter.
If I have some spare time I may see about modifying xnu to boot under VMware. Right now the biggest problem is lack of emulated HPET. That will be on the xnu page, not this page.
2007 November 5
The bootloader project has progressed from r14 to r21. The new release fixes a major misunderstanding with the contents of the device tree configuration table properties: they are supposed to be the table addresses, not the actual contents of the tables. In addition, it now searches for the ACPI tables, compiles against Leopard headers, provides stub EFI runtime services, and includes semi-bogus firmware-* properties in the "/efi" device node.
I've also upgraded my VPS to a much faster system with more resources and I've restarted mail service for tgwbd.org. Upon installing the mailserver I realized that hundreds of spammers apparently still have the e-mail address I'd been using so there's no point in hiding it. SpamAssassin seems to be doing a fine job at blocking all of it so far. E-mail me at firstname.lastname@example.com if you have any questions about the project or have a patch I could use.
I'm going to try to get a read-only svn repo up real soon now. For now, it's still downloadable patches.
The Bootloader
Most whitebox PCs today are still using normal BIOS and not EFI. Apple provides a boot loader for normal PCs in the boot project. The last release Apple made was boot-132. It appears this release was used with the last version of OS X for the DTK systems. Oddly enough, Apple did not release this source code until it released the 10.4.8 set of tarballs. Perhaps this is because the 10.4.8 set of tarballs is also the release which finally includes xnu source. It does seem odd though when one considers that Apple only shipped a binary of it with the later releases (or possibly only the last release) for the DTK system. No Intel Mac uses this booter because Intel Macs use the boot.efi booter for which Apple does not make the source available.
Compared with the prior boot-122 release there are not many changes except for the struct boot_args which actually comes with the xnu kernel, not the bootloader. To build a proper boot binary one must take care to be doing it on a machine with headers installed suitable for the kernel one wants to boot. The new struct boot_args basically resembles the old one with a couple of changes related to how the video state information is handed to the kernel and a couple of additions of "EFI" fields.
To understand what needs to go in those fields we need to know what xnu expects in those fields. But that is actually getting ahead of ourselves. As discussed on the xnu page the very first thing we need is an FSB frequency in the device tree.
The Device Tree
The device tree is a simple concept. On a PowerPC Mac, the OpenFirmware provides the device tree more or less as is to the kernel. On an Intel Mac, it is the responsibility of the bootloader to set this up. The device tree consists of a tree where each node can have any number of properties. The "name" property is special because it can be used with functions returning a node given a pathname.
The specific node the xnu kernel wants is the /efi/platform node. Within that node, the kernel wants a property called "FSBFrequency" to contain a 64-bit integer which is the frequency of the machine's front-side bus in Hz.
Adding the node to the device tree is easy. The boot loader already contains code for creating the device tree so the only thing required is to add the node then add the property with the correct value to the node.
Using a source built xnu with debug flags including 0x108 and a serial terminal one can clearly see that the addition of this device tree key at least gets the kernel past the EFI_FSB_frequency() function. Assuming a suitable processor (Core or Core 2), the kernel will actually make it much further. In fact, on a Core or Core 2 system with an appropriate chipset the kernel source will not need to be modified at all.
EFI data
The next step to improving the bootloader to meet the requirements of modern xnu kernels is to provide an EFI system table and an EFI runtime services table. The bootloader as shipped by Apple leaves these fields as zero which causes a page fault due to dereferencing the NULL pointer.
A proper EFI system puts all EFI data and code in reserved areas of physical memory and marks these areas as reserved in the ACPI memory map. We are not a proper EFI system but are only trying to provide the data to xnu so we only need to put it somewhere such that xnu won't overwrite it with something else in a memory page that is mapped in to xnu's address space. It turns out that xnu doesn't do anything particularly fancy with the EFI areas of the ACPI memory map but rather maps them as-is into its virtual address space. Because of this, xnu will use the physical address of the efiSystemTable field in the bootArgs struct as a virtual address.
The only requirement left then is to put that table somewhere that will also be mapped as-is into kernel address space. Well, it turns out that there is already an AllocateKernelMemory call which does just that. It's used, of course, for the bootArgs struct itself. So there's no reason it can't be used for the fake EFI data.
The EFI system table is a straightforward structure containing very basic system information and a pointer to the physical address of the EFI runtime services structure. The EFI runtime services structure is basically a collection of function pointers, none of which xnu itself appears to use. It does, however, pass the runtime services table to the IOKit so presumably one or more kernel extensions use it. If I had to take a guess, it would be the AppleEFIRuntime.kext and its plugin AppleEFINVRAM.kext, neither of which are available for a Darwin/x86 system as they are part of OS X only.
After modifying the booter to include the appropriate EFI tables the xnu kernel will actually boot to the point of starting the IOKit. At this point you need a platform driver (a.k.a. Platform Expert) to continue the boot process. Unfortunately, Apple doesn't provide source for this and some quick googling reveals that the GNU/Darwin project has asked. I am not necessarily a free-software purist so a binary blob would be fine with me. Obviously the Hackintosh crowd has been quite successful at using the AppleACPIPlatform.kext provided with OS X so perhaps I could politely ask Apple to give the community a license to use it with Darwin/x86. Also quite obviously, the binary blob is certainly available as several OS X updates have included a copy of it.
At this point we have a nearly bootable system. We have fake EFI tables pointed to by global symbols and passed in to the IOKit start. It remains to be seen which kernel extensions will and will not work correctly with the fake tables. It also remains to be seen which kernel extensions are going to need additional device tree properties.
One kernel extension mentioned frequently in Hackintosh forums is AppleSMBIOS.kext. The source code to this kernel extension is available from Apple and it reveals to the reader that it requires a node in the device tree with a table property containing the SMBIOS entry point structure.
The specification for SMBIOS is freely available and reveals that the SMBIOS EPS is to be searched for within a particular range of memory. I have gone ahead and done this although I can only assume that AppleSMBIOS will find it correctly.
The inspiration for this project comes from a screenshot at the website of a pseudonymous hacker calling himself netkas. In the screenshot, one can see the IORegistryExplorer application opened to the /efi/configuration-table node. One can also see a number of child nodes, one of which is the SMBIOS GUID. Also in the screenshot, one can see Apple System Profiler opened and showing the processor to be an Intel Celeron running at 2.27 GHz.
Some googling revealed this post where the poster quotes Netkas's thread on hackint0sh.org explaining that he has set up the tianocore shell on a USB stick. For absolute maximum compatibility with EFI on a non-EFI system that makes a lot of sense. If you are just trying to make xnu boot, it's sort of complicated and also requires the proprietary boot.efi.
About EFI
What I've realized about EFI is that it is the classic case of "You can take the trash out of the trailer but you can't take the trailer out of the trash." That is to say that EFI doesn't change anything about the way x86 PCs operate. This was by design. Intel considered moving to the industry-standard OpenFirmware as found on PPC Macs and SPARC Suns but quickly realized that OpenFirmware would supplant things like ACPI and SMBIOS with a nice clean device tree. This would have meant that OS code would have to be updated to handle a totally new (to x86) set of structures. Because most OSes would like to continue booting on older machines they'd also have to continue handling ACPI tables for the older machines.
The flip side of that is that most people with newer machines would like to continue to boot older OSes. In order to make that happen, the system would have to have the various tables that older OSes expect like ACPI tables and SMBIOS tables. If Intel had gone with something like OpenFirmware, any BIOS compatibility code would have to set these up based off of the OpenFirmware device tree. So what Intel did was simply keep the existing specifications as they were but add code around them to make it easier to use them. That added code is EFI.
Apple already had an abstraction for gathering system information at boot time and the x86 Darwin booter already used it long before EFI was used by Apple. By keeping the system information gathering in the booter, xnu is able to avoid mucking about trying to find the ACPI memory ranges or the SMBIOS entry point structure. Instead, the boot loader does all of this mucking about and hands it off to the kernel.
With EFI, the boot loader has a lot less mucking about to do and presumably the boot.efi source code is relatively straightforward. Even without EFI, I don't anticipate that the booter found here is going to become too complex. It had better not, it can't grow too much more before exceeding the size of the 64k real mode code segment it expects to start life in.
Patches requested
Like any good software, this is to be considered a work in progress. Currently, the FSB Frequency is fixed at the 200 MHz used by most modern Intel-based systems. The first patch I'd like to see hit my inbox is one which gets the correct FSB Frequency. Keep in mind that boot options are basically a no-go here because boot options are for the kernel, not for the booter. In other words, try to get it right rather than provide some hack to override it.
If absolutely necessary I've considered adding a boot options scheme using the "?*" namespace of boot command lines similar to the ?video "option" already used by the booter. I would envision something like ?set fsb=166. Other options might include something like ?biosdevice 81 to switch to the second hard drive or ?biosdevice to enumerate available drives (if that information is available).
However, one has to take care not to add too much crap as the booter needs to absolutely stay within a 64k real mode code segment with the code being loaded at offset 0x200 (512 bytes) in that segment. That means the limit is 63.5k but then there is cdboot which is a 2k stub-booter followed by the real booter thus effectively meaning you can have at most 62k of code. The project as shipped is in the high 50k and my changes have already added another k or two. Not much more can be added before the whole thing would have to be rewritten to handle loading a third booter and/or loading the rest of itself which would just be ludicrous.
Writing a modified booter requires a way to test it. We are hacking the stage 2 booter which except in the case of CDs is booted via the stage 1 booter. The stage 1 booter is different depending on whether the system partition is UFS or HFS+. If the partition is UFS then the boot1u code is used. If the partition is HFS+ then the boot1h code is used. We'll ignore UFS since hardly anyone uses it and focus on HFS+. The stage 1 HFS+ (boot1h) boot sector makes use of the HFS+ startup file to find the stage 2 booter. The startupfile is a part of HFS+ that allows a relatively small file to be allocated in a contiguous set of blocks and pointed to by only the startupfile block pointer. Unfortunately, modifying it requires that the HFS+ partition be accessible to a working Darwin or OS X system. Granted, I could have hacked the OpenDarwin startupfiletool to run under Linux but what would be the fun in that?
My idea was simple. Set up a test rig using a Mac to create a base hard drive image I could copy over once to the test rig's hard drive. Then install GRUB in a small ext2 partition where I could simply use Linux to copy the boot loader as a normal file on to the ext2 partition.
There's only one problem. GRUB doesn't know anything about Darwin's boot2. However, GRUB does have this handy specification called Multiboot. As far as I know, no common OS uses Multiboot but a lot of toy operating systems do. It's rather convenient because your Multiboot kernel gets to start in protected mode with the A20 gate enabled. Great!
The neat thing about the Multiboot specification is that it does not require any particular executable format. All it requires is a Multiboot header to be present on any 4-byte aligned offset in the binary. The header specifies which memory address the "kernel" would like to be loaded at and what location to jump to after having loaded the file from disk.
The specification doesn't explicitly state it but GRUB won't load any Multiboot binary below 1 MB. The booter as shipped pretty much has to live in low memory because it makes tons of BIOS calls simply by briefly switching out of protected mode, making a BIOS call, then switching back. It never mucks with the stack or jumps to a special location or anything like that. At this stage of the boot process there aren't too many options for doing anything except by using BIOS calls. Unless of course you want to implement a bunch of hardware drivers. Now I'm seeing why EFI is a really great idea.
So, the name of the game here is to get down into low memory as quickly as possible so we can take advantage of BIOS services like text output ("ooh") and disk reads ("ahhhh").
This doesn't seem too bad until you realize that the multiboot information that the booter gives to us starts life as a GRUB global symbol. That means it is located precisely where we are about to move because GRUB likes to live at the same address as boot. So the very first thing is to accept the fact that we need to run above 1 MB for a bit longer than we'd like, copy the multiboot information somewhere safe, then move ourselves down.
The initial boot has to be done in pure assembler because Multiboot specifies that the stack pointer doesn't necessarily point anywhere useful nor is the GDT necessarily valid. So the initial trick is to avoid doing anything that would cause the GDT to be referenced. That's not too hard, just don't do far jumps or load any segment registers.
I could have implemented the memcpy of the boot info structure in assembler, but why bother. Set up a valid stack, push the eax and ebx registers onto it, and BAM, you've got C. From here we can use most anything in libsa but not libsaio. We can use memcpy, so we do. Nice. We even use it to move ourselves.
Once we've gotten to C it makes little sense to return to assembler just to get back to C so instead I used a neat little hack whereby I call an assembler function that fixes up its return address and jumps to itself at the correct location in the correct segment (selector). Then it just executes a normal ret. I thought it was a rather novel approach.
There is a small bit of code added to allow the user to optionally enter a BIOS device number when booting via Multiboot. This is necessary because there is no way to tell GRUB which BIOS device to send. It will always pass the BIOS device containing what it thinks is the kernel. This is of course not the kernel but this booter. The real kernel (xnu) is on the hard drive.
The drive-selection code is kind of annoying and eventually I think it would be better to implement it from within the booter rather than before the booter. But it works for my purposes. Best thing to do would be to fix GRUB. Note that that code is only used when booted via Multiboot. The booter continues to function normally when booted as the HFS+ startupfile or via the UFS booter.
What this does is make it a lot easier to test new boot loader code because the compiled binary can be easily copied on to the ext2 boot partition using any copy of Linux. Or you can even keep grub on the HD and shuffle a disk from your Mac (i.e. w/ a USB floppy drive) to your PC and point grub at the kernel on the floppy disk. The floppy disk is ideally formatted with plain old FAT12 in this case.
Mac OS X
Please note that this boot loader enables booting of binaries built from unmodified xnu kernel source on systems with compatible chips (e.g. Intel Core and Core 2 processors) and compatible chipsets (i.e. including an HPET). In case you haven't figured it out, that implies that assuming Apple's xnu binary is built from that same source tree then it will boot unmodified. You are advised to heed any legal agreements you have made with respect to usage of OS X software, whatever those agreements may be.
You are also advised that this booter does not magically decrypt OS X binaries. You still need a Mac for that or you will have to modify the kernel or add a kernel extension to accomplish this. All that this booter does is allow you to possibly boot an unmodified (source or binary built from unmodified source) xnu kernel.
Apple provides the boot-132 tarball from the
10.4.8 for x86 page.
Download boot-132.tar.gz from Apple (Requires free ADC account).
Sorry, I'm not making patches anymore. In lieu of this I've made the public branch of my SVN tree accessible.
Please consider doing me a favor and saving my bandwidth by downloading the base package from Apple
and only the patch from this site.
Download diff from boot-132 to boot-132_dfe_r146 (unified format, apply with patch -p0).
Download diff from boot-132_dfe_r28 to boot-132_dfe_r146 (unified format, apply with patch -p0).
The above patch supersedes the r122 patch.
Download diff from boot-132 to boot-132_dfe_r122 (unified format, apply with patch -p0).
Download diff from boot-132_dfe_r28 to boot-132_dfe_r122 (unified format, apply with patch -p0).
The above patch supersedes the r28 patch.
Download diff from boot-132 to boot-132_dfe_r28 (unified format, apply with patch -p0).
Download diff from boot-132_dfe_r21 to boot-132_dfe_r28 (unified format, apply with patch -p0).
The above patch supersedes the r21 patch. The new code has some enhancements.
Download diff from boot-132 to boot-132_dfe_r21 (unified format, apply with patch -p0).
Download diff from boot-132_dfe_r14 to boot-132_dfe_r21 (unified format, apply with patch -p0).
The above patch supersedes the r14 patch. There are a number of bugs in the old code.
Download diff from boot-132 to boot-132_dfe_r14 (unified format, apply with patch -p0).
I am providing my modified source code as a tarball. I have a local svn tree that I am considering making
public but right now I'm going to stick with the simple model of accepting patches and doing releases myself.
Download boot-132_dfe_r146.tar.gz
At this time I am not providing binaries. If the Darwin/x86 project as a whole progresses to the state where it is actually usable without a C compiler, I might consider providing binaries.


text:
Appendix:Gold and Silver walkthrough/Section 11
The guide for those can be found here.
Mahogany Town
Mahogany is a small, quiet town in the northeast mountains. There is no official Poké Mart, but the shop in the center of town offers the usual Poké Balls and Potions, in addition to oddities like TinyMushrooms and SlowpokeTails. The east exit is blocked off by a man selling RageCandyBars. The Mahogany Gym is blocked off as well, so head north to Route 43.
Route 43
Route 43 links Mahogany Town to a major landmark, the Lake of Rage. Two separate paths lead to the lake; passing through the gate requires a 1000 toll paid to a pair of Team Rocket members, while the western path winds its way through tall grass and past several Trainers.
|Available Pokémon
Lake of Rage
The Lake of Rage is the largest lake in the region, and exists alongside a maze-like forest to the west. The area is known for its Gyarados population, and the most notorious resident is visible just offshore. Bring a decent Poké Ball supply and swim out to meet the Red Gyarados. Unlike others of its species, this Gyarados evolved under mysterious circumstances which resulted in its unusual coloration.
When the battle ends, you find a Red Scale floating on the water. This can be traded to Mr. Pokémon back on Route 30 for an Exp. Share.
Climb back onto shore and speak to the man reading the sign. This is Lance; he has been investigating rumors that all of the Magikarp in the lake are being forced to evolve prematurely. He believes that an odd radio signal from Mahogany is the cause, so follow him back to the suspicious-looking shop.
|Available Pokémon
Mahogany Town
Upon entering the shop, Lance's Dragonite uses Hyper Beam to ensure cooperation from the shopkeeper. Lance confirms that the strange radio signal is coming from this location, and moves a cabinet to reveal a stairway leading down into the Team Rocket HQ.
Rocket Hideout
|Team Rocket
Each of the five Pokémon statues on this floor has a hidden camera that alerts the Rocket Grunts in the security center. Upon stepping in front of one, the same two Rockets show up to attack you.
|Rocket Security
Take the first left and head south to the security center. Defeat Scientist Jed, grab the X Accuracy, and examine the computer to deactivate the security cameras. Leave the room and turn east to find a Hyper Potion. Turn right and walk along the south hallway. Collect the Nugget and go down the stairs in the southwest.
Lance is waiting for you here, and heals your Pokémon before running off. Beat up the two Rocket Grunts nearby, and take the southeast stairs to the lowest floor.
Lance informs you that two passwords are required to reach the boss. Grab the Protein to the north, then battle the Scientist and the female Rocket in the southeast room. When defeated, she gives up the first password: SlowpokeTail. Continue on to the southwest room. Defeat the Rocket here to learn the second password, RaticateTail. Pick up the Dire Hit and the Full Heal by the potted plants, then head north. Grab the Ice Heal in the hallway, and climb up the northeast stairs.
Head all the way to the west, where you are challenged by another Rocket. Go down the stairs to reach the boss's room.
When you approach, your rival appears and insists that he is the one who will eliminate Team Rocket. Take a quick detour up the south stairs to get TM46 (Thief), then input the two passwords at his door to enter the boss's office. The Executive here talks about Giovanni disbanding the group three years ago, and how the organization has continued on since then, planning for his return.
Defeated, he runs off to warn the others that their plans are in trouble. Talk to the Murkrow in the corner to learn the password for the generator room, Hail Giovanni.
After entering the password, an Executive and a Grunt ambush you in an attempt to force a 2-on-1 battle, but their plan is short-lived. Lance shows up with his Dragonite, and the two of you each battle a single Rocket.
They claim their experiment is a success, regardless of their defeat here. Lance inspects the generator, and claims that in order to shut it down, the six Electrode powering it must be removed. Catch or defeat the three on the left to put an end to Team Rocket's plan. With the machine disabled, Lance rewards you with HM06 (Whirlpool). Follow him upstairs and take the warp tile back to the entrance.
With the town now free of Rockets, the Gym has finally reopened.
Mahogany Gym
POKéMON GYM
The Teacher of
Winter's Harshness
The Mahogany Gym specializes in Ice-type Pokémon, and Pryce has installed frozen tiles to thwart all but the most determined Trainers. The most direct route to the Gym Leader can be made in six moves. Stand by the Poké Ball statue on the left, and slide up twice to the first Boarder. Slide right, down, left, up, and right again to meet Pryce. Fire-, Fighting-, Rock-, and Steel-type attacks are the most effective against Ice Pokémon, but Electric-type attacks are also effective against the Seel and Shellder families. Avoid bringing Grass-, Flying-, or Ground-type Pokémon.
Pryce rewards your victory with the Glacier Badge, which increases your Pokémon's Special Attack and Special Defense, and enables the use of Whirlpool in the field. He also gives you TM16 (Icy Wind), a symbol of winter's harshness.
Upon leaving the Gym, Elm calls about strange radio broadcasts that mention Team Rocket. It seems that the gang has one more trick up their sleeve, so fly back to Goldenrod City to finally put an end to their plans.
|Gold and Silver
|This article is part of Project Walkthroughs, a Bulbapedia project that aims to write comprehensive step-by-step guides on each Pokémon game.


text:
Over the many years I've been a photographer, I've experimented with a number of creative techniques. I began shooting film, way back when, and learned how to use the darkroom in college. I experimented with the basics, and then less mainstream techniques like double exposure to add an element of mystery to the final image.
I also enjoyed incorporating photography into my printmaking work. Although it doubled the processing time, I found photography in combination with printmaking gave my work depth and added visual interest that could only be achieved by two unique processes being layered with one another.
There was a magic that occurred with this technique. The image became more than a photograph, more than just a single moment captured in time. Bringing these elements together with the unpredictability of this sort of fusion is one of the very first ways I fell in love with photography.
Fast-forward many years later, as I slowly shifted from my beloved film into the digital age, and it was as if I had to learn all over again the methods of creating photographs with that kind of layered texture and depth. The digital darkroom, which was in fact more convenient and accessible, became a playground of options for my experimental artist's heart. Although I've enjoyed that process, because I'm still drawn to creating work that includes the complexity of layers, I don't always have the time or the patience to create the layered images of my dreams, like I did back in college.
Luckily, I've discovered a fun and easy (albeit, sometime challenging) way to capture that layered look in a single frame with no post-processing work required. With the use of simple and often subtle reflections on a variety of reflective surfaces, I'm able to experiment and play in real time as I shoot, instead of having to wait until I process my images. This gives me a spontaneous freedom and an added bonus of being constantly aware of my surroundings in anticipation of the perfect reflection to use in a photograph.
Places To Seek Out Reflections
In a puddle of water • On rain-slicked streets • In windows • On shiny floors • In a uniquely shaped mirror • On the surface of metal or glass objects • Sunglass lenses for portraits
All reflections aren't created equal. There are mirrors, liquids, metallics and glasses of all types, to name a few. Each surface will offer a totally unique final result, and each image you create on or through that surface will yield something that's nearly impossible to reproduce.
Every single element within your image is constantly changing when shooting on or through a surface. There are so many factors involved, it's difficult to know with absolute certainty what will emerge within your frame. Such is the beauty of reflections. I've found that one of the most seductive elements of the process is that there's no way to be in total control of the outcome. I'm always delighted by what emerges, especially when it's a pleasant surprise. Many artists call those kinds of discoveries "happy accidents," and I love opening myself and my process up to that kind of serendipitous magic.
So many shifting and changing elements are involved in capturing an image of reflections. First, as previously mentioned, the surface itself will dictate the overall feel of the photograph. Second, your surroundings will directly narrate the story of the layered results. And, lastly, like with most photography styles or genres, light plays a key role when using any of these surfaces in any location or scenario.
The light—with its direction and intensity—is what will illuminate both your subjects and the reflective surfaces so that they mirror back bits of pieces of the scene, whether that be a more clear, even literal representation (like in a mirror) or something more abstract and obscure (like through a window). The more you shoot images using this technique, the better you'll be able to manipulate your surroundings for your optimum end image.
Although capturing these layered photographs can be challenging—the process itself being more of an art than a science—there are the more predicable aspects and outcomes that you can use to your advantage. Getting a textural layered look through a mirror, for example, comes when the surface is dirty—the specks of dust or imperfections actually lay over the subject being reflected back. Or, when shooting into windows, the layers appear either vividly or softly, depending on how each side of the window is lit. Capturing a little bit of what's on both sides of the glass can be one of the most delightful surprises.
The more you experiment shooting into reflective surfaces and observing various results, the more carefully and deliberately you can work to manipulate your image into exactly the shot you want, using a scene or subject matter and its reflection to bring something totally new and fresh to the shot.
One of the most important considerations when shooting reflective surfaces is being aware of everything in and around the reflection, and then creatively framing it. By being conscious of all the layers that the reflection offers, you can place the elements within your viewfinder just like you would compose a shot with any other subject matter.
Every part of what you can detect in a reflection plays a part in the final image. All of the rules of good composition apply, especially when inviting all the vague and mysterious shapes, shadows and colors into your layered work of art. And because you're working with more than one subject—a reflective image offers two, at the very least—you have to be even more mindful of where you're placing all of the various elements within your frame to avoid visual chaos or confusion.
Even with all of that being said, I would never, could never encourage you to try to control every single part of the creative process when it comes to this kind of photography. For as much as you can try to harness all of the elements of every scenario, I urge you to embrace everything that might appear with—or better yet, without—you being aware. Let the unexpected emerge. Be open to accidents. Invite creative coincidence. Allow for magic.
Just as layers of images can work together to create a more beautiful whole, our artistic intentions can mingle with the muses of creativity, bringing to light something far more wonderful than we could have ever imagined.
Simple Ideas For Reflective Experimentations
- Use line, repetition and shape in ways that bring visual harmony to the big picture.
- Try to establish a main focal point to avoid creating a shot that might be too chaotic or confusing.
- Look for subtleties in texture and color, and place them within the frame for added interest and balance.
- Remember that even just a hint of a reflection can be a curious and compelling addition to your image.
- Use this technique to evoke emotion. You're the artist. Make a statement.
- Discover yourself in your reflection. As photographers who are usually behind the camera, it's important to reveal ourselves once in a while.
- Pay attention to where your own reflection is within the shot. There are all kinds of creative ways to place yourself in the frame.
- Experiment, be playful, and allow for magic and surprise to find their way into your frame. Happy accidents are common when shooting reflections.
- Although it's not necessary, post-processing can help you enhance or bring out the parts of the reflections you want to highlight in your image. It can help you to achieve your desired results.
Shutter Sisters is a collaborative photo blog (www.shuttersisters.com) and thriving community of women, passionate about photography. Photographer, author and teacher Tracey Clark (www.traceyclark.com) is the founder of Shutter Sisters and author of Elevate the Everyday: A Photographic Guide to Picturing Motherhood (Focal Press).


text:
All News Releases By Date
TOMORROW: EPA Press Conference Call on Final Standards to Protect Florida's Waters
Release Date: 11/14/2010
Contact Information: Davina Marraccini, (404) 387-4368, firstname.lastname@example.com
(TALLAHASSEE – Nov. 14, 2010) Tomorrow, Nov. 15, 2010, U.S. Environmental Protection Agency (EPA) Regional Administrator Gwen Keyes Fleming will hold a press conference call to discuss the Agency's final standards to cut harmful nutrient pollution in Florida's inland waters.
Nutrient pollution is made up of nitrogen and phosphorus and comes from wastewater, urban stormwater and excess fertilizer that flow off the land into our waterways. Nutrient pollution causes harmful algae blooms—the thick, green muck that fouls clear water—that produce toxins harmful to both humans and animals, deplete oxygen needed for fish and shellfish survival, smother vegetation and discolor water.
The Florida Wildlife Federation filed a 2008 lawsuit against EPA, resulting in a finding under the Clean Water Act that nutrient pollution standards are necessary for Florida. The need for these numeric standards was first determined in January 2009 during the previous Administration. The resulting settlement, reflected in a consent decree entered in August 2009, requires EPA to adopt specific or "numeric" nutrient pollution standards by November 2010. The final rule complies with this consent decree. Under the consent decree, EPA is required to issue additional standards for Florida's coastal waters by August 2012, and will shortly be submitting the underlying science for these standards to its independent Science Advisory Board for peer review.
WHEN: Tomorrow, November 15, 2010, 9:45AM (EST)
WHO: Regional Administrator Gwen Keyes Fleming
WHAT: EPA's Florida standards to reduce nutrient pollution
WHERE: Members of the media should RSVP to firstname.lastname@example.com to receive
- the call-in information.
Search this collection of releases | or search all news releases
View selected historical press releases from 1970 to 1998 in the EPA History website.


text:
August 11th, 2011
Study: More educated tend to be more religious, by some measures
By Jim Kavanagh, CNN
People tend to become less religious as they become more educated, right? Not necessarily, according to a new study.
After analyzing data from a large national survey, University of Nebraska-Lincoln sociologist Philip Schwadel found that people actually tend to become more religious - by some definitions, at least - as they further their education.
"It all falls down to what you consider to be religious," said Schwadel, an assistant professor at the University of Nebraska-Lincoln. "If it's simply attending religious services, then no. Highly educated people are not less religious; in fact, they're more religious."
"But if it's saying the Bible is the literal word of God and saying that only one religion is the true religion, then they are less religious," he continued.
Schwadel used data from the highly regarded General Social Survey, a cumulative and nationally representative survey conducted by the National Opinion Research Center at the University of Chicago biannually since 1972.
Social scientists rely heavily on the "gold standard" General Social Survey, which provides cumulative data collected regularly between 1972 and 2010.
His study will be published in an upcoming edition of the journal Review of Religious Research.
Schwadel found that with each additional year of education:
- The likelihood of attending religious services increased 15%.
- The likelihood of reading the Bible at least occasionally increased by 9%.
- The likelihood of switching to a mainline Protestant denomination - Episcopal, Lutheran, Presbyterian USA or United Methodist - increased by 13%.
Respondents to the General Social Survey were asked whether they believe in God without any doubts; with various levels of doubt; whether they have a different concept of God or a higher power; or whether they didn't believe in any such thing, Schwadel said.
"With more years of education, you aren't relatively more likely to say, 'I don't believe in God,'" he said. "But you are relatively more likely to say, 'I believe in a higher power.'"
The findings makes sense to D. Michael Lindsay, president of Gordon College in Massachusetts and author of "Faith in the Halls of Power," about the growing evangelical Christian elite.
"The more educated a person is in their faith, the more cosmopolitan they are in their religious outlook," he said. "They're worldly in the very best sense of the term. They rub shoulders with people of different kinds of faiths every day and as a result they have different visions of what it means to express your faith in the public square."
"They're more open-minded, but here's the thing: They're no less faithful."
But a leading voice for atheists says the study's finding about education increasing certain measures of religiosity may be less straightforward than it appears.
"There are plenty of people who go to church who are not believers," said Ed Buckner, former president of the group American Atheists. "They go for all sorts of reasons. I don't mean that they're all frauds and deceptive, (but) they go for social reasons or (because) that's what's expected of them by their families or their peers. Sometimes they go so they can sell more insurance."
"But there are a lot of atheists in the pews, or at least people who are not committed to and probably haven't even thought about and examined carefully the religious views that are being expressed in that church."
The finding that highly educated people gravitated toward mainline Christian denominations suggested class dynamics at work, Buckner argued.
As people become more educated, he said, they move into the middle and upper middle class. "And as they do so," he said, "they move into more establishment situations regarding the society, which means they join the churches that are the churches of the elite, or at least of the middle class."
But Schwadel said respondents were discussing their actual beliefs, not just churchgoing habits.
"What it all says to me is that religion matters to people of all education levels in the United States," he said. "It's just that, depending on your level of education, you behave and believe differently."
So why the widespread perception that intellectuals are less religious, even largely irreligious?
Academics are at least moderately less religious than the general public, Schwadel said.
"When we see these trends, we tend to exaggerate them," he said. "Most people see a trend and they think everyone's like that."
Lindsay thinks there's more to it than that.
"There has been a concentrated effort by a cohort of very smart people who treat religion as the panacea for the simple-minded," he said.
Bucker disputes that.
"Do we think that anybody who doesn't agree with us is an idiot or a fool? Well, some of us do think that," he said of atheists. "But I don't think it's systematically true of everybody in the movement.
"… I mean, I do think they're wrong. Anybody who believes that there is a sky god out there who is going to do anything good or evil for us, basically anyone who thinks the universe cares about us, is making a mistake," he continued. "In the words of Richard Dawkins, they've been deluded."
But some people's religious beliefs are "deeply held and carefully considered," Buckner said. "And I also realize that some atheists' lack of religious beliefs are pretty superficial and they haven't thought things through.
"I have a lot more respect for a religious person who has really considered this, thought it through, read some books that disagree with their point of view and still accepts that position than I do for somebody who just unthinkingly rejects any particular point of view."
Lindsay said the study could help break down some of society's religious barriers.
"It's a problem of perceptions because it fuels the idea that there's some kind of deeply entrenched culture war where smart people are opposed to religious people, when in fact it's far more complicated than that," he said. "And in fact, the old divisions between deeply religious and irreligious probably don't apply."
soundoff (1,651 Responses)
About this blog
The CNN Belief Blog covers the faith angles of the day's biggest stories, from breaking news to politics to entertainment, fostering a global conversation about the role of religion and belief in readers' lives. It's edited by CNN's Daniel Burke with contributions from Eric Marrapodi and CNN's worldwide news gathering team.