Lovely Additional Information On Resume Examples Photographs - resume update additional information on your resume when writing a resume its a judgment call regarding what additional information should be included youre not going to build a powerful personal brand by stuffing every ski , additional information on resume examples. information technology it resume sample resume companion writing a successful information technology it resume can be tricky use this professionally written sample and our writing tips to help you build yours , additional information on resume examples. additional information on resume examples how to pose a job winning cover letter from additional information on resume examples source pinterest com additional information on resume examples . resume examples by professional resume writers resume examples written by professional resume writers for various job types formats and career levels writing guide and bonus tips , additional information on resume examples. resume examples by industry monster com resume examples by industry you need to create a resume that highlights the specific skills employers are looking for check out these resume templates for .
Lovely Additional Information On Resume Examples Photographs - resume examples by industry monster com resume examples by industry you need to create a resume that highlights the specific skills employers are looking for check out these resume templates for . 10 resume summary statement examples that get interviews proven resume summary examples professional summary examples that will get you interviews copy these proven formulas for your resume and get more . 10 resume summary statement examples that get interviews proven resume summary examples professional summary examples that will get you interviews copy these proven formulas for your resume and get more , additional information on resume examples. teacher resume samples writing guide resume genius not sure how to write your teacher resume our resume samples and writing tips can help guide you through the process get started now , additional information on resume examples. resumestips and advicesample resumesvault com get resume writing tips expert career advice and download free sample resumes . , Lovely Additional Information On Resume Examples Photographs.


text:
Q: IE8 html image alignment Currently all browsers are showing my page correctly except IE8, which is having a mystery alignment issue.
I already added the meta that worked for previous questions:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
However this has not fixed the problem.
Can you please look at my page to see if anything looks incorrect?
http://oldcalifornia.com/Exterior_Craftsman.asp
Thank you,
Robert

A: Your site is designed using tables, tables shouldn't be used for anything except displaying tabular data. Consider redesigning your site using divs.

A: I have also suffered this issue. Add standard doctype declaration:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

I am not sure, but try if this would work.

redpajama_set_name: RedPajamaStackExchange


137 bungalows near the sea, available in double or family rooms, both of which feature patios. Almost all have private bathroom with shower, a few have a bathtub. All have air conditioning, heating, direct phone, satellite TV, mini bar and safe. The Bella Vista restaurant is reserved for guests for breakfast and dinner.
DOUBLES have a large double or twin room and bathroom with bath/shower. Some also have an adjoining smaller double/twin room.
FAMILIES (recommended for families of 2 adults & 2 children under 12 a 5th bed is available but will greatly reduce space. They consist of two separate areas: one with large double bedroom and bathroom with bath and shower and an adjoining living room with a two single sofa beds.


text:
Tilapia-shrimp polyculture in Negros Island, Philippines: A review
Philip S. Cruz, Merlina N. Andalecio, Remedios B. Bolivar, Kevin Fitzsimmons
Soil, Water and Environmental Science
Tilapia-shrimp polyculture has played an important role in current efforts to control luminous bacterial disease caused by Vibrio harveyi. At present, green water technology is most extensively used by shrimp farmers in Negros Island in the central Philippines. While the contribution of tilapia as a biomanipulator is highlighted in the literature, the mechanism of action is not well understood. Data were gathered from shrimp ponds practicing two production systems: (a) green water system (probiotics + tilapia) and (b) closed/semiclosed system (probiotics alone). There was no difference between luminous Vibrio count (P < 0.05) in both systems, and water quality was found to be similar (P < 0.05). Because the green water system uses a bigger reservoir to raise the tilapia biomass, the net shrimp production was lower. In terms of direct cost of production, however, the green water system was 10-15% lower than the closed/semiclosed system because of significantly less aeration required. The polyculture maintained a more stable plankton environment during the early months of culture, which increased survival of shrimps. Various pathways are presented for the control of luminous bacterial growth in polyculture ponds: (a) fish feeding on organic wastes and conversion to feces; (b) selective fish foraging to increase the dominance of beneficial phytoplankton; (c) bioturbation of pond sediments; and (d) release in the water column of antimicrobials, fungi, or competing bacteria from the skin and gut mucus of tilapia.
Journal of the World Aquaculture Society
Dive into the research topics of 'Tilapia-shrimp polyculture in Negros Island, Philippines: A review'. Together they form a unique fingerprint.
polyculture Earth & Environmental Sciences 100%
polyculture (aquaculture) Agriculture & Biology 94%
tilapia (common name) Agriculture & Biology 78%
Philippines Agriculture & Biology 68%
probiotics Earth & Environmental Sciences 63%
shrimp Agriculture & Biology 59%
pond Earth & Environmental Sciences 56%
closed loop systems Agriculture & Biology 32%
Cruz, P. S., Andalecio, M. N., Bolivar, R. B., & Fitzsimmons, K. (2008). Tilapia-shrimp polyculture in Negros Island, Philippines: A review. Journal of the World Aquaculture Society, 39(6), 713-725. https://doi.org/10.1111/j.1749-7345.2008.00207.x
Tilapia-shrimp polyculture in Negros Island, Philippines : A review. / Cruz, Philip S.; Andalecio, Merlina N.; Bolivar, Remedios B.; Fitzsimmons, Kevin.
In: Journal of the World Aquaculture Society, Vol. 39, No. 6, 2008, p. 713-725.
Cruz, PS, Andalecio, MN, Bolivar, RB & Fitzsimmons, K 2008, 'Tilapia-shrimp polyculture in Negros Island, Philippines: A review', Journal of the World Aquaculture Society, vol. 39, no. 6, pp. 713-725. https://doi.org/10.1111/j.1749-7345.2008.00207.x
Cruz PS, Andalecio MN, Bolivar RB, Fitzsimmons K. Tilapia-shrimp polyculture in Negros Island, Philippines: A review. Journal of the World Aquaculture Society. 2008;39(6):713-725. https://doi.org/10.1111/j.1749-7345.2008.00207.x
Cruz, Philip S. ; Andalecio, Merlina N. ; Bolivar, Remedios B. ; Fitzsimmons, Kevin. / Tilapia-shrimp polyculture in Negros Island, Philippines : A review. In: Journal of the World Aquaculture Society. 2008 ; Vol. 39, No. 6. pp. 713-725.
@article{c3ffbef89236424da397ed526cdb6789,
title = "Tilapia-shrimp polyculture in Negros Island, Philippines: A review",
abstract = "Tilapia-shrimp polyculture has played an important role in current efforts to control luminous bacterial disease caused by Vibrio harveyi. At present, green water technology is most extensively used by shrimp farmers in Negros Island in the central Philippines. While the contribution of tilapia as a biomanipulator is highlighted in the literature, the mechanism of action is not well understood. Data were gathered from shrimp ponds practicing two production systems: (a) green water system (probiotics + tilapia) and (b) closed/semiclosed system (probiotics alone). There was no difference between luminous Vibrio count (P < 0.05) in both systems, and water quality was found to be similar (P < 0.05). Because the green water system uses a bigger reservoir to raise the tilapia biomass, the net shrimp production was lower. In terms of direct cost of production, however, the green water system was 10-15% lower than the closed/semiclosed system because of significantly less aeration required. The polyculture maintained a more stable plankton environment during the early months of culture, which increased survival of shrimps. Various pathways are presented for the control of luminous bacterial growth in polyculture ponds: (a) fish feeding on organic wastes and conversion to feces; (b) selective fish foraging to increase the dominance of beneficial phytoplankton; (c) bioturbation of pond sediments; and (d) release in the water column of antimicrobials, fungi, or competing bacteria from the skin and gut mucus of tilapia.",
author = "Cruz, {Philip S.} and Andalecio, {Merlina N.} and Bolivar, {Remedios B.} and Kevin Fitzsimmons",
journal = "Journal of the World Aquaculture Society",
T1 - Tilapia-shrimp polyculture in Negros Island, Philippines
T2 - A review
AU - Cruz, Philip S.
AU - Andalecio, Merlina N.
AU - Bolivar, Remedios B.
AU - Fitzsimmons, Kevin
N2 - Tilapia-shrimp polyculture has played an important role in current efforts to control luminous bacterial disease caused by Vibrio harveyi. At present, green water technology is most extensively used by shrimp farmers in Negros Island in the central Philippines. While the contribution of tilapia as a biomanipulator is highlighted in the literature, the mechanism of action is not well understood. Data were gathered from shrimp ponds practicing two production systems: (a) green water system (probiotics + tilapia) and (b) closed/semiclosed system (probiotics alone). There was no difference between luminous Vibrio count (P < 0.05) in both systems, and water quality was found to be similar (P < 0.05). Because the green water system uses a bigger reservoir to raise the tilapia biomass, the net shrimp production was lower. In terms of direct cost of production, however, the green water system was 10-15% lower than the closed/semiclosed system because of significantly less aeration required. The polyculture maintained a more stable plankton environment during the early months of culture, which increased survival of shrimps. Various pathways are presented for the control of luminous bacterial growth in polyculture ponds: (a) fish feeding on organic wastes and conversion to feces; (b) selective fish foraging to increase the dominance of beneficial phytoplankton; (c) bioturbation of pond sediments; and (d) release in the water column of antimicrobials, fungi, or competing bacteria from the skin and gut mucus of tilapia.
AB - Tilapia-shrimp polyculture has played an important role in current efforts to control luminous bacterial disease caused by Vibrio harveyi. At present, green water technology is most extensively used by shrimp farmers in Negros Island in the central Philippines. While the contribution of tilapia as a biomanipulator is highlighted in the literature, the mechanism of action is not well understood. Data were gathered from shrimp ponds practicing two production systems: (a) green water system (probiotics + tilapia) and (b) closed/semiclosed system (probiotics alone). There was no difference between luminous Vibrio count (P < 0.05) in both systems, and water quality was found to be similar (P < 0.05). Because the green water system uses a bigger reservoir to raise the tilapia biomass, the net shrimp production was lower. In terms of direct cost of production, however, the green water system was 10-15% lower than the closed/semiclosed system because of significantly less aeration required. The polyculture maintained a more stable plankton environment during the early months of culture, which increased survival of shrimps. Various pathways are presented for the control of luminous bacterial growth in polyculture ponds: (a) fish feeding on organic wastes and conversion to feces; (b) selective fish foraging to increase the dominance of beneficial phytoplankton; (c) bioturbation of pond sediments; and (d) release in the water column of antimicrobials, fungi, or competing bacteria from the skin and gut mucus of tilapia.
JO - Journal of the World Aquaculture Society
JF - Journal of the World Aquaculture Society

redpajama_set_name: RedPajamaCommonCrawl


text:
Tag Archive for: NDAA
Lindsey Graham and John McCain: Hypocrisy Tourists in Kabul
January 3, 2014 /13 Comments/in Indefinite Detention, War /by Jim White
Today's New York Times dutifully bleats to us that Afghan President Hamid Karzai has been "warned" over his plan to release 88 prisoners from the Detention Facility in Parwan over the objections of the US. The warning:
"If these releases go ahead, it will do irreparable damage to the relationship," said Senator Lindsey Graham, Republican of South Carolina. "There will be a backlash in the U.S. Congress."
Those doing the warning were hypocrisy tourists Lindsey Graham and John McCain. Missing their third amigo, Joe Lieberman, the duo settled for stand-in John Barrasso to join them on the trip. It appears, however, that Barrasso opted out of the opportunity to open his mouth, as he is not quoted in the Times piece and doesn't appear in the video interview ToloNews conducted while they were in Kabul:
[youtuber youtube='http://www.youtube.com/watch?v=B92u6yqwwOY']
The hypocrisy emanating from [Linsey, as he is identified in the ToloNews video] Graham and McCain is staggering. Back in December of 2011, Graham led the charge to put remarkably strong rights protection for the Parwan prisoners into the NDAA, as Marcy noted, but Obama then proceeded to gut that language with his signing statement.
The entire issue of the prison at Parwan and the "independence" of Afghanistan to make its own decisions on the fate of prisoners put into the facility by US forces has been a point of contention for years and has seen significant deception on the part of the US. For example, in September of 2012, the US pretended, as they had several times before, to hand over "complete" control of the prison to Afghans, but still claimed to have veto power over the release of any prisoners. The US pretended again in March, 2013 to do the handover of the prison.
The current controversy again seems to come down to whether this veto power still exists and to the underlying wish of the US for Afghanistan to practice indefinite detention without charges, which Afghanistan has resisted instituting.
The relevant section 1024 of the NDAA calls for review of Afghan prisoner status:
But the NDAA wasn't all bad when it comes to U.S. military detention policy. In fact, section 1024 of the law, spearheaded by Senators John McCain and Lindsey Graham, provides detainees held indefinitely in Afghanistan with the right to a military defense lawyer and a neutral military judge to evaluate whether their detention is lawful and necessary. The provision was not particularly controversial and garnered little media attention; Congress apparently understood that for the U.S. to maintain any legitimacy while imprisoning some 3,000 Afghans in their own country it has to provide them basic rights to defend themselves.
As Marcy noted, though, Obama's signing statement sought to undercut that authority for an Afghan review. Graham and McCain, on their hypocrisy tour, appear to be agitating for the US veto power that Afghanistan never seems to have agreed to. From the ToloNews article accompanying the video: Read more →
https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png 0 0 Jim White https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png Jim White2014-01-03 11:23:412014-01-03 15:25:32Lindsey Graham and John McCain: Hypocrisy Tourists in Kabul
Pentagon Finally Surrenders, Cancels New Purchase of Russian Helicopters Through Dealer Supplying Syria
November 14, 2013 /4 Comments/in War /by Jim White
Back in June, I wrote about the deceit employed by the Pentagon in going against the advice of SIGAR (pdf) and explicit language in the NDAA to purchase Russian Mi-17 helicopters through the arms dealer Rosoboronexport. Because Rosoboronexport has been supplying weapons to the Assad regime in Syria, the helicopter purchase took on additional levels of outrage. It appears that the Pentagon did get about half of the helicopters it wanted by claiming to use leftover 2012 funds (use of 2013 funds for the helicopters was banned in the NDAA), but they have now cancelled plans to use 2014 funds for the remaining helicopters that had been planned.
Both AP and Reuters inform us of the cancellation of the order. The Reuters story notes that the procurement system for the helicopters is the subject of an ongoing criminal investigation:
Reuters reported in August that the Defense Criminal Investigative Service had opened a criminal probe into the Huntsville, Alabama, Army aviation unit that oversees the Mi-17 program, and ties between the unit's former chief and two foreign subcontractors.
Texas Senator John Cornyn did a bit of a victory dance over the cancellation. As described in the AP story:
Bipartisan opposition to the Mi-17 acquisition grew as the violence in Syria escalated and U.S. relations with Russia deteriorated. A growing number of lawmakers from both political parties objected to acquiring military gear from Rosoboronexport, which has provided Assad's regime with weapons used against Syrian civilians.
"I applaud the Defense Department's decision to cancel its plan to buy 15 additional Mi-17 helicopters from Rosoboronexport," Sen. John Cornyn, R-Texas, said in an emailed statement. "Doing business with the supplier of these helicopters has been a morally bankrupt policy, and as a nation, we should no longer be subsidizing Assad's war crimes in Syria."
But this victory by opponents of the sale comes after a large victory by the Pentagon in the earlier battles:
Rosoboronexport announced Monday that 12 of the Mi-17s had been delivered to Afghanistan in the month of October. The shipments, the export agency said, reflected the joint effort between Russia and the U.S. to combat international terrorism.
The AP story spends a bit of time on how Mi-17's were chosen: Read more →
https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png 0 0 Jim White https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png Jim White2013-11-14 09:29:242013-11-14 09:29:24Pentagon Finally Surrenders, Cancels New Purchase of Russian Helicopters Through Dealer Supplying Syria
Defense Department Ignores SIGAR, Orders Russian Helicopters in End-Run Around NDAA
June 29, 2013 /9 Comments/in War /by Jim White
An Mi-17 undergoing maintenance. Most maintenance within SMW is carried out by contractors because SMW lacks the expertise. (SIGAR photo).
The Special Inspector General for Afghanistan Reconstruction, (SIGAR) issued a report (pdf) yesterday that serves as microcosm of the bumbling ineptitude and denial of reality that has characterized the entire US military's misadventure in Afghanistan. Subtexts running through this scandal run the gamut from US think tanks cooking up unworkable plans to the vast network of international arms dealing (replete with counterfeit parts), Russia supplying arms to Syria, possible blow-back from the arrest of Viktor Bout, the US Congress remarkably trying to exert a bit of power and finally DoD declaring that they will continue with their schedule for claiming Afghanistan can provide its own defense operations despite overwhelming evidence to the contrary.
At issue here primarily is a contract for 30 Russian Mi-17 helicopters. Despite the fact that the US has been at war in Afghanistan continuously for almost twelve years now, and despite the spectacular failure of US helicopters under haboob (dust storm) conditions in the failed April, 1980 Iran hostage rescue attempt, it appears that Russian helicopters are more reliable in desert conditions and easier to maintain in flying order with a less sophisticated ground crew than US helicopters
The route by which we got to this contract is remarkable. The helicopters are to be supplied to the Special Mission Wing, which is the air support group for Afghanistan's Special Operations forces. But how this group came into existence is very important to the current scandal. From the report (footnotes removed in this and all subsequent quotes):
At a December 2011 Special Operations Summit, ISAF senior leadership identified the development of air support capacity as a priority for improving Afghan military capabilities for counterterrorism and other special operations missions. To respond to this need, NTM-A [NATO Training Mission – Afghanistan] sponsored a RAND study to assess requirements and provide recommendations. The study's recommendations discussed different scenarios for the planned size—in terms of both personnel and aircraft—of air support, the command structure, and scope of operations.
NTM-A determined that the Afghan Ministry of Interior's (MOI) existing Air Interdiction Unit, a counternarcotics-focused unit, would provide the best foundation to develop an Afghan counterterrorism and special operations aviation capability, while maintaining critical counternarcotics efforts. On May 12, 2012, NTM-A issued a military order identifying its concept for the establishment of the SMW. On July 18, 2012, the ANA commissioned the SMW, which replaced the Air Interdiction Unit.
That's all fine and dandy, except that the geniuses at RAND didn't allow for the fact that they created a destructive turf war inside the Afghan government. The new SMW is to be housed within Afghanistan's Ministry of Defense (MOD) since that is where Afghan Special Operations resides. The turf war over moving the existing unit has not yet been resolved: Read more →
https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png 0 0 Jim White https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png Jim White2013-06-29 12:47:192013-06-29 12:47:19Defense Department Ignores SIGAR, Orders Russian Helicopters in End-Run Around NDAA
Declaring "Wars" the President Didn't Ask For
May 8, 2013 /4 Comments/in War /by emptywheel
I'll probably have a few posts on Harold Koh's speech opposing what he calls the "Forever War" at the Oxford Union. For now, I want to look at his argument against a new Authorization to Use Military Force.
I strongly disagree with those who claim that new legislation is now necessary to authorize the Administration to fight against new enemies. The burden of proving that such legislation would be either necessary or wise should fall on the proponents. As a lifelong international and constitutional lawyer who has worked on these legal issues for a decade, I see no proof that the U.S. lacks legal authority to defend itself against those with whom we are genuinely at war or who pose to us a genuine and imminent threat. Significantly, Congress has never declared war against an enemy when the President has not asked for such a declaration. Nor would adopting new domestic legislation make actions in preemptive self-defense lawful under international law. And unless we can clearly define just who the new enemies are–and why existing legal authorities are insufficient to defend ourselves against them–we have no basis for passing new laws that would perpetuate the Forever War against shadowy foes whose association with those who have attacked us on 9/11 cannot be proven.
It's hard to tell where the boundaries between good faith and deception lie here. After all, in several places in the speech — including this passage purportedly distinguishing what Obama has done from what Bush did — Koh's language admits the possibility that Congressional sanction for military force is not the only authority Obama is working with (though he does admit that Congressional authority is one source of authority).
First, the Obama Administration has not treated the post-9/11 conflict as a Global War on Terror to which no law applies, in which the United States is authorized to use force anywhere, against anyone. Instead, it has acknowledged that its authority under domestic law derives from Acts of Congress, not just the President's s vague constitutional powers.
And so when he says things like "I see no proof that the U.S. lacks legal authority to defend itself against those with whom we are genuinely at war or who pose to us a genuine and imminent threat," it seems likely he's preserving the ability to rely on Article II authority for something called an "imminent threat." The same is true when he invokes "existing legal authorities" when he talks about fighting people who are clearly not Al Qaeda.
In other words, even while he seems to be opposed to treating our newer enemies as war opponents, he also seems to be reserving the right to rely on Article II authority to go after them. Which is not necessarily a better proposition for those who truly value other tools rather than killing.
That's why I'm struck by this sentence.
Significantly, Congress has never declared war against an enemy when the President has not asked for such a declaration.
What Koh seems to be worried about is shifting the balance of the Youngstown test — whether Presidential power is expansive or limited — of the AUMF itself (Koh pretends authorizing military force is the same thing as declaring war, but in any case, last I checked, the authority to declare war belonged to Article I).
That's true, first of all, because the way the existing AUMF was written — which allows the President to determine the enemy and has been interpreted consistently but wrongly as authorizing war powers here in the US. A new AUMF might (though probably wouldn't) explicitly clarify the limits to war powers in the US or at least with US citizens.
But as even the 2012 NDAA showed, it can work the other way, with Congress requiring that Obama default to military detention and commissions with any new terrorist suspects. Mind you, Obama took the limits on what he could do in Gitmo far, far more seriously than he did the requirement that DOD give every one of its detainees a meaningful review, so he's already picking and choosing what legislative requirements he fulfills. But in theory at least, Congress can mandate the President treat certain targets as enemies of war, rather than criminals.
But that, it seems to me, is ultimately what this debate about a new AUMF comes down to. Koh and, presumably, others who have served the President won't want Congress to change the delicate balance that offers the President a great deal of flexibility to operate under both the AUMF and Article II. And to some degree, they're right to worry about what batshit stuff the Lindsey Grahams of the world will mandate. But I suspect they're just as worried that a new AUMF will put real limits to the President's current fairly unlimited authority.
Look, I don't trust Congress to write a new AUMF either. If they do one, it's going to contain all manner of batshittery.
But bizarrely, in our crazy world, passing a new one might actually be a more effective way to limit what the President can and can't do as anything else that has been tried. If we want to force the Executive Branch to stop waging war against Americans in America, we're going to have to do so explicitly.
https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png 0 0 emptywheel https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png emptywheel2013-05-08 21:16:122013-05-09 03:38:37Declaring "Wars" the President Didn't Ask For
Courts Won't Be Reviewing Legality of Counterterrorism Programs Anytime Soon
February 26, 2013 /23 Comments/in FISA, state secrets /by emptywheel
By a 5-4 party line vote, SCOTUS denied standing in Amnesty v. Clapper today.
The majority opinion, written by Sam Alito, emphasizes separation of power.
The law of Article III standing, which is built on separation-of-powers principles, serves to prevent the judicial process from being used to usurp the powers of the political branches.
In keeping with the purpose of this doctrine, "[o]ur standing inquiry has been especially rigorous when reaching the merits of the dispute would force us to decide whether an action taken by one of the other two branches of the Federal Government was unconstitutional."
and we have often found a lack of standing in cases in which the Judiciary has been requested to review actions of the political branches in the fields of intelligence gathering and foreign affairs,
It uses a high standard for the imminence of harm, including what I consider a highly ironic passage, considering the Administration's own standards for imminence.
"Although imminence is concededly a somewhat elastic concept, it cannot be stretched beyond its purpose, which is to ensure that the alleged injury is not too speculative for Article III purposes—that the injury is certainly impending." Id., at 565, n. 2 (internal quotation marks omitted). Thus, we have repeatedly reiterated that "threatened injury must be certainly impending to constitute injury in fact," and that "[a]llegations of possible future injury" are not sufficient.
It even says it can't use in camera review in this case, because doing so would establish a precedent terrorists could use to find out whether they're being wiretapped.
It was suggested at oral argument that the Government could help resolve the standing inquiry by disclosing to a court, perhaps through an in camera proceeding, (1) whether it is intercepting respondents' communications and (2) what targeting or minimization procedures it is using. See Tr. of Oral Arg. 13–14, 44, 56. This suggestion is puzzling. As an initial matter, it is respondents' burden to prove their standing by pointing to specific facts, Lujan v. Defenders of Wildlife, 504 U. S. 555, 561 (1992), not the Government's burden to disprove standing by revealing details of its surveillance priorities. Moreover, this type of hypothetical disclosure proceeding would allow a terrorist (or his attorney) to determine whether he is currently under U. S. surveillance simply by filing a lawsuit challenging the Government's surveillance program. Even if the terrorist's attorney were to comply with a protective order prohibiting him from sharing the Government's disclosures with his client, the court's postdisclosure decision about whether to dismiss the suit for lack of standing would surely signal to the terrorist whether his name was on the list of surveillance targets.
Ultimately, though, it said the plaintiff's fears were too speculative to amount to standing.
It does so by ignoring — and indeed, misrepresenting — the details presented about what is new in this program. Here's how Stephen Breyer, in his dissent, describes them.
The addition of §1881a in 2008 changed this prior law in three important ways. First, it eliminated the require ment that the Government describe to the court each specific target and identify each facility at which its sur veillance would be directed, thus permitting surveillance on a programmatic, not necessarily individualized, basis. §1881a(g). Second, it eliminated the requirement that a target be a "foreign power or an agent of a foreign power." Ibid. Third, it diminished the court's authority to insist upon, and eliminated its authority to supervise, instance-specific privacy-intrusion minimization procedures (though the Government still must use court-approved general minimization procedures). §1881a(e).
By contrast, Alito claims the new program only allows the government to target individuals (h/t Julian Sanchez who first pointed this out).
https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png 0 0 emptywheel https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png emptywheel2013-02-26 12:46:402013-02-26 16:04:59Courts Won't Be Reviewing Legality of Counterterrorism Programs Anytime Soon
Department of Pre-Crime, Part 4: The NDAA Congress Is Not About to Legislate Targeted Killing
February 20, 2013 /7 Comments/in Drones, FISA, Unitary Executive /by emptywheel
In three earlier posts, I have discussed the problem with turning the FISA Court into the Drone and/or Targeted Killing Court: As I noted, the existing FISA Court no longer fulfills the already problematic role it was set up to have, ensuring that the government have particularized probable cause before it wiretap someone. On the contrary, the FISA Court now serves as a veil of secrecy behind which the government can invent new legal theories with little check.
In addition, before the FISA Court started rubberstamping Drone Strikes and/or Targeted Killings of Americans, presumably it would need an actual law to guide it. (Though Carrie Cordero, who is opposed to the Drone and/or Targeted Killing FISA Court idea because it might actually restrain the Executive, seems to envision the Court just using the standards the Executive has itself invented.) And there's a problem with that.
The same Congress that hasn't been successful passing legislation on detention in the 2012 NDAA is certainly not up to the task of drafting a law describing when targeted killing is okay.
As a reminder, here's what happened with the NDAA sections on military detention. The effort started with an attempt to restate whom we are at war with, so as to mandate that those we're at war with be subject to law of war detention. The language attempting to restate whom we're at war with ended up saying:
(a) IN GENERAL.—Congress affirms that the authority of the President to use all necessary and appropriate force pursuant to the Authorization for Use of Military Force (Public Law 107–40; 50 U.S.C. 1541 note) includes the authority for the Armed Forces of the United States to detain covered persons (as defined in subsection (b)) pending disposition under the law of war.
(b) COVERED PERSONS.—A covered person under this section is any person as follows:
(1) A person who planned, authorized, committed, or aided the terrorist attacks that occurred on September 11, 2001, or harbored those responsible for those attacks.
(2) A person who was a part of or substantially supported al-Qaeda, the Taliban, or associated forces that are engaged in hostilities against the United States or its coalition partners, including any person who has committed a belligerent act or has directly supported such hostilities in aid of such enemy forces.
Compare that language with what the actual AUMF says:
That the President is authorized to use all necessary and appropriate force against those nations, organizations, or persons he determines planned, authorized, committed, or aided the terrorist attacks that occurred on September 11, 2001, or harbored such organizations or persons, in order to prevent any future acts of international terrorism against the United States by such nations, organizations or persons.
Part of the difference arises from the shift to focusing exclusively on persons (you can't detain a nation, after all, though Palestine might disagree).
Part of the difference comes from the effort — clause 2 above — to extend the AUMF to those associated forces. This was meant to cover groups like AQAP and al-Shabaab, but as we'll see, it's one source of the problem with the law.
But part of the problem is that the NDAA language smartly took out the "he determines" and "in order to prevent any future acts of international terrorism" language. The former has long been a giant loophole, allowing the President to define in secret whom we're at war against. And I increasingly suspect the Administration has been using the latter language to expand the concept of imminent threat.
In other words, in an effort to parrot back its understanding of whom we're at war against, Congress both introduced some new fuzzy language — associated forces — and took out existing loopholes — the "he determines" and "prevent any future acts."
https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png 0 0 emptywheel https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png emptywheel2013-02-20 12:29:222013-02-20 12:37:57Department of Pre-Crime, Part 4: The NDAA Congress Is Not About to Legislate Targeted Killing
Is Obama Preparing the "Vote for Me or Mitt Will Indefinitely Detain You" Pitch?
October 9, 2012 /21 Comments/in Indefinite Detention, Unitary Executive /by emptywheel
Jesselyn Raddack catches Obama promising to start talking about civil liberties on the campaign trail.
So on every issue domestically we've got differences, and I haven't even — we haven't talked about the fact that my opponent feels comfortable with Washington making decisions about women's health care that women, Michelle tells me, are perfectly capable of making themselves. (Laughter and applause.)
We haven't talked about what's at stake with respect to the Supreme Court. We haven't talked about what's at stake with respect to civil liberties. [my emphasis]
Raddack proceeds to demonstrate the many ways that talking civil liberties won't help Obama.
But she's missing one thing. As I noted during the debate on the NDAA, Obama's apologists essentially adopted a "Vote for Obama or Newt (who was then leading the GOP pack) will indefinitely detain you" approach to the NDAA.
But don't worry about this breathtaking assertion of unlimited presidential authority, [Ken] Gude suggests, because Obama's not a big military detention fan.
The Obama administration in word and deed has made it very clear that the president does not believe it necessary or appropriate to use military detention authority in the United States. Read more →
https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png 0 0 emptywheel https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png emptywheel2012-10-09 13:53:112012-10-09 13:53:11Is Obama Preparing the "Vote for Me or Mitt Will Indefinitely Detain You" Pitch?
Latif, the NDAA, and Mitt's Moochers
September 20, 2012 /8 Comments/in automobiles, Indefinite Detention, Torture /by emptywheel
Amy Goodman is doing a 100 city tour to support public outlets that carry Democracy Now. She also gave a talk about the importance of independent media at Grand Rapids Community Media Center.
And, she had me–live!–on her show.
Man I've got a lot of hair!
https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png 0 0 emptywheel https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png emptywheel2012-09-20 06:38:262012-09-20 06:38:26Latif, the NDAA, and Mitt's Moochers
Hedges NDAA Indefinite Detention Decision Stayed By 2nd Circuit
September 17, 2012 /11 Comments/in Congress, Department of Justice, Indefinite Detention, Law, Obama Administration, Terrorism /by bmaz
As much as I, and most who care about Constitutional protections and Article III courts still having a function in balance of power determinations, the recent 112 page ruling by Judge Katherine Forrest in SDNY (see here and, more importantly, here) had fundamental issues that made review certain, and reversal all but so.
The first step was to seek a stay in the SDNY trial court, which Judge Forrest predictably refused; but then the matter would go to the Second Circuit, and the stay application was formally filed today.
Well, that didn't take long. From Josh Gerstein at Politico, just filed:
A single federal appeals court judge put a temporary hold Monday night on a district court judge's ruling blocking enforcement of indefinite detention provisions in a defense bill passed by Congress and signed into law last year by President Barack Obama.
U.S. Court of Appeals for the 2nd Circuit Judge Raymond Lohier issued a one-page order staying the district court judge's injunction until a three-judge panel of the court can take up the issue on September 28.
Lohier offered no explanation or rationale for the temporary stay.
Here is the actual order both granting the temporary stay and scheduling the September 28 motions panel consideration.
This is effectively an administrative stay until the full three judge motions panel can consider the matter properly on September 28th. But I would be shocked if the full panel does anything but continue the stay for the pendency of the appeal.
https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png 0 0 bmaz https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png bmaz2012-09-17 23:21:272012-09-18 01:43:26Hedges NDAA Indefinite Detention Decision Stayed By 2nd Circuit
DOJ Files Appeal: Further Thoughts On Hedges and The Lawfare/Wittes Analysis
September 13, 2012 /8 Comments/in Congress, Department of Justice, Indefinite Detention, Law, Obama Administration, Terrorism, Unitary Executive /by bmaz
Last night (well for me, early morning by the blog clock) I did a post on the decision in the SDNY case of Hedges et. al v. Obama. It was, save for some extended quotations, a relatively short post that touched perhaps too much on the positive and not enough on the inherent problems that lead me to conclude at the end of the post that the decision's odds on appeal are dire.
I also noted that it was certain the DOJ would appeal Judge Forrest's decision. Well, that didn't take long, it has already occurred. This afternoon, the DOJ filed their Notice of Appeal.
As nearly all initial notices of appeal are, it is a perfunctory two page document. But the intent and resolve of DOJ is crystal clear. Let's talk about why the DOJ is being so immediately aggressive and what their chances are.
I woke up this morning and saw the, albeit it not specifically targeted, counterpoint to my initial rosy take offered by Ben Wittes at Lawfare, and I realized there was a duty to do a better job of discussing the problems with Forrest's decision as well. Wittes' post is worth a read so that the flip side of the joy those of us on the left currently feel is tempered a bit by the stark realities of where Katherine Forrest's handiwork is truly headed.
Wittes makes three main critiques. The first:
So put simply, Judge Forrest's entire opinion hinges on the idea that the NDAA expanded the AUMF detention authority, yet she never once states honestly the D.C. Circuit law extant at the time of its passage—law which unambiguously supports the government's contention that the NDAA affected little or no substantive change in the AUMF detention power.
Secondly:
Second, Judge Forrest is also deeply confused about the applicability of the laws of war to detention authority under U.S. domestic law. She does actually does spend a great deal of time talking about Al-Bihani, just not about the part of it that really matters to the NDAA. She fixates instead on the panel majority's determination that the laws of war do not govern detentions because they are not part of U.S. domestic law. Why exactly she thinks this point is relevant I'm not quite sure. She seems to think that the laws of war are vaguer and more permissive than the AUMF—precisely the opposite of the Al-Bihani panel's assumption that the laws of war would impose additional constraints. But never mind. Someone needs to tell Judge Forrest that the D.C. Circuit, in its famous non-en-banc en-banc repudiated that aspect of the panel decision denying the applicability of the laws of war and has since assumed that the laws of war do inform detention authority under the AUMF. In other words, Judge Forrest ignores—indeed misrepresents—Al-Bihani on the key matter to which it is surpassingly relevant, and she fixates on an aspect of the opinion that is far less relevant and that, in any case, is no longer good law.
Lastly, Ben feels the scope of the permanent injunction prescribed by Forrest is overbroad:
Judge Forrest is surely not the first district court judge to try to enjoin the government with respect to those not party to a litigation and engaged in conduct not resembling the conduct the parties allege in their complaint. But her decision represents an extreme kind of case of this behavior. After all, "in any manner and as to any person" would seem by its terms to cover U.S. detention operations in Afghanistan.
First off, although I did not quote that portion of Ben's analysis, but I think we both agree that Judge Forrest pens overly long and loosely constructed opinions, if the two in Hedges are any Read more →
https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png 0 0 bmaz https://www.emptywheel.net/wp-content/uploads/2016/07/Logo-Web.png bmaz2012-09-13 16:54:212012-09-13 17:15:56DOJ Files Appeal: Further Thoughts On Hedges and The Lawfare/Wittes Analysis


Due to the threat of severe weather from Hurricane Irma and the potential impacts for our area, the City of Enterprise will be closed on Monday and Tuesday. All essential personnel and first responders will be available in the event they are needed. Mayor Cooper, EMA officials, and city officials have all been monitoring the storm and are taking this storm very serious and taking every precaution to make sure that all citizens are safe. For shelter information, please contact the Wiregrass Area United Way's 2-1-1 service. On your phone, simply dial 211. Once winds are sustained around 40 mph, first responders might not be available to respond until the winds settle. Residents are asked that as the winds calm, to stay off the roads and stay indoors to let first responders and crews clear the roads. Please pay attention to local media outlets for more information.


text:
New November Games Revealed and More to Come Soon | Gaming News
The perfect source for gaming uptodate news
It hasn't even been a week since Xbox Game Pass members got a surprise batch of spooky new games to play, and now they're getting even more. Starting on November 1st, Game Pass members will get access to five more fantastic games. And, on November 10th, even more new games will be announced at the X018 Microsoft conference! Read on to find what's in store for this month, how Game Pass works, and how you can become a member for really cheap right now.
Xbox Game Pass is like Netflix for games. You pay one monthly price and you get access to over 100 games (with new ones added monthly) that you can play 24 hours a day for as long as you want. It's just like other game subscriptions, but Xbox Game Pass isn't limited to just one publisher — which means you can play a wider variety of titles. Game Pass members also get access to Xbox exclusive titles on the day they release– like Forza Horizon 4 earlier this month.
Play all of these games and over 100 more with an Xbox Game Pass Subscription starting at £2.99 if you join today!
Sniper Elite 4 (Available November 1)
Travel through diverse and detailed environments and engage in stealth gameplay as you help liberate Italy from the jaws of fascism. This latest entry in the World War II combat franchise takes you closer to the action than ever before. When you get the kill-shot in Sniper Elite 4… you'll know. Check out the video above to see what we mean.
Olli Olli 2 XL Edition (Available November 1)
This award-winning side-scrolling skateboard game will let you grind, flip, and manual your way through 100 unique levels. Play single player, or with friends in local multiplayer. There's also the option to go for a Free-Skate to discover new tricks, perfect old ones, and develop the ultimate flow.
Sheltered (Available November 1)
It goes without saying that life in a post-apocalyptic world isn't easy; but being safe in a bunker helps… at least until the food runs out. In Sheltered, it's your job to keep you and your family safe and alive for as long as you can– even when the odds are against you. You'll encounter intruders, combat crazed outsiders, and manage resources in a world that's randomly generated in each playthrough. Good luck.
Rise and Shine (Available November 1)
Aliens are here, but never fear, Rise and his trusty gun named "Shine" are here! Welcome to a world populated by classic video game characters, that's also being invaded by an army of aliens called Space Grunts. With unlimited respawns, you'll experience beautifully hand drawn set pieces, huge explosions, exciting boss fights, and classic run-and-gun action! This next-gen shooter is a perfect example of how to update a genre!
Grip: Combat Racing (Available November 6)
You've heard of parkour… But have you experienced CARkour?? The hours of amazing content in Grip: Combat racing are packed with exactly what you might expect: 15 different armored combat vehicles battling it out on 22 unique racetracks. But what you might not be expecting is that these tracks span 4 different planets, and that there's also a PvP battle mode that supports up to 4-player split-screen!
All of these games and over 100 more are yours for the playing when you become a Game Pass member. And don't forget, on November 10th even more new games will be announced at the X018 Xbox convention! Be sure to check back on our blog for all the details, or follow us on Facebook, Twitter, Instagram to be the first to know!
gamesGamingNewsNovemberprosyscom techRevealed
How to thrive as an indie in the shadow of a giant like CD Projekt Red | Gaming News
Steam Approves '100 Per cent Uncensored' Adult Game | Gaming News
Destiny 2 Bug Won't Award Valor, Infamy for Completed Games
Universal and Unity will launch two games by indie contest winners on Steam
The Curse Of The Yakuza Games
Xbox Game Pass just got a bunch of new indie games
Microsoft may actually be committed to PC gaming this time
The real and the fake trends of gaming in 2019


The OECD has scaled back its economic growth forecasts with a warning that bullish financial markets are failing to price in mounting global risks.
The international think-tank said continued weakness in the euro area and uncertainty caused by conflicts in Ukraine and the Middle East meant it was now more cautious about prospects for advanced economies this year.
It reduced its May projection for the UK by 0.1% to 3.1%, but this was the smallest revision among the major world economies after the United States was cut by 0.5% to 2.1% and the euro area slashed by 0.4% to 0.8%.
The OECD is slightly more optimistic about the UK next year - raising its forecast by 0.1% to 2.8% when many other nations are being downgraded.
It said the global economy was growing at a moderate and uneven pace, with a growing degree of divergence between the major nations.
Among the key euro area economies, Germany is forecast to grow by 1.5% in both years, France by 0.4% in 2014 and 1% in 2015, while Italy will see a contraction of 0.4% this year and a gain of just 0.1% in 2015.
The OECD called on the European Central Bank to take a "more vigorous" approach to monetary stimulus by introducing quantitative easing.
Geopolitical risks have grown in recent months and the OECD said this was at odds with the recent bullishness of financial markets after record highs on Wall Street and a 14-year high for London's FTSE 100 Index.
It said: "A number of equity markets are reaching record highs, sovereign bond yields in several countries are near all-time lows and implied share price volatility in the United States and Europe is around pre-crisis levels.
"This highlights the possibility that risk is being mispriced and the attendant dangers of a sudden correction."
The OECD pointed out that many emerging economies remain vulnerable to financial market shocks given the build-up of debt in recent years.


"It's prudent to utilize something which is believable, In the event you 're employing a fake physician letter from online resources. You take a solid note that your higher-ups won't speech. So never compromise with the grade of the imitation note you will utilize. A bogus note from a practice or a physician provides the reason you need to you. A note from the physician that offers the caution is that which we call the physician's notice.


My spouse, Betty Ann, and I (Joseph) are troubled. She's addicted to her prescription pain pills. I know there is an underlying demonization to this, because of confessed sin. We need God's deliverance. Thank you.


text:
package be.bagofwords.virtualfile.remote;

import be.bagofwords.db.application.environment.RemoteCountDBEnvironmentProperties;
import be.bagofwords.virtualfile.VirtualFile;
import be.bagofwords.virtualfile.VirtualFileService;
import org.springframework.beans.factory.annotation.Autowired;

import java.io.File;

public class RemoteFileService extends VirtualFileService {

    private String host;
    private int port;

    public RemoteFileService(String remoteServerAddress, int remoteServerPort) {
        this.host = remoteServerAddress;
        this.port = remoteServerPort;
    }

    @Autowired
    public RemoteFileService(RemoteCountDBEnvironmentProperties environmentProperties) {
        this(environmentProperties.getDatabaseServerAddress(), environmentProperties.getVirtualFileServerPort());
    }

    @Override
    public VirtualFile getRootDirectory() {
        return new RemoteFile(host, port, new File("./"));
    }

}

redpajama_set_name: RedPajamaGithub


text:
#include <gmock/gmock.h>
#include <gtest/gtest-spi.h>
#include <gtest/gtest.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>

#include <array>
#include <cassert>
#include <cstdint>
#include <deque>
#include <fstream>
#include <list>
#include <memory>
#include <set>
#include <string>
#include <vector>

#include "base/compiler.hh"
#include "base/gtest/cur_tick_fake.hh"
#include "base/gtest/logging.hh"
#include "base/gtest/serialization_fixture.hh"
#include "sim/serialize.hh"

using namespace gem5;

// Instantiate the mock class to have a valid curTick of 0
GTestTickHandler tickHandler;

/** @return Whether the given dir exists and is accessible. */
bool
dirExists(std::string dir)
{
    struct stat info;
    return (stat(dir.c_str(), &info) == 0) && (info.st_mode & S_IFDIR);
}

using SerializeFixture = SerializationFixture;

class CheckpointInFixture : public SerializationFixture
{
  public:
    std::unique_ptr<CheckpointIn> cpt;

    using SerializeFixture::SerializeFixture;

    void
    SetUp() override
    {
        SerializeFixture::SetUp();

        std::ofstream file(getCptPath());
        assert(file.good());
        file << R"cpt_file(
[General]
    Test1=BARasdf
    Test2=bar

[Junk]
Test3=yo
Test4=mama

[Foo]
Foo1=89
Foo2=384

[General]
Test3=89

[Junk]
Test4+=mia
)cpt_file";
        file.close();
        cpt = std::make_unique<CheckpointIn>(getDirName());
    }

    void
    TearDown() override
    {
        std::remove((getCptPath()).c_str());
        SerializeFixture::TearDown();
    }
};

/**
 * A fixture to handle checkpoint in and out variables, as well as the
 * testing of the temporary directory.
 */
class SerializableFixture : public SerializeFixture
{
  public:
    std::unique_ptr<CheckpointIn> cpt_in;
    std::unique_ptr<std::ofstream> cpt_out;

    using SerializeFixture::SerializeFixture;

    void
    SetUp() override
    {
        SerializeFixture::SetUp();

        cpt_out = std::make_unique<std::ofstream>(getCptPath());
        assert(cpt_out->good());
        cpt_in = std::make_unique<CheckpointIn>(getDirName());
    }

    void
    TearDown() override
    {
        std::remove((getCptPath()).c_str());
        SerializeFixture::TearDown();
    }
};

using SerializeFixtureDeathTest = SerializeFixture;
using CheckpointInFixtureDeathTest = CheckpointInFixture;
using SerializableFixtureDeathTest = SerializableFixture;

/** Tests that when setting a checkpoint dir it always ends with a slash. */
TEST(CheckpointInTest, SetGetDirSlash)
{
    ASSERT_EQ(CheckpointIn::setDir(""), "/");
    ASSERT_EQ(CheckpointIn::dir(), "/");
    ASSERT_EQ(CheckpointIn::setDir("/"), "/");
    ASSERT_EQ(CheckpointIn::dir(), "/");
    ASSERT_EQ(CheckpointIn::setDir("test_cpt_dir"), "test_cpt_dir/");
    ASSERT_EQ(CheckpointIn::dir(), "test_cpt_dir/");
    ASSERT_EQ(CheckpointIn::setDir("test_cpt_dir_2/"), "test_cpt_dir_2/");
    ASSERT_EQ(CheckpointIn::dir(), "test_cpt_dir_2/");
}

/**
 * Tests that when the dir name has a "%d" curTick is added. It may also
 * work with other formats, but it is not intended.
 */
TEST(CheckpointInTest, SetGetDirTick)
{
    ASSERT_EQ(CheckpointIn::setDir("tick%d"), "tick0/");
    ASSERT_EQ(CheckpointIn::dir(), "tick0/");
    ASSERT_EQ(CheckpointIn::setDir("ti%dck"), "ti0ck/");
    ASSERT_EQ(CheckpointIn::dir(), "ti0ck/");
}

/**
 * Test constructor failure by requesting the creation of a checkpoint in
 * a non-existent dir.
 */
TEST_F(SerializeFixtureDeathTest, ConstructorFailure)
{
    // Assign another cpt dir to make sure that it is changed when a new
    // CheckpointIn instance is created
    CheckpointIn::setDir("test");

    // Make sure file does not exist, so that the constructor will fail
    std::ifstream file(getCptPath());
    assert(!file.good());
    ASSERT_ANY_THROW(CheckpointIn cpt(getDirName()));
}

/**
 * Test constructor success by requesting the creation of a checkpoint
 * in a specific valid dir. The static cpt dir is change on instantiation.
 */
TEST_F(SerializeFixture, ConstructorSuccess)
{
    // Assign another cpt dir to make sure that it is changed when a new
    // CheckpointIn instance is created
    CheckpointIn::setDir("test");

    // Create the file before creating the cpt to make sure it exists
    std::ofstream file(getCptPath());
    assert(file.good());
    file.close();
    CheckpointIn cpt(getDirName());

    // When a new CheckpointIn instance is created the static cpt dir changes
    EXPECT_EQ(CheckpointIn::dir(), getDirName());
}

/**
 * Test that changing the static cpt dir does not change the name of the
 * cpt dir of previously created instances.
 */
TEST_F(CheckpointInFixtureDeathTest, GetCptDir)
{
    ASSERT_ANY_THROW(CheckpointIn("/random_dir_name"));
}

/** Test finding sections. */
TEST_F(CheckpointInFixture, FindSections)
{
    // Successful searches
    ASSERT_TRUE(cpt->sectionExists("General"));
    ASSERT_TRUE(cpt->sectionExists("Junk"));
    ASSERT_TRUE(cpt->sectionExists("Foo"));

    // Failed searches
    ASSERT_FALSE(cpt->sectionExists("Junk2"));
    ASSERT_FALSE(cpt->sectionExists("Test1"));
}

/** Test finding entries. */
TEST_F(CheckpointInFixture, FindEntries)
{
    // Successful searches
    ASSERT_TRUE(cpt->entryExists("General", "Test2"));
    ASSERT_TRUE(cpt->entryExists("Junk", "Test3"));
    ASSERT_TRUE(cpt->entryExists("Junk", "Test4"));
    ASSERT_TRUE(cpt->entryExists("General", "Test1"));
    ASSERT_TRUE(cpt->entryExists("General", "Test3"));

    // Failed searches
    ASSERT_FALSE(cpt->entryExists("Junk2", "test3"));
    ASSERT_FALSE(cpt->entryExists("Junk", "test4"));
}

/** Test extracting the values of entries. */
TEST_F(CheckpointInFixture, ExtractEntries)
{
    std::string value;

    // Successful searches
    ASSERT_TRUE(cpt->find("General", "Test2", value));
    ASSERT_EQ(value, "bar");
    ASSERT_TRUE(cpt->find("Junk", "Test3", value));
    ASSERT_EQ(value, "yo");
    ASSERT_TRUE(cpt->find("Junk", "Test4", value));
    ASSERT_EQ(value, "mama mia");
    ASSERT_TRUE(cpt->find("General", "Test1", value));
    ASSERT_EQ(value, "BARasdf");
    ASSERT_TRUE(cpt->find("General", "Test3", value));
    ASSERT_EQ(value, "89");

    // Failed searches
    ASSERT_FALSE(cpt->find("Junk2", "test3", value));
    ASSERT_FALSE(cpt->find("Junk", "test4", value));
}

/**
 * Test that paths are increased and decreased according to the scope that
 * its SCS was created in (using CheckpointIn).
 */
TEST_F(CheckpointInFixture, SCSCptInPathScoped)
{
    Serializable::ScopedCheckpointSection scs(*(cpt.get()), "Section1");
    ASSERT_EQ(Serializable::currentSection(), "Section1");

    {
        Serializable::ScopedCheckpointSection scs_2(*(cpt.get()), "Section2");
        ASSERT_EQ(Serializable::currentSection(), "Section1.Section2");

        Serializable::ScopedCheckpointSection scs_3(*(cpt.get()), "Section3");
        ASSERT_EQ(Serializable::currentSection(),
            "Section1.Section2.Section3");
    }

    Serializable::ScopedCheckpointSection scs_4(*(cpt.get()), "Section4");
    ASSERT_EQ(Serializable::currentSection(), "Section1.Section4");
}

/**
 * Test that paths are increased and decreased according to the scope that
 * its SCS was created in (using CheckpointOut).
 */
TEST_F(SerializeFixture, SCSCptOutPathScoped)
{
    std::ofstream cpt(getCptPath());

    Serializable::ScopedCheckpointSection scs(cpt, "Section1");
    ASSERT_EQ(Serializable::currentSection(), "Section1");

    {
        Serializable::ScopedCheckpointSection scs_2(cpt, "Section2");
        ASSERT_EQ(Serializable::currentSection(), "Section1.Section2");

        Serializable::ScopedCheckpointSection scs_3(cpt, "Section3");
        ASSERT_EQ(Serializable::currentSection(),
            "Section1.Section2.Section3");
    }

    Serializable::ScopedCheckpointSection scs_4(cpt, "Section4");
    ASSERT_EQ(Serializable::currentSection(), "Section1.Section4");
}

/**
 * Make sure that a SCS that uses a CheckpointIn does not change the
 * checkpoint file's contents.
 */
TEST_F(SerializeFixture, SCSNoChangeCptIn)
{
    {
        // Create empty cpt file
        std::ofstream os(getCptPath());
        assert(os.good());
        os.close();
    }

    CheckpointIn cpt(getDirName());

    std::ifstream is(getCptPath());
    assert(is.good());
    ASSERT_EQ(is.peek(), std::ifstream::traits_type::eof());

    Serializable::ScopedCheckpointSection scs(cpt, "Section1");
    ASSERT_EQ(is.peek(), std::ifstream::traits_type::eof());
    ASSERT_EQ(Serializable::currentSection(), "Section1");
}

/** @return The ostream as a std::string. */
std::string
getString(std::istream &is)
{
    auto buf = is.rdbuf();
    std::ostringstream oss;
    oss << buf;
    return oss.str();
}

/**
 * Flushes the checkpoint and reads its contents.
 *
 * @param cpt The checkpoint to be flushed.
 * @param filename The name of the file to be read.
 * @return The contents in the filename, as a string.
 */
std::string
getContents(std::ofstream &cpt, std::string filename)
{
    // The checkpoint must be flushed, otherwise the file may not be up-
    // to-date and the assertions below will fail
    cpt.flush();

    std::ifstream is(filename);
    assert(is.good());
    return std::string(std::istreambuf_iterator<char>(is),
        std::istreambuf_iterator<char>());
}

/**
 * Make sure that a SCS that uses a CheckpointOut changes the checkpoint
 * file's contents (single section).
 */
TEST_F(SerializableFixture, SCSChangeCptOutSingle)
{
    Serializable::ScopedCheckpointSection scs(*cpt_out, "Section1");
    ASSERT_EQ(getContents(*cpt_out, getCptPath()),
        "\n[Section1]\n");
}

/**
 * Make sure that a SCS that uses a CheckpointOut changes the checkpoint
 * file's contents (multiple sections).
 */
TEST_F(SerializableFixture, SCSChangeCptOutMultiple)
{
    std::string expected = "";
    Serializable::ScopedCheckpointSection scs(*cpt_out, "Section1");
    expected += "\n[Section1]\n";
    ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);

    {
        Serializable::ScopedCheckpointSection scs_2(*cpt_out, "Section2");
        expected += "\n[Section1.Section2]\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);

        Serializable::ScopedCheckpointSection scs_3(*cpt_out, "Section3");
        expected += "\n[Section1.Section2.Section3]\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);
    }

    Serializable::ScopedCheckpointSection scs_4(*cpt_out, "Section4");
    expected += "\n[Section1.Section4]\n";
    ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);
}

/**
 * Make sure that a SCS that uses a CheckpointOut changes the checkpoint
 * file's contents (large test).
 */
TEST_F(SerializableFixture, SCSChangeCptOutLarge)
{
    std::string expected = "";
    Serializable::ScopedCheckpointSection scs(*cpt_out, "Section1");
    expected += "\n[Section1]\n";
    ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);

    {
        Serializable::ScopedCheckpointSection scs_2(*cpt_out, "Section2");
        expected += "\n[Section1.Section2]\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);

        {
            Serializable::ScopedCheckpointSection scs_3(*cpt_out, "Section3");
            expected += "\n[Section1.Section2.Section3]\n";
            ASSERT_EQ(getContents(*cpt_out, getCptPath()),
            expected);
        }

        Serializable::ScopedCheckpointSection scs_4(*cpt_out, "Section4");
        expected += "\n[Section1.Section2.Section4]\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);
    }

    Serializable::ScopedCheckpointSection scs_5(*cpt_out, "Section5");
    expected += "\n[Section1.Section5]\n";
    ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);

    {
        Serializable::ScopedCheckpointSection scs_6(*cpt_out, "Section6");
        expected += "\n[Section1.Section5.Section6]\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);

        Serializable::ScopedCheckpointSection scs_7(*cpt_out, "Section7");
        expected += "\n[Section1.Section5.Section6.Section7]\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);
    }

    Serializable::ScopedCheckpointSection scs_8(*cpt_out, "Section8");
    expected += "\n[Section1.Section5.Section8]\n";
    ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);
}

/** Test failure to create dir. Try to create a dir in a non-existent dir. */
TEST(SerializableDeathTest, GenerateCptOutFail)
{
    std::ofstream cpt;
    const std::string dir_name =
        SerializeFixture::generateTempDirName();
    ASSERT_FALSE(dirExists(dir_name));

    ASSERT_ANY_THROW(Serializable::generateCheckpointOut(
        dir_name + "/b/a/n/a/n/a/", cpt));
}

/** Test successful CheckpointOut generation with non-existent dir. */
TEST_F(SerializeFixture, GenerateCptOut)
{
    // The fixture will auto-create the dir. Remove it.
    assert(rmdir(getDirName().c_str()) == 0);

    std::ofstream cpt;
    Serializable::generateCheckpointOut(getDirName(), cpt);
    ASSERT_TRUE(dirExists(getDirName()));

    // Make sure the checkpoint was properly created. Using EXPECT to
    // force removing the directory at the end
    EXPECT_NE(getContents(cpt, getCptPath()).find(
        "## checkpoint generated: "), std::string::npos);
}

/** Test successful CheckpointOut generation with existing dir. */
TEST_F(SerializeFixture, GenerateCptOutExistent)
{
    assert(dirExists(getDirName()));

    // Create the checkpoint and make sure it has been properly created by
    // deleting it and making sure the function was successful
    std::ofstream cpt;
    Serializable::generateCheckpointOut(getDirName(), cpt);
    EXPECT_TRUE(remove((getCptPath()).c_str()) == 0);
}

class SerializableType : public Serializable
{
  private:
    mutable bool _serialized = false;
    bool _unserialized = false;

  public:
    SerializableType() : Serializable() {}

    void serialize(CheckpointOut &cp) const override { _serialized = true; }
    void unserialize(CheckpointIn &cp) override { _unserialized = true; }

    /**
     * Checks if serialize() has been called and then marks it as not called.
     *
     * @return True if serialize() has been called.
     */
    bool
    checkAndResetSerialized()
    {
        const bool serialized = _serialized;
        _serialized = false;
        return serialized;
    }

    /**
     * Checks if unserialize() has been called and then marks it as not called.
     *
     * @return True if unserialize() has been called.
     */
    bool
    checkAndResetUnserialized()
    {
        const bool unserialized = _unserialized;
        _unserialized = false;
        return unserialized;
    }
};

/**
 * Test section serialization and unserialization for an object without
 * serializable contents. Since how (un)serialize() works is independent of
 * the Serializable class, we just make sure that the respective functions
 * are called when calling (un)serializeSection().
 */
TEST_F(SerializableFixture, SectionSerializationSimple)
{
    SerializableType serializable;

    // Serialization
    {
        serializable.serializeSection(*cpt_out, "Section1");
        ASSERT_EQ(getContents(*cpt_out, getCptPath()),
            "\n[Section1]\n");
        ASSERT_TRUE(serializable.checkAndResetSerialized());
        ASSERT_FALSE(serializable.checkAndResetUnserialized());

        serializable.serializeSection(*cpt_out, "Section2");
        ASSERT_EQ(getContents(*cpt_out, getCptPath()),
            "\n[Section1]\n\n[Section2]\n");
        ASSERT_TRUE(serializable.checkAndResetSerialized());
        ASSERT_FALSE(serializable.checkAndResetUnserialized());

        serializable.serializeSection(*cpt_out, "Section3");
        ASSERT_EQ(getContents(*cpt_out, getCptPath()),
            "\n[Section1]\n\n[Section2]\n\n[Section3]\n");
        ASSERT_TRUE(serializable.checkAndResetSerialized());
        ASSERT_FALSE(serializable.checkAndResetUnserialized());
    }

    // Unserialization. Since the object has no serializable contents,
    // just make sure it does not throw for existent and non-existent
    // sections
    {
        ASSERT_NO_THROW(serializable.unserializeSection(*cpt_in, "Section1"));
        ASSERT_FALSE(serializable.checkAndResetSerialized());
        ASSERT_TRUE(serializable.checkAndResetUnserialized());

        ASSERT_NO_THROW(serializable.unserializeSection(*cpt_in, "Section2"));
        ASSERT_FALSE(serializable.checkAndResetSerialized());
        ASSERT_TRUE(serializable.checkAndResetUnserialized());

        ASSERT_NO_THROW(serializable.unserializeSection(*cpt_in, "Section3"));
        ASSERT_FALSE(serializable.checkAndResetSerialized());
        ASSERT_TRUE(serializable.checkAndResetUnserialized());

        ASSERT_NO_THROW(serializable.unserializeSection(*cpt_in, "Section4"));
        ASSERT_FALSE(serializable.checkAndResetSerialized());
        ASSERT_TRUE(serializable.checkAndResetUnserialized());
    }
}

/**
 * Test that paramIn called on a param that does not exist triggers an error.
 */
TEST_F(SerializableFixtureDeathTest, ParamIn)
{
    int unserialized_integer;
    Serializable::ScopedCheckpointSection scs(*cpt_in, "Section1");
    ASSERT_ANY_THROW(paramIn(*cpt_in, "Param1", unserialized_integer));
}

/**
 * Test serialization followed by unserialization, using ParamInImpl and
 * ParamOut.
 */
TEST_F(SerializableFixture, ParamOutIn)
{
    const int integer = 5;
    const double real = 3.7;
    const bool boolean = true;
    const std::string str = "string test";
    const char character = 'c';

    // Serialization
    {
        Serializable::ScopedCheckpointSection scs(*cpt_out, "Section1");
        std::string expected = "\n[Section1]\n";

        paramOut(*cpt_out, "Param1", integer);
        expected += "Param1=5\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);

        paramOut(*cpt_out, "Param2", real);
        expected += "Param2=3.7\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);

        paramOut(*cpt_out, "Param3", boolean);
        expected += "Param3=true\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);

        paramOut(*cpt_out, "Param4", str);
        expected += "Param4=string test\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);

        paramOut(*cpt_out, "Param5", character);
        expected += "Param5=99\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);
    }

    // Unserialization
    {
        CheckpointIn cpt(getDirName());

        int unserialized_integer;
        double unserialized_real;
        bool unserialized_boolean;
        std::string unserialized_str;
        char unserialized_character;

        Serializable::ScopedCheckpointSection scs(cpt, "Section1");

        paramIn(cpt, "Param1", unserialized_integer);
        ASSERT_EQ(integer, unserialized_integer);

        paramIn(cpt, "Param2", unserialized_real);
        ASSERT_EQ(real, unserialized_real);

        paramIn(cpt, "Param3", unserialized_boolean);
        ASSERT_EQ(boolean, unserialized_boolean);

        paramIn(cpt, "Param4", unserialized_str);
        ASSERT_EQ(str, unserialized_str);

        paramIn(cpt, "Param5", unserialized_character);
        ASSERT_EQ(character, unserialized_character);
    }
}

/**
 * Test serialization followed by unserialization, using ParamInImpl and
 * ParamOut, when multiple sections exist.
 */
TEST_F(SerializableFixture, ParamOutInMultipleSections)
{
    const int integer = 5;
    const double real = 3.7;
    const bool boolean = true;
    const std::string str = "string test";
    const char character = 'c';

    // Serialization
    {
        Serializable::ScopedCheckpointSection scs(*cpt_out, "Section1");
        std::string expected = "\n[Section1]\n";

        paramOut(*cpt_out, "Param1", integer);
        expected += "Param1=5\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);

        paramOut(*cpt_out, "Param2", real);
        expected += "Param2=3.7\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);

        {
            Serializable::ScopedCheckpointSection scs_2(*cpt_out, "Section2");
            expected += "\n[Section1.Section2]\n";

            paramOut(*cpt_out, "Param3", boolean);
            expected += "Param3=true\n";
            ASSERT_EQ(getContents(*cpt_out, getCptPath()),
                expected);
        }

        // Possibly unexpected behavior: Since scs_2 has gone out of scope
        // the user may expect that we'd go back to Section1; however, this
        // is not the case, and Param4 is added to Section1.Section2
        paramOut(*cpt_out, "Param4", str);
        expected += "Param4=string test\n";
        ASSERT_EQ(getContents(*cpt_out, getCptPath()), expected);

        {
            Serializable::ScopedCheckpointSection scs_3(*cpt_out, "Section3");
            expected += "\n[Section1.Section3]\n";

            Serializable::ScopedCheckpointSection scs_4(*cpt_out, "Section4");
            expected += "\n[Section1.Section3.Section4]\n";

            paramOut(*cpt_out, "Param5", character);
            expected += "Param5=99\n";
            ASSERT_EQ(getContents(*cpt_out, getCptPath()),
                expected);
        }
    }

    // Unserialization
    {
        CheckpointIn cpt(getDirName());

        int unserialized_integer;
        double unserialized_real;
        bool unserialized_boolean;
        std::string unserialized_str;
        char unserialized_character;

        Serializable::ScopedCheckpointSection scs(cpt, "Section1");

        paramIn(cpt, "Param1", unserialized_integer);
        ASSERT_EQ(integer, unserialized_integer);

        paramIn(cpt, "Param2", unserialized_real);
        ASSERT_EQ(real, unserialized_real);

        {
            Serializable::ScopedCheckpointSection scs_2(cpt, "Section2");

            paramIn(cpt, "Param3", unserialized_boolean);
            ASSERT_EQ(boolean, unserialized_boolean);

            // Due to the reason mentioned above on serialization, this param
            // must be extracted within the scope of Section 2
            paramIn(cpt, "Param4", unserialized_str);
            ASSERT_EQ(str, unserialized_str);
        }

        {
            Serializable::ScopedCheckpointSection scs_3(cpt, "Section3");
            Serializable::ScopedCheckpointSection scs_4(cpt, "Section4");

            paramIn(cpt, "Param5", unserialized_character);
            ASSERT_EQ(character, unserialized_character);
        }
    }
}

/** Test optional parameters. */
TEST_F(SerializeFixture, OptParamOutIn)
{
    const double real = 3.7;
    const std::string str = "string test";

    // Serialization
    {
        std::ofstream cpt(getCptPath());
        Serializable::ScopedCheckpointSection scs(cpt, "Section1");
        paramOut(cpt, "Param2", real);
        paramOut(cpt, "Param4", str);
    }

    // Unserialization
    {
        CheckpointIn cpt(getDirName());

        int unserialized_integer;
        double unserialized_real;
        bool unserialized_boolean;
        std::string unserialized_str;

        Serializable::ScopedCheckpointSection scs(cpt, "Section1");

        // Optional without warning
        gtestLogOutput.str("");
        ASSERT_FALSE(optParamIn(cpt, "Param1", unserialized_integer, false));
        ASSERT_EQ(gtestLogOutput.str(), "");

        gtestLogOutput.str("");
        ASSERT_TRUE(optParamIn(cpt, "Param2", unserialized_real, false));
        ASSERT_EQ(real, unserialized_real);
        ASSERT_EQ(gtestLogOutput.str(), "");

        // Optional with default request for warning
        gtestLogOutput.str("");
        ASSERT_FALSE(optParamIn(cpt, "Param3", unserialized_boolean));
        ASSERT_THAT(gtestLogOutput.str(),
            ::testing::HasSubstr("warn: optional parameter Section1:Param3 "
            "not present\n"));

        gtestLogOutput.str("");
        ASSERT_TRUE(optParamIn(cpt, "Param4", unserialized_str));
        ASSERT_EQ(str, unserialized_str);
        ASSERT_EQ(gtestLogOutput.str(), "");

        // Explicit request for warning
        gtestLogOutput.str("");
        ASSERT_FALSE(optParamIn(cpt, "Param5", unserialized_boolean, true));
        ASSERT_THAT(gtestLogOutput.str(),
            ::testing::HasSubstr("warn: optional parameter Section1:Param5 "
            "not present\n"));
    }
}

/** Check for death when there is no section and paramIn is requested. */
TEST_F(SerializableFixtureDeathTest, NoSectionParamIn)
{
#ifndef NDEBUG
    GTEST_SKIP() << "Skipping as assertions are "
        "stripped out of fast builds";
#endif

    std::ofstream of(getCptPath());
    CheckpointIn cpt(getDirName());
    int unserialized_integer;
    ASSERT_DEATH(paramIn(cpt, "Param1", unserialized_integer), "");
}

/** Test arrayParamOut and arrayParamIn. */
TEST_F(SerializeFixture, ArrayParamOutIn)
{
    const int integer[] = {5, 10, 15};
    std::array<double, 4> real = {0.1, 1.345, 892.72, 1e+10};
    std::list<bool> boolean = {true, false};
    std::vector<std::string> str = {"a", "string", "test"};
    std::set<uint64_t> uint64 = {12751928501, 13, 111111};
    std::deque<uint8_t> uint8 = {17, 42, 255};

    // Serialization
    {
        std::ofstream cpt(getCptPath());
        Serializable::ScopedCheckpointSection scs(cpt, "Section1");
        std::string expected = "\n[Section1]\n";

        arrayParamOut(cpt, "Param1", integer);
        expected += "Param1=5 10 15\n";
        ASSERT_EQ(getContents(cpt, getCptPath()), expected);

        arrayParamOut(cpt, "Param2", real);
        expected += "Param2=0.1 1.345 892.72 1e+10\n";
        ASSERT_EQ(getContents(cpt, getCptPath()), expected);

        arrayParamOut(cpt, "Param3", boolean);
        expected += "Param3=true false\n";
        ASSERT_EQ(getContents(cpt, getCptPath()), expected);

        arrayParamOut(cpt, "Param4", str);
        expected += "Param4=a string test\n";
        ASSERT_EQ(getContents(cpt, getCptPath()), expected);

        arrayParamOut(cpt, "Param5", uint64);
        expected += "Param5=13 111111 12751928501\n";
        ASSERT_EQ(getContents(cpt, getCptPath()), expected);

        arrayParamOut(cpt, "Param6", uint8);
        expected += "Param6=17 42 255\n";
        ASSERT_EQ(getContents(cpt, getCptPath()), expected);
    }

    // Unserialization
    {
        CheckpointIn cpt(getDirName());

        int unserialized_integer[3];
        std::array<double, 4> unserialized_real;
        std::list<bool> unserialized_boolean;
        std::vector<std::string> unserialized_str;
        std::set<uint64_t> unserialized_uint64;
        std::deque<uint8_t> unserialized_uint8;

        Serializable::ScopedCheckpointSection scs(cpt, "Section1");

        arrayParamIn(cpt, "Param1", unserialized_integer, 3);
        ASSERT_THAT(unserialized_integer, testing::ElementsAre(5, 10, 15));

        arrayParamIn(cpt, "Param2", unserialized_real.data(),
            unserialized_real.size());
        ASSERT_EQ(real, unserialized_real);

        arrayParamIn(cpt, "Param3", unserialized_boolean);
        ASSERT_EQ(boolean, unserialized_boolean);

        arrayParamIn(cpt, "Param4", unserialized_str);
        ASSERT_EQ(str, unserialized_str);

        arrayParamIn(cpt, "Param5", unserialized_uint64);
        ASSERT_EQ(uint64, unserialized_uint64);

        arrayParamIn(cpt, "Param6", unserialized_uint8);
        ASSERT_EQ(uint8, unserialized_uint8);
    }
}

/**
 * Test arrayParamOut and arrayParamIn for strings with spaces.
 * @todo This is broken because spaces are delimiters between array
 * entries; so, strings containing spaces are seen as multiple entries
*/
TEST_F(SerializeFixture, DISABLED_ArrayParamOutInSpacedStrings)
{
    std::vector<std::string> str = {"a string test", "for", "array param out"};

    // Serialization
    {
        std::ofstream cpt(getCptPath());
        Serializable::ScopedCheckpointSection scs(cpt, "Section1");
        std::string expected = "\n[Section1]\n";

        arrayParamOut(cpt, "Param1", str);
        expected += "Param1=string test for array param out\n";
        ASSERT_EQ(getContents(cpt, getCptPath()), expected);
    }

    // Unserialization
    {
        CheckpointIn cpt(getDirName());

        std::vector<std::string> unserialized_str;

        Serializable::ScopedCheckpointSection scs(cpt, "Section1");

        arrayParamIn(cpt, "Param1", unserialized_str);
        ASSERT_EQ(str, unserialized_str);
    }
}

/**
 * Test that using arrayParamIn with sizes smaller than the container's
 * throws an exception.
 */
TEST_F(SerializeFixtureDeathTest, ArrayParamOutInSmaller)
{
    // Serialization
    {
        const int integer[] = {5, 10, 15};

        std::ofstream cpt(getCptPath());
        Serializable::ScopedCheckpointSection scs(cpt, "Section1");
        std::string expected = "\n[Section1]\n";

        arrayParamOut(cpt, "Param1", integer);
        expected += "Param1=5 10 15\n";
        ASSERT_EQ(getContents(cpt, getCptPath()), expected);
    }

    // Unserialization
    {
        CheckpointIn cpt(getDirName());

        int unserialized_integer[1];

        Serializable::ScopedCheckpointSection scs(cpt, "Section1");

        ASSERT_ANY_THROW(arrayParamIn(cpt, "Param1", unserialized_integer, 2));
    }
}

/** Test mappingParamOut and mappingParamIn with all keys. */
TEST_F(SerializeFixture, MappingParamOutIn)
{
    const int integers[] = {10, 32, 100};
    std::array<double, 4> reals = {0.1, 1.345, 892.72, 1e+10};
    const char* const names_ints[] = {"ten", "thirty-two", "one hundred"};
    const char* const names_reals[] = {"first", "second", "third", "fourth"};

    // Serialization
    {
        std::ofstream cpt(getCptPath());
        Serializable::ScopedCheckpointSection scs(cpt, "Section1");
        std::string expected = "\n[Section1]\n";

        mappingParamOut(cpt, "Integers", names_ints, integers, 3);
        expected += "\n[Section1.Integers]\nten=10\nthirty-two=32\n"
            "one hundred=100\n";
        ASSERT_EQ(getContents(cpt, getCptPath()), expected);

        mappingParamOut(cpt, "Reals", names_reals, reals.data(), reals.size());
        expected += "\n[Section1.Reals]\nfirst=0.1\nsecond=1.345\n"
            "third=892.72\nfourth=1e+10\n";
        ASSERT_EQ(getContents(cpt, getCptPath()), expected);
    }

    // Unserialization
    {
        CheckpointIn cpt(getDirName());

        int unserialized_integers[3];
        std::array<double, 4> unserialized_reals;

        mappingParamIn(cpt, "Section1.Integers", names_ints,
            unserialized_integers, 3);
        ASSERT_THAT(unserialized_integers, testing::ElementsAre(10, 32, 100));

        mappingParamIn(cpt, "Section1.Reals", names_reals,
            unserialized_reals.data(), unserialized_reals.size());
        ASSERT_EQ(unserialized_reals, reals);
    }
}

/** Test that missing keys are ignored on mappingParamIn. */
TEST_F(SerializeFixture, MappingParamOutInMissing)
{
    const int integers[] = {10, 32, 100};
    std::array<double, 4> reals = {0.1, 1.345, 892.72, 1e+10};

    // Serialization
    {
        const char* const names_ints[] = {"ten", "thirty-two", "one hundred"};
        const char* const names_reals[] =
            {"first", "second", "third", "fourth"};

        std::ofstream cpt(getCptPath());
        Serializable::ScopedCheckpointSection scs(cpt, "Section1");
        std::string expected = "\n[Section1]\n";

        mappingParamOut(cpt, "Integers", names_ints, integers, 3);
        expected += "\n[Section1.Integers]\nten=10\nthirty-two=32\n"
            "one hundred=100\n";
        ASSERT_EQ(getContents(cpt, getCptPath()), expected);

        mappingParamOut(cpt, "Reals", names_reals, reals.data(), reals.size());
        expected += "\n[Section1.Reals]\nfirst=0.1\nsecond=1.345\n"
            "third=892.72\nfourth=1e+10\n";
        ASSERT_EQ(getContents(cpt, getCptPath()), expected);
    }

    // Unserialization
    {
        const char* const names_ints[] = {"one hundred"};
        const char* const names_reals[] = {"first", "third"};
        std::array<double, 2> expected_reals = {0.1, 892.72};

        CheckpointIn cpt(getDirName());

        std::string err;
        int unserialized_integers[1];
        std::array<double, 2> unserialized_reals;

        gtestLogOutput.str("");
        mappingParamIn(cpt, "Section1.Integers", names_ints,
            unserialized_integers, 1);
        ASSERT_THAT(unserialized_integers, testing::ElementsAre(100));
        err = gtestLogOutput.str();
        ASSERT_THAT(err, ::testing::HasSubstr("warn: unknown entry found in "
            "checkpoint: Section1.Integers thirty-two 32\n"));
        ASSERT_THAT(err, ::testing::HasSubstr("warn: unknown entry found in "
            "checkpoint: Section1.Integers ten 10\n"));

        gtestLogOutput.str("");
        mappingParamIn(cpt, "Section1.Reals", names_reals,
            unserialized_reals.data(), unserialized_reals.size());
        ASSERT_EQ(unserialized_reals, expected_reals);
        err = gtestLogOutput.str();
        ASSERT_THAT(err, ::testing::HasSubstr("warn: unknown entry found in "
            "checkpoint: Section1.Reals fourth 1e+10\n"));
        ASSERT_THAT(err, ::testing::HasSubstr("warn: unknown entry found in "
            "checkpoint: Section1.Reals second 1.345\n"));
    }
}

/**
 * Test serialization followed by unserialization, using SERIALIZE_SCALAR and
 * UNSERIALIZE_SCALAR.
 */
TEST_F(SerializeFixture, SerializeScalar)
{
    const int expected_integer = 5;
    const double expected_real = 3.7;
    const bool expected_boolean = true;
    const std::string expected_str = "string test";

    // Serialization
    {
        const int integer = expected_integer;
        const double real = expected_real;
        const bool boolean = expected_boolean;
        const std::string str = expected_str;

        std::ofstream cp(getCptPath());
        Serializable::ScopedCheckpointSection scs(cp, "Section1");
        std::string expected = "\n[Section1]\n";

        SERIALIZE_SCALAR(integer);
        expected += "integer=5\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);

        SERIALIZE_SCALAR(real);
        expected += "real=3.7\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);

        SERIALIZE_SCALAR(boolean);
        expected += "boolean=true\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);

        SERIALIZE_SCALAR(str);
        expected += "str=string test\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);
    }

    // Unserialization
    {
        CheckpointIn cp(getDirName());

        int integer;
        double real;
        bool boolean;
        std::string str;

        Serializable::ScopedCheckpointSection scs(cp, "Section1");

        UNSERIALIZE_SCALAR(integer);
        ASSERT_EQ(integer, expected_integer);

        UNSERIALIZE_SCALAR(real);
        ASSERT_EQ(real, expected_real);

        UNSERIALIZE_SCALAR(boolean);
        ASSERT_EQ(boolean, expected_boolean);

        UNSERIALIZE_SCALAR(str);
        ASSERT_EQ(str, expected_str);
    }
}

/** Test optional parameters with UNSERIALIZE_OPT_SCALAR. */
TEST_F(SerializeFixture, UnserializeOptScalar)
{
    const double expected_real = 3.7;
    const std::string expected_str = "string test";

    // Serialization
    {
        const double real = expected_real;
        const std::string str = expected_str;

        std::ofstream cp(getCptPath());
        Serializable::ScopedCheckpointSection scs(cp, "Section1");
        SERIALIZE_SCALAR(real);
        SERIALIZE_SCALAR(str);
    }

    // Unserialization
    {
        CheckpointIn cp(getDirName());

        int integer;
        double real;
        bool boolean;
        std::string str;

        Serializable::ScopedCheckpointSection scs(cp, "Section1");

        // Optional without warning
        ASSERT_FALSE(UNSERIALIZE_OPT_SCALAR(integer));

        ASSERT_TRUE(UNSERIALIZE_OPT_SCALAR(real));
        ASSERT_EQ(real, expected_real);

        // Optional with default request for warning
        ASSERT_FALSE(UNSERIALIZE_OPT_SCALAR(boolean));

        ASSERT_TRUE(UNSERIALIZE_OPT_SCALAR(str));
        ASSERT_EQ(str, expected_str);
    }
}

/**
 * Test serialization followed by unserialization, using SERIALIZE_ENUM and
 * UNSERIALIZE_ENUM.
 */
TEST_F(SerializeFixture, SerializeEnum)
{
    enum Number
    {
        ZERO,
        TEN=10,
        THIRTY_TWO=32
    };
    const Number expected_val = ZERO;
    const Number expected_val_2 = THIRTY_TWO;

    // Serialization
    {
        const Number zero = expected_val;
        const Number thirty_two = expected_val_2;

        std::ofstream cp(getCptPath());
        Serializable::ScopedCheckpointSection scs(cp, "Section1");
        std::string expected = "\n[Section1]\n";

        SERIALIZE_ENUM(zero);
        expected += "zero=0\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);

        SERIALIZE_ENUM(thirty_two);
        expected += "thirty_two=32\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);
    }

    // Unserialization
    {
        CheckpointIn cp(getDirName());

        Number zero;
        Number thirty_two;

        Serializable::ScopedCheckpointSection scs(cp, "Section1");

        UNSERIALIZE_ENUM(zero);
        ASSERT_EQ(zero, expected_val);

        UNSERIALIZE_ENUM(thirty_two);
        ASSERT_EQ(thirty_two, expected_val_2);
    }
}

/** Test SERIALIZE_ARRAY and UNSERIALIZE_ARRAY. */
TEST_F(SerializeFixture, SerializeArray)
{
    std::array<double, 4> expected_real = {0.1, 1.345, 892.72, 1e+10};

    // Serialization
    {
        const int integer[] = {5, 10, 15};
        const double *real = expected_real.data();

        std::ofstream cp(getCptPath());
        Serializable::ScopedCheckpointSection scs(cp, "Section1");
        std::string expected = "\n[Section1]\n";

        SERIALIZE_ARRAY(integer, 3);
        expected += "integer=5 10 15\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);

        SERIALIZE_ARRAY(real, expected_real.size());
        expected += "real=0.1 1.345 892.72 1e+10\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);
    }

    // Unserialization
    {
        CheckpointIn cp(getDirName());

        int integer[3];
        std::array<double, 4> real_array;
        double *real = real_array.data();

        Serializable::ScopedCheckpointSection scs(cp, "Section1");

        UNSERIALIZE_ARRAY(integer, 3);
        ASSERT_THAT(integer, testing::ElementsAre(5, 10, 15));

        UNSERIALIZE_ARRAY(real, expected_real.size());
        ASSERT_EQ(real_array, expected_real);
    }
}

/** Test SERIALIZE_CONTAINER and UNSERIALIZE_CONTAINER. */
TEST_F(SerializeFixture, SerializeContainer)
{
    std::list<bool> expected_boolean = {true, false};
    std::vector<std::string> expected_str = {"a", "string", "test"};
    std::set<uint64_t> expected_uint64 = {12751928501, 13, 111111};
    std::deque<uint8_t> expected_uint8 = {17, 42, 255};

    // Serialization
    {
        const std::list<bool> boolean = expected_boolean;
        const std::vector<std::string> str = expected_str;
        const std::set<uint64_t> uint64 = expected_uint64;
        const std::deque<uint8_t> uint8 = expected_uint8;

        std::ofstream cp(getCptPath());
        Serializable::ScopedCheckpointSection scs(cp, "Section1");
        std::string expected = "\n[Section1]\n";

        SERIALIZE_CONTAINER(boolean);
        expected += "boolean=true false\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);

        SERIALIZE_CONTAINER(str);
        expected += "str=a string test\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);

        SERIALIZE_CONTAINER(uint64);
        expected += "uint64=13 111111 12751928501\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);

        SERIALIZE_CONTAINER(uint8);
        expected += "uint8=17 42 255\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);
    }

    // Unserialization
    {
        CheckpointIn cp(getDirName());

        std::list<bool> boolean;
        std::vector<std::string> str;
        std::set<uint64_t> uint64;
        std::deque<uint8_t> uint8;

        Serializable::ScopedCheckpointSection scs(cp, "Section1");

        UNSERIALIZE_CONTAINER(boolean);
        ASSERT_EQ(boolean, expected_boolean);

        UNSERIALIZE_CONTAINER(str);
        ASSERT_EQ(str, expected_str);

        UNSERIALIZE_CONTAINER(uint64);
        ASSERT_EQ(uint64, expected_uint64);

        UNSERIALIZE_CONTAINER(uint8);
        ASSERT_EQ(uint8, expected_uint8);
    }
}

/** Test SERIALIZE_MAPPING and UNSERIALIZE_MAPPING with all keys. */
TEST_F(SerializeFixture, SerializeMapping)
{
    const int expected_integers[] = {10, 32, 100};
    std::array<double, 4> expected_reals = {0.1, 1.345, 892.72, 1e+10};
    const char* const names_ints[] = {"ten", "thirty-two", "one hundred"};
    const char* const names_reals[] = {"first", "second", "third", "fourth"};

    // Serialization
    {
        const int *integers = expected_integers;
        const double *reals = expected_reals.data();

        std::ofstream cp(getCptPath());
        Serializable::ScopedCheckpointSection scs(cp, "Section1");
        std::string expected = "\n[Section1]\n";

        SERIALIZE_MAPPING(integers, names_ints, 3);
        expected += "\n[Section1.integers]\nten=10\nthirty-two=32\n"
            "one hundred=100\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);

        SERIALIZE_MAPPING(reals, names_reals, expected_reals.size());
        expected += "\n[Section1.reals]\nfirst=0.1\nsecond=1.345\n"
            "third=892.72\nfourth=1e+10\n";
        ASSERT_EQ(getContents(cp, getCptPath()), expected);
    }

    // Unserialization
    {
        CheckpointIn cp(getDirName());

        int integers[3];
        double reals[4];

        Serializable::ScopedCheckpointSection scs(cp, "Section1");

        UNSERIALIZE_MAPPING(integers, names_ints, 3);
        ASSERT_THAT(integers, testing::ElementsAre(10, 32, 100));

        UNSERIALIZE_MAPPING(reals, names_reals, expected_reals.size());
        ASSERT_THAT(reals, testing::ElementsAre(0.1, 1.345, 892.72, 1e+10));
    }
}


SO YOU'RE INTERESTED IN KNOWING ABOUT THE PERSON BEHIND THE CAMERA.
Born in NSW but my family moved to the Sunshine Coast when I was 6. I grew up along the banks of the Noosa river. Playing in canoes and old boats, riding my bike through Tewantin to Hasting Street. And swimming in the surf at Noosa Heads with my sister and my friends.
Many of these experiences I have captured on grainy film prints and Polaroids. Even as as child I always had a camera close at hand.
At the age of 17 I moved to Sydney when I finished high school planning to work in Film and TV or on Magazines. Missing my family and I hating the cold I moved back home to Queensland after only 6 months. On my return I applied to University to study photography and was accepted in an Associate Diploma of Arts majoring in Applied Photography.
I have been in love three times. My first boyfriend introduced me to his best friend and as they say the rest is history. I have been with my wonderful husband since I was 19. We have 3 gorgeous girls, a cat and a dog. We live in a beautiful timber house backing onto rainforest in Noosaville and I run my business from my home studio here.
My third love is photography. Especially photographing weddings. Falling head over camera in love when I photographed my first wedding in Sydney almost 17 years ago. And I continue to fall more and more in love with every wedding that I shoot. I love destination weddings and I will happily travel to any location in the world. I also love different weddings, quirky weddings, classic weddings, romantic weddings, elegant weddings, themed weddings, beach weddings, country weddings, do it yourself weddings, beautiful weddings, in fact I just totally love all weddings!
So that's a little bit about me. Now it's your turn. Drop me a line or give me a call and tell me all about your special day. I would so love to share it with you and I can't wait to hear your plans.
Lindy Photography offers wedding photography packages to cater to everyone on their special day. From 1 hour to all day coverage.
Please advise us of the length of coverage that you require and also the location of your wedding so that we can deliver the correct information.
Lindy LOVES to travel and photograph destination weddings and offers special inclusions for all destination weddings. Email NOW to find out more…..
Lindy Yewen Photography has featured on The Brides Tree, Polkadot Bride, Style & Bride, Wedding Style Guide, ABIA, Noosa Wedding Org, White Magazine, Hello May.
Lindy Yewen of Lindy Yewen Photography. Unauthorised use and/or duplication of this material without express and written permission from this sites author and/or owner is strictly prohibited. Excerpts and links may be used, provided full and clear credit is given to Lindy Yewen Photography with appropriate and specific direction to the original content.


The ground floor presents a generous, front-facing living room which leads onto the open-plan kitchen and breakfast area. There is an integrated oven, hob and chimney hood featured in the kitchen along with a choice of stylish fitted units. The spacious breakfast area benefits from access to the rear garden offered via elegant French doors, and adjoins a convenient utility room. There is a modern cloakroom also on this level which features quality Roca sanitaryware and attractive chrome brassware.